From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Tomas Mraz To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: rebase to 1.0.2 branch Date: Tue, 09 Jun 2026 12:43:33 GMT Message-ID: <178100901384.1.8758353294035451853.rpms-openssl-a1fb602a95eb@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: a1fb602a95ebf784ebb1218e89c4a82abd5e6cfc QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IGExZmI2MDJhOTVlYmY3ODRlYmIxMjE4ZTg5YzRh ODJhYmQ1ZTZjZmMKQXV0aG9yIDogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMTUtMDQtMjNUMTM6NTc6MjYrMDI6MDAKU3RhdHMgIDogKzIyMDA0Ly00MzAw NiBpbiA5MiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3Jw bXMvb3BlbnNzbC9jL2ExZmI2MDJhOTVlYmY3ODRlYmIxMjE4ZTg5YzRhODJhYmQ1ZTZjZmM/YnJh bmNoPXJlYmFzZV80MGJldGEKCkxvZzoKcmViYXNlIHRvIDEuMC4yIGJyYW5jaAoKLS0tCmRpZmYg LS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCA1OTlkYjhlLi4wMDc2MjA0IDEw MDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTEsMyArMSw3IEBACisu YnVpbGQqLmxvZworY2xvZworMDAwKi5wYXRjaAorKi5zcmMucnBtCiBvcGVuc3NsLTEuMC4wYS11 c2EudGFyLmJ6MgogL29wZW5zc2wtMS4wLjBiLXVzYS50YXIuYnoyCiAvb3BlbnNzbC0xLjAuMGMt dXNhLnRhci5iejIKQEAgLTE4LDMgKzIyLDQgQEAgb3BlbnNzbC0xLjAuMGEtdXNhLnRhci5iejIK IC9vcGVuc3NsLTEuMC4xaS1ob2JibGVkLnRhci54egogL29wZW5zc2wtMS4wLjFqLWhvYmJsZWQu dGFyLnh6CiAvb3BlbnNzbC0xLjAuMWstaG9iYmxlZC50YXIueHoKKy9vcGVuc3NsLTEuMC4yYS1o b2JibGVkLnRhci54egoKZGlmZiAtLWdpdCBhL2VjX2N1cnZlLmMgYi9lY19jdXJ2ZS5jCmluZGV4 IDBjMjg3YmYuLmVhM2E0NzkgMTAwNjQ0Ci0tLSBhL2VjX2N1cnZlLmMKKysrIGIvZWNfY3VydmUu YwpAQCAtMTAsNyArMTAsNyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLiAKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lci4KICAqCiAgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCkBAIC01 OCwzMzkgKzU4LDM5OCBAQAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqIENvcHlyaWdodCAyMDAyIFN1biBN aWNyb3N5c3RlbXMsIEluYy4gQUxMIFJJR0hUUyBSRVNFUlZFRC4KICAqCi0gKiBQb3J0aW9ucyBv ZiB0aGUgYXR0YWNoZWQgc29mdHdhcmUgKCJDb250cmlidXRpb24iKSBhcmUgZGV2ZWxvcGVkIGJ5 IAorICogUG9ydGlvbnMgb2YgdGhlIGF0dGFjaGVkIHNvZnR3YXJlICgiQ29udHJpYnV0aW9uIikg YXJlIGRldmVsb3BlZCBieQogICogU1VOIE1JQ1JPU1lTVEVNUywgSU5DLiwgYW5kIGFyZSBjb250 cmlidXRlZCB0byB0aGUgT3BlblNTTCBwcm9qZWN0LgogICoKICAqIFRoZSBDb250cmlidXRpb24g aXMgbGljZW5zZWQgcHVyc3VhbnQgdG8gdGhlIE9wZW5TU0wgb3BlbiBzb3VyY2UKICAqIGxpY2Vu c2UgcHJvdmlkZWQgYWJvdmUuCiAgKgotICogVGhlIGVsbGlwdGljIGN1cnZlIGJpbmFyeSBwb2x5 bm9taWFsIHNvZnR3YXJlIGlzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSAKKyAqIFRoZSBlbGxpcHRp YyBjdXJ2ZSBiaW5hcnkgcG9seW5vbWlhbCBzb2Z0d2FyZSBpcyBvcmlnaW5hbGx5IHdyaXR0ZW4g YnkKICAqIFNoZXVlbGluZyBDaGFuZyBTaGFudHogYW5kIERvdWdsYXMgU3RlYmlsYSBvZiBTdW4g TWljcm9zeXN0ZW1zIExhYm9yYXRvcmllcy4KICAqCiAgKi8KIAorI2luY2x1ZGUgPHN0cmluZy5o PgogI2luY2x1ZGUgImVjX2xjbC5oIgogI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CiAjaW5jbHVk ZSA8b3BlbnNzbC9vYmpfbWFjLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgog CisjaWZkZWYgT1BFTlNTTF9GSVBTCisjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorI2VuZGlm CisKIHR5cGVkZWYgc3RydWN0IHsKLQlpbnQJZmllbGRfdHlwZSwJLyogZWl0aGVyIE5JRF9YOV82 Ml9wcmltZV9maWVsZCBvcgotCQkJCSAqIE5JRF9YOV82Ml9jaGFyYWN0ZXJpc3RpY190d29fZmll bGQgKi8KLQkJc2VlZF9sZW4sCi0JCXBhcmFtX2xlbjsKLQl1bnNpZ25lZCBpbnQgY29mYWN0b3I7 CS8qIHByb21vdGVkIHRvIEJOX1VMT05HICovCisgICAgaW50IGZpZWxkX3R5cGUsICAgICAgICAg ICAgIC8qIGVpdGhlciBOSURfWDlfNjJfcHJpbWVfZmllbGQgb3IKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICogTklEX1g5XzYyX2NoYXJhY3RlcmlzdGljX3R3b19maWVsZCAqLwor ICAgICBzZWVkX2xlbiwgcGFyYW1fbGVuOworICAgIHVuc2lnbmVkIGludCBjb2ZhY3RvcjsgICAg ICAvKiBwcm9tb3RlZCB0byBCTl9VTE9ORyAqLwogfSBFQ19DVVJWRV9EQVRBOwogCi1zdGF0aWMg Y29uc3Qgc3RydWN0IHsgRUNfQ1VSVkVfREFUQSBoOyB1bnNpZ25lZCBjaGFyIGRhdGFbMjArNDgq Nl07IH0KLQlfRUNfTklTVF9QUklNRV8zODQgPSB7Ci0JeyBOSURfWDlfNjJfcHJpbWVfZmllbGQs MjAsNDgsMSB9LAotCXsgMHhBMywweDM1LDB4OTIsMHg2QSwweEEzLDB4MTksMHhBMiwweDdBLDB4 MUQsMHgwMCwJLyogc2VlZCAqLwotCSAgMHg4OSwweDZBLDB4NjcsMHg3MywweEE0LDB4ODIsMHg3 QSwweENELDB4QUMsMHg3MywKLQotCSAgMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhG RiwweEZGLDB4RkYsMHhGRiwJLyogcCAqLwotCSAgMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4 RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwKLQkgIDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZG LDB4RkYsMHhGRiwweEZGLDB4RkYsCi0JICAweEZGLDB4RkUsMHhGRiwweEZGLDB4RkYsMHhGRiww eDAwLDB4MDAsMHgwMCwweDAwLAotCSAgMHgwMCwweDAwLDB4MDAsMHgwMCwweEZGLDB4RkYsMHhG RiwweEZGLAotCSAgMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYs MHhGRiwJLyogYSAqLwotCSAgMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZG LDB4RkYsMHhGRiwKLQkgIDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiww eEZGLDB4RkYsCi0JICAweEZGLDB4RkUsMHhGRiwweEZGLDB4RkYsMHhGRiwweDAwLDB4MDAsMHgw MCwweDAwLAotCSAgMHgwMCwweDAwLDB4MDAsMHgwMCwweEZGLDB4RkYsMHhGRiwweEZDLAotCSAg MHhCMywweDMxLDB4MkYsMHhBNywweEUyLDB4M0UsMHhFNywweEU0LDB4OTgsMHg4RSwJLyogYiAq LwotCSAgMHgwNSwweDZCLDB4RTMsMHhGOCwweDJELDB4MTksMHgxOCwweDFELDB4OUMsMHg2RSwK LQkgIDB4RkUsMHg4MSwweDQxLDB4MTIsMHgwMywweDE0LDB4MDgsMHg4RiwweDUwLDB4MTMsCi0J ICAweDg3LDB4NUEsMHhDNiwweDU2LDB4MzksMHg4RCwweDhBLDB4MkUsMHhEMSwweDlELAotCSAg MHgyQSwweDg1LDB4QzgsMHhFRCwweEQzLDB4RUMsMHgyQSwweEVGLAotCSAgMHhBQSwweDg3LDB4 Q0EsMHgyMiwweEJFLDB4OEIsMHgwNSwweDM3LDB4OEUsMHhCMSwJLyogeCAqLwotCSAgMHhDNyww eDFFLDB4RjMsMHgyMCwweEFELDB4NzQsMHg2RSwweDFELDB4M0IsMHg2MiwKLQkgIDB4OEIsMHhB NywweDlCLDB4OTgsMHg1OSwweEY3LDB4NDEsMHhFMCwweDgyLDB4NTQsCi0JICAweDJBLDB4Mzgs MHg1NSwweDAyLDB4RjIsMHg1RCwweEJGLDB4NTUsMHgyOSwweDZDLAotCSAgMHgzQSwweDU0LDB4 NUUsMHgzOCwweDcyLDB4NzYsMHgwQSwweEI3LAotCSAgMHgzNiwweDE3LDB4ZGUsMHg0YSwweDk2 LDB4MjYsMHgyYywweDZmLDB4NWQsMHg5ZSwJLyogeSAqLwotCSAgMHg5OCwweGJmLDB4OTIsMHg5 MiwweGRjLDB4MjksMHhmOCwweGY0LDB4MWQsMHhiZCwKLQkgIDB4MjgsMHg5YSwweDE0LDB4N2Ms MHhlOSwweGRhLDB4MzEsMHgxMywweGI1LDB4ZjAsCi0JICAweGI4LDB4YzAsMHgwYSwweDYwLDB4 YjEsMHhjZSwweDFkLDB4N2UsMHg4MSwweDlkLAotCSAgMHg3YSwweDQzLDB4MWQsMHg3YywweDkw LDB4ZWEsMHgwZSwweDVmLAotCSAgMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiww eEZGLDB4RkYsMHhGRiwJLyogb3JkZXIgKi8KLQkgIDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiww eEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsCi0JICAweEZGLDB4RkYsMHhGRiwweEZGLDB4QzcsMHg2 MywweDRELDB4ODEsMHhGNCwweDM3LAotCSAgMHgyRCwweERGLDB4NTgsMHgxQSwweDBELDB4QjIs MHg0OCwweEIwLDB4QTcsMHg3QSwKLQkgIDB4RUMsMHhFQywweDE5LDB4NkEsMHhDQywweEM1LDB4 MjksMHg3MyB9Ci0JfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCB7IEVDX0NVUlZFX0RBVEEgaDsg dW5zaWduZWQgY2hhciBkYXRhWzIwKzY2KjZdOyB9Ci0JX0VDX05JU1RfUFJJTUVfNTIxID0gewot CXsgTklEX1g5XzYyX3ByaW1lX2ZpZWxkLDIwLDY2LDEgfSwKLQl7IDB4RDAsMHg5RSwweDg4LDB4 MDAsMHgyOSwweDFDLDB4QjgsMHg1MywweDk2LDB4Q0MsCS8qIHNlZWQgKi8KLQkgIDB4NjcsMHgx NywweDM5LDB4MzIsMHg4NCwweEFBLDB4QTAsMHhEQSwweDY0LDB4QkEsCi0KLQkgIDB4MDEsMHhG RiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsCS8qIHAgKi8KLQkgIDB4 RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsCi0JICAweEZG LDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLAotCSAgMHhGRiww eEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwKLQkgIDB4RkYsMHhG RiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsCi0JICAweEZGLDB4RkYs MHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLAotCSAgMHhGRiwweEZGLDB4 RkYsMHhGRiwweEZGLDB4RkYsCi0JICAweDAxLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZG LDB4RkYsMHhGRiwweEZGLAkvKiBhICovCi0JICAweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhG RiwweEZGLDB4RkYsMHhGRiwweEZGLAotCSAgMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYs MHhGRiwweEZGLDB4RkYsMHhGRiwKLQkgIDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4 RkYsMHhGRiwweEZGLDB4RkYsCi0JICAweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZG LDB4RkYsMHhGRiwweEZGLAotCSAgMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiww eEZGLDB4RkYsMHhGRiwKLQkgIDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZDLAotCSAgMHgw MCwweDUxLDB4OTUsMHgzRSwweEI5LDB4NjEsMHg4RSwweDFDLDB4OUEsMHgxRiwJLyogYiAqLwot CSAgMHg5MiwweDlBLDB4MjEsMHhBMCwweEI2LDB4ODUsMHg0MCwweEVFLDB4QTIsMHhEQSwKLQkg IDB4NzIsMHg1QiwweDk5LDB4QjMsMHgxNSwweEYzLDB4QjgsMHhCNCwweDg5LDB4OTEsCi0JICAw eDhFLDB4RjEsMHgwOSwweEUxLDB4NTYsMHgxOSwweDM5LDB4NTEsMHhFQywweDdFLAotCSAgMHg5 MywweDdCLDB4MTYsMHg1MiwweEMwLDB4QkQsMHgzQiwweEIxLDB4QkYsMHgwNywKLQkgIDB4MzUs MHg3MywweERGLDB4ODgsMHgzRCwweDJDLDB4MzQsMHhGMSwweEVGLDB4NDUsCi0JICAweDFGLDB4 RDQsMHg2QiwweDUwLDB4M0YsMHgwMCwKLQkgIDB4MDAsMHhDNiwweDg1LDB4OEUsMHgwNiwweEI3 LDB4MDQsMHgwNCwweEU5LDB4Q0QsCS8qIHggKi8KLQkgIDB4OUUsMHgzRSwweENCLDB4NjYsMHgy MywweDk1LDB4QjQsMHg0MiwweDlDLDB4NjQsCi0JICAweDgxLDB4MzksMHgwNSwweDNGLDB4QjUs MHgyMSwweEY4LDB4MjgsMHhBRiwweDYwLAotCSAgMHg2QiwweDRELDB4M0QsMHhCQSwweEExLDB4 NEIsMHg1RSwweDc3LDB4RUYsMHhFNywKLQkgIDB4NTksMHgyOCwweEZFLDB4MUQsMHhDMSwweDI3 LDB4QTIsMHhGRiwweEE4LDB4REUsCi0JICAweDMzLDB4NDgsMHhCMywweEMxLDB4ODUsMHg2QSww eDQyLDB4OUIsMHhGOSwweDdFLAotCSAgMHg3RSwweDMxLDB4QzIsMHhFNSwweEJELDB4NjYsCi0J ICAweDAxLDB4MTgsMHgzOSwweDI5LDB4NmEsMHg3OCwweDlhLDB4M2IsMHhjMCwweDA0LAkvKiB5 ICovCi0JICAweDVjLDB4OGEsMHg1ZiwweGI0LDB4MmMsMHg3ZCwweDFiLDB4ZDksMHg5OCwweGY1 LAotCSAgMHg0NCwweDQ5LDB4NTcsMHg5YiwweDQ0LDB4NjgsMHgxNywweGFmLDB4YmQsMHgxNywK LQkgIDB4MjcsMHgzZSwweDY2LDB4MmMsMHg5NywweGVlLDB4NzIsMHg5OSwweDVlLDB4ZjQsCi0J ICAweDI2LDB4NDAsMHhjNSwweDUwLDB4YjksMHgwMSwweDNmLDB4YWQsMHgwNywweDYxLAotCSAg MHgzNSwweDNjLDB4NzAsMHg4NiwweGEyLDB4NzIsMHhjMiwweDQwLDB4ODgsMHhiZSwKLQkgIDB4 OTQsMHg3NiwweDlmLDB4ZDEsMHg2NiwweDUwLAotCSAgMHgwMSwweEZGLDB4RkYsMHhGRiwweEZG LDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwJLyogb3JkZXIgKi8KLQkgIDB4RkYsMHhGRiwweEZG LDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsCi0JICAweEZGLDB4RkYsMHhGRiww eEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLAotCSAgMHhGRiwweEZGLDB4RkYsMHhG QSwweDUxLDB4ODYsMHg4NywweDgzLDB4QkYsMHgyRiwKLQkgIDB4OTYsMHg2QiwweDdGLDB4Q0Ms MHgwMSwweDQ4LDB4RjcsMHgwOSwweEE1LDB4RDAsCi0JICAweDNCLDB4QjUsMHhDOSwweEI4LDB4 ODksMHg5QywweDQ3LDB4QUUsMHhCQiwweDZGLAotCSAgMHhCNywweDFFLDB4OTEsMHgzOCwweDY0 LDB4MDkgfQotCX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgeyBFQ19DVVJWRV9EQVRBIGg7IHVu c2lnbmVkIGNoYXIgZGF0YVsyMCszMio2XTsgfQotCV9FQ19YOV82Ml9QUklNRV8yNTZWMSA9IHsK LQl7IE5JRF9YOV82Ml9wcmltZV9maWVsZCwyMCwzMiwxIH0sCi0JeyAweEM0LDB4OUQsMHgzNiww eDA4LDB4ODYsMHhFNywweDA0LDB4OTMsMHg2QSwweDY2LAkvKiBzZWVkICovCi0JICAweDc4LDB4 RTEsMHgxMywweDlELDB4MjYsMHhCNywweDgxLDB4OUYsMHg3RSwweDkwLAotCi0JICAweEZGLDB4 RkYsMHhGRiwweEZGLDB4MDAsMHgwMCwweDAwLDB4MDEsMHgwMCwweDAwLAkvKiBwICovCi0JICAw eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLAotCSAgMHhG RiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwKLQkgIDB4RkYs MHhGRiwKLQkgIDB4RkYsMHhGRiwweEZGLDB4RkYsMHgwMCwweDAwLDB4MDAsMHgwMSwweDAwLDB4 MDAsCS8qIGEgKi8KLQkgIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCww eDAwLDB4MDAsCi0JICAweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiwweEZGLDB4RkYsMHhG RiwweEZGLAotCSAgMHhGRiwweEZDLAotCSAgMHg1QSwweEM2LDB4MzUsMHhEOCwweEFBLDB4M0Es MHg5MywweEU3LDB4QjMsMHhFQiwJLyogYiAqLwotCSAgMHhCRCwweDU1LDB4NzYsMHg5OCwweDg2 LDB4QkMsMHg2NSwweDFELDB4MDYsMHhCMCwKLQkgIDB4Q0MsMHg1MywweEIwLDB4RjYsMHgzQiww eENFLDB4M0MsMHgzRSwweDI3LDB4RDIsCi0JICAweDYwLDB4NEIsCi0JICAweDZCLDB4MTcsMHhE MSwweEYyLDB4RTEsMHgyQywweDQyLDB4NDcsMHhGOCwweEJDLAkvKiB4ICovCi0JICAweEU2LDB4 RTUsMHg2MywweEE0LDB4NDAsMHhGMiwweDc3LDB4MDMsMHg3RCwweDgxLAotCSAgMHgyRCwweEVC LDB4MzMsMHhBMCwweEY0LDB4QTEsMHgzOSwweDQ1LDB4RDgsMHg5OCwKLQkgIDB4QzIsMHg5NiwK LQkgIDB4NGYsMHhlMywweDQyLDB4ZTIsMHhmZSwweDFhLDB4N2YsMHg5YiwweDhlLDB4ZTcsCS8q IHkgKi8KLQkgIDB4ZWIsMHg0YSwweDdjLDB4MGYsMHg5ZSwweDE2LDB4MmIsMHhjZSwweDMzLDB4 NTcsCi0JICAweDZiLDB4MzEsMHg1ZSwweGNlLDB4Y2IsMHhiNiwweDQwLDB4NjgsMHgzNywweGJm LAotCSAgMHg1MSwweGY1LAotCSAgMHhGRiwweEZGLDB4RkYsMHhGRiwweDAwLDB4MDAsMHgwMCww eDAwLDB4RkYsMHhGRiwJLyogb3JkZXIgKi8KLQkgIDB4RkYsMHhGRiwweEZGLDB4RkYsMHhGRiww eEZGLDB4QkMsMHhFNiwweEZBLDB4QUQsCi0JICAweEE3LDB4MTcsMHg5RSwweDg0LDB4RjMsMHhC OSwweENBLDB4QzIsMHhGQywweDYzLAotCSAgMHgyNSwweDUxIH0KLQl9OworLyogdGhlIG5pc3Qg cHJpbWUgY3VydmVzICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKyAgICBFQ19DVVJWRV9EQVRB IGg7CisgICAgdW5zaWduZWQgY2hhciBkYXRhWzIwICsgNDggKiA2XTsKK30gX0VDX05JU1RfUFJJ TUVfMzg0ID0geworICAgIHsKKyAgICAgICAgTklEX1g5XzYyX3ByaW1lX2ZpZWxkLCAyMCwgNDgs IDEKKyAgICB9LAorICAgIHsKKyAgICAgICAgLyogc2VlZCAqLworICAgICAgICAweEEzLCAweDM1 LCAweDkyLCAweDZBLCAweEEzLCAweDE5LCAweEEyLCAweDdBLCAweDFELCAweDAwLCAweDg5LCAw eDZBLAorICAgICAgICAweDY3LCAweDczLCAweEE0LCAweDgyLCAweDdBLCAweENELCAweEFDLCAw eDczLAorICAgICAgICAvKiBwICovCisgICAgICAgIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4 RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsCisgICAgICAgIDB4 RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYs IDB4RkYsIDB4RkYsCisgICAgICAgIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYs IDB4RkYsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsCisgICAgICAgIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4RkYsIDB4RkYsIDB4 RkYsCisgICAgICAgIC8qIGEgKi8KKyAgICAgICAgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhG RiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwKKyAgICAgICAgMHhG RiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwg MHhGRiwgMHhGRiwKKyAgICAgICAgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwg MHhGRiwgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwKKyAgICAgICAgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHhG QywKKyAgICAgICAgLyogYiAqLworICAgICAgICAweEIzLCAweDMxLCAweDJGLCAweEE3LCAweEUy LCAweDNFLCAweEU3LCAweEU0LCAweDk4LCAweDhFLCAweDA1LCAweDZCLAorICAgICAgICAweEUz LCAweEY4LCAweDJELCAweDE5LCAweDE4LCAweDFELCAweDlDLCAweDZFLCAweEZFLCAweDgxLCAw eDQxLCAweDEyLAorICAgICAgICAweDAzLCAweDE0LCAweDA4LCAweDhGLCAweDUwLCAweDEzLCAw eDg3LCAweDVBLCAweEM2LCAweDU2LCAweDM5LCAweDhELAorICAgICAgICAweDhBLCAweDJFLCAw eEQxLCAweDlELCAweDJBLCAweDg1LCAweEM4LCAweEVELCAweEQzLCAweEVDLCAweDJBLCAweEVG LAorICAgICAgICAvKiB4ICovCisgICAgICAgIDB4QUEsIDB4ODcsIDB4Q0EsIDB4MjIsIDB4QkUs IDB4OEIsIDB4MDUsIDB4MzcsIDB4OEUsIDB4QjEsIDB4QzcsIDB4MUUsCisgICAgICAgIDB4RjMs IDB4MjAsIDB4QUQsIDB4NzQsIDB4NkUsIDB4MUQsIDB4M0IsIDB4NjIsIDB4OEIsIDB4QTcsIDB4 OUIsIDB4OTgsCisgICAgICAgIDB4NTksIDB4RjcsIDB4NDEsIDB4RTAsIDB4ODIsIDB4NTQsIDB4 MkEsIDB4MzgsIDB4NTUsIDB4MDIsIDB4RjIsIDB4NUQsCisgICAgICAgIDB4QkYsIDB4NTUsIDB4 MjksIDB4NkMsIDB4M0EsIDB4NTQsIDB4NUUsIDB4MzgsIDB4NzIsIDB4NzYsIDB4MEEsIDB4Qjcs CisgICAgICAgIC8qIHkgKi8KKyAgICAgICAgMHgzNiwgMHgxNywgMHhkZSwgMHg0YSwgMHg5Niwg MHgyNiwgMHgyYywgMHg2ZiwgMHg1ZCwgMHg5ZSwgMHg5OCwgMHhiZiwKKyAgICAgICAgMHg5Miwg MHg5MiwgMHhkYywgMHgyOSwgMHhmOCwgMHhmNCwgMHgxZCwgMHhiZCwgMHgyOCwgMHg5YSwgMHgx NCwgMHg3YywKKyAgICAgICAgMHhlOSwgMHhkYSwgMHgzMSwgMHgxMywgMHhiNSwgMHhmMCwgMHhi OCwgMHhjMCwgMHgwYSwgMHg2MCwgMHhiMSwgMHhjZSwKKyAgICAgICAgMHgxZCwgMHg3ZSwgMHg4 MSwgMHg5ZCwgMHg3YSwgMHg0MywgMHgxZCwgMHg3YywgMHg5MCwgMHhlYSwgMHgwZSwgMHg1ZiwK KyAgICAgICAgLyogb3JkZXIgKi8KKyAgICAgICAgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhG RiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwKKyAgICAgICAgMHhG RiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwg MHhGRiwgMHhGRiwKKyAgICAgICAgMHhDNywgMHg2MywgMHg0RCwgMHg4MSwgMHhGNCwgMHgzNywg MHgyRCwgMHhERiwgMHg1OCwgMHgxQSwgMHgwRCwgMHhCMiwKKyAgICAgICAgMHg0OCwgMHhCMCwg MHhBNywgMHg3QSwgMHhFQywgMHhFQywgMHgxOSwgMHg2QSwgMHhDQywgMHhDNSwgMHgyOSwgMHg3 MworICAgIH0KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworICAgIEVDX0NVUlZFX0RBVEEg aDsKKyAgICB1bnNpZ25lZCBjaGFyIGRhdGFbMjAgKyA2NiAqIDZdOworfSBfRUNfTklTVF9QUklN RV81MjEgPSB7CisgICAgeworICAgICAgICBOSURfWDlfNjJfcHJpbWVfZmllbGQsIDIwLCA2Niwg MQorICAgIH0sCisgICAgeworICAgICAgICAvKiBzZWVkICovCisgICAgICAgIDB4RDAsIDB4OUUs IDB4ODgsIDB4MDAsIDB4MjksIDB4MUMsIDB4QjgsIDB4NTMsIDB4OTYsIDB4Q0MsIDB4NjcsIDB4 MTcsCisgICAgICAgIDB4MzksIDB4MzIsIDB4ODQsIDB4QUEsIDB4QTAsIDB4REEsIDB4NjQsIDB4 QkEsCisgICAgICAgIC8qIHAgKi8KKyAgICAgICAgMHgwMSwgMHhGRiwgMHhGRiwgMHhGRiwgMHhG RiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwKKyAgICAgICAgMHhG RiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwg MHhGRiwgMHhGRiwKKyAgICAgICAgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwg MHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwKKyAgICAgICAgMHhGRiwgMHhGRiwg MHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhG RiwKKyAgICAgICAgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhG RiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwKKyAgICAgICAgMHhGRiwgMHhGRiwgMHhGRiwgMHhG RiwgMHhGRiwgMHhGRiwKKyAgICAgICAgLyogYSAqLworICAgICAgICAweDAxLCAweEZGLCAweEZG LCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLAor ICAgICAgICAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAw eEZGLCAweEZGLCAweEZGLCAweEZGLAorICAgICAgICAweEZGLCAweEZGLCAweEZGLCAweEZGLCAw eEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLAorICAgICAgICAw eEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZG LCAweEZGLCAweEZGLAorICAgICAgICAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZG LCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLAorICAgICAgICAweEZGLCAweEZG LCAweEZGLCAweEZGLCAweEZGLCAweEZDLAorICAgICAgICAvKiBiICovCisgICAgICAgIDB4MDAs IDB4NTEsIDB4OTUsIDB4M0UsIDB4QjksIDB4NjEsIDB4OEUsIDB4MUMsIDB4OUEsIDB4MUYsIDB4 OTIsIDB4OUEsCisgICAgICAgIDB4MjEsIDB4QTAsIDB4QjYsIDB4ODUsIDB4NDAsIDB4RUUsIDB4 QTIsIDB4REEsIDB4NzIsIDB4NUIsIDB4OTksIDB4QjMsCisgICAgICAgIDB4MTUsIDB4RjMsIDB4 QjgsIDB4QjQsIDB4ODksIDB4OTEsIDB4OEUsIDB4RjEsIDB4MDksIDB4RTEsIDB4NTYsIDB4MTks CisgICAgICAgIDB4MzksIDB4NTEsIDB4RUMsIDB4N0UsIDB4OTMsIDB4N0IsIDB4MTYsIDB4NTIs IDB4QzAsIDB4QkQsIDB4M0IsIDB4QjEsCisgICAgICAgIDB4QkYsIDB4MDcsIDB4MzUsIDB4NzMs IDB4REYsIDB4ODgsIDB4M0QsIDB4MkMsIDB4MzQsIDB4RjEsIDB4RUYsIDB4NDUsCisgICAgICAg IDB4MUYsIDB4RDQsIDB4NkIsIDB4NTAsIDB4M0YsIDB4MDAsCisgICAgICAgIC8qIHggKi8KKyAg ICAgICAgMHgwMCwgMHhDNiwgMHg4NSwgMHg4RSwgMHgwNiwgMHhCNywgMHgwNCwgMHgwNCwgMHhF OSwgMHhDRCwgMHg5RSwgMHgzRSwKKyAgICAgICAgMHhDQiwgMHg2NiwgMHgyMywgMHg5NSwgMHhC NCwgMHg0MiwgMHg5QywgMHg2NCwgMHg4MSwgMHgzOSwgMHgwNSwgMHgzRiwKKyAgICAgICAgMHhC NSwgMHgyMSwgMHhGOCwgMHgyOCwgMHhBRiwgMHg2MCwgMHg2QiwgMHg0RCwgMHgzRCwgMHhCQSwg MHhBMSwgMHg0QiwKKyAgICAgICAgMHg1RSwgMHg3NywgMHhFRiwgMHhFNywgMHg1OSwgMHgyOCwg MHhGRSwgMHgxRCwgMHhDMSwgMHgyNywgMHhBMiwgMHhGRiwKKyAgICAgICAgMHhBOCwgMHhERSwg MHgzMywgMHg0OCwgMHhCMywgMHhDMSwgMHg4NSwgMHg2QSwgMHg0MiwgMHg5QiwgMHhGOSwgMHg3 RSwKKyAgICAgICAgMHg3RSwgMHgzMSwgMHhDMiwgMHhFNSwgMHhCRCwgMHg2NiwKKyAgICAgICAg LyogeSAqLworICAgICAgICAweDAxLCAweDE4LCAweDM5LCAweDI5LCAweDZhLCAweDc4LCAweDlh LCAweDNiLCAweGMwLCAweDA0LCAweDVjLCAweDhhLAorICAgICAgICAweDVmLCAweGI0LCAweDJj LCAweDdkLCAweDFiLCAweGQ5LCAweDk4LCAweGY1LCAweDQ0LCAweDQ5LCAweDU3LCAweDliLAor ICAgICAgICAweDQ0LCAweDY4LCAweDE3LCAweGFmLCAweGJkLCAweDE3LCAweDI3LCAweDNlLCAw eDY2LCAweDJjLCAweDk3LCAweGVlLAorICAgICAgICAweDcyLCAweDk5LCAweDVlLCAweGY0LCAw eDI2LCAweDQwLCAweGM1LCAweDUwLCAweGI5LCAweDAxLCAweDNmLCAweGFkLAorICAgICAgICAw eDA3LCAweDYxLCAweDM1LCAweDNjLCAweDcwLCAweDg2LCAweGEyLCAweDcyLCAweGMyLCAweDQw LCAweDg4LCAweGJlLAorICAgICAgICAweDk0LCAweDc2LCAweDlmLCAweGQxLCAweDY2LCAweDUw LAorICAgICAgICAvKiBvcmRlciAqLworICAgICAgICAweDAxLCAweEZGLCAweEZGLCAweEZGLCAw eEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLAorICAgICAgICAw eEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZG LCAweEZGLCAweEZGLAorICAgICAgICAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZG LCAweEZGLCAweEZGLCAweEZGLCAweEZBLCAweDUxLCAweDg2LAorICAgICAgICAweDg3LCAweDgz LCAweEJGLCAweDJGLCAweDk2LCAweDZCLCAweDdGLCAweENDLCAweDAxLCAweDQ4LCAweEY3LCAw eDA5LAorICAgICAgICAweEE1LCAweEQwLCAweDNCLCAweEI1LCAweEM5LCAweEI4LCAweDg5LCAw eDlDLCAweDQ3LCAweEFFLCAweEJCLCAweDZGLAorICAgICAgICAweEI3LCAweDFFLCAweDkxLCAw eDM4LCAweDY0LCAweDA5CisgICAgfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB7CisgICAg RUNfQ1VSVkVfREFUQSBoOworICAgIHVuc2lnbmVkIGNoYXIgZGF0YVsyMCArIDMyICogNl07Cit9 IF9FQ19YOV82Ml9QUklNRV8yNTZWMSA9IHsKKyAgICB7CisgICAgICAgIE5JRF9YOV82Ml9wcmlt ZV9maWVsZCwgMjAsIDMyLCAxCisgICAgfSwKKyAgICB7CisgICAgICAgIC8qIHNlZWQgKi8KKyAg ICAgICAgMHhDNCwgMHg5RCwgMHgzNiwgMHgwOCwgMHg4NiwgMHhFNywgMHgwNCwgMHg5MywgMHg2 QSwgMHg2NiwgMHg3OCwgMHhFMSwKKyAgICAgICAgMHgxMywgMHg5RCwgMHgyNiwgMHhCNywgMHg4 MSwgMHg5RiwgMHg3RSwgMHg5MCwKKyAgICAgICAgLyogcCAqLworICAgICAgICAweEZGLCAweEZG LCAweEZGLCAweEZGLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweEZGLCAweEZGLCAweEZGLCAweEZGLAorICAgICAgICAweEZGLCAweEZGLCAweEZGLCAw eEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLAorICAgICAgICAvKiBhICovCisgICAgICAgIDB4 RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsCisgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsCisgICAgICAgIDB4RkYsIDB4RkYs IDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkMsCisgICAgICAgIC8qIGIgKi8KKyAg ICAgICAgMHg1QSwgMHhDNiwgMHgzNSwgMHhEOCwgMHhBQSwgMHgzQSwgMHg5MywgMHhFNywgMHhC MywgMHhFQiwgMHhCRCwgMHg1NSwKKyAgICAgICAgMHg3NiwgMHg5OCwgMHg4NiwgMHhCQywgMHg2 NSwgMHgxRCwgMHgwNiwgMHhCMCwgMHhDQywgMHg1MywgMHhCMCwgMHhGNiwKKyAgICAgICAgMHgz QiwgMHhDRSwgMHgzQywgMHgzRSwgMHgyNywgMHhEMiwgMHg2MCwgMHg0QiwKKyAgICAgICAgLyog eCAqLworICAgICAgICAweDZCLCAweDE3LCAweEQxLCAweEYyLCAweEUxLCAweDJDLCAweDQyLCAw eDQ3LCAweEY4LCAweEJDLCAweEU2LCAweEU1LAorICAgICAgICAweDYzLCAweEE0LCAweDQwLCAw eEYyLCAweDc3LCAweDAzLCAweDdELCAweDgxLCAweDJELCAweEVCLCAweDMzLCAweEEwLAorICAg ICAgICAweEY0LCAweEExLCAweDM5LCAweDQ1LCAweEQ4LCAweDk4LCAweEMyLCAweDk2LAorICAg ICAgICAvKiB5ICovCisgICAgICAgIDB4NGYsIDB4ZTMsIDB4NDIsIDB4ZTIsIDB4ZmUsIDB4MWEs IDB4N2YsIDB4OWIsIDB4OGUsIDB4ZTcsIDB4ZWIsIDB4NGEsCisgICAgICAgIDB4N2MsIDB4MGYs IDB4OWUsIDB4MTYsIDB4MmIsIDB4Y2UsIDB4MzMsIDB4NTcsIDB4NmIsIDB4MzEsIDB4NWUsIDB4 Y2UsCisgICAgICAgIDB4Y2IsIDB4YjYsIDB4NDAsIDB4NjgsIDB4MzcsIDB4YmYsIDB4NTEsIDB4 ZjUsCisgICAgICAgIC8qIG9yZGVyICovCisgICAgICAgIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsCisgICAgICAg IDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4QkMsIDB4RTYsIDB4RkEsIDB4QUQsIDB4QTcsIDB4 MTcsIDB4OUUsIDB4ODQsCisgICAgICAgIDB4RjMsIDB4QjksIDB4Q0EsIDB4QzIsIDB4RkMsIDB4 NjMsIDB4MjUsIDB4NTEKKyAgICB9Cit9OwogCiB0eXBlZGVmIHN0cnVjdCBfZWNfbGlzdF9lbGVt ZW50X3N0IHsKLQlpbnQJbmlkOwotCWNvbnN0IEVDX0NVUlZFX0RBVEEgKmRhdGE7Ci0JY29uc3Qg RUNfTUVUSE9EICooKm1ldGgpKHZvaWQpOwotCWNvbnN0IGNoYXIgKmNvbW1lbnQ7Ci0JfSBlY19s aXN0X2VsZW1lbnQ7CisgICAgaW50IG5pZDsKKyAgICBjb25zdCBFQ19DVVJWRV9EQVRBICpkYXRh OworICAgIGNvbnN0IEVDX01FVEhPRCAqKCptZXRoKSAodm9pZCk7CisgICAgY29uc3QgY2hhciAq Y29tbWVudDsKK30gZWNfbGlzdF9lbGVtZW50OwogCiBzdGF0aWMgY29uc3QgZWNfbGlzdF9lbGVt ZW50IGN1cnZlX2xpc3RbXSA9IHsKLQkvKiBwcmltZSBmaWVsZCBjdXJ2ZXMgKi8KLQkvKiBzZWNn IGN1cnZlcyAqLwotCS8qIFNFQ0cgc2VjcDI1NnIxIGlzIHRoZSBzYW1lIGFzIFg5LjYyIHByaW1l MjU2djEgYW5kIGhlbmNlIG9taXR0ZWQgKi8KLQl7IE5JRF9zZWNwMzg0cjEsICZfRUNfTklTVF9Q UklNRV8zODQuaCwgMCwgIk5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMzg0IGJpdCBwcmltZSBmaWVs ZCIgfSwKKyAgICAvKiBwcmltZSBmaWVsZCBjdXJ2ZXMgKi8KKyAgICAvKiBzZWNnIGN1cnZlcyAq LworICAgIC8qIFNFQ0cgc2VjcDI1NnIxIGlzIHRoZSBzYW1lIGFzIFg5LjYyIHByaW1lMjU2djEg YW5kIGhlbmNlIG9taXR0ZWQgKi8KKyAgICB7TklEX3NlY3AzODRyMSwgJl9FQ19OSVNUX1BSSU1F XzM4NC5oLCAwLAorICAgICAiTklTVC9TRUNHIGN1cnZlIG92ZXIgYSAzODQgYml0IHByaW1lIGZp ZWxkIn0sCiAjaWZuZGVmIE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOAotCXsgTklEX3Nl Y3A1MjFyMSwgJl9FQ19OSVNUX1BSSU1FXzUyMS5oLCBFQ19HRnBfbmlzdHA1MjFfbWV0aG9kLCAi TklTVC9TRUNHIGN1cnZlIG92ZXIgYSA1MjEgYml0IHByaW1lIGZpZWxkIiB9LAorICAgIHtOSURf c2VjcDUyMXIxLCAmX0VDX05JU1RfUFJJTUVfNTIxLmgsIEVDX0dGcF9uaXN0cDUyMV9tZXRob2Qs CisgICAgICJOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDUyMSBiaXQgcHJpbWUgZmllbGQifSwKICNl bHNlCi0JeyBOSURfc2VjcDUyMXIxLCAmX0VDX05JU1RfUFJJTUVfNTIxLmgsIDAsICJOSVNUL1NF Q0cgY3VydmUgb3ZlciBhIDUyMSBiaXQgcHJpbWUgZmllbGQiIH0sCisgICAge05JRF9zZWNwNTIx cjEsICZfRUNfTklTVF9QUklNRV81MjEuaCwgMCwKKyAgICAgIk5JU1QvU0VDRyBjdXJ2ZSBvdmVy IGEgNTIxIGJpdCBwcmltZSBmaWVsZCJ9LAogI2VuZGlmCi0jaWZuZGVmIE9QRU5TU0xfTk9fRUNf TklTVFBfNjRfR0NDXzEyOAotCXsgTklEX1g5XzYyX3ByaW1lMjU2djEsICZfRUNfWDlfNjJfUFJJ TUVfMjU2VjEuaCwgRUNfR0ZwX25pc3RwMjU2X21ldGhvZCwgIlg5LjYyL1NFQ0cgY3VydmUgb3Zl ciBhIDI1NiBiaXQgcHJpbWUgZmllbGQiIH0sCisgICAgLyogWDkuNjIgY3VydmVzICovCisgICAg e05JRF9YOV82Ml9wcmltZTI1NnYxLCAmX0VDX1g5XzYyX1BSSU1FXzI1NlYxLmgsCisjaWYgZGVm aW5lZChFQ1BfTklTVFoyNTZfQVNNKQorICAgICBFQ19HRnBfbmlzdHoyNTZfbWV0aG9kLAorI2Vs aWYgIWRlZmluZWQoT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4KQorICAgICBFQ19HRnBf bmlzdHAyNTZfbWV0aG9kLAogI2Vsc2UKLQl7IE5JRF9YOV82Ml9wcmltZTI1NnYxLCAmX0VDX1g5 XzYyX1BSSU1FXzI1NlYxLmgsIDAsICJYOS42Mi9TRUNHIGN1cnZlIG92ZXIgYSAyNTYgYml0IHBy aW1lIGZpZWxkIiB9LAorICAgICAwLAogI2VuZGlmCisgICAgICJYOS42Mi9TRUNHIGN1cnZlIG92 ZXIgYSAyNTYgYml0IHByaW1lIGZpZWxkIn0sCiB9OwogCiAjZGVmaW5lIGN1cnZlX2xpc3RfbGVu Z3RoIChzaXplb2YoY3VydmVfbGlzdCkvc2l6ZW9mKGVjX2xpc3RfZWxlbWVudCkpCiAKIHN0YXRp YyBFQ19HUk9VUCAqZWNfZ3JvdXBfbmV3X2Zyb21fZGF0YShjb25zdCBlY19saXN0X2VsZW1lbnQg Y3VydmUpCi0JewotCUVDX0dST1VQICpncm91cD1OVUxMOwotCUVDX1BPSU5UICpQPU5VTEw7Ci0J Qk5fQ1RYCSAqY3R4PU5VTEw7Ci0JQklHTlVNCSAqcD1OVUxMLCAqYT1OVUxMLCAqYj1OVUxMLCAq eD1OVUxMLCAqeT1OVUxMLCAqb3JkZXI9TlVMTDsKLQlpbnQJIG9rPTA7Ci0JaW50CSBzZWVkX2xl bixwYXJhbV9sZW47Ci0JY29uc3QgRUNfTUVUSE9EICptZXRoOwotCWNvbnN0IEVDX0NVUlZFX0RB VEEgKmRhdGE7Ci0JY29uc3QgdW5zaWduZWQgY2hhciAqcGFyYW1zOwotCi0JaWYgKChjdHggPSBC Tl9DVFhfbmV3KCkpID09IE5VTEwpCi0JCXsKLQkJRUNlcnIoRUNfRl9FQ19HUk9VUF9ORVdfRlJP TV9EQVRBLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7Ci0JCWdvdG8gZXJyOwotCQl9Ci0KLQlkYXRh ID0gY3VydmUuZGF0YTsKLQlzZWVkX2xlbiAgPSBkYXRhLT5zZWVkX2xlbjsKLQlwYXJhbV9sZW4g PSBkYXRhLT5wYXJhbV9sZW47Ci0JcGFyYW1zCSAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKShk YXRhKzEpOwkvKiBza2lwIGhlYWRlciAqLwotCXBhcmFtcwkgKz0gc2VlZF9sZW47CQkJCS8qIHNr aXAgc2VlZCAgICovCi0KLQlpZiAoIShwID0gQk5fYmluMmJuKHBhcmFtcyswKnBhcmFtX2xlbiwg cGFyYW1fbGVuLCBOVUxMKSkKLQkJfHwgIShhID0gQk5fYmluMmJuKHBhcmFtcysxKnBhcmFtX2xl biwgcGFyYW1fbGVuLCBOVUxMKSkKLQkJfHwgIShiID0gQk5fYmluMmJuKHBhcmFtcysyKnBhcmFt X2xlbiwgcGFyYW1fbGVuLCBOVUxMKSkpCi0JCXsKLQkJRUNlcnIoRUNfRl9FQ19HUk9VUF9ORVdf RlJPTV9EQVRBLCBFUlJfUl9CTl9MSUIpOwotCQlnb3RvIGVycjsKLQkJfQotCi0JaWYgKGN1cnZl Lm1ldGggIT0gMCkKLQkJewotCQltZXRoID0gY3VydmUubWV0aCgpOwotCQlpZiAoKChncm91cCA9 IEVDX0dST1VQX25ldyhtZXRoKSkgPT0gTlVMTCkgfHwKLQkJCSghKGdyb3VwLT5tZXRoLT5ncm91 cF9zZXRfY3VydmUoZ3JvdXAsIHAsIGEsIGIsIGN0eCkpKSkKLQkJCXsKLQkJCUVDZXJyKEVDX0Zf RUNfR1JPVVBfTkVXX0ZST01fREFUQSwgRVJSX1JfRUNfTElCKTsKLQkJCWdvdG8gZXJyOwotCQkJ fQotCQl9Ci0JZWxzZSBpZiAoZGF0YS0+ZmllbGRfdHlwZSA9PSBOSURfWDlfNjJfcHJpbWVfZmll bGQpCi0JCXsKLQkJaWYgKChncm91cCA9IEVDX0dST1VQX25ld19jdXJ2ZV9HRnAocCwgYSwgYiwg Y3R4KSkgPT0gTlVMTCkKLQkJCXsKLQkJCUVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0ZST01fREFU QSwgRVJSX1JfRUNfTElCKTsKLQkJCWdvdG8gZXJyOwotCQkJfQotCQl9Cit7CisgICAgRUNfR1JP VVAgKmdyb3VwID0gTlVMTDsKKyAgICBFQ19QT0lOVCAqUCA9IE5VTEw7CisgICAgQk5fQ1RYICpj dHggPSBOVUxMOworICAgIEJJR05VTSAqcCA9IE5VTEwsICphID0gTlVMTCwgKmIgPSBOVUxMLCAq eCA9IE5VTEwsICp5ID0gTlVMTCwgKm9yZGVyID0KKyAgICAgICAgTlVMTDsKKyAgICBpbnQgb2sg PSAwOworICAgIGludCBzZWVkX2xlbiwgcGFyYW1fbGVuOworICAgIGNvbnN0IEVDX01FVEhPRCAq bWV0aDsKKyAgICBjb25zdCBFQ19DVVJWRV9EQVRBICpkYXRhOworICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKnBhcmFtczsKKworICAgIGlmICgoY3R4ID0gQk5fQ1RYX25ldygpKSA9PSBOVUxMKSB7 CisgICAgICAgIEVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0ZST01fREFUQSwgRVJSX1JfTUFMTE9D X0ZBSUxVUkUpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKKyAgICBkYXRhID0gY3VydmUu ZGF0YTsKKyAgICBzZWVkX2xlbiA9IGRhdGEtPnNlZWRfbGVuOworICAgIHBhcmFtX2xlbiA9IGRh dGEtPnBhcmFtX2xlbjsKKyAgICBwYXJhbXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKShkYXRh ICsgMSk7IC8qIHNraXAgaGVhZGVyICovCisgICAgcGFyYW1zICs9IHNlZWRfbGVuOyAgICAgICAg IC8qIHNraXAgc2VlZCAqLworCisgICAgaWYgKCEocCA9IEJOX2JpbjJibihwYXJhbXMgKyAwICog cGFyYW1fbGVuLCBwYXJhbV9sZW4sIE5VTEwpKQorICAgICAgICB8fCAhKGEgPSBCTl9iaW4yYm4o cGFyYW1zICsgMSAqIHBhcmFtX2xlbiwgcGFyYW1fbGVuLCBOVUxMKSkKKyAgICAgICAgfHwgIShi ID0gQk5fYmluMmJuKHBhcmFtcyArIDIgKiBwYXJhbV9sZW4sIHBhcmFtX2xlbiwgTlVMTCkpKSB7 CisgICAgICAgIEVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0ZST01fREFUQSwgRVJSX1JfQk5fTElC KTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgaWYgKGN1cnZlLm1ldGggIT0gMCkg eworICAgICAgICBtZXRoID0gY3VydmUubWV0aCgpOworICAgICAgICBpZiAoKChncm91cCA9IEVD X0dST1VQX25ldyhtZXRoKSkgPT0gTlVMTCkgfHwKKyAgICAgICAgICAgICghKGdyb3VwLT5tZXRo LT5ncm91cF9zZXRfY3VydmUoZ3JvdXAsIHAsIGEsIGIsIGN0eCkpKSkgeworICAgICAgICAgICAg RUNlcnIoRUNfRl9FQ19HUk9VUF9ORVdfRlJPTV9EQVRBLCBFUlJfUl9FQ19MSUIpOworICAgICAg ICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGRhdGEtPmZpZWxkX3R5 cGUgPT0gTklEX1g5XzYyX3ByaW1lX2ZpZWxkKSB7CisgICAgICAgIGlmICgoZ3JvdXAgPSBFQ19H Uk9VUF9uZXdfY3VydmVfR0ZwKHAsIGEsIGIsIGN0eCkpID09IE5VTEwpIHsKKyAgICAgICAgICAg IEVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0ZST01fREFUQSwgRVJSX1JfRUNfTElCKTsKKyAgICAg ICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisgICAgfQogI2lmbmRlZiBPUEVOU1NMX05PX0VD Mk0KLQllbHNlCS8qIGZpZWxkX3R5cGUgPT0gTklEX1g5XzYyX2NoYXJhY3RlcmlzdGljX3R3b19m aWVsZCAqLwotCQl7Ci0JCWlmICgoZ3JvdXAgPSBFQ19HUk9VUF9uZXdfY3VydmVfR0YybShwLCBh LCBiLCBjdHgpKSA9PSBOVUxMKQotCQkJewotCQkJRUNlcnIoRUNfRl9FQ19HUk9VUF9ORVdfRlJP TV9EQVRBLCBFUlJfUl9FQ19MSUIpOwotCQkJZ290byBlcnI7Ci0JCQl9Ci0JCX0KKyAgICBlbHNl IHsgICAgICAgICAgICAgICAgICAgICAgLyogZmllbGRfdHlwZSA9PQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKiBOSURfWDlfNjJfY2hhcmFjdGVyaXN0aWNfdHdvX2ZpZWxkICov CisKKyAgICAgICAgaWYgKChncm91cCA9IEVDX0dST1VQX25ld19jdXJ2ZV9HRjJtKHAsIGEsIGIs IGN0eCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIEVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0ZS T01fREFUQSwgRVJSX1JfRUNfTElCKTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9 CisgICAgfQogI2VuZGlmCiAKLQlpZiAoKFAgPSBFQ19QT0lOVF9uZXcoZ3JvdXApKSA9PSBOVUxM KQotCQl7Ci0JCUVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0ZST01fREFUQSwgRVJSX1JfRUNfTElC KTsKLQkJZ290byBlcnI7Ci0JCX0KLQotCWlmICghKHggPSBCTl9iaW4yYm4ocGFyYW1zKzMqcGFy YW1fbGVuLCBwYXJhbV9sZW4sIE5VTEwpKQotCQl8fCAhKHkgPSBCTl9iaW4yYm4ocGFyYW1zKzQq cGFyYW1fbGVuLCBwYXJhbV9sZW4sIE5VTEwpKSkKLQkJewotCQlFQ2VycihFQ19GX0VDX0dST1VQ X05FV19GUk9NX0RBVEEsIEVSUl9SX0JOX0xJQik7Ci0JCWdvdG8gZXJyOwotCQl9Ci0JaWYgKCFF Q19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgUCwgeCwgeSwgY3R4KSkK LQkJewotCQlFQ2VycihFQ19GX0VDX0dST1VQX05FV19GUk9NX0RBVEEsIEVSUl9SX0VDX0xJQik7 Ci0JCWdvdG8gZXJyOwotCQl9Ci0JaWYgKCEob3JkZXIgPSBCTl9iaW4yYm4ocGFyYW1zKzUqcGFy YW1fbGVuLCBwYXJhbV9sZW4sIE5VTEwpKQotCQl8fCAhQk5fc2V0X3dvcmQoeCwgKEJOX1VMT05H KWRhdGEtPmNvZmFjdG9yKSkKLQkJewotCQlFQ2VycihFQ19GX0VDX0dST1VQX05FV19GUk9NX0RB VEEsIEVSUl9SX0JOX0xJQik7Ci0JCWdvdG8gZXJyOwotCQl9Ci0JaWYgKCFFQ19HUk9VUF9zZXRf Z2VuZXJhdG9yKGdyb3VwLCBQLCBvcmRlciwgeCkpCi0JCXsKLQkJRUNlcnIoRUNfRl9FQ19HUk9V UF9ORVdfRlJPTV9EQVRBLCBFUlJfUl9FQ19MSUIpOwotCQlnb3RvIGVycjsKLQkJfQotCWlmIChz ZWVkX2xlbikKLQkJewotCQlpZiAoIUVDX0dST1VQX3NldF9zZWVkKGdyb3VwLCBwYXJhbXMtc2Vl ZF9sZW4sIHNlZWRfbGVuKSkKLQkJCXsKLQkJCUVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0ZST01f REFUQSwgRVJSX1JfRUNfTElCKTsKLQkJCWdvdG8gZXJyOwotCQkJfQotCQl9Ci0Jb2s9MTsKLWVy cjoKLQlpZiAoIW9rKQotCQl7Ci0JCUVDX0dST1VQX2ZyZWUoZ3JvdXApOwotCQlncm91cCA9IE5V TEw7Ci0JCX0KLQlpZiAoUCkKLQkJRUNfUE9JTlRfZnJlZShQKTsKLQlpZiAoY3R4KQotCQlCTl9D VFhfZnJlZShjdHgpOwotCWlmIChwKQotCQlCTl9mcmVlKHApOwotCWlmIChhKQotCQlCTl9mcmVl KGEpOwotCWlmIChiKQotCQlCTl9mcmVlKGIpOwotCWlmIChvcmRlcikKLQkJQk5fZnJlZShvcmRl cik7Ci0JaWYgKHgpCi0JCUJOX2ZyZWUoeCk7Ci0JaWYgKHkpCi0JCUJOX2ZyZWUoeSk7Ci0JcmV0 dXJuIGdyb3VwOwotCX0KKyAgICBpZiAoKFAgPSBFQ19QT0lOVF9uZXcoZ3JvdXApKSA9PSBOVUxM KSB7CisgICAgICAgIEVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0ZST01fREFUQSwgRVJSX1JfRUNf TElCKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgaWYgKCEoeCA9IEJOX2JpbjJi bihwYXJhbXMgKyAzICogcGFyYW1fbGVuLCBwYXJhbV9sZW4sIE5VTEwpKQorICAgICAgICB8fCAh KHkgPSBCTl9iaW4yYm4ocGFyYW1zICsgNCAqIHBhcmFtX2xlbiwgcGFyYW1fbGVuLCBOVUxMKSkp IHsKKyAgICAgICAgRUNlcnIoRUNfRl9FQ19HUk9VUF9ORVdfRlJPTV9EQVRBLCBFUlJfUl9CTl9M SUIpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisgICAgaWYgKCFFQ19QT0lOVF9zZXRfYWZm aW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgUCwgeCwgeSwgY3R4KSkgeworICAgICAgICBFQ2Vy cihFQ19GX0VDX0dST1VQX05FV19GUk9NX0RBVEEsIEVSUl9SX0VDX0xJQik7CisgICAgICAgIGdv dG8gZXJyOworICAgIH0KKyAgICBpZiAoIShvcmRlciA9IEJOX2JpbjJibihwYXJhbXMgKyA1ICog cGFyYW1fbGVuLCBwYXJhbV9sZW4sIE5VTEwpKQorICAgICAgICB8fCAhQk5fc2V0X3dvcmQoeCwg KEJOX1VMT05HKWRhdGEtPmNvZmFjdG9yKSkgeworICAgICAgICBFQ2VycihFQ19GX0VDX0dST1VQ X05FV19GUk9NX0RBVEEsIEVSUl9SX0JOX0xJQik7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0K KyAgICBpZiAoIUVDX0dST1VQX3NldF9nZW5lcmF0b3IoZ3JvdXAsIFAsIG9yZGVyLCB4KSkgewor ICAgICAgICBFQ2VycihFQ19GX0VDX0dST1VQX05FV19GUk9NX0RBVEEsIEVSUl9SX0VDX0xJQik7 CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKyAgICBpZiAoc2VlZF9sZW4pIHsKKyAgICAgICAg aWYgKCFFQ19HUk9VUF9zZXRfc2VlZChncm91cCwgcGFyYW1zIC0gc2VlZF9sZW4sIHNlZWRfbGVu KSkgeworICAgICAgICAgICAgRUNlcnIoRUNfRl9FQ19HUk9VUF9ORVdfRlJPTV9EQVRBLCBFUlJf Ul9FQ19MSUIpOworICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKyAgICB9CisgICAg b2sgPSAxOworIGVycjoKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIEVDX0dST1VQX2ZyZWUoZ3Jv dXApOworICAgICAgICBncm91cCA9IE5VTEw7CisgICAgfQorICAgIGlmIChQKQorICAgICAgICBF Q19QT0lOVF9mcmVlKFApOworICAgIGlmIChjdHgpCisgICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7 CisgICAgaWYgKHApCisgICAgICAgIEJOX2ZyZWUocCk7CisgICAgaWYgKGEpCisgICAgICAgIEJO X2ZyZWUoYSk7CisgICAgaWYgKGIpCisgICAgICAgIEJOX2ZyZWUoYik7CisgICAgaWYgKG9yZGVy KQorICAgICAgICBCTl9mcmVlKG9yZGVyKTsKKyAgICBpZiAoeCkKKyAgICAgICAgQk5fZnJlZSh4 KTsKKyAgICBpZiAoeSkKKyAgICAgICAgQk5fZnJlZSh5KTsKKyAgICByZXR1cm4gZ3JvdXA7Cit9 CiAKIEVDX0dST1VQICpFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZShpbnQgbmlkKQotCXsKLQlz aXplX3QgaTsKLQlFQ19HUk9VUCAqcmV0ID0gTlVMTDsKK3sKKyAgICBzaXplX3QgaTsKKyAgICBF Q19HUk9VUCAqcmV0ID0gTlVMTDsKIAotCWlmIChuaWQgPD0gMCkKLQkJcmV0dXJuIE5VTEw7Cisg ICAgaWYgKG5pZCA8PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotCWZvciAoaT0wOyBpPGN1 cnZlX2xpc3RfbGVuZ3RoOyBpKyspCi0JCWlmIChjdXJ2ZV9saXN0W2ldLm5pZCA9PSBuaWQpCi0J CQl7Ci0JCQlyZXQgPSBlY19ncm91cF9uZXdfZnJvbV9kYXRhKGN1cnZlX2xpc3RbaV0pOwotCQkJ YnJlYWs7Ci0JCQl9CisgICAgZm9yIChpID0gMDsgaSA8IGN1cnZlX2xpc3RfbGVuZ3RoOyBpKysp CisgICAgICAgIGlmIChjdXJ2ZV9saXN0W2ldLm5pZCA9PSBuaWQpIHsKKyAgICAgICAgICAgIHJl dCA9IGVjX2dyb3VwX25ld19mcm9tX2RhdGEoY3VydmVfbGlzdFtpXSk7CisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgfQogCi0JaWYgKHJldCA9PSBOVUxMKQotCQl7Ci0JCUVDZXJyKEVDX0Zf RUNfR1JPVVBfTkVXX0JZX0NVUlZFX05BTUUsIEVDX1JfVU5LTk9XTl9HUk9VUCk7Ci0JCXJldHVy biBOVUxMOwotCQl9CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIEVDZXJyKEVDX0Zf RUNfR1JPVVBfTkVXX0JZX0NVUlZFX05BTUUsIEVDX1JfVU5LTk9XTl9HUk9VUCk7CisgICAgICAg IHJldHVybiBOVUxMOworICAgIH0KIAotCUVDX0dST1VQX3NldF9jdXJ2ZV9uYW1lKHJldCwgbmlk KTsKKyAgICBFQ19HUk9VUF9zZXRfY3VydmVfbmFtZShyZXQsIG5pZCk7CiAKLQlyZXR1cm4gcmV0 OwotCX0KKyAgICByZXR1cm4gcmV0OworfQogCiBzaXplX3QgRUNfZ2V0X2J1aWx0aW5fY3VydmVz KEVDX2J1aWx0aW5fY3VydmUgKnIsIHNpemVfdCBuaXRlbXMpCi0JewotCXNpemVfdAlpLCBtaW47 Cit7CisgICAgc2l6ZV90IGksIG1pbjsKKworICAgIGlmIChyID09IE5VTEwgfHwgbml0ZW1zID09 IDApCisgICAgICAgIHJldHVybiBjdXJ2ZV9saXN0X2xlbmd0aDsKKworICAgIG1pbiA9IG5pdGVt cyA8IGN1cnZlX2xpc3RfbGVuZ3RoID8gbml0ZW1zIDogY3VydmVfbGlzdF9sZW5ndGg7CiAKLQlp ZiAociA9PSBOVUxMIHx8IG5pdGVtcyA9PSAwKQotCQlyZXR1cm4gY3VydmVfbGlzdF9sZW5ndGg7 CisgICAgZm9yIChpID0gMDsgaSA8IG1pbjsgaSsrKSB7CisgICAgICAgIHJbaV0ubmlkID0gY3Vy dmVfbGlzdFtpXS5uaWQ7CisgICAgICAgIHJbaV0uY29tbWVudCA9IGN1cnZlX2xpc3RbaV0uY29t bWVudDsKKyAgICB9CiAKLQltaW4gPSBuaXRlbXMgPCBjdXJ2ZV9saXN0X2xlbmd0aCA/IG5pdGVt cyA6IGN1cnZlX2xpc3RfbGVuZ3RoOworICAgIHJldHVybiBjdXJ2ZV9saXN0X2xlbmd0aDsKK30K KworLyogRnVuY3Rpb25zIHRvIHRyYW5zbGF0ZSBiZXR3ZWVuIGNvbW1vbiBOSVNUIGN1cnZlIG5h bWVzIGFuZCBOSURzICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyICpuYW1l OyAgICAgICAgICAgLyogTklTVCBOYW1lIG9mIGN1cnZlICovCisgICAgaW50IG5pZDsgICAgICAg ICAgICAgICAgICAgIC8qIEN1cnZlIE5JRCAqLworfSBFQ19OSVNUX05BTUU7CisKK3N0YXRpYyBF Q19OSVNUX05BTUUgbmlzdF9jdXJ2ZXNbXSA9IHsKKyAgICB7IkItMTYzIiwgTklEX3NlY3QxNjNy Mn0sCisgICAgeyJCLTIzMyIsIE5JRF9zZWN0MjMzcjF9LAorICAgIHsiQi0yODMiLCBOSURfc2Vj dDI4M3IxfSwKKyAgICB7IkItNDA5IiwgTklEX3NlY3Q0MDlyMX0sCisgICAgeyJCLTU3MSIsIE5J RF9zZWN0NTcxcjF9LAorICAgIHsiSy0xNjMiLCBOSURfc2VjdDE2M2sxfSwKKyAgICB7IkstMjMz IiwgTklEX3NlY3QyMzNrMX0sCisgICAgeyJLLTI4MyIsIE5JRF9zZWN0MjgzazF9LAorICAgIHsi Sy00MDkiLCBOSURfc2VjdDQwOWsxfSwKKyAgICB7IkstNTcxIiwgTklEX3NlY3Q1NzFrMX0sCisg ICAgeyJQLTE5MiIsIE5JRF9YOV82Ml9wcmltZTE5MnYxfSwKKyAgICB7IlAtMjI0IiwgTklEX3Nl Y3AyMjRyMX0sCisgICAgeyJQLTI1NiIsIE5JRF9YOV82Ml9wcmltZTI1NnYxfSwKKyAgICB7IlAt Mzg0IiwgTklEX3NlY3AzODRyMX0sCisgICAgeyJQLTUyMSIsIE5JRF9zZWNwNTIxcjF9Cit9Owog Ci0JZm9yIChpID0gMDsgaSA8IG1pbjsgaSsrKQotCQl7Ci0JCXJbaV0ubmlkID0gY3VydmVfbGlz dFtpXS5uaWQ7Ci0JCXJbaV0uY29tbWVudCA9IGN1cnZlX2xpc3RbaV0uY29tbWVudDsKLQkJfQor Y29uc3QgY2hhciAqRUNfY3VydmVfbmlkMm5pc3QoaW50IG5pZCkKK3sKKyAgICBzaXplX3QgaTsK KyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKG5pc3RfY3VydmVzKSAvIHNpemVvZihFQ19OSVNU X05BTUUpOyBpKyspIHsKKyAgICAgICAgaWYgKG5pc3RfY3VydmVzW2ldLm5pZCA9PSBuaWQpCisg ICAgICAgICAgICByZXR1cm4gbmlzdF9jdXJ2ZXNbaV0ubmFtZTsKKyAgICB9CisgICAgcmV0dXJu IE5VTEw7Cit9CiAKLQlyZXR1cm4gY3VydmVfbGlzdF9sZW5ndGg7Ci0JfQoraW50IEVDX2N1cnZl X25pc3QybmlkKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgc2l6ZV90IGk7CisgICAgZm9yIChp ID0gMDsgaSA8IHNpemVvZihuaXN0X2N1cnZlcykgLyBzaXplb2YoRUNfTklTVF9OQU1FKTsgaSsr KSB7CisgICAgICAgIGlmICghc3RyY21wKG5pc3RfY3VydmVzW2ldLm5hbWUsIG5hbWUpKQorICAg ICAgICAgICAgcmV0dXJuIG5pc3RfY3VydmVzW2ldLm5pZDsKKyAgICB9CisgICAgcmV0dXJuIE5J RF91bmRlZjsKK30KCmRpZmYgLS1naXQgYS9lY3Rlc3QuYyBiL2VjdGVzdC5jCmluZGV4IDkyMWVk Y2QuLjcxZmVmMjMgMTAwNjQ0Ci0tLSBhL2VjdGVzdC5jCisrKyBiL2VjdGVzdC5jCkBAIC0xMCw3 ICsxMCw3IEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyLgogICoKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KQEAgLTU4LDEzICs1OCwx MyBAQAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KICAqIENvcHlyaWdodCAyMDAyIFN1biBNaWNyb3N5c3RlbXMs IEluYy4gQUxMIFJJR0hUUyBSRVNFUlZFRC4KICAqCi0gKiBQb3J0aW9ucyBvZiB0aGUgYXR0YWNo ZWQgc29mdHdhcmUgKCJDb250cmlidXRpb24iKSBhcmUgZGV2ZWxvcGVkIGJ5IAorICogUG9ydGlv bnMgb2YgdGhlIGF0dGFjaGVkIHNvZnR3YXJlICgiQ29udHJpYnV0aW9uIikgYXJlIGRldmVsb3Bl ZCBieQogICogU1VOIE1JQ1JPU1lTVEVNUywgSU5DLiwgYW5kIGFyZSBjb250cmlidXRlZCB0byB0 aGUgT3BlblNTTCBwcm9qZWN0LgogICoKICAqIFRoZSBDb250cmlidXRpb24gaXMgbGljZW5zZWQg cHVyc3VhbnQgdG8gdGhlIE9wZW5TU0wgb3BlbiBzb3VyY2UKICAqIGxpY2Vuc2UgcHJvdmlkZWQg YWJvdmUuCiAgKgotICogVGhlIGVsbGlwdGljIGN1cnZlIGJpbmFyeSBwb2x5bm9taWFsIHNvZnR3 YXJlIGlzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSAKKyAqIFRoZSBlbGxpcHRpYyBjdXJ2ZSBiaW5h cnkgcG9seW5vbWlhbCBzb2Z0d2FyZSBpcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkKICAqIFNoZXVl bGluZyBDaGFuZyBTaGFudHogYW5kIERvdWdsYXMgU3RlYmlsYSBvZiBTdW4gTWljcm9zeXN0ZW1z IExhYm9yYXRvcmllcy4KICAqCiAgKi8KQEAgLTcyLDY3MSArNzIsOTE0IEBACiAjaW5jbHVkZSA8 c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpZmRlZiBGTEFUX0lOQwotI2luY2x1ZGUg ImVfb3MuaCIKKyMgaW5jbHVkZSAiZV9vcy5oIgogI2Vsc2UKLSNpbmNsdWRlICIuLi9lX29zLmgi CisjIGluY2x1ZGUgIi4uL2Vfb3MuaCIKICNlbmRpZgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2lu Y2x1ZGUgPHRpbWUuaD4KIAotCiAjaWZkZWYgT1BFTlNTTF9OT19FQwotaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKiBhcmd2W10pIHsgcHV0cygiRWxsaXB0aWMgY3VydmVzIGFyZSBkaXNhYmxlZC4i KTsgcmV0dXJuIDA7IH0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAg cHV0cygiRWxsaXB0aWMgY3VydmVzIGFyZSBkaXNhYmxlZC4iKTsKKyAgICByZXR1cm4gMDsKK30K ICNlbHNlCiAKLQotI2luY2x1ZGUgPG9wZW5zc2wvZWMuaD4KLSNpZm5kZWYgT1BFTlNTTF9OT19F TkdJTkUKLSNpbmNsdWRlIDxvcGVuc3NsL2VuZ2luZS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8b3Bl bnNzbC9lcnIuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL29ial9tYWMuaD4KLSNpbmNsdWRlIDxvcGVu c3NsL29iamVjdHMuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KLSNpbmNsdWRlIDxvcGVu c3NsL2JuLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgotCi0jaWYgZGVmaW5l ZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTUlQU18pICYmIChfTVNDX1ZFUi8xMDA9PTEyKQorIyBp bmNsdWRlIDxvcGVuc3NsL2VjLmg+CisjIGlmbmRlZiBPUEVOU1NMX05PX0VOR0lORQorIyAgaW5j bHVkZSA8b3BlbnNzbC9lbmdpbmUuaD4KKyMgZW5kaWYKKyMgaW5jbHVkZSA8b3BlbnNzbC9lcnIu aD4KKyMgaW5jbHVkZSA8b3BlbnNzbC9vYmpfbWFjLmg+CisjIGluY2x1ZGUgPG9wZW5zc2wvb2Jq ZWN0cy5oPgorIyBpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKyMgaW5jbHVkZSA8b3BlbnNzbC9i bi5oPgorIyBpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisKKyMgaWYgZGVmaW5lZChf TVNDX1ZFUikgJiYgZGVmaW5lZChfTUlQU18pICYmIChfTVNDX1ZFUi8xMDA9PTEyKQogLyogc3Vw cHJlc3MgInRvbyBiaWcgdG9vIG9wdGltaXplIiB3YXJuaW5nICovCi0jcHJhZ21hIHdhcm5pbmco ZGlzYWJsZTo0OTU5KQotI2VuZGlmCi0KLSNkZWZpbmUgQUJPUlQgZG8geyBcCi0JZmZsdXNoKHN0 ZG91dCk7IFwKLQlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBBQk9SVFxuIiwgX19GSUxFX18sIF9f TElORV9fKTsgXAotCUVSUl9wcmludF9lcnJvcnNfZnAoc3RkZXJyKTsgXAotCUVYSVQoMSk7IFwK KyMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk1OSkKKyMgZW5kaWYKKworIyBkZWZpbmUgQUJP UlQgZG8geyBcCisgICAgICAgIGZmbHVzaChzdGRvdXQpOyBcCisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiJXM6JWQ6IEFCT1JUXG4iLCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisgICAgICAgIEVS Ul9wcmludF9lcnJvcnNfZnAoc3RkZXJyKTsgXAorICAgICAgICBFWElUKDEpOyBcCiB9IHdoaWxl ICgwKQogCi0jZGVmaW5lIFRJTUlOR19CQVNFX1BUIDAKLSNkZWZpbmUgVElNSU5HX1JBTkRfUFQg MQotI2RlZmluZSBUSU1JTkdfU0lNVUwgMgorIyBkZWZpbmUgVElNSU5HX0JBU0VfUFQgMAorIyBk ZWZpbmUgVElNSU5HX1JBTkRfUFQgMQorIyBkZWZpbmUgVElNSU5HX1NJTVVMIDIKIAotI2lmIDAK KyMgaWYgMAogc3RhdGljIHZvaWQgdGltaW5ncyhFQ19HUk9VUCAqZ3JvdXAsIGludCB0eXBlLCBC Tl9DVFggKmN0eCkKLQl7Ci0JY2xvY2tfdCBjbGNrOwotCWludCBpLCBqOwotCUJJR05VTSAqczsK LQlCSUdOVU0gKnJbMTBdLCAqcjBbMTBdOwotCUVDX1BPSU5UICpQOwotCQkKLQlzID0gQk5fbmV3 KCk7Ci0JaWYgKHMgPT0gTlVMTCkgQUJPUlQ7Ci0KLQlmcHJpbnRmKHN0ZG91dCwgIlRpbWluZ3Mg Zm9yICVkLWJpdCBmaWVsZCwgIiwgRUNfR1JPVVBfZ2V0X2RlZ3JlZShncm91cCkpOwotCWlmICgh RUNfR1JPVVBfZ2V0X29yZGVyKGdyb3VwLCBzLCBjdHgpKSBBQk9SVDsKLQlmcHJpbnRmKHN0ZG91 dCwgIiVkLWJpdCBzY2FsYXJzICIsIChpbnQpQk5fbnVtX2JpdHMocykpOwotCWZmbHVzaChzdGRv dXQpOwotCi0JUCA9IEVDX1BPSU5UX25ldyhncm91cCk7Ci0JaWYgKFAgPT0gTlVMTCkgQUJPUlQ7 Ci0JRUNfUE9JTlRfY29weShQLCBFQ19HUk9VUF9nZXQwX2dlbmVyYXRvcihncm91cCkpOwotCi0J Zm9yIChpID0gMDsgaSA8IDEwOyBpKyspCi0JCXsKLQkJaWYgKChyW2ldID0gQk5fbmV3KCkpID09 IE5VTEwpIEFCT1JUOwotCQlpZiAoIUJOX3BzZXVkb19yYW5kKHJbaV0sIEJOX251bV9iaXRzKHMp LCAwLCAwKSkgQUJPUlQ7Ci0JCWlmICh0eXBlICE9IFRJTUlOR19CQVNFX1BUKQotCQkJewotCQkJ aWYgKChyMFtpXSA9IEJOX25ldygpKSA9PSBOVUxMKSBBQk9SVDsKLQkJCWlmICghQk5fcHNldWRv X3JhbmQocjBbaV0sIEJOX251bV9iaXRzKHMpLCAwLCAwKSkgQUJPUlQ7Ci0JCQl9Ci0JCX0KLQot CWNsY2sgPSBjbG9jaygpOwotCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKQotCQl7Ci0JCWZvciAo aiA9IDA7IGogPCAxMDsgaisrKQotCQkJewotCQkJaWYgKCFFQ19QT0lOVF9tdWwoZ3JvdXAsIFAs ICh0eXBlICE9IFRJTUlOR19SQU5EX1BUKSA/IHJbaV0gOiBOVUxMLCAKLQkJCQkodHlwZSAhPSBU SU1JTkdfQkFTRV9QVCkgPyBQIDogTlVMTCwgKHR5cGUgIT0gVElNSU5HX0JBU0VfUFQpID8gcjBb aV0gOiBOVUxMLCBjdHgpKSBBQk9SVDsKLQkJCX0KLQkJfQotCWNsY2sgPSBjbG9jaygpIC0gY2xj azsKLQotCWZwcmludGYoc3Rkb3V0LCAiXG4iKTsKLQotI2lmZGVmIENMT0NLU19QRVJfU0VDCi0J LyogIlRvIGRldGVybWluZSB0aGUgdGltZSBpbiBzZWNvbmRzLCB0aGUgdmFsdWUgcmV0dXJuZWQK LQkgKiBieSB0aGUgY2xvY2sgZnVuY3Rpb24gc2hvdWxkIGJlIGRpdmlkZWQgYnkgdGhlIHZhbHVl Ci0JICogb2YgdGhlIG1hY3JvIENMT0NLU19QRVJfU0VDLiIKLQkgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tIElTTy9JRUMgOTg5OSAqLwotIwlkZWZpbmUgVU5JVCAi cyIKLSNlbHNlCi0JLyogImBDTE9DS1NfUEVSX1NFQycgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIHRo aXMgZnVuY3Rpb24pIgotCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGNjIG9uIE5l WFRzdGVwL09wZW5TdGVwICovCi0jCWRlZmluZSBVTklUICJ1bml0cyIKLSMJZGVmaW5lIENMT0NL U19QRVJfU0VDIDEKLSNlbmRpZgotCi0JaWYgKHR5cGUgPT0gVElNSU5HX0JBU0VfUFQpIHsKLQkJ ZnByaW50ZihzdGRvdXQsICIlaSAlcyBpbiAlLjJmICIgVU5JVCAiXG4iLCBpKmosCi0JCQkiYmFz ZSBwb2ludCBtdWx0aXBsaWNhdGlvbnMiLCAoZG91YmxlKWNsY2svQ0xPQ0tTX1BFUl9TRUMpOwot CX0gZWxzZSBpZiAodHlwZSA9PSBUSU1JTkdfUkFORF9QVCkgewotCQlmcHJpbnRmKHN0ZG91dCwg IiVpICVzIGluICUuMmYgIiBVTklUICJcbiIsIGkqaiwKLQkJCSJyYW5kb20gcG9pbnQgbXVsdGlw bGljYXRpb25zIiwgKGRvdWJsZSljbGNrL0NMT0NLU19QRVJfU0VDKTsKLQl9IGVsc2UgaWYgKHR5 cGUgPT0gVElNSU5HX1NJTVVMKSB7Ci0JCWZwcmludGYoc3Rkb3V0LCAiJWkgJXMgaW4gJS4yZiAi IFVOSVQgIlxuIiwgaSpqLAotCQkJInMqUCt0KlEgb3BlcmF0aW9ucyIsIChkb3VibGUpY2xjay9D TE9DS1NfUEVSX1NFQyk7Ci0JfQotCWZwcmludGYoc3Rkb3V0LCAiYXZlcmFnZTogJS40ZiAiIFVO SVQgIlxuIiwgKGRvdWJsZSljbGNrLyhDTE9DS1NfUEVSX1NFQyppKmopKTsKLQotCUVDX1BPSU5U X2ZyZWUoUCk7Ci0JQk5fZnJlZShzKTsKLQlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykKLQkJewot CQlCTl9mcmVlKHJbaV0pOwotCQlpZiAodHlwZSAhPSBUSU1JTkdfQkFTRV9QVCkgQk5fZnJlZShy MFtpXSk7Ci0JCX0KLQl9Ci0jZW5kaWYKK3sKKyAgICBjbG9ja190IGNsY2s7CisgICAgaW50IGks IGo7CisgICAgQklHTlVNICpzOworICAgIEJJR05VTSAqclsxMF0sICpyMFsxMF07CisgICAgRUNf UE9JTlQgKlA7CisKKyAgICBzID0gQk5fbmV3KCk7CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAg ICAgQUJPUlQ7CisKKyAgICBmcHJpbnRmKHN0ZG91dCwgIlRpbWluZ3MgZm9yICVkLWJpdCBmaWVs ZCwgIiwgRUNfR1JPVVBfZ2V0X2RlZ3JlZShncm91cCkpOworICAgIGlmICghRUNfR1JPVVBfZ2V0 X29yZGVyKGdyb3VwLCBzLCBjdHgpKQorICAgICAgICBBQk9SVDsKKyAgICBmcHJpbnRmKHN0ZG91 dCwgIiVkLWJpdCBzY2FsYXJzICIsIChpbnQpQk5fbnVtX2JpdHMocykpOworICAgIGZmbHVzaChz dGRvdXQpOworCisgICAgUCA9IEVDX1BPSU5UX25ldyhncm91cCk7CisgICAgaWYgKFAgPT0gTlVM TCkKKyAgICAgICAgQUJPUlQ7CisgICAgRUNfUE9JTlRfY29weShQLCBFQ19HUk9VUF9nZXQwX2dl bmVyYXRvcihncm91cCkpOworCisgICAgZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAg ICAgaWYgKChyW2ldID0gQk5fbmV3KCkpID09IE5VTEwpCisgICAgICAgICAgICBBQk9SVDsKKyAg ICAgICAgaWYgKCFCTl9wc2V1ZG9fcmFuZChyW2ldLCBCTl9udW1fYml0cyhzKSwgMCwgMCkpCisg ICAgICAgICAgICBBQk9SVDsKKyAgICAgICAgaWYgKHR5cGUgIT0gVElNSU5HX0JBU0VfUFQpIHsK KyAgICAgICAgICAgIGlmICgocjBbaV0gPSBCTl9uZXcoKSkgPT0gTlVMTCkKKyAgICAgICAgICAg ICAgICBBQk9SVDsKKyAgICAgICAgICAgIGlmICghQk5fcHNldWRvX3JhbmQocjBbaV0sIEJOX251 bV9iaXRzKHMpLCAwLCAwKSkKKyAgICAgICAgICAgICAgICBBQk9SVDsKKyAgICAgICAgfQorICAg IH0KKworICAgIGNsY2sgPSBjbG9jaygpOworICAgIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7 CisgICAgICAgIGZvciAoaiA9IDA7IGogPCAxMDsgaisrKSB7CisgICAgICAgICAgICBpZiAoIUVD X1BPSU5UX211bAorICAgICAgICAgICAgICAgIChncm91cCwgUCwgKHR5cGUgIT0gVElNSU5HX1JB TkRfUFQpID8gcltpXSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICh0eXBlICE9IFRJTUlOR19C QVNFX1BUKSA/IFAgOiBOVUxMLAorICAgICAgICAgICAgICAgICAodHlwZSAhPSBUSU1JTkdfQkFT RV9QVCkgPyByMFtpXSA6IE5VTEwsIGN0eCkpCisgICAgICAgICAgICAgICAgQUJPUlQ7CisgICAg ICAgIH0KKyAgICB9CisgICAgY2xjayA9IGNsb2NrKCkgLSBjbGNrOworCisgICAgZnByaW50Zihz dGRvdXQsICJcbiIpOworCisjICBpZmRlZiBDTE9DS1NfUEVSX1NFQworICAgIC8qCisgICAgICog IlRvIGRldGVybWluZSB0aGUgdGltZSBpbiBzZWNvbmRzLCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkg dGhlIGNsb2NrCisgICAgICogZnVuY3Rpb24gc2hvdWxkIGJlIGRpdmlkZWQgYnkgdGhlIHZhbHVl IG9mIHRoZSBtYWNybyBDTE9DS1NfUEVSX1NFQy4iCisgICAgICogLS0gSVNPL0lFQyA5ODk5Cisg ICAgICovCisjICAgZGVmaW5lIFVOSVQgInMiCisjICBlbHNlCisgICAgLyoKKyAgICAgKiAiYENM T0NLU19QRVJfU0VDJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgdGhpcyBmdW5jdGlvbikiIC0tIGNj IG9uCisgICAgICogTmVYVHN0ZXAvT3BlblN0ZXAKKyAgICAgKi8KKyMgICBkZWZpbmUgVU5JVCAi dW5pdHMiCisjICAgZGVmaW5lIENMT0NLU19QRVJfU0VDIDEKKyMgIGVuZGlmCisKKyAgICBpZiAo dHlwZSA9PSBUSU1JTkdfQkFTRV9QVCkgeworICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVpICVz IGluICUuMmYgIiBVTklUICJcbiIsIGkgKiBqLAorICAgICAgICAgICAgICAgICJiYXNlIHBvaW50 IG11bHRpcGxpY2F0aW9ucyIsIChkb3VibGUpY2xjayAvIENMT0NLU19QRVJfU0VDKTsKKyAgICB9 IGVsc2UgaWYgKHR5cGUgPT0gVElNSU5HX1JBTkRfUFQpIHsKKyAgICAgICAgZnByaW50ZihzdGRv dXQsICIlaSAlcyBpbiAlLjJmICIgVU5JVCAiXG4iLCBpICogaiwKKyAgICAgICAgICAgICAgICAi cmFuZG9tIHBvaW50IG11bHRpcGxpY2F0aW9ucyIsCisgICAgICAgICAgICAgICAgKGRvdWJsZSlj bGNrIC8gQ0xPQ0tTX1BFUl9TRUMpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUSU1JTkdfU0lN VUwpIHsKKyAgICAgICAgZnByaW50ZihzdGRvdXQsICIlaSAlcyBpbiAlLjJmICIgVU5JVCAiXG4i LCBpICogaiwKKyAgICAgICAgICAgICAgICAicypQK3QqUSBvcGVyYXRpb25zIiwgKGRvdWJsZSlj bGNrIC8gQ0xPQ0tTX1BFUl9TRUMpOworICAgIH0KKyAgICBmcHJpbnRmKHN0ZG91dCwgImF2ZXJh Z2U6ICUuNGYgIiBVTklUICJcbiIsCisgICAgICAgICAgICAoZG91YmxlKWNsY2sgLyAoQ0xPQ0tT X1BFUl9TRUMgKiBpICogaikpOworCisgICAgRUNfUE9JTlRfZnJlZShQKTsKKyAgICBCTl9mcmVl KHMpOworICAgIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgICAgIEJOX2ZyZWUocltp XSk7CisgICAgICAgIGlmICh0eXBlICE9IFRJTUlOR19CQVNFX1BUKQorICAgICAgICAgICAgQk5f ZnJlZShyMFtpXSk7CisgICAgfQorfQorIyBlbmRpZgogCiAvKiB0ZXN0IG11bHRpcGxpY2F0aW9u IHdpdGggZ3JvdXAgb3JkZXIsIGxvbmcgYW5kIG5lZ2F0aXZlIHNjYWxhcnMgKi8KIHN0YXRpYyB2 b2lkIGdyb3VwX29yZGVyX3Rlc3RzKEVDX0dST1VQICpncm91cCkKLQl7Ci0JQklHTlVNICpuMSwg Km4yLCAqb3JkZXI7Ci0JRUNfUE9JTlQgKlAgPSBFQ19QT0lOVF9uZXcoZ3JvdXApOwotCUVDX1BP SU5UICpRID0gRUNfUE9JTlRfbmV3KGdyb3VwKTsKLQlCTl9DVFggKmN0eCA9IEJOX0NUWF9uZXco KTsKLQotCW4xID0gQk5fbmV3KCk7IG4yID0gQk5fbmV3KCk7IG9yZGVyID0gQk5fbmV3KCk7Ci0J ZnByaW50ZihzdGRvdXQsICJ2ZXJpZnkgZ3JvdXAgb3JkZXIgLi4uIik7Ci0JZmZsdXNoKHN0ZG91 dCk7Ci0JaWYgKCFFQ19HUk9VUF9nZXRfb3JkZXIoZ3JvdXAsIG9yZGVyLCBjdHgpKSBBQk9SVDsK LQlpZiAoIUVDX1BPSU5UX211bChncm91cCwgUSwgb3JkZXIsIE5VTEwsIE5VTEwsIGN0eCkpIEFC T1JUOwotCWlmICghRUNfUE9JTlRfaXNfYXRfaW5maW5pdHkoZ3JvdXAsIFEpKSBBQk9SVDsKLQlm cHJpbnRmKHN0ZG91dCwgIi4iKTsKLQlmZmx1c2goc3Rkb3V0KTsKLQlpZiAoIUVDX0dST1VQX3By ZWNvbXB1dGVfbXVsdChncm91cCwgY3R4KSkgQUJPUlQ7Ci0JaWYgKCFFQ19QT0lOVF9tdWwoZ3Jv dXAsIFEsIG9yZGVyLCBOVUxMLCBOVUxMLCBjdHgpKSBBQk9SVDsKLQlpZiAoIUVDX1BPSU5UX2lz X2F0X2luZmluaXR5KGdyb3VwLCBRKSkgQUJPUlQ7Ci0JZnByaW50ZihzdGRvdXQsICIgb2tcbiIp OwotCWZwcmludGYoc3Rkb3V0LCAibG9uZy9uZWdhdGl2ZSBzY2FsYXIgdGVzdHMgLi4uICIpOwot CWlmICghQk5fb25lKG4xKSkgQUJPUlQ7Ci0JLyogbjEgPSAxIC0gb3JkZXIgKi8KLQlpZiAoIUJO X3N1YihuMSwgbjEsIG9yZGVyKSkgQUJPUlQ7Ci0JaWYoIUVDX1BPSU5UX211bChncm91cCwgUSwg TlVMTCwgUCwgbjEsIGN0eCkpIEFCT1JUOwotCWlmICgwICE9IEVDX1BPSU5UX2NtcChncm91cCwg USwgUCwgY3R4KSkgQUJPUlQ7Ci0JLyogbjIgPSAxICsgb3JkZXIgKi8KLQlpZiAoIUJOX2FkZChu Miwgb3JkZXIsIEJOX3ZhbHVlX29uZSgpKSkgQUJPUlQ7Ci0JaWYoIUVDX1BPSU5UX211bChncm91 cCwgUSwgTlVMTCwgUCwgbjIsIGN0eCkpIEFCT1JUOwotCWlmICgwICE9IEVDX1BPSU5UX2NtcChn cm91cCwgUSwgUCwgY3R4KSkgQUJPUlQ7Ci0JLyogbjIgPSAoMSAtIG9yZGVyKSAqICgxICsgb3Jk ZXIpICovCi0JaWYgKCFCTl9tdWwobjIsIG4xLCBuMiwgY3R4KSkgQUJPUlQ7Ci0JaWYoIUVDX1BP SU5UX211bChncm91cCwgUSwgTlVMTCwgUCwgbjIsIGN0eCkpIEFCT1JUOwotCWlmICgwICE9IEVD X1BPSU5UX2NtcChncm91cCwgUSwgUCwgY3R4KSkgQUJPUlQ7Ci0JZnByaW50ZihzdGRvdXQsICJv a1xuIik7Ci0JRUNfUE9JTlRfZnJlZShQKTsKLQlFQ19QT0lOVF9mcmVlKFEpOwotCUJOX2ZyZWUo bjEpOwotCUJOX2ZyZWUobjIpOwotCUJOX2ZyZWUob3JkZXIpOwotCUJOX0NUWF9mcmVlKGN0eCk7 Ci0JfQoreworICAgIEJJR05VTSAqbjEsICpuMiwgKm9yZGVyOworICAgIEVDX1BPSU5UICpQID0g RUNfUE9JTlRfbmV3KGdyb3VwKTsKKyAgICBFQ19QT0lOVCAqUSA9IEVDX1BPSU5UX25ldyhncm91 cCk7CisgICAgQk5fQ1RYICpjdHggPSBCTl9DVFhfbmV3KCk7CisgICAgaW50IGk7CisKKyAgICBu MSA9IEJOX25ldygpOworICAgIG4yID0gQk5fbmV3KCk7CisgICAgb3JkZXIgPSBCTl9uZXcoKTsK KyAgICBmcHJpbnRmKHN0ZG91dCwgInZlcmlmeSBncm91cCBvcmRlciAuLi4iKTsKKyAgICBmZmx1 c2goc3Rkb3V0KTsKKyAgICBpZiAoIUVDX0dST1VQX2dldF9vcmRlcihncm91cCwgb3JkZXIsIGN0 eCkpCisgICAgICAgIEFCT1JUOworICAgIGlmICghRUNfUE9JTlRfbXVsKGdyb3VwLCBRLCBvcmRl ciwgTlVMTCwgTlVMTCwgY3R4KSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFFQ19QT0lOVF9p c19hdF9pbmZpbml0eShncm91cCwgUSkpCisgICAgICAgIEFCT1JUOworICAgIGZwcmludGYoc3Rk b3V0LCAiLiIpOworICAgIGZmbHVzaChzdGRvdXQpOworICAgIGlmICghRUNfR1JPVVBfcHJlY29t cHV0ZV9tdWx0KGdyb3VwLCBjdHgpKQorICAgICAgICBBQk9SVDsKKyAgICBpZiAoIUVDX1BPSU5U X211bChncm91cCwgUSwgb3JkZXIsIE5VTEwsIE5VTEwsIGN0eCkpCisgICAgICAgIEFCT1JUOwor ICAgIGlmICghRUNfUE9JTlRfaXNfYXRfaW5maW5pdHkoZ3JvdXAsIFEpKQorICAgICAgICBBQk9S VDsKKyAgICBmcHJpbnRmKHN0ZG91dCwgIiBva1xuIik7CisgICAgZnByaW50ZihzdGRvdXQsICJs b25nL25lZ2F0aXZlIHNjYWxhciB0ZXN0cyAiKTsKKyAgICBmb3IgKGkgPSAxOyBpIDw9IDI7IGkr KykgeworICAgICAgICBjb25zdCBCSUdOVU0gKnNjYWxhcnNbNl07CisgICAgICAgIGNvbnN0IEVD X1BPSU5UICpwb2ludHNbNl07CisKKyAgICAgICAgZnByaW50ZihzdGRvdXQsIGkgPT0gMSA/Cisg ICAgICAgICAgICAgICAgImFsbG93aW5nIHByZWNvbXB1dGF0aW9uIC4uLiAiIDoKKyAgICAgICAg ICAgICAgICAid2l0aG91dCBwcmVjb21wdXRhdGlvbiAuLi4gIik7CisgICAgICAgIGlmICghQk5f c2V0X3dvcmQobjEsIGkpKQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIC8qCisgICAgICAg ICAqIElmIGkgPT0gMSwgUCB3aWxsIGJlIHRoZSBwcmVkZWZpbmVkIGdlbmVyYXRvciBmb3Igd2hp Y2gKKyAgICAgICAgICogRUNfR1JPVVBfcHJlY29tcHV0ZV9tdWx0IGhhcyBzZXQgdXAgcHJlY29t cHV0YXRpb24uCisgICAgICAgICAqLworICAgICAgICBpZiAoIUVDX1BPSU5UX211bChncm91cCwg UCwgbjEsIE5VTEwsIE5VTEwsIGN0eCkpCisgICAgICAgICAgICBBQk9SVDsKKworICAgICAgICBp ZiAoIUJOX29uZShuMSkpCisgICAgICAgICAgICBBQk9SVDsKKyAgICAgICAgLyogbjEgPSAxIC0g b3JkZXIgKi8KKyAgICAgICAgaWYgKCFCTl9zdWIobjEsIG4xLCBvcmRlcikpCisgICAgICAgICAg ICBBQk9SVDsKKyAgICAgICAgaWYgKCFFQ19QT0lOVF9tdWwoZ3JvdXAsIFEsIE5VTEwsIFAsIG4x LCBjdHgpKQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIGlmICgwICE9IEVDX1BPSU5UX2Nt cChncm91cCwgUSwgUCwgY3R4KSkKKyAgICAgICAgICAgIEFCT1JUOworCisgICAgICAgIC8qIG4y ID0gMSArIG9yZGVyICovCisgICAgICAgIGlmICghQk5fYWRkKG4yLCBvcmRlciwgQk5fdmFsdWVf b25lKCkpKQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIGlmICghRUNfUE9JTlRfbXVsKGdy b3VwLCBRLCBOVUxMLCBQLCBuMiwgY3R4KSkKKyAgICAgICAgICAgIEFCT1JUOworICAgICAgICBp ZiAoMCAhPSBFQ19QT0lOVF9jbXAoZ3JvdXAsIFEsIFAsIGN0eCkpCisgICAgICAgICAgICBBQk9S VDsKKworICAgICAgICAvKiBuMiA9ICgxIC0gb3JkZXIpICogKDEgKyBvcmRlcikgPSAxIC0gb3Jk ZXJeMiAqLworICAgICAgICBpZiAoIUJOX211bChuMiwgbjEsIG4yLCBjdHgpKQorICAgICAgICAg ICAgQUJPUlQ7CisgICAgICAgIGlmICghRUNfUE9JTlRfbXVsKGdyb3VwLCBRLCBOVUxMLCBQLCBu MiwgY3R4KSkKKyAgICAgICAgICAgIEFCT1JUOworICAgICAgICBpZiAoMCAhPSBFQ19QT0lOVF9j bXAoZ3JvdXAsIFEsIFAsIGN0eCkpCisgICAgICAgICAgICBBQk9SVDsKKworICAgICAgICAvKiBu MiA9IG9yZGVyXjIgLSAxICovCisgICAgICAgIEJOX3NldF9uZWdhdGl2ZShuMiwgMCk7CisgICAg ICAgIGlmICghRUNfUE9JTlRfbXVsKGdyb3VwLCBRLCBOVUxMLCBQLCBuMiwgY3R4KSkKKyAgICAg ICAgICAgIEFCT1JUOworICAgICAgICAvKiBBZGQgUCB0byB2ZXJpZnkgdGhlIHJlc3VsdC4gKi8K KyAgICAgICAgaWYgKCFFQ19QT0lOVF9hZGQoZ3JvdXAsIFEsIFEsIFAsIGN0eCkpCisgICAgICAg ICAgICBBQk9SVDsKKyAgICAgICAgaWYgKCFFQ19QT0lOVF9pc19hdF9pbmZpbml0eShncm91cCwg USkpCisgICAgICAgICAgICBBQk9SVDsKKworICAgICAgICAvKiBFeGVyY2lzZSBFQ19QT0lOVHNf bXVsLCBpbmNsdWRpbmcgY29ybmVyIGNhc2VzLiAqLworICAgICAgICBpZiAoRUNfUE9JTlRfaXNf YXRfaW5maW5pdHkoZ3JvdXAsIFApKQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIHNjYWxh cnNbMF0gPSBuMTsKKyAgICAgICAgcG9pbnRzWzBdID0gUTsgICAgICAgICAgLyogPT4gaW5maW5p dHkgKi8KKyAgICAgICAgc2NhbGFyc1sxXSA9IG4yOworICAgICAgICBwb2ludHNbMV0gPSBQOyAg ICAgICAgICAvKiA9PiAtUCAqLworICAgICAgICBzY2FsYXJzWzJdID0gbjE7CisgICAgICAgIHBv aW50c1syXSA9IFE7ICAgICAgICAgIC8qID0+IGluZmluaXR5ICovCisgICAgICAgIHNjYWxhcnNb M10gPSBuMjsKKyAgICAgICAgcG9pbnRzWzNdID0gUTsgICAgICAgICAgLyogPT4gaW5maW5pdHkg Ki8KKyAgICAgICAgc2NhbGFyc1s0XSA9IG4xOworICAgICAgICBwb2ludHNbNF0gPSBQOyAgICAg ICAgICAvKiA9PiBQICovCisgICAgICAgIHNjYWxhcnNbNV0gPSBuMjsKKyAgICAgICAgcG9pbnRz WzVdID0gUTsgICAgICAgICAgLyogPT4gaW5maW5pdHkgKi8KKyAgICAgICAgaWYgKCFFQ19QT0lO VHNfbXVsKGdyb3VwLCBQLCBOVUxMLCA2LCBwb2ludHMsIHNjYWxhcnMsIGN0eCkpCisgICAgICAg ICAgICBBQk9SVDsKKyAgICAgICAgaWYgKCFFQ19QT0lOVF9pc19hdF9pbmZpbml0eShncm91cCwg UCkpCisgICAgICAgICAgICBBQk9SVDsKKyAgICB9CisgICAgZnByaW50ZihzdGRvdXQsICJva1xu Iik7CisKKyAgICBFQ19QT0lOVF9mcmVlKFApOworICAgIEVDX1BPSU5UX2ZyZWUoUSk7CisgICAg Qk5fZnJlZShuMSk7CisgICAgQk5fZnJlZShuMik7CisgICAgQk5fZnJlZShvcmRlcik7CisgICAg Qk5fQ1RYX2ZyZWUoY3R4KTsKK30KIAogc3RhdGljIHZvaWQgcHJpbWVfZmllbGRfdGVzdHModm9p ZCkKLQl7Ci0JQk5fQ1RYICpjdHggPSBOVUxMOwotCUJJR05VTSAqcCwgKmEsICpiOwotCUVDX0dS T1VQICpncm91cDsKLQlFQ19HUk9VUCAqUF8xNjAgPSBOVUxMLCAqUF8xOTIgPSBOVUxMLCAqUF8y MjQgPSBOVUxMLCAqUF8yNTYgPSBOVUxMLCAqUF8zODQgPSBOVUxMLCAqUF81MjEgPSBOVUxMOwot CUVDX1BPSU5UICpQLCAqUSwgKlI7Ci0JQklHTlVNICp4LCAqeSwgKno7Ci0JdW5zaWduZWQgY2hh ciBidWZbMTAwXTsKLQlzaXplX3QgaSwgbGVuOwotCWludCBrOwotCQotI2lmIDEgLyogb3B0aW9u YWwgKi8KLQljdHggPSBCTl9DVFhfbmV3KCk7Ci0JaWYgKCFjdHgpIEFCT1JUOwotI2VuZGlmCi0K LQlwID0gQk5fbmV3KCk7Ci0JYSA9IEJOX25ldygpOwotCWIgPSBCTl9uZXcoKTsKLQlpZiAoIXAg fHwgIWEgfHwgIWIpIEFCT1JUOwotCQotCWdyb3VwID0gRUNfR1JPVVBfbmV3KEVDX0dGcF9tb250 X21ldGhvZCgpKTsgLyogYXBwbGljYXRpb25zIHNob3VsZCB1c2UgRUNfR1JPVVBfbmV3X2N1cnZl X0dGcAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc28g dGhhdCB0aGUgbGlicmFyeSBnZXRzIHRvIGNob29zZSB0aGUgRUNfTUVUSE9EICovCi0JaWYgKCFn cm91cCkgQUJPUlQ7Ci0KLQlQID0gRUNfUE9JTlRfbmV3KGdyb3VwKTsKLQlRID0gRUNfUE9JTlRf bmV3KGdyb3VwKTsKLQlSID0gRUNfUE9JTlRfbmV3KGdyb3VwKTsKLQlpZiAoIVAgfHwgIVEgfHwg IVIpIEFCT1JUOwotCi0JeCA9IEJOX25ldygpOwotCXkgPSBCTl9uZXcoKTsKLQl6ID0gQk5fbmV3 KCk7Ci0JaWYgKCF4IHx8ICF5IHx8ICF6KSBBQk9SVDsKLQotLyogQ3VydmUgUC0yNTYgKEZJUFMg UFVCIDE4Ni0yLCBBcHAuIDYpICovCi0JCi0JaWYgKCFCTl9oZXgyYm4oJnAsICJGRkZGRkZGRjAw MDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIikp IEFCT1JUOwotCWlmICgxICE9IEJOX2lzX3ByaW1lX2V4KHAsIEJOX3ByaW1lX2NoZWNrcywgY3R4 LCBOVUxMKSkgQUJPUlQ7Ci0JaWYgKCFCTl9oZXgyYm4oJmEsICJGRkZGRkZGRjAwMDAwMDAxMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZDIikpIEFCT1JUOwot CWlmICghQk5faGV4MmJuKCZiLCAiNUFDNjM1RDhBQTNBOTNFN0IzRUJCRDU1NzY5ODg2QkM2NTFE MDZCMENDNTNCMEY2M0JDRTNDM0UyN0QyNjA0QiIpKSBBQk9SVDsKLQlpZiAoIUVDX0dST1VQX3Nl dF9jdXJ2ZV9HRnAoZ3JvdXAsIHAsIGEsIGIsIGN0eCkpIEFCT1JUOwotCi0JaWYgKCFCTl9oZXgy Ym4oJngsICI2QjE3RDFGMkUxMkM0MjQ3RjhCQ0U2RTU2M0E0NDBGMjc3MDM3RDgxMkRFQjMzQTBG NEExMzk0NUQ4OThDMjk2IikpIEFCT1JUOwotCWlmICghRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRf Y29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBQLCB4LCAxLCBjdHgpKSBBQk9SVDsKLQlpZiAoIUVDX1BP SU5UX2lzX29uX2N1cnZlKGdyb3VwLCBQLCBjdHgpKSBBQk9SVDsKLQlpZiAoIUJOX2hleDJibigm eiwgIkZGRkZGRkZGMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGQkNFNkZBQURBNzE3OUUiCi0JCSI4 NEYzQjlDQUMyRkM2MzI1NTEiKSkgQUJPUlQ7Ci0JaWYgKCFFQ19HUk9VUF9zZXRfZ2VuZXJhdG9y KGdyb3VwLCBQLCB6LCBCTl92YWx1ZV9vbmUoKSkpIEFCT1JUOwotCi0JaWYgKCFFQ19QT0lOVF9n ZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgUCwgeCwgeSwgY3R4KSkgQUJPUlQ7Ci0J ZnByaW50ZihzdGRvdXQsICJcbk5JU1QgY3VydmUgUC0yNTYgLS0gR2VuZXJhdG9yOlxuICAgICB4 ID0gMHgiKTsKLQlCTl9wcmludF9mcChzdGRvdXQsIHgpOwotCWZwcmludGYoc3Rkb3V0LCAiXG4g ICAgIHkgPSAweCIpOwotCUJOX3ByaW50X2ZwKHN0ZG91dCwgeSk7Ci0JZnByaW50ZihzdGRvdXQs ICJcbiIpOwotCS8qIEdfeSB2YWx1ZSB0YWtlbiBmcm9tIHRoZSBzdGFuZGFyZDogKi8KLQlpZiAo IUJOX2hleDJibigmeiwgIjRGRTM0MkUyRkUxQTdGOUI4RUU3RUI0QTdDMEY5RTE2MkJDRTMzNTc2 QjMxNUVDRUNCQjY0MDY4MzdCRjUxRjUiKSkgQUJPUlQ7Ci0JaWYgKDAgIT0gQk5fY21wKHksIHop KSBBQk9SVDsKLQkKLQlmcHJpbnRmKHN0ZG91dCwgInZlcmlmeSBkZWdyZWUgLi4uIik7Ci0JaWYg KEVDX0dST1VQX2dldF9kZWdyZWUoZ3JvdXApICE9IDI1NikgQUJPUlQ7Ci0JZnByaW50ZihzdGRv dXQsICIgb2tcbiIpOwotCQotCWdyb3VwX29yZGVyX3Rlc3RzKGdyb3VwKTsKLQotCWlmICghKFBf MjU2ID0gRUNfR1JPVVBfbmV3KEVDX0dST1VQX21ldGhvZF9vZihncm91cCkpKSkgQUJPUlQ7Ci0J aWYgKCFFQ19HUk9VUF9jb3B5KFBfMjU2LCBncm91cCkpIEFCT1JUOwotCi0KLQkvKiBDdXJ2ZSBQ LTM4NCAoRklQUyBQVUIgMTg2LTIsIEFwcC4gNikgKi8KLQkKLQlpZiAoIUJOX2hleDJibigmcCwg IkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYiCi0JCSJGRkZG RkZGRkZGRkZGRkZGRkVGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRiIpKSBBQk9SVDsK LQlpZiAoMSAhPSBCTl9pc19wcmltZV9leChwLCBCTl9wcmltZV9jaGVja3MsIGN0eCwgTlVMTCkp IEFCT1JUOwotCWlmICghQk5faGV4MmJuKCZhLCAiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkZGRkZGRkZGRkZGRkZGRiIKLQkJIkZGRkZGRkZGRkZGRkZGRkZGRUZGRkZGRkZGMDAwMDAw MDAwMDAwMDAwMEZGRkZGRkZDIikpIEFCT1JUOwotCWlmICghQk5faGV4MmJuKCZiLCAiQjMzMTJG QTdFMjNFRTdFNDk4OEUwNTZCRTNGODJEMTkxODFEOUM2RUZFODE0MSIKLQkJIjEyMDMxNDA4OEY1 MDEzODc1QUM2NTYzOThEOEEyRUQxOUQyQTg1QzhFREQzRUMyQUVGIikpIEFCT1JUOwotCWlmICgh RUNfR1JPVVBfc2V0X2N1cnZlX0dGcChncm91cCwgcCwgYSwgYiwgY3R4KSkgQUJPUlQ7Ci0KLQlp ZiAoIUJOX2hleDJibigmeCwgIkFBODdDQTIyQkU4QjA1Mzc4RUIxQzcxRUYzMjBBRDc0NkUxRDNC NjI4QkE3OUIiCi0JCSI5ODU5Rjc0MUUwODI1NDJBMzg1NTAyRjI1REJGNTUyOTZDM0E1NDVFMzg3 Mjc2MEFCNyIpKSBBQk9SVDsKLQlpZiAoIUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5h dGVzX0dGcChncm91cCwgUCwgeCwgMSwgY3R4KSkgQUJPUlQ7Ci0JaWYgKCFFQ19QT0lOVF9pc19v bl9jdXJ2ZShncm91cCwgUCwgY3R4KSkgQUJPUlQ7Ci0JaWYgKCFCTl9oZXgyYm4oJnosICJGRkZG RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIgotCQkiRkZDNzYzNEQ4 MUY0MzcyRERGNTgxQTBEQjI0OEIwQTc3QUVDRUMxOTZBQ0NDNTI5NzMiKSkgQUJPUlQ7Ci0JaWYg KCFFQ19HUk9VUF9zZXRfZ2VuZXJhdG9yKGdyb3VwLCBQLCB6LCBCTl92YWx1ZV9vbmUoKSkpIEFC T1JUOwotCi0JaWYgKCFFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwg UCwgeCwgeSwgY3R4KSkgQUJPUlQ7Ci0JZnByaW50ZihzdGRvdXQsICJcbk5JU1QgY3VydmUgUC0z ODQgLS0gR2VuZXJhdG9yOlxuICAgICB4ID0gMHgiKTsKLQlCTl9wcmludF9mcChzdGRvdXQsIHgp OwotCWZwcmludGYoc3Rkb3V0LCAiXG4gICAgIHkgPSAweCIpOwotCUJOX3ByaW50X2ZwKHN0ZG91 dCwgeSk7Ci0JZnByaW50ZihzdGRvdXQsICJcbiIpOwotCS8qIEdfeSB2YWx1ZSB0YWtlbiBmcm9t IHRoZSBzdGFuZGFyZDogKi8KLQlpZiAoIUJOX2hleDJibigmeiwgIjM2MTdERTRBOTYyNjJDNkY1 RDlFOThCRjkyOTJEQzI5RjhGNDFEQkQyODlBMTQiCi0JCSI3Q0U5REEzMTEzQjVGMEI4QzAwQTYw QjFDRTFEN0U4MTlEN0E0MzFEN0M5MEVBMEU1RiIpKSBBQk9SVDsKLQlpZiAoMCAhPSBCTl9jbXAo eSwgeikpIEFCT1JUOwotCQotCWZwcmludGYoc3Rkb3V0LCAidmVyaWZ5IGRlZ3JlZSAuLi4iKTsK LQlpZiAoRUNfR1JPVVBfZ2V0X2RlZ3JlZShncm91cCkgIT0gMzg0KSBBQk9SVDsKLQlmcHJpbnRm KHN0ZG91dCwgIiBva1xuIik7Ci0KLQlncm91cF9vcmRlcl90ZXN0cyhncm91cCk7Ci0KLQlpZiAo IShQXzM4NCA9IEVDX0dST1VQX25ldyhFQ19HUk9VUF9tZXRob2Rfb2YoZ3JvdXApKSkpIEFCT1JU OwotCWlmICghRUNfR1JPVVBfY29weShQXzM4NCwgZ3JvdXApKSBBQk9SVDsKLQotCi0JLyogQ3Vy dmUgUC01MjEgKEZJUFMgUFVCIDE4Ni0yLCBBcHAuIDYpICovCi0JCi0JaWYgKCFCTl9oZXgyYm4o JnAsICIxRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIgotCQki RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG IgotCQkiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIpKSBBQk9SVDsKLQlpZiAoMSAhPSBC Tl9pc19wcmltZV9leChwLCBCTl9wcmltZV9jaGVja3MsIGN0eCwgTlVMTCkpIEFCT1JUOwotCWlm ICghQk5faGV4MmJuKCZhLCAiMUZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkZGRiIKLQkJIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkZGRkZGRkZGRiIKLQkJIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkMiKSkgQUJPUlQ7 Ci0JaWYgKCFCTl9oZXgyYm4oJmIsICIwNTE5NTNFQjk2MThFMUM5QTFGOTI5QTIxQTBCNjg1NDBF RUEyREE3MjVCOTlCIgotCQkiMzE1RjNCOEI0ODk5MThFRjEwOUUxNTYxOTM5NTFFQzdFOTM3QjE2 NTJDMEJEM0JCMUJGMDczNTczIgotCQkiREY4ODNEMkMzNEYxRUY0NTFGRDQ2QjUwM0YwMCIpKSBB Qk9SVDsKLQlpZiAoIUVDX0dST1VQX3NldF9jdXJ2ZV9HRnAoZ3JvdXAsIHAsIGEsIGIsIGN0eCkp IEFCT1JUOwotCi0JaWYgKCFCTl9oZXgyYm4oJngsICJDNjg1OEUwNkI3MDQwNEU5Q0Q5RTNFQ0I2 NjIzOTVCNDQyOUM2NDgxMzkwNTNGIgotCQkiQjUyMUY4MjhBRjYwNkI0RDNEQkFBMTRCNUU3N0VG RTc1OTI4RkUxREMxMjdBMkZGQThERTMzNDhCIgotCQkiM0MxODU2QTQyOUJGOTdFN0UzMUMyRTVC RDY2IikpIEFCT1JUOwotCWlmICghRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXNf R0ZwKGdyb3VwLCBQLCB4LCAwLCBjdHgpKSBBQk9SVDsKLQlpZiAoIUVDX1BPSU5UX2lzX29uX2N1 cnZlKGdyb3VwLCBQLCBjdHgpKSBBQk9SVDsKLQlpZiAoIUJOX2hleDJibigmeiwgIjFGRkZGRkZG RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYiCi0JCSJGRkZGRkZGRkZGRkZG RkZGRkZGRkE1MTg2ODc4M0JGMkY5NjZCN0ZDQzAxNDhGNzA5QTVEMDNCQjUiCi0JCSJDOUI4ODk5 QzQ3QUVCQjZGQjcxRTkxMzg2NDA5IikpIEFCT1JUOwotCWlmICghRUNfR1JPVVBfc2V0X2dlbmVy YXRvcihncm91cCwgUCwgeiwgQk5fdmFsdWVfb25lKCkpKSBBQk9SVDsKLQotCWlmICghRUNfUE9J TlRfZ2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIFAsIHgsIHksIGN0eCkpIEFCT1JU OwotCWZwcmludGYoc3Rkb3V0LCAiXG5OSVNUIGN1cnZlIFAtNTIxIC0tIEdlbmVyYXRvcjpcbiAg ICAgeCA9IDB4Iik7Ci0JQk5fcHJpbnRfZnAoc3Rkb3V0LCB4KTsKLQlmcHJpbnRmKHN0ZG91dCwg IlxuICAgICB5ID0gMHgiKTsKLQlCTl9wcmludF9mcChzdGRvdXQsIHkpOwotCWZwcmludGYoc3Rk b3V0LCAiXG4iKTsKLQkvKiBHX3kgdmFsdWUgdGFrZW4gZnJvbSB0aGUgc3RhbmRhcmQ6ICovCi0J aWYgKCFCTl9oZXgyYm4oJnosICIxMTgzOTI5NkE3ODlBM0JDMDA0NUM4QTVGQjQyQzdEMUJEOTk4 RjU0NDQ5NTc5IgotCQkiQjQ0NjgxN0FGQkQxNzI3M0U2NjJDOTdFRTcyOTk1RUY0MjY0MEM1NTBC OTAxM0ZBRDA3NjEzNTNDIgotCQkiNzA4NkEyNzJDMjQwODhCRTk0NzY5RkQxNjY1MCIpKSBBQk9S VDsKLQlpZiAoMCAhPSBCTl9jbXAoeSwgeikpIEFCT1JUOwotCQotCWZwcmludGYoc3Rkb3V0LCAi dmVyaWZ5IGRlZ3JlZSAuLi4iKTsKLQlpZiAoRUNfR1JPVVBfZ2V0X2RlZ3JlZShncm91cCkgIT0g NTIxKSBBQk9SVDsKLQlmcHJpbnRmKHN0ZG91dCwgIiBva1xuIik7Ci0KLSAJZ3JvdXBfb3JkZXJf dGVzdHMoZ3JvdXApOwotCi0JaWYgKCEoUF81MjEgPSBFQ19HUk9VUF9uZXcoRUNfR1JPVVBfbWV0 aG9kX29mKGdyb3VwKSkpKSBBQk9SVDsKLQlpZiAoIUVDX0dST1VQX2NvcHkoUF81MjEsIGdyb3Vw KSkgQUJPUlQ7Ci0KLQotCS8qIG1vcmUgdGVzdHMgdXNpbmcgdGhlIGxhc3QgY3VydmUgKi8KLQot CWlmICghRUNfUE9JTlRfY29weShRLCBQKSkgQUJPUlQ7Ci0JaWYgKEVDX1BPSU5UX2lzX2F0X2lu ZmluaXR5KGdyb3VwLCBRKSkgQUJPUlQ7Ci0JaWYgKCFFQ19QT0lOVF9kYmwoZ3JvdXAsIFAsIFAs IGN0eCkpIEFCT1JUOwotCWlmICghRUNfUE9JTlRfaXNfb25fY3VydmUoZ3JvdXAsIFAsIGN0eCkp IEFCT1JUOwotCWlmICghRUNfUE9JTlRfaW52ZXJ0KGdyb3VwLCBRLCBjdHgpKSBBQk9SVDsgLyog UCA9IC0yUSAqLwotCi0JaWYgKCFFQ19QT0lOVF9hZGQoZ3JvdXAsIFIsIFAsIFEsIGN0eCkpIEFC T1JUOwotCWlmICghRUNfUE9JTlRfYWRkKGdyb3VwLCBSLCBSLCBRLCBjdHgpKSBBQk9SVDsKLQlp ZiAoIUVDX1BPSU5UX2lzX2F0X2luZmluaXR5KGdyb3VwLCBSKSkgQUJPUlQ7IC8qIFIgPSBQICsg MlEgKi8KLQotCXsKLQkJY29uc3QgRUNfUE9JTlQgKnBvaW50c1s0XTsKLQkJY29uc3QgQklHTlVN ICpzY2FsYXJzWzRdOwotCQlCSUdOVU0gc2NhbGFyMzsKLQkKLQkJaWYgKEVDX1BPSU5UX2lzX2F0 X2luZmluaXR5KGdyb3VwLCBRKSkgQUJPUlQ7Ci0JCXBvaW50c1swXSA9IFE7Ci0JCXBvaW50c1sx XSA9IFE7Ci0JCXBvaW50c1syXSA9IFE7Ci0JCXBvaW50c1szXSA9IFE7Ci0KLQkJaWYgKCFFQ19H Uk9VUF9nZXRfb3JkZXIoZ3JvdXAsIHosIGN0eCkpIEFCT1JUOwotCQlpZiAoIUJOX2FkZCh5LCB6 LCBCTl92YWx1ZV9vbmUoKSkpIEFCT1JUOwotCQlpZiAoQk5faXNfb2RkKHkpKSBBQk9SVDsKLQkJ aWYgKCFCTl9yc2hpZnQxKHksIHkpKSBBQk9SVDsKLQkJc2NhbGFyc1swXSA9IHk7IC8qIChncm91 cCBvcmRlciArIDEpLzIsICBzbyAgeSpRICsgeSpRID0gUSAqLwotCQlzY2FsYXJzWzFdID0geTsK LQotCQlmcHJpbnRmKHN0ZG91dCwgImNvbWJpbmVkIG11bHRpcGxpY2F0aW9uIC4uLiIpOwotCQlm Zmx1c2goc3Rkb3V0KTsKLQotCQkvKiB6IGlzIHN0aWxsIHRoZSBncm91cCBvcmRlciAqLwotCQlp ZiAoIUVDX1BPSU5Uc19tdWwoZ3JvdXAsIFAsIE5VTEwsIDIsIHBvaW50cywgc2NhbGFycywgY3R4 KSkgQUJPUlQ7Ci0JCWlmICghRUNfUE9JTlRzX211bChncm91cCwgUiwgeiwgMiwgcG9pbnRzLCBz Y2FsYXJzLCBjdHgpKSBBQk9SVDsKLQkJaWYgKDAgIT0gRUNfUE9JTlRfY21wKGdyb3VwLCBQLCBS LCBjdHgpKSBBQk9SVDsKLQkJaWYgKDAgIT0gRUNfUE9JTlRfY21wKGdyb3VwLCBSLCBRLCBjdHgp KSBBQk9SVDsKLQotCQlmcHJpbnRmKHN0ZG91dCwgIi4iKTsKLQkJZmZsdXNoKHN0ZG91dCk7Ci0K LQkJaWYgKCFCTl9wc2V1ZG9fcmFuZCh5LCBCTl9udW1fYml0cyh5KSwgMCwgMCkpIEFCT1JUOwot CQlpZiAoIUJOX2FkZCh6LCB6LCB5KSkgQUJPUlQ7Ci0JCUJOX3NldF9uZWdhdGl2ZSh6LCAxKTsK LQkJc2NhbGFyc1swXSA9IHk7Ci0JCXNjYWxhcnNbMV0gPSB6OyAvKiB6ID0gLShvcmRlciArIHkp ICovCi0KLQkJaWYgKCFFQ19QT0lOVHNfbXVsKGdyb3VwLCBQLCBOVUxMLCAyLCBwb2ludHMsIHNj YWxhcnMsIGN0eCkpIEFCT1JUOwotCQlpZiAoIUVDX1BPSU5UX2lzX2F0X2luZmluaXR5KGdyb3Vw LCBQKSkgQUJPUlQ7Ci0KLQkJZnByaW50ZihzdGRvdXQsICIuIik7Ci0JCWZmbHVzaChzdGRvdXQp OwotCi0JCWlmICghQk5fcHNldWRvX3JhbmQoeCwgQk5fbnVtX2JpdHMoeSkgLSAxLCAwLCAwKSkg QUJPUlQ7Ci0JCWlmICghQk5fYWRkKHosIHgsIHkpKSBBQk9SVDsKLQkJQk5fc2V0X25lZ2F0aXZl KHosIDEpOwotCQlzY2FsYXJzWzBdID0geDsKLQkJc2NhbGFyc1sxXSA9IHk7Ci0JCXNjYWxhcnNb Ml0gPSB6OyAvKiB6ID0gLSh4K3kpICovCi0KLQkJQk5faW5pdCgmc2NhbGFyMyk7Ci0JCUJOX3pl cm8oJnNjYWxhcjMpOwotCQlzY2FsYXJzWzNdID0gJnNjYWxhcjM7Ci0KLQkJaWYgKCFFQ19QT0lO VHNfbXVsKGdyb3VwLCBQLCBOVUxMLCA0LCBwb2ludHMsIHNjYWxhcnMsIGN0eCkpIEFCT1JUOwot CQlpZiAoIUVDX1BPSU5UX2lzX2F0X2luZmluaXR5KGdyb3VwLCBQKSkgQUJPUlQ7Ci0KLQkJZnBy aW50ZihzdGRvdXQsICIgb2tcblxuIik7Ci0KLQkJQk5fZnJlZSgmc2NhbGFyMyk7Ci0JfQotCi0K LSNpZiAwCi0JdGltaW5ncyhQXzI1NiwgVElNSU5HX0JBU0VfUFQsIGN0eCk7Ci0JdGltaW5ncyhQ XzI1NiwgVElNSU5HX1JBTkRfUFQsIGN0eCk7Ci0JdGltaW5ncyhQXzI1NiwgVElNSU5HX1NJTVVM LCBjdHgpOwotCXRpbWluZ3MoUF8zODQsIFRJTUlOR19CQVNFX1BULCBjdHgpOwotCXRpbWluZ3Mo UF8zODQsIFRJTUlOR19SQU5EX1BULCBjdHgpOwotCXRpbWluZ3MoUF8zODQsIFRJTUlOR19TSU1V TCwgY3R4KTsKLSNlbmRpZgotCi0KLQlpZiAoY3R4KQotCQlCTl9DVFhfZnJlZShjdHgpOwotCUJO X2ZyZWUocCk7IEJOX2ZyZWUoYSk7CUJOX2ZyZWUoYik7Ci0JRUNfR1JPVVBfZnJlZShncm91cCk7 Ci0JRUNfUE9JTlRfZnJlZShQKTsKLQlFQ19QT0lOVF9mcmVlKFEpOwotCUVDX1BPSU5UX2ZyZWUo Uik7Ci0JQk5fZnJlZSh4KTsgQk5fZnJlZSh5KTsgQk5fZnJlZSh6KTsKLQotCWlmIChQXzE2MCkg RUNfR1JPVVBfZnJlZShQXzE2MCk7Ci0JaWYgKFBfMTkyKSBFQ19HUk9VUF9mcmVlKFBfMTkyKTsK LQlpZiAoUF8yMjQpIEVDX0dST1VQX2ZyZWUoUF8yMjQpOwotCWlmIChQXzI1NikgRUNfR1JPVVBf ZnJlZShQXzI1Nik7Ci0JaWYgKFBfMzg0KSBFQ19HUk9VUF9mcmVlKFBfMzg0KTsKLQlpZiAoUF81 MjEpIEVDX0dST1VQX2ZyZWUoUF81MjEpOwotCi0JfQoreworICAgIEJOX0NUWCAqY3R4ID0gTlVM TDsKKyAgICBCSUdOVU0gKnAsICphLCAqYjsKKyAgICBFQ19HUk9VUCAqZ3JvdXA7CisgICAgRUNf R1JPVVAgKlBfMTYwID0gTlVMTCwgKlBfMTkyID0gTlVMTCwgKlBfMjI0ID0gTlVMTCwgKlBfMjU2 ID0KKyAgICAgICAgTlVMTCwgKlBfMzg0ID0gTlVMTCwgKlBfNTIxID0gTlVMTDsKKyAgICBFQ19Q T0lOVCAqUCwgKlEsICpSOworICAgIEJJR05VTSAqeCwgKnksICp6OworICAgIHVuc2lnbmVkIGNo YXIgYnVmWzEwMF07CisgICAgc2l6ZV90IGksIGxlbjsKKyAgICBpbnQgazsKKworIyBpZiAxICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBvcHRpb25hbCAqLworICAgIGN0eCA9IEJOX0NUWF9u ZXcoKTsKKyAgICBpZiAoIWN0eCkKKyAgICAgICAgQUJPUlQ7CisjIGVuZGlmCisKKyAgICBwID0g Qk5fbmV3KCk7CisgICAgYSA9IEJOX25ldygpOworICAgIGIgPSBCTl9uZXcoKTsKKyAgICBpZiAo IXAgfHwgIWEgfHwgIWIpCisgICAgICAgIEFCT1JUOworCisgICAgZ3JvdXAgPSBFQ19HUk9VUF9u ZXcoRUNfR0ZwX21vbnRfbWV0aG9kKCkpOyAvKiBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogRUNfR1JPVVBf bmV3X2N1cnZlX0dGcCBzbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogdGhhdCB0aGUgbGlicmFyeSBnZXRzIHRvCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBjaG9vc2UgdGhlIEVDX01FVEhPRCAqLwor ICAgIGlmICghZ3JvdXApCisgICAgICAgIEFCT1JUOworCisgICAgUCA9IEVDX1BPSU5UX25ldyhn cm91cCk7CisgICAgUSA9IEVDX1BPSU5UX25ldyhncm91cCk7CisgICAgUiA9IEVDX1BPSU5UX25l dyhncm91cCk7CisgICAgaWYgKCFQIHx8ICFRIHx8ICFSKQorICAgICAgICBBQk9SVDsKKworICAg IHggPSBCTl9uZXcoKTsKKyAgICB5ID0gQk5fbmV3KCk7CisgICAgeiA9IEJOX25ldygpOworICAg IGlmICgheCB8fCAheSB8fCAheikKKyAgICAgICAgQUJPUlQ7CisKKyAgICAvKiBDdXJ2ZSBQLTI1 NiAoRklQUyBQVUIgMTg2LTIsIEFwcC4gNikgKi8KKworICAgIGlmICghQk5faGV4MmJuCisgICAg ICAgICgmcCwKKyAgICAgICAgICJGRkZGRkZGRjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIikpCisgICAgICAgIEFCT1JUOworICAgIGlmICgx ICE9IEJOX2lzX3ByaW1lX2V4KHAsIEJOX3ByaW1lX2NoZWNrcywgY3R4LCBOVUxMKSkKKyAgICAg ICAgQUJPUlQ7CisgICAgaWYgKCFCTl9oZXgyYm4KKyAgICAgICAgKCZhLAorICAgICAgICAgIkZG RkZGRkZGMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkMiKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFCTl9oZXgyYm4KKyAgICAgICAgKCZi LAorICAgICAgICAgIjVBQzYzNUQ4QUEzQTkzRTdCM0VCQkQ1NTc2OTg4NkJDNjUxRDA2QjBDQzUz QjBGNjNCQ0UzQzNFMjdEMjYwNEIiKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFFQ19HUk9V UF9zZXRfY3VydmVfR0ZwKGdyb3VwLCBwLCBhLCBiLCBjdHgpKQorICAgICAgICBBQk9SVDsKKwor ICAgIGlmICghQk5faGV4MmJuCisgICAgICAgICgmeCwKKyAgICAgICAgICI2QjE3RDFGMkUxMkM0 MjQ3RjhCQ0U2RTU2M0E0NDBGMjc3MDM3RDgxMkRFQjMzQTBGNEExMzk0NUQ4OThDMjk2IikpCisg ICAgICAgIEFCT1JUOworICAgIGlmICghRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0 ZXNfR0ZwKGdyb3VwLCBQLCB4LCAxLCBjdHgpKQorICAgICAgICBBQk9SVDsKKyAgICBpZiAoIUVD X1BPSU5UX2lzX29uX2N1cnZlKGdyb3VwLCBQLCBjdHgpKQorICAgICAgICBBQk9SVDsKKyAgICBp ZiAoIUJOX2hleDJibigmeiwgIkZGRkZGRkZGMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGQkNFNkZB QURBNzE3OUUiCisgICAgICAgICAgICAgICAgICAgIjg0RjNCOUNBQzJGQzYzMjU1MSIpKQorICAg ICAgICBBQk9SVDsKKyAgICBpZiAoIUVDX0dST1VQX3NldF9nZW5lcmF0b3IoZ3JvdXAsIFAsIHos IEJOX3ZhbHVlX29uZSgpKSkKKyAgICAgICAgQUJPUlQ7CisKKyAgICBpZiAoIUVDX1BPSU5UX2dl dF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBQLCB4LCB5LCBjdHgpKQorICAgICAgICBB Qk9SVDsKKyAgICBmcHJpbnRmKHN0ZG91dCwgIlxuTklTVCBjdXJ2ZSBQLTI1NiAtLSBHZW5lcmF0 b3I6XG4gICAgIHggPSAweCIpOworICAgIEJOX3ByaW50X2ZwKHN0ZG91dCwgeCk7CisgICAgZnBy aW50ZihzdGRvdXQsICJcbiAgICAgeSA9IDB4Iik7CisgICAgQk5fcHJpbnRfZnAoc3Rkb3V0LCB5 KTsKKyAgICBmcHJpbnRmKHN0ZG91dCwgIlxuIik7CisgICAgLyogR195IHZhbHVlIHRha2VuIGZy b20gdGhlIHN0YW5kYXJkOiAqLworICAgIGlmICghQk5faGV4MmJuCisgICAgICAgICgmeiwKKyAg ICAgICAgICI0RkUzNDJFMkZFMUE3RjlCOEVFN0VCNEE3QzBGOUUxNjJCQ0UzMzU3NkIzMTVFQ0VD QkI2NDA2ODM3QkY1MUY1IikpCisgICAgICAgIEFCT1JUOworICAgIGlmICgwICE9IEJOX2NtcCh5 LCB6KSkKKyAgICAgICAgQUJPUlQ7CisKKyAgICBmcHJpbnRmKHN0ZG91dCwgInZlcmlmeSBkZWdy ZWUgLi4uIik7CisgICAgaWYgKEVDX0dST1VQX2dldF9kZWdyZWUoZ3JvdXApICE9IDI1NikKKyAg ICAgICAgQUJPUlQ7CisgICAgZnByaW50ZihzdGRvdXQsICIgb2tcbiIpOworCisgICAgZ3JvdXBf b3JkZXJfdGVzdHMoZ3JvdXApOworCisgICAgaWYgKCEoUF8yNTYgPSBFQ19HUk9VUF9uZXcoRUNf R1JPVVBfbWV0aG9kX29mKGdyb3VwKSkpKQorICAgICAgICBBQk9SVDsKKyAgICBpZiAoIUVDX0dS T1VQX2NvcHkoUF8yNTYsIGdyb3VwKSkKKyAgICAgICAgQUJPUlQ7CisKKyAgICAvKiBDdXJ2ZSBQ LTM4NCAoRklQUyBQVUIgMTg2LTIsIEFwcC4gNikgKi8KKworICAgIGlmICghQk5faGV4MmJuKCZw LCAiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIKKyAgICAg ICAgICAgICAgICAgICAiRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAw RkZGRkZGRkYiKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKDEgIT0gQk5faXNfcHJpbWVfZXgo cCwgQk5fcHJpbWVfY2hlY2tzLCBjdHgsIE5VTEwpKQorICAgICAgICBBQk9SVDsKKyAgICBpZiAo IUJOX2hleDJibigmYSwgIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkYiCisgICAgICAgICAgICAgICAgICAgIkZGRkZGRkZGRkZGRkZGRkZGRUZGRkZGRkZGMDAw MDAwMDAwMDAwMDAwMEZGRkZGRkZDIikpCisgICAgICAgIEFCT1JUOworICAgIGlmICghQk5faGV4 MmJuKCZiLCAiQjMzMTJGQTdFMjNFRTdFNDk4OEUwNTZCRTNGODJEMTkxODFEOUM2RUZFODE0MSIK KyAgICAgICAgICAgICAgICAgICAiMTIwMzE0MDg4RjUwMTM4NzVBQzY1NjM5OEQ4QTJFRDE5RDJB ODVDOEVERDNFQzJBRUYiKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFFQ19HUk9VUF9zZXRf Y3VydmVfR0ZwKGdyb3VwLCBwLCBhLCBiLCBjdHgpKQorICAgICAgICBBQk9SVDsKKworICAgIGlm ICghQk5faGV4MmJuKCZ4LCAiQUE4N0NBMjJCRThCMDUzNzhFQjFDNzFFRjMyMEFENzQ2RTFEM0I2 MjhCQTc5QiIKKyAgICAgICAgICAgICAgICAgICAiOTg1OUY3NDFFMDgyNTQyQTM4NTUwMkYyNURC RjU1Mjk2QzNBNTQ1RTM4NzI3NjBBQjciKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFFQ19Q T0lOVF9zZXRfY29tcHJlc3NlZF9jb29yZGluYXRlc19HRnAoZ3JvdXAsIFAsIHgsIDEsIGN0eCkp CisgICAgICAgIEFCT1JUOworICAgIGlmICghRUNfUE9JTlRfaXNfb25fY3VydmUoZ3JvdXAsIFAs IGN0eCkpCisgICAgICAgIEFCT1JUOworICAgIGlmICghQk5faGV4MmJuKCZ6LCAiRkZGRkZGRkZG RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIKKyAgICAgICAgICAgICAgICAg ICAiRkZDNzYzNEQ4MUY0MzcyRERGNTgxQTBEQjI0OEIwQTc3QUVDRUMxOTZBQ0NDNTI5NzMiKSkK KyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFFQ19HUk9VUF9zZXRfZ2VuZXJhdG9yKGdyb3VwLCBQ LCB6LCBCTl92YWx1ZV9vbmUoKSkpCisgICAgICAgIEFCT1JUOworCisgICAgaWYgKCFFQ19QT0lO VF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgUCwgeCwgeSwgY3R4KSkKKyAgICAg ICAgQUJPUlQ7CisgICAgZnByaW50ZihzdGRvdXQsICJcbk5JU1QgY3VydmUgUC0zODQgLS0gR2Vu ZXJhdG9yOlxuICAgICB4ID0gMHgiKTsKKyAgICBCTl9wcmludF9mcChzdGRvdXQsIHgpOworICAg IGZwcmludGYoc3Rkb3V0LCAiXG4gICAgIHkgPSAweCIpOworICAgIEJOX3ByaW50X2ZwKHN0ZG91 dCwgeSk7CisgICAgZnByaW50ZihzdGRvdXQsICJcbiIpOworICAgIC8qIEdfeSB2YWx1ZSB0YWtl biBmcm9tIHRoZSBzdGFuZGFyZDogKi8KKyAgICBpZiAoIUJOX2hleDJibigmeiwgIjM2MTdERTRB OTYyNjJDNkY1RDlFOThCRjkyOTJEQzI5RjhGNDFEQkQyODlBMTQiCisgICAgICAgICAgICAgICAg ICAgIjdDRTlEQTMxMTNCNUYwQjhDMDBBNjBCMUNFMUQ3RTgxOUQ3QTQzMUQ3QzkwRUEwRTVGIikp CisgICAgICAgIEFCT1JUOworICAgIGlmICgwICE9IEJOX2NtcCh5LCB6KSkKKyAgICAgICAgQUJP UlQ7CisKKyAgICBmcHJpbnRmKHN0ZG91dCwgInZlcmlmeSBkZWdyZWUgLi4uIik7CisgICAgaWYg KEVDX0dST1VQX2dldF9kZWdyZWUoZ3JvdXApICE9IDM4NCkKKyAgICAgICAgQUJPUlQ7CisgICAg ZnByaW50ZihzdGRvdXQsICIgb2tcbiIpOworCisgICAgZ3JvdXBfb3JkZXJfdGVzdHMoZ3JvdXAp OworCisgICAgaWYgKCEoUF8zODQgPSBFQ19HUk9VUF9uZXcoRUNfR1JPVVBfbWV0aG9kX29mKGdy b3VwKSkpKQorICAgICAgICBBQk9SVDsKKyAgICBpZiAoIUVDX0dST1VQX2NvcHkoUF8zODQsIGdy b3VwKSkKKyAgICAgICAgQUJPUlQ7CisKKyAgICAvKiBDdXJ2ZSBQLTUyMSAoRklQUyBQVUIgMTg2 LTIsIEFwcC4gNikgKi8KKworICAgIGlmICghQk5faGV4MmJuKCZwLCAiMUZGRkZGRkZGRkZGRkZG RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIKKyAgICAgICAgICAgICAgICAgICAiRkZG RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIgor ICAgICAgICAgICAgICAgICAgICJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIikpCisgICAg ICAgIEFCT1JUOworICAgIGlmICgxICE9IEJOX2lzX3ByaW1lX2V4KHAsIEJOX3ByaW1lX2NoZWNr cywgY3R4LCBOVUxMKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFCTl9oZXgyYm4oJmEsICIx RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIgorICAgICAgICAg ICAgICAgICAgICJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkZGRkZGRkYiCisgICAgICAgICAgICAgICAgICAgIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkMiKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFCTl9oZXgyYm4oJmIsICIwNTE5NTNF Qjk2MThFMUM5QTFGOTI5QTIxQTBCNjg1NDBFRUEyREE3MjVCOTlCIgorICAgICAgICAgICAgICAg ICAgICIzMTVGM0I4QjQ4OTkxOEVGMTA5RTE1NjE5Mzk1MUVDN0U5MzdCMTY1MkMwQkQzQkIxQkYw NzM1NzMiCisgICAgICAgICAgICAgICAgICAgIkRGODgzRDJDMzRGMUVGNDUxRkQ0NkI1MDNGMDAi KSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFFQ19HUk9VUF9zZXRfY3VydmVfR0ZwKGdyb3Vw LCBwLCBhLCBiLCBjdHgpKQorICAgICAgICBBQk9SVDsKKworICAgIGlmICghQk5faGV4MmJuKCZ4 LCAiQzY4NThFMDZCNzA0MDRFOUNEOUUzRUNCNjYyMzk1QjQ0MjlDNjQ4MTM5MDUzRiIKKyAgICAg ICAgICAgICAgICAgICAiQjUyMUY4MjhBRjYwNkI0RDNEQkFBMTRCNUU3N0VGRTc1OTI4RkUxREMx MjdBMkZGQThERTMzNDhCIgorICAgICAgICAgICAgICAgICAgICIzQzE4NTZBNDI5QkY5N0U3RTMx QzJFNUJENjYiKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFFQ19QT0lOVF9zZXRfY29tcHJl c3NlZF9jb29yZGluYXRlc19HRnAoZ3JvdXAsIFAsIHgsIDAsIGN0eCkpCisgICAgICAgIEFCT1JU OworICAgIGlmICghRUNfUE9JTlRfaXNfb25fY3VydmUoZ3JvdXAsIFAsIGN0eCkpCisgICAgICAg IEFCT1JUOworICAgIGlmICghQk5faGV4MmJuKCZ6LCAiMUZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIKKyAgICAgICAgICAgICAgICAgICAiRkZGRkZGRkZGRkZG RkZGRkZGRkZBNTE4Njg3ODNCRjJGOTY2QjdGQ0MwMTQ4RjcwOUE1RDAzQkI1IgorICAgICAgICAg ICAgICAgICAgICJDOUI4ODk5QzQ3QUVCQjZGQjcxRTkxMzg2NDA5IikpCisgICAgICAgIEFCT1JU OworICAgIGlmICghRUNfR1JPVVBfc2V0X2dlbmVyYXRvcihncm91cCwgUCwgeiwgQk5fdmFsdWVf b25lKCkpKQorICAgICAgICBBQk9SVDsKKworICAgIGlmICghRUNfUE9JTlRfZ2V0X2FmZmluZV9j b29yZGluYXRlc19HRnAoZ3JvdXAsIFAsIHgsIHksIGN0eCkpCisgICAgICAgIEFCT1JUOworICAg IGZwcmludGYoc3Rkb3V0LCAiXG5OSVNUIGN1cnZlIFAtNTIxIC0tIEdlbmVyYXRvcjpcbiAgICAg eCA9IDB4Iik7CisgICAgQk5fcHJpbnRfZnAoc3Rkb3V0LCB4KTsKKyAgICBmcHJpbnRmKHN0ZG91 dCwgIlxuICAgICB5ID0gMHgiKTsKKyAgICBCTl9wcmludF9mcChzdGRvdXQsIHkpOworICAgIGZw cmludGYoc3Rkb3V0LCAiXG4iKTsKKyAgICAvKiBHX3kgdmFsdWUgdGFrZW4gZnJvbSB0aGUgc3Rh bmRhcmQ6ICovCisgICAgaWYgKCFCTl9oZXgyYm4oJnosICIxMTgzOTI5NkE3ODlBM0JDMDA0NUM4 QTVGQjQyQzdEMUJEOTk4RjU0NDQ5NTc5IgorICAgICAgICAgICAgICAgICAgICJCNDQ2ODE3QUZC RDE3MjczRTY2MkM5N0VFNzI5OTVFRjQyNjQwQzU1MEI5MDEzRkFEMDc2MTM1M0MiCisgICAgICAg ICAgICAgICAgICAgIjcwODZBMjcyQzI0MDg4QkU5NDc2OUZEMTY2NTAiKSkKKyAgICAgICAgQUJP UlQ7CisgICAgaWYgKDAgIT0gQk5fY21wKHksIHopKQorICAgICAgICBBQk9SVDsKKworICAgIGZw cmludGYoc3Rkb3V0LCAidmVyaWZ5IGRlZ3JlZSAuLi4iKTsKKyAgICBpZiAoRUNfR1JPVVBfZ2V0 X2RlZ3JlZShncm91cCkgIT0gNTIxKQorICAgICAgICBBQk9SVDsKKyAgICBmcHJpbnRmKHN0ZG91 dCwgIiBva1xuIik7CisKKyAgICBncm91cF9vcmRlcl90ZXN0cyhncm91cCk7CisKKyAgICBpZiAo IShQXzUyMSA9IEVDX0dST1VQX25ldyhFQ19HUk9VUF9tZXRob2Rfb2YoZ3JvdXApKSkpCisgICAg ICAgIEFCT1JUOworICAgIGlmICghRUNfR1JPVVBfY29weShQXzUyMSwgZ3JvdXApKQorICAgICAg ICBBQk9SVDsKKworICAgIC8qIG1vcmUgdGVzdHMgdXNpbmcgdGhlIGxhc3QgY3VydmUgKi8KKwor ICAgIGlmICghRUNfUE9JTlRfY29weShRLCBQKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKEVD X1BPSU5UX2lzX2F0X2luZmluaXR5KGdyb3VwLCBRKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYg KCFFQ19QT0lOVF9kYmwoZ3JvdXAsIFAsIFAsIGN0eCkpCisgICAgICAgIEFCT1JUOworICAgIGlm ICghRUNfUE9JTlRfaXNfb25fY3VydmUoZ3JvdXAsIFAsIGN0eCkpCisgICAgICAgIEFCT1JUOwor ICAgIGlmICghRUNfUE9JTlRfaW52ZXJ0KGdyb3VwLCBRLCBjdHgpKQorICAgICAgICBBQk9SVDsg ICAgICAgICAgICAgICAgICAvKiBQID0gLTJRICovCisKKyAgICBpZiAoIUVDX1BPSU5UX2FkZChn cm91cCwgUiwgUCwgUSwgY3R4KSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFFQ19QT0lOVF9h ZGQoZ3JvdXAsIFIsIFIsIFEsIGN0eCkpCisgICAgICAgIEFCT1JUOworICAgIGlmICghRUNfUE9J TlRfaXNfYXRfaW5maW5pdHkoZ3JvdXAsIFIpKQorICAgICAgICBBQk9SVDsgICAgICAgICAgICAg ICAgICAvKiBSID0gUCArIDJRICovCisKKyAgICB7CisgICAgICAgIGNvbnN0IEVDX1BPSU5UICpw b2ludHNbNF07CisgICAgICAgIGNvbnN0IEJJR05VTSAqc2NhbGFyc1s0XTsKKyAgICAgICAgQklH TlVNIHNjYWxhcjM7CisKKyAgICAgICAgaWYgKEVDX1BPSU5UX2lzX2F0X2luZmluaXR5KGdyb3Vw LCBRKSkKKyAgICAgICAgICAgIEFCT1JUOworICAgICAgICBwb2ludHNbMF0gPSBROworICAgICAg ICBwb2ludHNbMV0gPSBROworICAgICAgICBwb2ludHNbMl0gPSBROworICAgICAgICBwb2ludHNb M10gPSBROworCisgICAgICAgIGlmICghRUNfR1JPVVBfZ2V0X29yZGVyKGdyb3VwLCB6LCBjdHgp KQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIGlmICghQk5fYWRkKHksIHosIEJOX3ZhbHVl X29uZSgpKSkKKyAgICAgICAgICAgIEFCT1JUOworICAgICAgICBpZiAoQk5faXNfb2RkKHkpKQor ICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIGlmICghQk5fcnNoaWZ0MSh5LCB5KSkKKyAgICAg ICAgICAgIEFCT1JUOworICAgICAgICBzY2FsYXJzWzBdID0geTsgICAgICAgICAvKiAoZ3JvdXAg b3JkZXIgKyAxKS8yLCBzbyB5KlEgKyB5KlEgPSBRICovCisgICAgICAgIHNjYWxhcnNbMV0gPSB5 OworCisgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiY29tYmluZWQgbXVsdGlwbGljYXRpb24gLi4u Iik7CisgICAgICAgIGZmbHVzaChzdGRvdXQpOworCisgICAgICAgIC8qIHogaXMgc3RpbGwgdGhl IGdyb3VwIG9yZGVyICovCisgICAgICAgIGlmICghRUNfUE9JTlRzX211bChncm91cCwgUCwgTlVM TCwgMiwgcG9pbnRzLCBzY2FsYXJzLCBjdHgpKQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAg IGlmICghRUNfUE9JTlRzX211bChncm91cCwgUiwgeiwgMiwgcG9pbnRzLCBzY2FsYXJzLCBjdHgp KQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIGlmICgwICE9IEVDX1BPSU5UX2NtcChncm91 cCwgUCwgUiwgY3R4KSkKKyAgICAgICAgICAgIEFCT1JUOworICAgICAgICBpZiAoMCAhPSBFQ19Q T0lOVF9jbXAoZ3JvdXAsIFIsIFEsIGN0eCkpCisgICAgICAgICAgICBBQk9SVDsKKworICAgICAg ICBmcHJpbnRmKHN0ZG91dCwgIi4iKTsKKyAgICAgICAgZmZsdXNoKHN0ZG91dCk7CisKKyAgICAg ICAgaWYgKCFCTl9wc2V1ZG9fcmFuZCh5LCBCTl9udW1fYml0cyh5KSwgMCwgMCkpCisgICAgICAg ICAgICBBQk9SVDsKKyAgICAgICAgaWYgKCFCTl9hZGQoeiwgeiwgeSkpCisgICAgICAgICAgICBB Qk9SVDsKKyAgICAgICAgQk5fc2V0X25lZ2F0aXZlKHosIDEpOworICAgICAgICBzY2FsYXJzWzBd ID0geTsKKyAgICAgICAgc2NhbGFyc1sxXSA9IHo7ICAgICAgICAgLyogeiA9IC0ob3JkZXIgKyB5 KSAqLworCisgICAgICAgIGlmICghRUNfUE9JTlRzX211bChncm91cCwgUCwgTlVMTCwgMiwgcG9p bnRzLCBzY2FsYXJzLCBjdHgpKQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIGlmICghRUNf UE9JTlRfaXNfYXRfaW5maW5pdHkoZ3JvdXAsIFApKQorICAgICAgICAgICAgQUJPUlQ7CisKKyAg ICAgICAgZnByaW50ZihzdGRvdXQsICIuIik7CisgICAgICAgIGZmbHVzaChzdGRvdXQpOworCisg ICAgICAgIGlmICghQk5fcHNldWRvX3JhbmQoeCwgQk5fbnVtX2JpdHMoeSkgLSAxLCAwLCAwKSkK KyAgICAgICAgICAgIEFCT1JUOworICAgICAgICBpZiAoIUJOX2FkZCh6LCB4LCB5KSkKKyAgICAg ICAgICAgIEFCT1JUOworICAgICAgICBCTl9zZXRfbmVnYXRpdmUoeiwgMSk7CisgICAgICAgIHNj YWxhcnNbMF0gPSB4OworICAgICAgICBzY2FsYXJzWzFdID0geTsKKyAgICAgICAgc2NhbGFyc1sy XSA9IHo7ICAgICAgICAgLyogeiA9IC0oeCt5KSAqLworCisgICAgICAgIEJOX2luaXQoJnNjYWxh cjMpOworICAgICAgICBCTl96ZXJvKCZzY2FsYXIzKTsKKyAgICAgICAgc2NhbGFyc1szXSA9ICZz Y2FsYXIzOworCisgICAgICAgIGlmICghRUNfUE9JTlRzX211bChncm91cCwgUCwgTlVMTCwgNCwg cG9pbnRzLCBzY2FsYXJzLCBjdHgpKQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIGlmICgh RUNfUE9JTlRfaXNfYXRfaW5maW5pdHkoZ3JvdXAsIFApKQorICAgICAgICAgICAgQUJPUlQ7CisK KyAgICAgICAgZnByaW50ZihzdGRvdXQsICIgb2tcblxuIik7CisKKyAgICAgICAgQk5fZnJlZSgm c2NhbGFyMyk7CisgICAgfQorCisjIGlmIDAKKyAgICB0aW1pbmdzKFBfMjU2LCBUSU1JTkdfQkFT RV9QVCwgY3R4KTsKKyAgICB0aW1pbmdzKFBfMjU2LCBUSU1JTkdfUkFORF9QVCwgY3R4KTsKKyAg ICB0aW1pbmdzKFBfMjU2LCBUSU1JTkdfU0lNVUwsIGN0eCk7CisgICAgdGltaW5ncyhQXzM4NCwg VElNSU5HX0JBU0VfUFQsIGN0eCk7CisgICAgdGltaW5ncyhQXzM4NCwgVElNSU5HX1JBTkRfUFQs IGN0eCk7CisgICAgdGltaW5ncyhQXzM4NCwgVElNSU5HX1NJTVVMLCBjdHgpOworICAgIHRpbWlu Z3MoUF81MjEsIFRJTUlOR19CQVNFX1BULCBjdHgpOworICAgIHRpbWluZ3MoUF81MjEsIFRJTUlO R19SQU5EX1BULCBjdHgpOworICAgIHRpbWluZ3MoUF81MjEsIFRJTUlOR19TSU1VTCwgY3R4KTsK KyMgZW5kaWYKKworICAgIGlmIChjdHgpCisgICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7CisgICAg Qk5fZnJlZShwKTsKKyAgICBCTl9mcmVlKGEpOworICAgIEJOX2ZyZWUoYik7CisgICAgRUNfR1JP VVBfZnJlZShncm91cCk7CisgICAgRUNfUE9JTlRfZnJlZShQKTsKKyAgICBFQ19QT0lOVF9mcmVl KFEpOworICAgIEVDX1BPSU5UX2ZyZWUoUik7CisgICAgQk5fZnJlZSh4KTsKKyAgICBCTl9mcmVl KHkpOworICAgIEJOX2ZyZWUoeik7CisKKyAgICBpZiAoUF8xNjApCisgICAgICAgIEVDX0dST1VQ X2ZyZWUoUF8xNjApOworICAgIGlmIChQXzE5MikKKyAgICAgICAgRUNfR1JPVVBfZnJlZShQXzE5 Mik7CisgICAgaWYgKFBfMjI0KQorICAgICAgICBFQ19HUk9VUF9mcmVlKFBfMjI0KTsKKyAgICBp ZiAoUF8yNTYpCisgICAgICAgIEVDX0dST1VQX2ZyZWUoUF8yNTYpOworICAgIGlmIChQXzM4NCkK KyAgICAgICAgRUNfR1JPVVBfZnJlZShQXzM4NCk7CisgICAgaWYgKFBfNTIxKQorICAgICAgICBF Q19HUk9VUF9mcmVlKFBfNTIxKTsKKworfQogCiAKIHN0YXRpYyB2b2lkIGludGVybmFsX2N1cnZl X3Rlc3Qodm9pZCkKLQl7Ci0JRUNfYnVpbHRpbl9jdXJ2ZSAqY3VydmVzID0gTlVMTDsKLQlzaXpl X3QgY3J2X2xlbiA9IDAsIG4gPSAwOwotCWludCAgICBvayA9IDE7Ci0KLQljcnZfbGVuID0gRUNf Z2V0X2J1aWx0aW5fY3VydmVzKE5VTEwsIDApOwotCi0JY3VydmVzID0gT1BFTlNTTF9tYWxsb2Mo c2l6ZW9mKEVDX2J1aWx0aW5fY3VydmUpICogY3J2X2xlbik7Ci0KLQlpZiAoY3VydmVzID09IE5V TEwpCi0JCXJldHVybjsKLQotCWlmICghRUNfZ2V0X2J1aWx0aW5fY3VydmVzKGN1cnZlcywgY3J2 X2xlbikpCi0JCXsKLQkJT1BFTlNTTF9mcmVlKGN1cnZlcyk7Ci0JCXJldHVybjsKLQkJfQotCi0J ZnByaW50ZihzdGRvdXQsICJ0ZXN0aW5nIGludGVybmFsIGN1cnZlczogIik7Ci0JCQotCWZvciAo biA9IDA7IG4gPCBjcnZfbGVuOyBuKyspCi0JCXsKLQkJRUNfR1JPVVAgKmdyb3VwID0gTlVMTDsK LQkJaW50IG5pZCA9IGN1cnZlc1tuXS5uaWQ7Ci0JCWlmICgoZ3JvdXAgPSBFQ19HUk9VUF9uZXdf YnlfY3VydmVfbmFtZShuaWQpKSA9PSBOVUxMKQotCQkJewotCQkJb2sgPSAwOwotCQkJZnByaW50 ZihzdGRvdXQsICJcbkVDX0dST1VQX25ld19jdXJ2ZV9uYW1lKCkgZmFpbGVkIHdpdGgiCi0JCQkJ IiBjdXJ2ZSAlc1xuIiwgT0JKX25pZDJzbihuaWQpKTsKLQkJCS8qIHRyeSBuZXh0IGN1cnZlICov Ci0JCQljb250aW51ZTsKLQkJCX0KLQkJaWYgKCFFQ19HUk9VUF9jaGVjayhncm91cCwgTlVMTCkp Ci0JCQl7Ci0JCQlvayA9IDA7Ci0JCQlmcHJpbnRmKHN0ZG91dCwgIlxuRUNfR1JPVVBfY2hlY2so KSBmYWlsZWQgd2l0aCIKLQkJCQkiIGN1cnZlICVzXG4iLCBPQkpfbmlkMnNuKG5pZCkpOwotCQkJ RUNfR1JPVVBfZnJlZShncm91cCk7Ci0JCQkvKiB0cnkgdGhlIG5leHQgY3VydmUgKi8KLQkJCWNv bnRpbnVlOwotCQkJfQotCQlmcHJpbnRmKHN0ZG91dCwgIi4iKTsKLQkJZmZsdXNoKHN0ZG91dCk7 Ci0JCUVDX0dST1VQX2ZyZWUoZ3JvdXApOwotCQl9Ci0JaWYgKG9rKQotCQlmcHJpbnRmKHN0ZG91 dCwgIiBva1xuXG4iKTsKLQllbHNlCi0JCXsKLQkJZnByaW50ZihzdGRvdXQsICIgZmFpbGVkXG5c biIpOwotCQlBQk9SVDsKLQkJfQotCU9QRU5TU0xfZnJlZShjdXJ2ZXMpOwotCXJldHVybjsKLQl9 Ci0KLSNpZm5kZWYgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4Ci0vKiBuaXN0cF90ZXN0 X3BhcmFtcyBjb250YWlucyBtYWdpYyBudW1iZXJzIGZvciB0ZXN0aW5nIG91ciBvcHRpbWl6ZWQK LSAqIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIE5JU1QgY3VydmVzIHdpdGggY2hhcmFjdGVy aXN0aWMgPiAzLiAqLwotc3RydWN0IG5pc3RwX3Rlc3RfcGFyYW1zCi0JewotCWNvbnN0IEVDX01F VEhPRCogKCptZXRoKSAoKTsKLQlpbnQgZGVncmVlOwotCS8qIFF4LCBReSBhbmQgRCBhcmUgdGFr ZW4gZnJvbQotCSAqIGh0dHA6Ly9jc3JjLm5pc3QuZ292L2dyb3Vwcy9TVC90b29sa2l0L2RvY3Vt ZW50cy9FeGFtcGxlcy9FQ0RTQV9QcmltZS5wZGYKLQkgKiBPdGhlcndpc2UsIHZhbHVlcyBhcmUg c3RhbmRhcmQgY3VydmUgcGFyYW1ldGVycyBmcm9tIEZJUFMgMTgwLTMgKi8KLQljb25zdCBjaGFy ICpwLCAqYSwgKmIsICpReCwgKlF5LCAqR3gsICpHeSwgKm9yZGVyLCAqZDsKLQl9OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IG5pc3RwX3Rlc3RfcGFyYW1zIG5pc3RwX3Rlc3RzX3BhcmFtc1tdID0K LQl7Ci0JCXsKLQkJLyogUC0yNTYgKi8KLQkJRUNfR0ZwX25pc3RwMjU2X21ldGhvZCwKLQkJMjU2 LAotCQkiZmZmZmZmZmYwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZiIsIC8qIHAgKi8KLQkJImZmZmZmZmZmMDAwMDAwMDEwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMiLCAvKiBhICovCi0JCSI1YWM2MzVk OGFhM2E5M2U3YjNlYmJkNTU3Njk4ODZiYzY1MWQwNmIwY2M1M2IwZjYzYmNlM2MzZTI3ZDI2MDRi IiwgLyogYiAqLwotCQkiYjdlMDhhZmRmZTk0YmFkM2YxZGM4YzczNDc5OGJhMWM2MmIzYTBhZDFl OWVhMmEzODIwMWNkMDg4OWJjN2ExOSIsIC8qIFF4ICovCi0JCSIzNjAzZjc0Nzk1OWRiZjdhNGJi MjI2ZTQxOTI4NzI5MDYzYWRjN2FlNDM1MjllNjFiNTYzYmJjNjA2Y2M1ZTA5IiwgLyogUXkgKi8K LQkJIjZiMTdkMWYyZTEyYzQyNDdmOGJjZTZlNTYzYTQ0MGYyNzcwMzdkODEyZGViMzNhMGY0YTEz OTQ1ZDg5OGMyOTYiLCAvKiBHeCAqLwotCQkiNGZlMzQyZTJmZTFhN2Y5YjhlZTdlYjRhN2MwZjll MTYyYmNlMzM1NzZiMzE1ZWNlY2JiNjQwNjgzN2JmNTFmNSIsIC8qIEd5ICovCi0JCSJmZmZmZmZm ZjAwMDAwMDAwZmZmZmZmZmZmZmZmZmZmZmJjZTZmYWFkYTcxNzllODRmM2I5Y2FjMmZjNjMyNTUx IiwgLyogb3JkZXIgKi8KLQkJImM0NzdmOWY2NWMyMmNjZTIwNjU3ZmFhNWIyZDFkODEyMjMzNmY4 NTFhNTA4YTFlZDA0ZTQ3OWMzNDk4NWJmOTYiLCAvKiBkICovCi0JCX0sCi0JfTsKLQotdm9pZCBu aXN0cF9zaW5nbGVfdGVzdChjb25zdCBzdHJ1Y3QgbmlzdHBfdGVzdF9wYXJhbXMgKnRlc3QpCi0J ewotCUJOX0NUWCAqY3R4OwotCUJJR05VTSAqcCwgKmEsICpiLCAqeCwgKnksICpuLCAqbSwgKm9y ZGVyOwotCUVDX0dST1VQICpOSVNUUDsKLQlFQ19QT0lOVCAqRywgKlAsICpRLCAqUV9DSEVDSzsK LQotCWZwcmludGYoc3Rkb3V0LCAiXG5OSVNUIGN1cnZlIFAtJWQgKG9wdGltaXNlZCBpbXBsZW1l bnRhdGlvbik6XG4iLCB0ZXN0LT5kZWdyZWUpOwotCWN0eCA9IEJOX0NUWF9uZXcoKTsKLQlwID0g Qk5fbmV3KCk7Ci0JYSA9IEJOX25ldygpOwotCWIgPSBCTl9uZXcoKTsKLQl4ID0gQk5fbmV3KCk7 IHkgPSBCTl9uZXcoKTsKLQltID0gQk5fbmV3KCk7IG4gPSBCTl9uZXcoKTsgb3JkZXIgPSBCTl9u ZXcoKTsKLQotCU5JU1RQID0gRUNfR1JPVVBfbmV3KHRlc3QtPm1ldGgoKSk7Ci0JaWYoIU5JU1RQ KSBBQk9SVDsKLQlpZiAoIUJOX2hleDJibigmcCwgdGVzdC0+cCkpIEFCT1JUOwotCWlmICgxICE9 IEJOX2lzX3ByaW1lX2V4KHAsIEJOX3ByaW1lX2NoZWNrcywgY3R4LCBOVUxMKSkgQUJPUlQ7Ci0J aWYgKCFCTl9oZXgyYm4oJmEsIHRlc3QtPmEpKSBBQk9SVDsKLQlpZiAoIUJOX2hleDJibigmYiwg dGVzdC0+YikpIEFCT1JUOwotCWlmICghRUNfR1JPVVBfc2V0X2N1cnZlX0dGcChOSVNUUCwgcCwg YSwgYiwgY3R4KSkgQUJPUlQ7Ci0JRyA9IEVDX1BPSU5UX25ldyhOSVNUUCk7Ci0JUCA9IEVDX1BP SU5UX25ldyhOSVNUUCk7Ci0JUSA9IEVDX1BPSU5UX25ldyhOSVNUUCk7Ci0JUV9DSEVDSyA9IEVD X1BPSU5UX25ldyhOSVNUUCk7Ci0JaWYoIUJOX2hleDJibigmeCwgdGVzdC0+UXgpKSBBQk9SVDsK LQlpZighQk5faGV4MmJuKCZ5LCB0ZXN0LT5ReSkpIEFCT1JUOwotCWlmKCFFQ19QT0lOVF9zZXRf YWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChOSVNUUCwgUV9DSEVDSywgeCwgeSwgY3R4KSkgQUJPUlQ7 Ci0JaWYgKCFCTl9oZXgyYm4oJngsIHRlc3QtPkd4KSkgQUJPUlQ7Ci0JaWYgKCFCTl9oZXgyYm4o JnksIHRlc3QtPkd5KSkgQUJPUlQ7Ci0JaWYgKCFFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5h dGVzX0dGcChOSVNUUCwgRywgeCwgeSwgY3R4KSkgQUJPUlQ7Ci0JaWYgKCFCTl9oZXgyYm4oJm9y ZGVyLCB0ZXN0LT5vcmRlcikpIEFCT1JUOwotCWlmICghRUNfR1JPVVBfc2V0X2dlbmVyYXRvcihO SVNUUCwgRywgb3JkZXIsIEJOX3ZhbHVlX29uZSgpKSkgQUJPUlQ7Ci0KLQlmcHJpbnRmKHN0ZG91 dCwgInZlcmlmeSBkZWdyZWUgLi4uICIpOwotCWlmIChFQ19HUk9VUF9nZXRfZGVncmVlKE5JU1RQ KSAhPSB0ZXN0LT5kZWdyZWUpIEFCT1JUOwotCWZwcmludGYoc3Rkb3V0LCAib2tcbiIpOwotCi0J ZnByaW50ZihzdGRvdXQsICJOSVNUIHRlc3QgdmVjdG9ycyAuLi4gIik7Ci0JaWYgKCFCTl9oZXgy Ym4oJm4sIHRlc3QtPmQpKSBBQk9SVDsKLQkvKiBmaXhlZCBwb2ludCBtdWx0aXBsaWNhdGlvbiAq LwotCUVDX1BPSU5UX211bChOSVNUUCwgUSwgbiwgTlVMTCwgTlVMTCwgY3R4KTsKLQlpZiAoMCAh PSBFQ19QT0lOVF9jbXAoTklTVFAsIFEsIFFfQ0hFQ0ssIGN0eCkpIEFCT1JUOwotCS8qIHJhbmRv bSBwb2ludCBtdWx0aXBsaWNhdGlvbiAqLwotCUVDX1BPSU5UX211bChOSVNUUCwgUSwgTlVMTCwg RywgbiwgY3R4KTsKLQlpZiAoMCAhPSBFQ19QT0lOVF9jbXAoTklTVFAsIFEsIFFfQ0hFQ0ssIGN0 eCkpIEFCT1JUOwotCi0JLyogc2V0IGdlbmVyYXRvciB0byBQID0gMipHLCB3aGVyZSBHIGlzIHRo ZSBzdGFuZGFyZCBnZW5lcmF0b3IgKi8KLQlpZiAoIUVDX1BPSU5UX2RibChOSVNUUCwgUCwgRywg Y3R4KSkgQUJPUlQ7Ci0JaWYgKCFFQ19HUk9VUF9zZXRfZ2VuZXJhdG9yKE5JU1RQLCBQLCBvcmRl ciwgQk5fdmFsdWVfb25lKCkpKSBBQk9SVDsKLQkvKiBzZXQgdGhlIHNjYWxhciB0byBtPW4vMiwg d2hlcmUgbiBpcyB0aGUgTklTVCB0ZXN0IHNjYWxhciAqLwotCWlmICghQk5fcnNoaWZ0KG0sIG4s IDEpKSBBQk9SVDsKLQotCS8qIHRlc3QgdGhlIG5vbi1zdGFuZGFyZCBnZW5lcmF0b3IgKi8KLQkv KiBmaXhlZCBwb2ludCBtdWx0aXBsaWNhdGlvbiAqLwotCUVDX1BPSU5UX211bChOSVNUUCwgUSwg bSwgTlVMTCwgTlVMTCwgY3R4KTsKLQlpZiAoMCAhPSBFQ19QT0lOVF9jbXAoTklTVFAsIFEsIFFf Q0hFQ0ssIGN0eCkpIEFCT1JUOwotCS8qIHJhbmRvbSBwb2ludCBtdWx0aXBsaWNhdGlvbiAqLwot CUVDX1BPSU5UX211bChOSVNUUCwgUSwgTlVMTCwgUCwgbSwgY3R4KTsKLQlpZiAoMCAhPSBFQ19Q T0lOVF9jbXAoTklTVFAsIFEsIFFfQ0hFQ0ssIGN0eCkpIEFCT1JUOwotCi0JLyogbm93IHJlcGVh dCBhbGwgdGVzdHMgd2l0aCBwcmVjb21wdXRhdGlvbiAqLwotCWlmICghRUNfR1JPVVBfcHJlY29t cHV0ZV9tdWx0KE5JU1RQLCBjdHgpKSBBQk9SVDsKLQotCS8qIGZpeGVkIHBvaW50IG11bHRpcGxp Y2F0aW9uICovCi0JRUNfUE9JTlRfbXVsKE5JU1RQLCBRLCBtLCBOVUxMLCBOVUxMLCBjdHgpOwot CWlmICgwICE9IEVDX1BPSU5UX2NtcChOSVNUUCwgUSwgUV9DSEVDSywgY3R4KSkgQUJPUlQ7Ci0J LyogcmFuZG9tIHBvaW50IG11bHRpcGxpY2F0aW9uICovCi0JRUNfUE9JTlRfbXVsKE5JU1RQLCBR LCBOVUxMLCBQLCBtLCBjdHgpOwotCWlmICgwICE9IEVDX1BPSU5UX2NtcChOSVNUUCwgUSwgUV9D SEVDSywgY3R4KSkgQUJPUlQ7Ci0KLQkvKiByZXNldCBnZW5lcmF0b3IgKi8KLQlpZiAoIUVDX0dS T1VQX3NldF9nZW5lcmF0b3IoTklTVFAsIEcsIG9yZGVyLCBCTl92YWx1ZV9vbmUoKSkpIEFCT1JU OwotCS8qIGZpeGVkIHBvaW50IG11bHRpcGxpY2F0aW9uICovCi0JRUNfUE9JTlRfbXVsKE5JU1RQ LCBRLCBuLCBOVUxMLCBOVUxMLCBjdHgpOwotCWlmICgwICE9IEVDX1BPSU5UX2NtcChOSVNUUCwg USwgUV9DSEVDSywgY3R4KSkgQUJPUlQ7Ci0JLyogcmFuZG9tIHBvaW50IG11bHRpcGxpY2F0aW9u ICovCi0JRUNfUE9JTlRfbXVsKE5JU1RQLCBRLCBOVUxMLCBHLCBuLCBjdHgpOwotCWlmICgwICE9 IEVDX1BPSU5UX2NtcChOSVNUUCwgUSwgUV9DSEVDSywgY3R4KSkgQUJPUlQ7Ci0KLQlmcHJpbnRm KHN0ZG91dCwgIm9rXG4iKTsKLQlncm91cF9vcmRlcl90ZXN0cyhOSVNUUCk7Ci0jaWYgMAotCXRp bWluZ3MoTklTVFAsIFRJTUlOR19CQVNFX1BULCBjdHgpOwotCXRpbWluZ3MoTklTVFAsIFRJTUlO R19SQU5EX1BULCBjdHgpOwotI2VuZGlmCi0JRUNfR1JPVVBfZnJlZShOSVNUUCk7Ci0JRUNfUE9J TlRfZnJlZShHKTsKLQlFQ19QT0lOVF9mcmVlKFApOwotCUVDX1BPSU5UX2ZyZWUoUSk7Ci0JRUNf UE9JTlRfZnJlZShRX0NIRUNLKTsKLQlCTl9mcmVlKG4pOwotCUJOX2ZyZWUobSk7Ci0JQk5fZnJl ZShwKTsKLQlCTl9mcmVlKGEpOwotCUJOX2ZyZWUoYik7Ci0JQk5fZnJlZSh4KTsKLQlCTl9mcmVl KHkpOwotCUJOX2ZyZWUob3JkZXIpOwotCUJOX0NUWF9mcmVlKGN0eCk7Ci0JfQotCi12b2lkIG5p c3RwX3Rlc3RzKCkKLQl7Ci0JdW5zaWduZWQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yo bmlzdHBfdGVzdHNfcGFyYW1zKSAvIHNpemVvZihzdHJ1Y3QgbmlzdHBfdGVzdF9wYXJhbXMpOyBp KyspCi0JCXsKLQkJbmlzdHBfc2luZ2xlX3Rlc3QoJm5pc3RwX3Rlc3RzX3BhcmFtc1tpXSk7Ci0J CX0KLQl9Ci0jZW5kaWYKLQotc3RhdGljIGNvbnN0IGNoYXIgcm5kX3NlZWRbXSA9ICJzdHJpbmcg dG8gbWFrZSB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdGhpbmsgaXQgaGFzIGVudHJvcHki OworeworICAgIEVDX2J1aWx0aW5fY3VydmUgKmN1cnZlcyA9IE5VTEw7CisgICAgc2l6ZV90IGNy dl9sZW4gPSAwLCBuID0gMDsKKyAgICBpbnQgb2sgPSAxOworCisgICAgY3J2X2xlbiA9IEVDX2dl dF9idWlsdGluX2N1cnZlcyhOVUxMLCAwKTsKKworICAgIGN1cnZlcyA9IE9QRU5TU0xfbWFsbG9j KHNpemVvZihFQ19idWlsdGluX2N1cnZlKSAqIGNydl9sZW4pOworCisgICAgaWYgKGN1cnZlcyA9 PSBOVUxMKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIUVDX2dldF9idWlsdGluX2N1cnZl cyhjdXJ2ZXMsIGNydl9sZW4pKSB7CisgICAgICAgIE9QRU5TU0xfZnJlZShjdXJ2ZXMpOworICAg ICAgICByZXR1cm47CisgICAgfQorCisgICAgZnByaW50ZihzdGRvdXQsICJ0ZXN0aW5nIGludGVy bmFsIGN1cnZlczogIik7CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgY3J2X2xlbjsgbisrKSB7Cisg ICAgICAgIEVDX0dST1VQICpncm91cCA9IE5VTEw7CisgICAgICAgIGludCBuaWQgPSBjdXJ2ZXNb bl0ubmlkOworICAgICAgICBpZiAoKGdyb3VwID0gRUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWUo bmlkKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgb2sgPSAwOworICAgICAgICAgICAgZnByaW50 ZihzdGRvdXQsICJcbkVDX0dST1VQX25ld19jdXJ2ZV9uYW1lKCkgZmFpbGVkIHdpdGgiCisgICAg ICAgICAgICAgICAgICAgICIgY3VydmUgJXNcbiIsIE9CSl9uaWQyc24obmlkKSk7CisgICAgICAg ICAgICAvKiB0cnkgbmV4dCBjdXJ2ZSAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg IH0KKyAgICAgICAgaWYgKCFFQ19HUk9VUF9jaGVjayhncm91cCwgTlVMTCkpIHsKKyAgICAgICAg ICAgIG9rID0gMDsKKyAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiXG5FQ19HUk9VUF9jaGVj aygpIGZhaWxlZCB3aXRoIgorICAgICAgICAgICAgICAgICAgICAiIGN1cnZlICVzXG4iLCBPQkpf bmlkMnNuKG5pZCkpOworICAgICAgICAgICAgRUNfR1JPVVBfZnJlZShncm91cCk7CisgICAgICAg ICAgICAvKiB0cnkgdGhlIG5leHQgY3VydmUgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg ICAgICB9CisgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiLiIpOworICAgICAgICBmZmx1c2goc3Rk b3V0KTsKKyAgICAgICAgRUNfR1JPVVBfZnJlZShncm91cCk7CisgICAgfQorICAgIGlmIChvaykK KyAgICAgICAgZnByaW50ZihzdGRvdXQsICIgb2tcblxuIik7CisgICAgZWxzZSB7CisgICAgICAg IGZwcmludGYoc3Rkb3V0LCAiIGZhaWxlZFxuXG4iKTsKKyAgICAgICAgQUJPUlQ7CisgICAgfQor ICAgIE9QRU5TU0xfZnJlZShjdXJ2ZXMpOworICAgIHJldHVybjsKK30KKworIyBpZm5kZWYgT1BF TlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CisvKgorICogbmlzdHBfdGVzdF9wYXJhbXMgY29u dGFpbnMgbWFnaWMgbnVtYmVycyBmb3IgdGVzdGluZyBvdXIgb3B0aW1pemVkCisgKiBpbXBsZW1l bnRhdGlvbnMgb2Ygc2V2ZXJhbCBOSVNUIGN1cnZlcyB3aXRoIGNoYXJhY3RlcmlzdGljID4gMy4K KyAqLworc3RydWN0IG5pc3RwX3Rlc3RfcGFyYW1zIHsKKyAgICBjb25zdCBFQ19NRVRIT0QgKigq bWV0aCkgKCk7CisgICAgaW50IGRlZ3JlZTsKKyAgICAvKgorICAgICAqIFF4LCBReSBhbmQgRCBh cmUgdGFrZW4gZnJvbQorICAgICAqIGh0dHA6Ly9jc3JjZG9jdXQuZ292L2dyb3Vwcy9TVC90b29s a2l0L2RvY3VtZW50cy9FeGFtcGxlcy9FQ0RTQV9QcmltZS5wZGYKKyAgICAgKiBPdGhlcndpc2Us IHZhbHVlcyBhcmUgc3RhbmRhcmQgY3VydmUgcGFyYW1ldGVycyBmcm9tIEZJUFMgMTgwLTMKKyAg ICAgKi8KKyAgICBjb25zdCBjaGFyICpwLCAqYSwgKmIsICpReCwgKlF5LCAqR3gsICpHeSwgKm9y ZGVyLCAqZDsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmlzdHBfdGVzdF9wYXJhbXMgbmlz dHBfdGVzdHNfcGFyYW1zW10gPSB7CisgICAgeworICAgICAvKiBQLTI1NiAqLworICAgICBFQ19H RnBfbmlzdHAyNTZfbWV0aG9kLAorICAgICAyNTYsCisgICAgIC8qIHAgKi8KKyAgICAgImZmZmZm ZmZmMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmYiLAorICAgICAvKiBhICovCisgICAgICJmZmZmZmZmZjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjIiwKKyAgICAgLyogYiAqLworICAgICAi NWFjNjM1ZDhhYTNhOTNlN2IzZWJiZDU1NzY5ODg2YmM2NTFkMDZiMGNjNTNiMGY2M2JjZTNjM2Uy N2QyNjA0YiIsCisgICAgIC8qIFF4ICovCisgICAgICJiN2UwOGFmZGZlOTRiYWQzZjFkYzhjNzM0 Nzk4YmExYzYyYjNhMGFkMWU5ZWEyYTM4MjAxY2QwODg5YmM3YTE5IiwKKyAgICAgLyogUXkgKi8K KyAgICAgIjM2MDNmNzQ3OTU5ZGJmN2E0YmIyMjZlNDE5Mjg3MjkwNjNhZGM3YWU0MzUyOWU2MWI1 NjNiYmM2MDZjYzVlMDkiLAorICAgICAvKiBHeCAqLworICAgICAiNmIxN2QxZjJlMTJjNDI0N2Y4 YmNlNmU1NjNhNDQwZjI3NzAzN2Q4MTJkZWIzM2EwZjRhMTM5NDVkODk4YzI5NiIsCisgICAgIC8q IEd5ICovCisgICAgICI0ZmUzNDJlMmZlMWE3ZjliOGVlN2ViNGE3YzBmOWUxNjJiY2UzMzU3NmIz MTVlY2VjYmI2NDA2ODM3YmY1MWY1IiwKKyAgICAgLyogb3JkZXIgKi8KKyAgICAgImZmZmZmZmZm MDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZmYmNlNmZhYWRhNzE3OWU4NGYzYjljYWMyZmM2MzI1NTEi LAorICAgICAvKiBkICovCisgICAgICJjNDc3ZjlmNjVjMjJjY2UyMDY1N2ZhYTViMmQxZDgxMjIz MzZmODUxYTUwOGExZWQwNGU0NzljMzQ5ODViZjk2IiwKKyAgICAgfSwKKyAgICB7CisgICAgIC8q IFAtNTIxICovCisgICAgIEVDX0dGcF9uaXN0cDUyMV9tZXRob2QsCisgICAgIDUyMSwKKyAgICAg LyogcCAqLworICAgICAiMWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYiLAorICAgICAvKiBhICovCisgICAgICIx ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmYyIsCisgICAgIC8qIGIgKi8KKyAgICAgIjA1MTk1M2ViOTYxOGUxYzlh MWY5MjlhMjFhMGI2ODU0MGVlYTJkYTcyNWI5OWIzMTVmM2I4YjQ4OTkxOGVmMTA5ZTE1NjE5Mzk1 MWVjN2U5MzdiMTY1MmMwYmQzYmIxYmYwNzM1NzNkZjg4M2QyYzM0ZjFlZjQ1MWZkNDZiNTAzZjAw IiwKKyAgICAgLyogUXggKi8KKyAgICAgIjAwOThlOTFlZWY5YTY4NDUyODIyMzA5YzUyZmFiNDUz ZjVmMTE3YzFkYThlZDc5NmIyNTVlOWFiOGY2NDEwY2NhMTZlNTlkZjQwM2E2YmRjNmNhNDY3YTM3 MDU2YjFlNTRiMzAwNWQ4YWMwMzBkZWNmZWI2OGRmMThiMTcxODg1ZDVjNCIsCisgICAgIC8qIFF5 ICovCisgICAgICIwMTY0MzUwYzMyMWFlY2ZjMWNjYTFiYTQzNjRjOWIxNTY1NjE1MGI0Yjc4ZDZh NDhkN2QyOGU3ZjMxOTg1ZWYxN2JlODU1NDM3NmI3MjkwMDcxMmM0YjgzYWQ2NjgzMjcyMzE1MjZl MzEzZjVmMDkyOTk5YTQ2MzJmZDUwZDk0NmJjMmUiLAorICAgICAvKiBHeCAqLworICAgICAiYzY4 NThlMDZiNzA0MDRlOWNkOWUzZWNiNjYyMzk1YjQ0MjljNjQ4MTM5MDUzZmI1MjFmODI4YWY2MDZi NGQzZGJhYTE0YjVlNzdlZmU3NTkyOGZlMWRjMTI3YTJmZmE4ZGUzMzQ4YjNjMTg1NmE0MjliZjk3 ZTdlMzFjMmU1YmQ2NiIsCisgICAgIC8qIEd5ICovCisgICAgICIxMTgzOTI5NmE3ODlhM2JjMDA0 NWM4YTVmYjQyYzdkMWJkOTk4ZjU0NDQ5NTc5YjQ0NjgxN2FmYmQxNzI3M2U2NjJjOTdlZTcyOTk1 ZWY0MjY0MGM1NTBiOTAxM2ZhZDA3NjEzNTNjNzA4NmEyNzJjMjQwODhiZTk0NzY5ZmQxNjY1MCIs CisgICAgIC8qIG9yZGVyICovCisgICAgICIxZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZhNTE4Njg3ODNiZjJmOTY2YjdmY2Mw MTQ4ZjcwOWE1ZDAzYmI1YzliODg5OWM0N2FlYmI2ZmI3MWU5MTM4NjQwOSIsCisgICAgIC8qIGQg Ki8KKyAgICAgIjAxMDAwODVmNDdiOGUxYjhiMTFiN2ViMzMwMjhjMGIyODg4ZTMwNGJmYzk4NTAx OTU1YjQ1YmJhMTQ3OGRjMTg0ZWVlZGYwOWI4NmE1ZjdjMjE5OTQ0MDYwNzI3ODcyMDVlNjlhNjM3 MDlmZTM1YWE5M2JhMzMzNTE0YjI0Zjk2MTcyMiIsCisgICAgIH0sCit9OworCitzdGF0aWMgdm9p ZCBuaXN0cF9zaW5nbGVfdGVzdChjb25zdCBzdHJ1Y3QgbmlzdHBfdGVzdF9wYXJhbXMgKnRlc3Qp Cit7CisgICAgQk5fQ1RYICpjdHg7CisgICAgQklHTlVNICpwLCAqYSwgKmIsICp4LCAqeSwgKm4s ICptLCAqb3JkZXI7CisgICAgRUNfR1JPVVAgKk5JU1RQOworICAgIEVDX1BPSU5UICpHLCAqUCwg KlEsICpRX0NIRUNLOworCisgICAgZnByaW50ZihzdGRvdXQsICJcbk5JU1QgY3VydmUgUC0lZCAo b3B0aW1pc2VkIGltcGxlbWVudGF0aW9uKTpcbiIsCisgICAgICAgICAgICB0ZXN0LT5kZWdyZWUp OworICAgIGN0eCA9IEJOX0NUWF9uZXcoKTsKKyAgICBwID0gQk5fbmV3KCk7CisgICAgYSA9IEJO X25ldygpOworICAgIGIgPSBCTl9uZXcoKTsKKyAgICB4ID0gQk5fbmV3KCk7CisgICAgeSA9IEJO X25ldygpOworICAgIG0gPSBCTl9uZXcoKTsKKyAgICBuID0gQk5fbmV3KCk7CisgICAgb3JkZXIg PSBCTl9uZXcoKTsKKworICAgIE5JU1RQID0gRUNfR1JPVVBfbmV3KHRlc3QtPm1ldGgoKSk7Cisg ICAgaWYgKCFOSVNUUCkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFCTl9oZXgyYm4oJnAsIHRl c3QtPnApKQorICAgICAgICBBQk9SVDsKKyAgICBpZiAoMSAhPSBCTl9pc19wcmltZV9leChwLCBC Tl9wcmltZV9jaGVja3MsIGN0eCwgTlVMTCkpCisgICAgICAgIEFCT1JUOworICAgIGlmICghQk5f aGV4MmJuKCZhLCB0ZXN0LT5hKSkKKyAgICAgICAgQUJPUlQ7CisgICAgaWYgKCFCTl9oZXgyYm4o JmIsIHRlc3QtPmIpKQorICAgICAgICBBQk9SVDsKKyAgICBpZiAoIUVDX0dST1VQX3NldF9jdXJ2 ZV9HRnAoTklTVFAsIHAsIGEsIGIsIGN0eCkpCisgICAgICAgIEFCT1JUOworICAgIEcgPSBFQ19Q T0lOVF9uZXcoTklTVFApOworICAgIFAgPSBFQ19QT0lOVF9uZXcoTklTVFApOworICAgIFEgPSBF Q19QT0lOVF9uZXcoTklTVFApOworICAgIFFfQ0hFQ0sgPSBFQ19QT0lOVF9uZXcoTklTVFApOwor ICAgIGlmICghQk5faGV4MmJuKCZ4LCB0ZXN0LT5ReCkpCisgICAgICAgIEFCT1JUOworICAgIGlm ICghQk5faGV4MmJuKCZ5LCB0ZXN0LT5ReSkpCisgICAgICAgIEFCT1JUOworICAgIGlmICghRUNf UE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoTklTVFAsIFFfQ0hFQ0ssIHgsIHksIGN0 eCkpCisgICAgICAgIEFCT1JUOworICAgIGlmICghQk5faGV4MmJuKCZ4LCB0ZXN0LT5HeCkpCisg ICAgICAgIEFCT1JUOworICAgIGlmICghQk5faGV4MmJuKCZ5LCB0ZXN0LT5HeSkpCisgICAgICAg IEFCT1JUOworICAgIGlmICghRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoTklT VFAsIEcsIHgsIHksIGN0eCkpCisgICAgICAgIEFCT1JUOworICAgIGlmICghQk5faGV4MmJuKCZv cmRlciwgdGVzdC0+b3JkZXIpKQorICAgICAgICBBQk9SVDsKKyAgICBpZiAoIUVDX0dST1VQX3Nl dF9nZW5lcmF0b3IoTklTVFAsIEcsIG9yZGVyLCBCTl92YWx1ZV9vbmUoKSkpCisgICAgICAgIEFC T1JUOworCisgICAgZnByaW50ZihzdGRvdXQsICJ2ZXJpZnkgZGVncmVlIC4uLiAiKTsKKyAgICBp ZiAoRUNfR1JPVVBfZ2V0X2RlZ3JlZShOSVNUUCkgIT0gdGVzdC0+ZGVncmVlKQorICAgICAgICBB Qk9SVDsKKyAgICBmcHJpbnRmKHN0ZG91dCwgIm9rXG4iKTsKKworICAgIGZwcmludGYoc3Rkb3V0 LCAiTklTVCB0ZXN0IHZlY3RvcnMgLi4uICIpOworICAgIGlmICghQk5faGV4MmJuKCZuLCB0ZXN0 LT5kKSkKKyAgICAgICAgQUJPUlQ7CisgICAgLyogZml4ZWQgcG9pbnQgbXVsdGlwbGljYXRpb24g Ki8KKyAgICBFQ19QT0lOVF9tdWwoTklTVFAsIFEsIG4sIE5VTEwsIE5VTEwsIGN0eCk7CisgICAg aWYgKDAgIT0gRUNfUE9JTlRfY21wKE5JU1RQLCBRLCBRX0NIRUNLLCBjdHgpKQorICAgICAgICBB Qk9SVDsKKyAgICAvKiByYW5kb20gcG9pbnQgbXVsdGlwbGljYXRpb24gKi8KKyAgICBFQ19QT0lO VF9tdWwoTklTVFAsIFEsIE5VTEwsIEcsIG4sIGN0eCk7CisgICAgaWYgKDAgIT0gRUNfUE9JTlRf Y21wKE5JU1RQLCBRLCBRX0NIRUNLLCBjdHgpKQorICAgICAgICBBQk9SVDsKKworICAgIC8qIHNl dCBnZW5lcmF0b3IgdG8gUCA9IDIqRywgd2hlcmUgRyBpcyB0aGUgc3RhbmRhcmQgZ2VuZXJhdG9y ICovCisgICAgaWYgKCFFQ19QT0lOVF9kYmwoTklTVFAsIFAsIEcsIGN0eCkpCisgICAgICAgIEFC T1JUOworICAgIGlmICghRUNfR1JPVVBfc2V0X2dlbmVyYXRvcihOSVNUUCwgUCwgb3JkZXIsIEJO X3ZhbHVlX29uZSgpKSkKKyAgICAgICAgQUJPUlQ7CisgICAgLyogc2V0IHRoZSBzY2FsYXIgdG8g bT1uLzIsIHdoZXJlIG4gaXMgdGhlIE5JU1QgdGVzdCBzY2FsYXIgKi8KKyAgICBpZiAoIUJOX3Jz aGlmdChtLCBuLCAxKSkKKyAgICAgICAgQUJPUlQ7CisKKyAgICAvKiB0ZXN0IHRoZSBub24tc3Rh bmRhcmQgZ2VuZXJhdG9yICovCisgICAgLyogZml4ZWQgcG9pbnQgbXVsdGlwbGljYXRpb24gKi8K KyAgICBFQ19QT0lOVF9tdWwoTklTVFAsIFEsIG0sIE5VTEwsIE5VTEwsIGN0eCk7CisgICAgaWYg KDAgIT0gRUNfUE9JTlRfY21wKE5JU1RQLCBRLCBRX0NIRUNLLCBjdHgpKQorICAgICAgICBBQk9S VDsKKyAgICAvKiByYW5kb20gcG9pbnQgbXVsdGlwbGljYXRpb24gKi8KKyAgICBFQ19QT0lOVF9t dWwoTklTVFAsIFEsIE5VTEwsIFAsIG0sIGN0eCk7CisgICAgaWYgKDAgIT0gRUNfUE9JTlRfY21w KE5JU1RQLCBRLCBRX0NIRUNLLCBjdHgpKQorICAgICAgICBBQk9SVDsKKworICAgIC8qIG5vdyBy ZXBlYXQgYWxsIHRlc3RzIHdpdGggcHJlY29tcHV0YXRpb24gKi8KKyAgICBpZiAoIUVDX0dST1VQ X3ByZWNvbXB1dGVfbXVsdChOSVNUUCwgY3R4KSkKKyAgICAgICAgQUJPUlQ7CisKKyAgICAvKiBm aXhlZCBwb2ludCBtdWx0aXBsaWNhdGlvbiAqLworICAgIEVDX1BPSU5UX211bChOSVNUUCwgUSwg bSwgTlVMTCwgTlVMTCwgY3R4KTsKKyAgICBpZiAoMCAhPSBFQ19QT0lOVF9jbXAoTklTVFAsIFEs IFFfQ0hFQ0ssIGN0eCkpCisgICAgICAgIEFCT1JUOworICAgIC8qIHJhbmRvbSBwb2ludCBtdWx0 aXBsaWNhdGlvbiAqLworICAgIEVDX1BPSU5UX211bChOSVNUUCwgUSwgTlVMTCwgUCwgbSwgY3R4 KTsKKyAgICBpZiAoMCAhPSBFQ19QT0lOVF9jbXAoTklTVFAsIFEsIFFfQ0hFQ0ssIGN0eCkpCisg ICAgICAgIEFCT1JUOworCisgICAgLyogcmVzZXQgZ2VuZXJhdG9yICovCisgICAgaWYgKCFFQ19H Uk9VUF9zZXRfZ2VuZXJhdG9yKE5JU1RQLCBHLCBvcmRlciwgQk5fdmFsdWVfb25lKCkpKQorICAg ICAgICBBQk9SVDsKKyAgICAvKiBmaXhlZCBwb2ludCBtdWx0aXBsaWNhdGlvbiAqLworICAgIEVD X1BPSU5UX211bChOSVNUUCwgUSwgbiwgTlVMTCwgTlVMTCwgY3R4KTsKKyAgICBpZiAoMCAhPSBF Q19QT0lOVF9jbXAoTklTVFAsIFEsIFFfQ0hFQ0ssIGN0eCkpCisgICAgICAgIEFCT1JUOworICAg IC8qIHJhbmRvbSBwb2ludCBtdWx0aXBsaWNhdGlvbiAqLworICAgIEVDX1BPSU5UX211bChOSVNU UCwgUSwgTlVMTCwgRywgbiwgY3R4KTsKKyAgICBpZiAoMCAhPSBFQ19QT0lOVF9jbXAoTklTVFAs IFEsIFFfQ0hFQ0ssIGN0eCkpCisgICAgICAgIEFCT1JUOworCisgICAgZnByaW50ZihzdGRvdXQs ICJva1xuIik7CisgICAgZ3JvdXBfb3JkZXJfdGVzdHMoTklTVFApOworIyAgaWYgMAorICAgIHRp bWluZ3MoTklTVFAsIFRJTUlOR19CQVNFX1BULCBjdHgpOworICAgIHRpbWluZ3MoTklTVFAsIFRJ TUlOR19SQU5EX1BULCBjdHgpOworIyAgZW5kaWYKKyAgICBFQ19HUk9VUF9mcmVlKE5JU1RQKTsK KyAgICBFQ19QT0lOVF9mcmVlKEcpOworICAgIEVDX1BPSU5UX2ZyZWUoUCk7CisgICAgRUNfUE9J TlRfZnJlZShRKTsKKyAgICBFQ19QT0lOVF9mcmVlKFFfQ0hFQ0spOworICAgIEJOX2ZyZWUobik7 CisgICAgQk5fZnJlZShtKTsKKyAgICBCTl9mcmVlKHApOworICAgIEJOX2ZyZWUoYSk7CisgICAg Qk5fZnJlZShiKTsKKyAgICBCTl9mcmVlKHgpOworICAgIEJOX2ZyZWUoeSk7CisgICAgQk5fZnJl ZShvcmRlcik7CisgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKK30KKworc3RhdGljIHZvaWQgbmlzdHBf dGVzdHMoKQoreworICAgIHVuc2lnbmVkIGk7CisKKyAgICBmb3IgKGkgPSAwOworICAgICAgICAg aSA8IHNpemVvZihuaXN0cF90ZXN0c19wYXJhbXMpIC8gc2l6ZW9mKHN0cnVjdCBuaXN0cF90ZXN0 X3BhcmFtcyk7CisgICAgICAgICBpKyspIHsKKyAgICAgICAgbmlzdHBfc2luZ2xlX3Rlc3QoJm5p c3RwX3Rlc3RzX3BhcmFtc1tpXSk7CisgICAgfQorfQorIyBlbmRpZgorCitzdGF0aWMgY29uc3Qg Y2hhciBybmRfc2VlZFtdID0KKyAgICAic3RyaW5nIHRvIG1ha2UgdGhlIHJhbmRvbSBudW1iZXIg Z2VuZXJhdG9yIHRoaW5rIGl0IGhhcyBlbnRyb3B5IjsKIAogaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKLQl7CQotCQotCS8qIGVuYWJsZSBtZW1vcnkgbGVhayBjaGVja2luZyB1bmxl c3MgZXhwbGljaXRseSBkaXNhYmxlZCAqLwotCWlmICghKChnZXRlbnYoIk9QRU5TU0xfREVCVUdf TUVNT1JZIikgIT0gTlVMTCkgJiYgKDAgPT0gc3RyY21wKGdldGVudigiT1BFTlNTTF9ERUJVR19N RU1PUlkiKSwgIm9mZiIpKSkpCi0JCXsKLQkJQ1JZUFRPX21hbGxvY19kZWJ1Z19pbml0KCk7Ci0J CUNSWVBUT19zZXRfbWVtX2RlYnVnX29wdGlvbnMoVl9DUllQVE9fTURFQlVHX0FMTCk7Ci0JCX0K LQllbHNlCi0JCXsKLQkJLyogT1BFTlNTTF9ERUJVR19NRU1PUlk9b2ZmICovCi0JCUNSWVBUT19z ZXRfbWVtX2RlYnVnX2Z1bmN0aW9ucygwLCAwLCAwLCAwLCAwKTsKLQkJfQotCUNSWVBUT19tZW1f Y3RybChDUllQVE9fTUVNX0NIRUNLX09OKTsKLQlFUlJfbG9hZF9jcnlwdG9fc3RyaW5ncygpOwot Ci0JUkFORF9zZWVkKHJuZF9zZWVkLCBzaXplb2Ygcm5kX3NlZWQpOyAvKiBvciBCTl9nZW5lcmF0 ZV9wcmltZSBtYXkgZmFpbCAqLwotCi0JcHJpbWVfZmllbGRfdGVzdHMoKTsKLQlwdXRzKCIiKTsK LSNpZm5kZWYgT1BFTlNTTF9OT19FQzJNCi0JY2hhcjJfZmllbGRfdGVzdHMoKTsKLSNlbmRpZgot I2lmbmRlZiBPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjgKLQluaXN0cF90ZXN0cygpOwot I2VuZGlmCi0JLyogdGVzdCB0aGUgaW50ZXJuYWwgY3VydmVzICovCi0JaW50ZXJuYWxfY3VydmVf dGVzdCgpOwotCi0jaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi0JRU5HSU5FX2NsZWFudXAoKTsK LSNlbmRpZgotCUNSWVBUT19jbGVhbnVwX2FsbF9leF9kYXRhKCk7Ci0JRVJSX2ZyZWVfc3RyaW5n cygpOwotCUVSUl9yZW1vdmVfdGhyZWFkX3N0YXRlKE5VTEwpOwotCUNSWVBUT19tZW1fbGVha3Nf ZnAoc3RkZXJyKTsKLQkKLQlyZXR1cm4gMDsKLQl9Cit7CisKKyAgICAvKiBlbmFibGUgbWVtb3J5 IGxlYWsgY2hlY2tpbmcgdW5sZXNzIGV4cGxpY2l0bHkgZGlzYWJsZWQgKi8KKyAgICBpZiAoISgo Z2V0ZW52KCJPUEVOU1NMX0RFQlVHX01FTU9SWSIpICE9IE5VTEwpCisgICAgICAgICAgJiYgKDAg PT0gc3RyY21wKGdldGVudigiT1BFTlNTTF9ERUJVR19NRU1PUlkiKSwgIm9mZiIpKSkpIHsKKyAg ICAgICAgQ1JZUFRPX21hbGxvY19kZWJ1Z19pbml0KCk7CisgICAgICAgIENSWVBUT19zZXRfbWVt X2RlYnVnX29wdGlvbnMoVl9DUllQVE9fTURFQlVHX0FMTCk7CisgICAgfSBlbHNlIHsKKyAgICAg ICAgLyogT1BFTlNTTF9ERUJVR19NRU1PUlk9b2ZmICovCisgICAgICAgIENSWVBUT19zZXRfbWVt X2RlYnVnX2Z1bmN0aW9ucygwLCAwLCAwLCAwLCAwKTsKKyAgICB9CisgICAgQ1JZUFRPX21lbV9j dHJsKENSWVBUT19NRU1fQ0hFQ0tfT04pOworICAgIEVSUl9sb2FkX2NyeXB0b19zdHJpbmdzKCk7 CisKKyAgICBSQU5EX3NlZWQocm5kX3NlZWQsIHNpemVvZiBybmRfc2VlZCk7IC8qIG9yIEJOX2dl bmVyYXRlX3ByaW1lIG1heSBmYWlsICovCisKKyAgICBwcmltZV9maWVsZF90ZXN0cygpOworICAg IHB1dHMoIiIpOworIyBpZm5kZWYgT1BFTlNTTF9OT19FQzJNCisgICAgY2hhcjJfZmllbGRfdGVz dHMoKTsKKyMgZW5kaWYKKyMgaWZuZGVmIE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOAor ICAgIG5pc3RwX3Rlc3RzKCk7CisjIGVuZGlmCisgICAgLyogdGVzdCB0aGUgaW50ZXJuYWwgY3Vy dmVzICovCisgICAgaW50ZXJuYWxfY3VydmVfdGVzdCgpOworCisjIGlmbmRlZiBPUEVOU1NMX05P X0VOR0lORQorICAgIEVOR0lORV9jbGVhbnVwKCk7CisjIGVuZGlmCisgICAgQ1JZUFRPX2NsZWFu dXBfYWxsX2V4X2RhdGEoKTsKKyAgICBFUlJfZnJlZV9zdHJpbmdzKCk7CisgICAgRVJSX3JlbW92 ZV90aHJlYWRfc3RhdGUoTlVMTCk7CisgICAgQ1JZUFRPX21lbV9sZWFrc19mcChzdGRlcnIpOwor CisgICAgcmV0dXJuIDA7Cit9CiAjZW5kaWYKCmRpZmYgLS1naXQgYS9ob2JibGUtb3BlbnNzbCBi L2hvYmJsZS1vcGVuc3NsCmluZGV4IDNjNzVlYTEuLjE2ZDE0OGMgMTAwNzU1Ci0tLSBhL2hvYmJs ZS1vcGVuc3NsCisrKyBiL2hvYmJsZS1vcGVuc3NsCkBAIC0zMSw3ICszMSw3IEBAIGZvciBjIGlu IGBmaW5kIGNyeXB0by9ibiAtbmFtZSAiKmdmMm0uYyJgOyBkbwogCT4gJGMKIGRvbmUKIAotZm9y IGMgaW4gYGZpbmQgY3J5cHRvL2VjIC1uYW1lICJlYzIqLmMiIC1vIC1uYW1lICJlY19jdXJ2ZS5j IiAtbyAtbmFtZSAiZWNwX25pc3RwPzI/LmMiIC1vIC1uYW1lICJlY3Rlc3QuYyJgOyBkbworZm9y IGMgaW4gYGZpbmQgY3J5cHRvL2VjIC1uYW1lICJlYzIqLmMiIC1vIC1uYW1lICJlY19jdXJ2ZS5j IiAtbyAtbmFtZSAiZWNwX25pc3RwMjI/LmMiIC1vIC1uYW1lICJlY3Rlc3QuYyJgOyBkbwogCWVj aG8gRGVzdHJveWluZyAkYwogCT4gJGMKIGRvbmUKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTAuOS42 LXg1MDkucGF0Y2ggYi9vcGVuc3NsLTAuOS42LXg1MDkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDdiM2Y0OWYuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0wLjkuNi14NTA5LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRG8gbm90IHRyZWF0IGR1cGxpY2F0 ZSBjZXJ0cyBhcyBhbiBlcnJvci4KLQotLS0tIG9wZW5zc2wtMC45LjYvY3J5cHRvL3g1MDkvYnlf ZmlsZS5jCVdlZCBTZXAgMjcgMTU6MDk6MDUgMjAwMAotKysrIG9wZW5zc2wtMC45LjYvY3J5cHRv L3g1MDkvYnlfZmlsZS5jCVdlZCBTZXAgMjcgMTQ6MjE6MjAgMjAwMAotQEAgLTE2Myw4ICsxNjMs MTIgQEAKLSAJCQkJCX0KLSAJCQkJfQotIAkJCWk9WDUwOV9TVE9SRV9hZGRfY2VydChjdHgtPnN0 b3JlX2N0eCx4KTsKLS0JCQlpZiAoIWkpIGdvdG8gZXJyOwotLQkJCWNvdW50Kys7Ci0rCQkJLyog aWdub3JlIGFueSBwcm9ibGVtcyB3aXRoIGN1cnJlbnQgY2VydGlmaWNhdGUgCi0rCQkJICAgIGFu ZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZSAqLwotKwkJCWlmIChpKQotKwkJCSAgICBjb3Vu dCsrOwotKwkJCWVsc2UKLSsJCQkgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0gCQkJWDUwOV9mcmVl KHgpOwotIAkJCXg9TlVMTDsKLSAJCQl9Ci1AQCAtMTc5LDcgKzE4Myw4IEBACi0gCQkJZ290byBl cnI7Ci0gCQkJfQotIAkJaT1YNTA5X1NUT1JFX2FkZF9jZXJ0KGN0eC0+c3RvcmVfY3R4LHgpOwot LQkJaWYgKCFpKSBnb3RvIGVycjsKLSsJCWlmICghaSkKLSsJCSAgRVJSX2NsZWFyX2Vycm9yKCk7 Ci0gCQlyZXQ9aTsKLSAJCX0KLSAJZWxzZQoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMC45LjhhLW5v LXJwYXRoLnBhdGNoIGIvb3BlbnNzbC0wLjkuOGEtbm8tcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDhmOGZiOTEuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0wLjkuOGEt bm8tcnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gb3BlbnNz bC0wLjkuOGEvTWFrZWZpbGUuc2hhcmVkLm5vLXJwYXRoCTIwMDUtMDYtMjMgMjI6NDc6NTQuMDAw MDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0wLjkuOGEvTWFrZWZpbGUuc2hhcmVkCTIwMDUtMTEt MTYgMjI6MzU6MzcuMDAwMDAwMDAwICswMTAwCi1AQCAtMTUzLDcgKzE1Myw3IEBACi0gCU5PQUxM U1lNU0ZMQUdTPSctV2wsLS1uby13aG9sZS1hcmNoaXZlJzsgXAotIAlTSEFSRURGTEFHUz0iJChD RkxBR1MpICQoU0hBUkVEX0xERkxBR1MpIC1zaGFyZWQgLVdsLC1Cc3ltYm9saWMgLVdsLC1zb25h bWU9JCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCIKLSAKLS1ET19HTlVfQVBQPUxE RkxBR1M9IiQoQ0ZMQUdTKSAtV2wsLXJwYXRoLCQoTElCUlBBVEgpIgotK0RPX0dOVV9BUFA9TERG TEFHUz0iJChDRkxBR1MpIgotIAotICNUaGlzIGlzIHJhdGhlciBzcGVjaWFsLiAgSXQncyBhIHNw ZWNpYWwgdGFyZ2V0IHdpdGggd2hpY2ggb25lIGNhbiBsaW5rCi0gI2FwcGxpY2F0aW9ucyB3aXRo b3V0IGJvdGhlcmluZyB3aXRoIGFueSBmZWF0dXJlcyB0aGF0IGhhdmUgYW55dGhpbmcgdG8KCmRp ZmYgLS1naXQgYS9vcGVuc3NsLTAuOS44Yi10ZXN0LXVzZS1sb2NhbGhvc3QucGF0Y2ggYi9vcGVu c3NsLTAuOS44Yi10ZXN0LXVzZS1sb2NhbGhvc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDA4YWRmMWMuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0wLjkuOGItdGVzdC11c2Ut bG9jYWxob3N0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotZGlmZiAtdXAg b3BlbnNzbC0wLjkuOGIvc3NsL3NzbHRlc3QuYy51c2UtbG9jYWxob3N0IG9wZW5zc2wtMC45Ljhi L3NzbC9zc2x0ZXN0LmMKLS0tLSBvcGVuc3NsLTAuOS44Yi9zc2wvc3NsdGVzdC5jLnVzZS1sb2Nh bGhvc3QJMjAwNi0wMi0yNCAxODo1ODozNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTAu OS44Yi9zc2wvc3NsdGVzdC5jCTIwMDctMDgtMDMgMTQ6MDY6MTYuMDAwMDAwMDAwICswMjAwCi1A QCAtODM5LDE5ICs4MzksOCBAQCBiYWQ6Ci0gI2lmbmRlZiBPUEVOU1NMX05PX0tSQjUKLSAJaWYg KGNfc3NsICAmJiAgY19zc2wtPmtzc2xfY3R4KQotICAgICAgICAgICAgICAgICB7Ci0tICAgICAg ICAgICAgICAgIGNoYXIJbG9jYWxob3N0W01BWEhPU1ROQU1FTEVOKzJdOwotLQotLQkJaWYgKGdl dGhvc3RuYW1lKGxvY2FsaG9zdCwgc2l6ZW9mIGxvY2FsaG9zdC0xKSA9PSAwKQotLSAgICAgICAg ICAgICAgICAgICAgICAgIHsKLS0JCQlsb2NhbGhvc3Rbc2l6ZW9mIGxvY2FsaG9zdC0xXT0nXDAn OwotLQkJCWlmKHN0cmxlbihsb2NhbGhvc3QpID09IHNpemVvZiBsb2NhbGhvc3QtMSkKLS0JCQkJ ewotLQkJCQlCSU9fcHJpbnRmKGJpb19lcnIsImxvY2FsaG9zdCBuYW1lIHRvbyBsb25nXG4iKTsK LS0JCQkJZ290byBlbmQ7Ci0tCQkJCX0KLSAJCQlrc3NsX2N0eF9zZXRzdHJpbmcoY19zc2wtPmtz c2xfY3R4LCBLU1NMX1NFUlZFUiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv Y2FsaG9zdCk7Ci0tCQkJfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2Fs aG9zdCIpOwotIAkJfQotICNlbmRpZiAgICAvKiBPUEVOU1NMX05PX0tSQjUgICovCi0gCgpkaWZm IC0tZ2l0IGEvb3BlbnNzbC0wLjkuOGotdmVyc2lvbi1hZGQtZW5naW5lcy5wYXRjaCBiL29wZW5z c2wtMC45LjhqLXZlcnNpb24tYWRkLWVuZ2luZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGY1NDMyNmMuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0wLjkuOGotdmVyc2lvbi1h ZGQtZW5naW5lcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLWRpZmYgLXVw IG9wZW5zc2wtMC45LjhqL2FwcHMvdmVyc2lvbi5jLnZlcnNpb24tYWRkLWVuZ2luZXMgb3BlbnNz bC0wLjkuOGovYXBwcy92ZXJzaW9uLmMKLS0tLSBvcGVuc3NsLTAuOS44ai9hcHBzL3ZlcnNpb24u Yy52ZXJzaW9uLWFkZC1lbmdpbmVzCTIwMDgtMTAtMjAgMTQ6NTM6MzMuMDAwMDAwMDAwICswMjAw Ci0rKysgb3BlbnNzbC0wLjkuOGovYXBwcy92ZXJzaW9uLmMJMjAwOS0wMS0xMyAyMzoyMjowMy4w MDAwMDAwMDAgKzAxMDAKLUBAIC0xMzEsNiArMTMxLDcgQEAKLSAjaWZuZGVmIE9QRU5TU0xfTk9f QkYKLSAjIGluY2x1ZGUgPG9wZW5zc2wvYmxvd2Zpc2guaD4KLSAjZW5kaWYKLSsjaW5jbHVkZSA8 b3BlbnNzbC9lbmdpbmUuaD4KLSAKLSAjdW5kZWYgUFJPRwotICNkZWZpbmUgUFJPRwl2ZXJzaW9u X21haW4KLUBAIC0xNDAsNyArMTQxLDcgQEAgaW50IE1BSU4oaW50LCBjaGFyICoqKTsKLSBpbnQg TUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCXsKLSAJaW50IGkscmV0PTA7Ci0tCWludCBj ZmxhZ3M9MCx2ZXJzaW9uPTAsZGF0ZT0wLG9wdGlvbnM9MCxwbGF0Zm9ybT0wLGRpcj0wOwotKwlp bnQgY2ZsYWdzPTAsdmVyc2lvbj0wLGRhdGU9MCxvcHRpb25zPTAscGxhdGZvcm09MCxkaXI9MCxl bmdpbmVzPTA7Ci0gCi0gCWFwcHNfc3RhcnR1cCgpOwotIAotQEAgLTE2NCw3ICsxNjUsNyBAQCBp bnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQllbHNlIGlmIChzdHJjbXAoYXJndltp XSwiLWQiKSA9PSAwKQotIAkJCWRpcj0xOwotIAkJZWxzZSBpZiAoc3RyY21wKGFyZ3ZbaV0sIi1h IikgPT0gMCkKLS0JCQlkYXRlPXZlcnNpb249Y2ZsYWdzPW9wdGlvbnM9cGxhdGZvcm09ZGlyPTE7 Ci0rCQkJZGF0ZT12ZXJzaW9uPWNmbGFncz1vcHRpb25zPXBsYXRmb3JtPWRpcj1lbmdpbmVzPTE7 Ci0gCQllbHNlCi0gCQkJewotIAkJCUJJT19wcmludGYoYmlvX2VyciwidXNhZ2U6dmVyc2lvbiAt W2F2Ym9mcGRdXG4iKTsKLUBAIC0yMTEsNiArMjEyLDE4IEBAIGludCBNQUlOKGludCBhcmdjLCBj aGFyICoqYXJndikKLSAJCX0KLSAJaWYgKGNmbGFncykgIHByaW50ZigiJXNcbiIsU1NMZWF5X3Zl cnNpb24oU1NMRUFZX0NGTEFHUykpOwotIAlpZiAoZGlyKSAgcHJpbnRmKCIlc1xuIixTU0xlYXlf dmVyc2lvbihTU0xFQVlfRElSKSk7Ci0rCWlmIChlbmdpbmVzKQotKwkJewotKwkJRU5HSU5FICpl OwotKwkJcHJpbnRmKCJlbmdpbmVzOiAgIik7Ci0rCQllID0gRU5HSU5FX2dldF9maXJzdCgpOwot KwkJd2hpbGUgKGUpCi0rCQkJewotKwkJCXByaW50ZigiJXMgIiwgRU5HSU5FX2dldF9pZChlKSk7 Ci0rCQkJZSA9IEVOR0lORV9nZXRfbmV4dChlKTsKLSsJCQl9Ci0rCQlwcmludGYoIlxuIik7Ci0r CQl9Ci0gZW5kOgotIAlhcHBzX3NodXRkb3duKCk7Ci0gCU9QRU5TU0xfRVhJVChyZXQpOwoKZGlm ZiAtLWdpdCBhL29wZW5zc2wtMS4wLjAtYmV0YTUtZW5naW5lc2Rpci5wYXRjaCBiL29wZW5zc2wt MS4wLjAtYmV0YTUtZW5naW5lc2Rpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggZDk0MmQ2ZS4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4wLWJldGE1LWVuZ2luZXNkaXIu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEu MC4wLWJldGE1L0NvbmZpZ3VyZS5lbmdpbmVzZGlyIG9wZW5zc2wtMS4wLjAtYmV0YTUvQ29uZmln dXJlCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNS9Db25maWd1cmUuZW5naW5lc2RpcgkyMDEwLTAx LTIwIDE4OjA3OjA1LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTUvQ29u ZmlndXJlCTIwMTAtMDEtMjAgMTg6MTA6NDguMDAwMDAwMDAwICswMTAwCi1AQCAtNjIyLDYgKzYy Miw3IEBAIG15ICRpZHhfbXVsdGlsaWIgPSAkaWR4Kys7Ci0gbXkgJHByZWZpeD0iIjsKLSBteSAk bGliZGlyPSIiOwotIG15ICRvcGVuc3NsZGlyPSIiOwotK215ICRlbmdpbmVzZGlyPSIiOwotIG15 ICRleGVfZXh0PSIiOwotIG15ICRpbnN0YWxsX3ByZWZpeD0gIiRFTlZ7J0lOU1RBTExfUFJFRklY J30iOwotIG15ICRjcm9zc19jb21waWxlX3ByZWZpeD0iIjsKLUBAIC04MzMsNiArODM0LDEwIEBA IFBST0NFU1NfQVJHUzoKLSAJCQkJewotIAkJCQkkb3BlbnNzbGRpcj0kMTsKLSAJCQkJfQotKwkJ CWVsc2lmICgvXi0tZW5naW5lc2Rpcj0oLiopJC8pCi0rCQkJCXsKLSsJCQkJJGVuZ2luZXNkaXI9 JDE7Ci0rCQkJCX0KLSAJCQllbHNpZiAoL14tLWluc3RhbGwucHJlZml4PSguKikkLykKLSAJCQkJ ewotIAkJCQkkaW5zdGFsbF9wcmVmaXg9JDE7Ci1AQCAtMTA1Myw3ICsxMDU4LDcgQEAgY2hvcCAk cHJlZml4IGlmICRwcmVmaXggPX4gLy5cLyQvOwotIAotICRvcGVuc3NsZGlyPSRwcmVmaXggLiAi L3NzbCIgaWYgJG9wZW5zc2xkaXIgZXEgIiI7Ci0gJG9wZW5zc2xkaXI9JHByZWZpeCAuICIvIiAu ICRvcGVuc3NsZGlyIGlmICRvcGVuc3NsZGlyICF+IC8oXlwvfF5bYS16QS1aXTpbXFxcL10pLzsK LS0KLSskZW5naW5lc2Rpcj0iJHByZWZpeC9saWIvZW5naW5lcyIgaWYgJGVuZ2luZXNkaXIgZXEg IiI7Ci0gCi0gcHJpbnQgIklzTUsxTUY9JElzTUsxTUZcbiI7Ci0gCi1AQCAtMTY3Myw3ICsxNjc4 LDcgQEAgd2hpbGUgKDxJTj4pCi0gCQl9Ci0gCWVsc2lmCSgvXiNkZWZpbmVccytFTkdJTkVTRElS LykKLSAJCXsKLS0JCW15ICRmb28gPSAiJHByZWZpeC8kbGliZGlyL2VuZ2luZXMiOwotKwkJbXkg JGZvbyA9ICIkZW5naW5lc2RpciI7Ci0gCQkkZm9vID1+IHMvXFwvXFxcXC9nOwotIAkJcHJpbnQg T1VUICIjZGVmaW5lIEVOR0lORVNESVIgXCIkZm9vXCJcbiI7Ci0gCQl9Ci1kaWZmIC11cCBvcGVu c3NsLTEuMC4wLWJldGE1L2VuZ2luZXMvTWFrZWZpbGUuZW5naW5lc2RpciBvcGVuc3NsLTEuMC4w LWJldGE1L2VuZ2luZXMvTWFrZWZpbGUKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGE1L2VuZ2luZXMv TWFrZWZpbGUuZW5naW5lc2RpcgkyMDEwLTAxLTE2IDIxOjA2OjA5LjAwMDAwMDAwMCArMDEwMAot KysrIG9wZW5zc2wtMS4wLjAtYmV0YTUvZW5naW5lcy9NYWtlZmlsZQkyMDEwLTAxLTIwIDE4OjA3 OjA1LjAwMDAwMDAwMCArMDEwMAotQEAgLTEyNCw3ICsxMjQsNyBAQCBpbnN0YWxsOgotIAkJCQlz Zng9Ii5zbyI7IFwKLSAJCQkJY3AgY3lnJCRsLmRsbCAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFM TFRPUCkvJChMSUJESVIpL2VuZ2luZXMvJCRwZngkJGwkJHNmeC5uZXc7IFwKLSAJCQkgIGZpOyBc Ci0tCQkJICBjaG1vZCA1NTUgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApLyQoTElCRElS KS9lbmdpbmVzLyQkcGZ4JCRsJCRzZngubmV3OyBcCi0rCQkJICBjaG1vZCA3NTUgJChJTlNUQUxM X1BSRUZJWCkkKElOU1RBTExUT1ApLyQoTElCRElSKS9lbmdpbmVzLyQkcGZ4JCRsJCRzZngubmV3 OyBcCi0gCQkJICBtdiAtZiAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvJChMSUJESVIp L2VuZ2luZXMvJCRwZngkJGwkJHNmeC5uZXcgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1Ap LyQoTElCRElSKS9lbmdpbmVzLyQkcGZ4JCRsJCRzZnggKTsgXAotIAkJZG9uZTsgXAotIAlmaQoK ZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjAtYmV0YTUtcmVhZG1lLXdhcm5pbmcucGF0Y2ggYi9v cGVuc3NsLTEuMC4wLWJldGE1LXJlYWRtZS13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwZDg5NzIwLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjAtYmV0YTUt cmVhZG1lLXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1kaWZm IC11cCBvcGVuc3NsLTEuMC4wLWJldGE1L1JFQURNRS53YXJuaW5nIG9wZW5zc2wtMS4wLjAtYmV0 YTUvUkVBRE1FCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNS9SRUFETUUud2FybmluZwkyMDEwLTAx LTIwIDE2OjAwOjQ3LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTUvUkVB RE1FCTIwMTAtMDEtMjEgMDk6MDY6MTEuMDAwMDAwMDAwICswMTAwCi1AQCAtNSw2ICs1LDM1IEBA Ci0gIENvcHlyaWdodCAoYykgMTk5NS0xOTk4IEVyaWMgQS4gWW91bmcsIFRpbSBKLiBIdWRzb24K LSAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAKLSsgV0FSTklORwotKyAtLS0tLS0tCi0rCi0rIFRo aXMgdmVyc2lvbiBvZiBPcGVuU1NMIGlzIGJ1aWx0IGluIGEgd2F5IHRoYXQgc3VwcG9ydHMgb3Bl cmF0aW9uIGluCi0rIHRoZSBzbyBjYWxsZWQgRklQUyBtb2RlLiBOb3RlIHRob3VnaCB0aGF0IHRo ZSBsaWJyYXJ5IGFzIHdlIGJ1aWxkIGl0Ci0rIGlzIG5vdCBGSVBTIHZhbGlkYXRlZCBhbmQgdGhl IEZJUFMgbW9kZSBpcyBwcmVzZW50IGZvciB0ZXN0aW5nIHB1cnBvc2VzCi0rIG9ubHkuCi0rIAot KyBUaGlzIHZlcnNpb24gYWxzbyBjb250YWlucyBhIGZldyBkaWZmZXJlbmNlcyBmcm9tIHRoZSB1 cHN0cmVhbSBjb2RlCi0rIHNvbWUgb2Ygd2hpY2ggYXJlOgotKyAgICogVGhlcmUgYXJlIGFkZGVk IGNoYW5nZXMgZm9yd2FyZCBwb3J0ZWQgZnJvbSB0aGUgdXBzdHJlYW0gT3BlblNTTAotKyAgICAg MC45LjggRklQUyBicmFuY2ggaG93ZXZlciB0aGUgRklQUyBpbnRlZ3JpdHkgdmVyaWZpY2F0aW9u IGNoZWNrCi0rICAgICBpcyBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseSBmcm9tIHRoZSB1cHN0cmVh bSBGSVBTIHZhbGlkYXRlZCBPcGVuU1NMCi0rICAgICBtb2R1bGUuIEl0IHZlcmlmaWVzIEhNQUMt U0hBMjU2IGNoZWNrc3VtIG9mIHRoZSB3aG9sZSBzaGFyZWQKLSsgICAgIGxpYnJhcmllcy4gRm9y IHRoaXMgcmVhc29uIHRoZSBjaGFuZ2VzIGFyZSBwb3J0ZWQgdG8gZmlsZXMgaW4gdGhlCi0rICAg ICBjcnlwdG8gZGlyZWN0b3J5IGFuZCBub3QgaW4gYSBzZXBhcmF0ZSBmaXBzIHN1YmRpcmVjdG9y eS4gQWxzbwotKyAgICAgbm90ZSB0aGF0IHRoZSBGSVBTIGludGVncml0eSB2ZXJpZmljYXRpb24g Y2hlY2sgcmVxdWlyZXMgdW5tb2RpZmllZAotKyAgICAgbGliY3J5cHRvIGFuZCBsaWJzc2wgc2hh cmVkIGxpYnJhcnkgZmlsZXMgd2hpY2ggbWVhbnMgdGhhdCBpdCB3aWxsCi0rICAgICBmYWlsIGlm IHRoZXNlIGZpbGVzIGFyZSBtb2RpZmllZCBmb3IgZXhhbXBsZSBieSBwcmVsaW5rLgotKyAgICog VGhlIG1vZHVsZSByZXNwZWN0cyB0aGUga2VybmVsIEZJUFMgZmxhZyAvcHJvYy9zeXMvY3J5cHRv L2ZpcHMgYW5kCi0rICAgICB0cmllcyB0byBpbml0aWFsaXplIHRoZSBGSVBTIG1vZGUgaWYgaXQg aXMgc2V0IHRvIDEgYWJvcnRpbmcgaWYgdGhlCi0rICAgICBGSVBTIG1vZGUgY291bGQgbm90IGJl IGluaXRpYWxpemVkLiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGZvcmNlIHRoZQotKyAgICAgT3Bl blNTTCBsaWJyYXJ5IHRvIEZJUFMgbW9kZSBlc3BlY2lhbGx5IGZvciBkZWJ1Z2dpbmcgcHVycG9z ZXMgYnkKLSsgICAgIHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE9QRU5TU0xfRk9S Q0VfRklQU19NT0RFLgotKyAgICogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE9QRU5TU0xf Tk9fREVGQVVMVF9aTElCIGlzIHNldCB0aGUgbW9kdWxlCi0rICAgICB3aWxsIG5vdCBhdXRvbWF0 aWNhbGx5IGxvYWQgdGhlIGJ1aWx0IGluIGNvbXByZXNzaW9uIG1ldGhvZCBaTElCCi0rICAgICB3 aGVuIGluaXRpYWxpemVkLiBBcHBsaWNhdGlvbnMgY2FuIHN0aWxsIGV4cGxpY2l0ZWx5IGFzayBm b3IgWkxJQgotKyAgICAgY29tcHJlc3Npb24gbWV0aG9kLgotKwotICBERVNDUklQVElPTgotICAt LS0tLS0tLS0tLQotIAoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjBjLXJzYS14OTMxLnBhdGNo IGIvb3BlbnNzbC0xLjAuMGMtcnNhLXg5MzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGE2MGJiY2IuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMGMtcnNhLXg5MzEucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4w Yy9hcHBzL2dlbnJzYS5jLng5MzEgb3BlbnNzbC0xLjAuMGMvYXBwcy9nZW5yc2EuYwotLS0tIG9w ZW5zc2wtMS4wLjBjL2FwcHMvZ2VucnNhLmMueDkzMQkyMDEwLTAzLTAxIDE1OjIyOjAyLjAwMDAw MDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjBjL2FwcHMvZ2VucnNhLmMJMjAxMS0wMi0wMSAx ODozMjowNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC05NSw2ICs5NSw3IEBAIGludCBNQUlOKGludCBh cmdjLCBjaGFyICoqYXJndikKLSAJaW50IHJldD0xOwotIAlpbnQgaSxudW09REVGQklUUzsKLSAJ bG9uZyBsOwotKwlpbnQgdXNlX3g5MzEgPSAwOwotIAljb25zdCBFVlBfQ0lQSEVSICplbmM9TlVM TDsKLSAJdW5zaWduZWQgbG9uZyBmND1SU0FfRjQ7Ci0gCWNoYXIgKm91dGZpbGU9TlVMTDsKLUBA IC0xMzgsNiArMTM5LDggQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCWY0 PTM7Ci0gCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsIi1GNCIpID09IDAgfHwgc3RyY21wKCphcmd2 LCItZjQiKSA9PSAwKQotIAkJCWY0PVJTQV9GNDsKLSsJCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwi LXg5MzEiKSA9PSAwKQotKwkJCXVzZV94OTMxID0gMTsKLSAjaWZuZGVmIE9QRU5TU0xfTk9fRU5H SU5FCi0gCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsIi1lbmdpbmUiKSA9PSAwKQotIAkJCXsKLUBA IC0yNzMsNyArMjc2LDE0IEBAIGJhZDoKLSAJaWYgKCFyc2EpCi0gCQlnb3RvIGVycjsKLSAKLS0J aWYoIUJOX3NldF93b3JkKGJuLCBmNCkgfHwgIVJTQV9nZW5lcmF0ZV9rZXlfZXgocnNhLCBudW0s IGJuLCAmY2IpKQotKwlpZiAodXNlX3g5MzEpCi0rCQl7Ci0rCQlpZiAoIUJOX3NldF93b3JkKGJu LCBmNCkpCi0rCQkJZ290byBlcnI7Ci0rCQlpZiAoIVJTQV9YOTMxX2dlbmVyYXRlX2tleV9leChy c2EsIG51bSwgYm4sICZjYikpCi0rCQkJZ290byBlcnI7Ci0rCQl9Ci0rCWVsc2UgaWYoIUJOX3Nl dF93b3JkKGJuLCBmNCkgfHwgIVJTQV9nZW5lcmF0ZV9rZXlfZXgocnNhLCBudW0sIGJuLCAmY2Ip KQotIAkJZ290byBlcnI7Ci0gCQkKLSAJYXBwX1JBTkRfd3JpdGVfZmlsZShOVUxMLCBiaW9fZXJy KTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4wZC1hcHBzLWRnc3QucGF0Y2ggYi9vcGVuc3Ns LTEuMC4wZC1hcHBzLWRnc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRh MjA0ODEuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMGQtYXBwcy1kZ3N0LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjBkL2FwcHMv Y2EuYy5kZ3N0IG9wZW5zc2wtMS4wLjBkL2FwcHMvY2EuYwotLS0tIG9wZW5zc2wtMS4wLjBkL2Fw cHMvY2EuYy5kZ3N0CTIwMDktMTItMDIgMTU6NDE6MjQuMDAwMDAwMDAwICswMTAwCi0rKysgb3Bl bnNzbC0xLjAuMGQvYXBwcy9jYS5jCTIwMTEtMDQtMDUgMjE6MDk6NDIuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTU3LDcgKzE1Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjYV91c2FnZVtdPXsKLSAi IC1zdGFydGRhdGUgWVlNTURESEhNTVNTWiAgLSBjZXJ0aWZpY2F0ZSB2YWxpZGl0eSBub3RCZWZv cmVcbiIsCi0gIiAtZW5kZGF0ZSBZWU1NRERISE1NU1NaICAgIC0gY2VydGlmaWNhdGUgdmFsaWRp dHkgbm90QWZ0ZXIgKG92ZXJyaWRlcyAtZGF5cylcbiIsCi0gIiAtZGF5cyBhcmcgICAgICAgLSBu dW1iZXIgb2YgZGF5cyB0byBjZXJ0aWZ5IHRoZSBjZXJ0aWZpY2F0ZSBmb3JcbiIsCi0tIiAtbWQg YXJnICAgICAgICAgLSBtZCB0byB1c2UsIG9uZSBvZiBtZDIsIG1kNSwgc2hhIG9yIHNoYTFcbiIs Ci0rIiAtbWQgYXJnICAgICAgICAgLSBtZCB0byB1c2UsIHNlZSBvcGVuc3NsIGRnc3QgLWggZm9y IGxpc3RcbiIsCi0gIiAtcG9saWN5IGFyZyAgICAgLSBUaGUgQ0EgJ3BvbGljeScgdG8gc3VwcG9y dFxuIiwKLSAiIC1rZXlmaWxlIGFyZyAgICAtIHByaXZhdGUga2V5IGZpbGVcbiIsCi0gIiAta2V5 Zm9ybSBhcmcgICAgLSBwcml2YXRlIGtleSBmaWxlIGZvcm1hdCAoUEVNIG9yIEVOR0lORSlcbiIs Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4wZC9hcHBzL2VuYy5jLmRnc3Qgb3BlbnNzbC0xLjAuMGQv YXBwcy9lbmMuYwotLS0tIG9wZW5zc2wtMS4wLjBkL2FwcHMvZW5jLmMuZGdzdAkyMDEwLTA2LTE1 IDE5OjI1OjAyLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjBkL2FwcHMvZW5jLmMJ MjAxMS0wNC0wNSAyMToxMTo1NC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMDIsNyArMzAyLDcgQEAg YmFkOgotIAkJCUJJT19wcmludGYoYmlvX2VyciwiJS0xNHMgcGFzc3BocmFzZSBpcyB0aGUgbmV4 dCBhcmd1bWVudFxuIiwiLWsiKTsKLSAJCQlCSU9fcHJpbnRmKGJpb19lcnIsIiUtMTRzIHBhc3Nw aHJhc2UgaXMgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGZpbGUgYXJndW1lbnRcbiIsIi1rZmlsZSIp OwotIAkJCUJJT19wcmludGYoYmlvX2VyciwiJS0xNHMgdGhlIG5leHQgYXJndW1lbnQgaXMgdGhl IG1kIHRvIHVzZSB0byBjcmVhdGUgYSBrZXlcbiIsIi1tZCIpOwotLQkJCUJJT19wcmludGYoYmlv X2VyciwiJS0xNHMgICBmcm9tIGEgcGFzc3BocmFzZS4gIE9uZSBvZiBtZDIsIG1kNSwgc2hhIG9y IHNoYTFcbiIsIiIpOwotKwkJCUJJT19wcmludGYoYmlvX2VyciwiJS0xNHMgICBmcm9tIGEgcGFz c3BocmFzZS4gU2VlIG9wZW5zc2wgZGdzdCAtaCBmb3IgbGlzdC5cbiIsIiIpOwotIAkJCUJJT19w cmludGYoYmlvX2VyciwiJS0xNHMgc2FsdCBpbiBoZXggaXMgdGhlIG5leHQgYXJndW1lbnRcbiIs Ii1TIik7Ci0gCQkJQklPX3ByaW50ZihiaW9fZXJyLCIlLTE0cyBrZXkvaXYgaW4gaGV4IGlzIHRo ZSBuZXh0IGFyZ3VtZW50XG4iLCItSy8taXYiKTsKLSAJCQlCSU9fcHJpbnRmKGJpb19lcnIsIiUt MTRzIHByaW50IHRoZSBpdi9rZXkgKHRoZW4gZXhpdCBpZiAtUClcbiIsIi1bcFBdIik7Ci1kaWZm IC11cCBvcGVuc3NsLTEuMC4wZC9hcHBzL3JlcS5jLmRnc3Qgb3BlbnNzbC0xLjAuMGQvYXBwcy9y ZXEuYwotLS0tIG9wZW5zc2wtMS4wLjBkL2FwcHMvcmVxLmMuZGdzdAkyMDEwLTAzLTEwIDE0OjQ4 OjIxLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjBkL2FwcHMvcmVxLmMJMjAxMS0w NC0wNSAyMToxMjozMy4wMDAwMDAwMDAgKzAyMDAKLUBAIC00MjEsNyArNDIxLDcgQEAgYmFkOgot ICNpZm5kZWYgT1BFTlNTTF9OT19FQ0RTQQotIAkJQklPX3ByaW50ZihiaW9fZXJyLCIgLW5ld2tl eSBlYzpmaWxlIGdlbmVyYXRlIGEgbmV3IEVDIGtleSwgcGFyYW1ldGVycyB0YWtlbiBmcm9tIENB IGluICdmaWxlJ1xuIik7Ci0gI2VuZGlmCi0tCQlCSU9fcHJpbnRmKGJpb19lcnIsIiAtW2RpZ2Vz dF0gICAgICBEaWdlc3QgdG8gc2lnbiB3aXRoIChtZDUsIHNoYTEsIG1kMiwgbWRjMiwgbWQ0KVxu Iik7Ci0rCQlCSU9fcHJpbnRmKGJpb19lcnIsIiAtW2RpZ2VzdF0gICAgICBEaWdlc3QgdG8gc2ln biB3aXRoIChzZWUgb3BlbnNzbCBkZ3N0IC1oIGZvciBsaXN0KVxuIik7Ci0gCQlCSU9fcHJpbnRm KGJpb19lcnIsIiAtY29uZmlnIGZpbGUgICByZXF1ZXN0IHRlbXBsYXRlIGZpbGUuXG4iKTsKLSAJ CUJJT19wcmludGYoYmlvX2VyciwiIC1zdWJqIGFyZyAgICAgIHNldCBvciBtb2RpZnkgcmVxdWVz dCBzdWJqZWN0XG4iKTsKLSAJCUJJT19wcmludGYoYmlvX2VyciwiIC1tdWx0aXZhbHVlLXJkbiBl bmFibGUgc3VwcG9ydCBmb3IgbXVsdGl2YWx1ZWQgUkROc1xuIik7Ci1kaWZmIC11cCBvcGVuc3Ns LTEuMC4wZC9hcHBzL3RzLmMuZGdzdCBvcGVuc3NsLTEuMC4wZC9hcHBzL3RzLmMKLS0tLSBvcGVu c3NsLTEuMC4wZC9hcHBzL3RzLmMuZGdzdAkyMDA5LTEwLTE4IDE2OjQyOjI2LjAwMDAwMDAwMCAr MDIwMAotKysrIG9wZW5zc2wtMS4wLjBkL2FwcHMvdHMuYwkyMDExLTA0LTA1IDIxOjE2OjA3LjAw MDAwMDAwMCArMDIwMAotQEAgLTM2OCw3ICszNjgsNyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCi0gCUJJT19wcmludGYoYmlvX2VyciwgInVzYWdlOlxuIgotIAkJICAgInRzIC1x dWVyeSBbLXJhbmQgZmlsZSVjZmlsZSVjLi4uXSBbLWNvbmZpZyBjb25maWdmaWxlXSAiCi0gCQkg ICAiWy1kYXRhIGZpbGVfdG9faGFzaF0gWy1kaWdlc3QgZGlnZXN0X2J5dGVzXSIKLS0JCSAgICJb LW1kMnwtbWQ0fC1tZDV8LXNoYXwtc2hhMXwtbWRjMnwtcmlwZW1kMTYwXSAiCi0rCQkgICAiWy08 aGFzaGFsZz5dICIKLSAJCSAgICJbLXBvbGljeSBvYmplY3RfaWRdIFstbm9fbm9uY2VdIFstY2Vy dF0gIgotIAkJICAgIlstaW4gcmVxdWVzdC50c3FdIFstb3V0IHJlcXVlc3QudHNxXSBbLXRleHRd XG4iLAotIAkJICAgTElTVF9TRVBBUkFUT1JfQ0hBUiwgTElTVF9TRVBBUkFUT1JfQ0hBUik7Ci1k aWZmIC11cCBvcGVuc3NsLTEuMC4wZC9hcHBzL3g1MDkuYy5kZ3N0IG9wZW5zc2wtMS4wLjBkL2Fw cHMveDUwOS5jCi0tLS0gb3BlbnNzbC0xLjAuMGQvYXBwcy94NTA5LmMuZGdzdAkyMDExLTA0LTA1 IDIxOjEzOjQyLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjBkL2FwcHMveDUwOS5j CTIwMTEtMDQtMDUgMjE6MTM6MTcuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQxLDcgKzE0MSw3IEBA IHN0YXRpYyBjb25zdCBjaGFyICp4NTA5X3VzYWdlW109ewotICIgLXNldF9zZXJpYWwgICAgIC0g c2VyaWFsIG51bWJlciB0byB1c2VcbiIsCi0gIiAtdGV4dCAgICAgICAgICAgLSBwcmludCB0aGUg Y2VydGlmaWNhdGUgaW4gdGV4dCBmb3JtXG4iLAotICIgLUMgICAgICAgICAgICAgIC0gcHJpbnQg b3V0IEMgY29kZSBmb3Jtc1xuIiwKLS0iIC1tZDIvLW1kNS8tc2hhMS8tbWRjMiAtIGRpZ2VzdCB0 byB1c2VcbiIsCi0rIiAtPGRnc3Q+ICAgICAgICAgLSBkaWdlc3QgdG8gdXNlLCBzZWUgb3BlbnNz bCBkZ3N0IC1oIG91dHB1dCBmb3IgbGlzdFxuIiwKLSAiIC1leHRmaWxlICAgICAgICAtIGNvbmZp Z3VyYXRpb24gZmlsZSB3aXRoIFg1MDlWMyBleHRlbnNpb25zIHRvIGFkZFxuIiwKLSAiIC1leHRl bnNpb25zICAgICAtIHNlY3Rpb24gZnJvbSBjb25maWcgZmlsZSB3aXRoIFg1MDlWMyBleHRlbnNp b25zIHRvIGFkZFxuIiwKLSAiIC1jbHJleHQgICAgICAgICAtIGRlbGV0ZSBleHRlbnNpb25zIGJl Zm9yZSBzaWduaW5nIGFuZCBpbnB1dCBjZXJ0aWZpY2F0ZVxuIiwKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjBkL2RvYy9hcHBzL2NhLnBvZC5kZ3N0IG9wZW5zc2wtMS4wLjBkL2RvYy9hcHBzL2NhLnBv ZAotLS0tIG9wZW5zc2wtMS4wLjBkL2RvYy9hcHBzL2NhLnBvZC5kZ3N0CTIwMDktMDQtMTAgMTM6 MjU6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMGQvZG9jL2FwcHMvY2EucG9k CTIwMTEtMDQtMDUgMjE6MTY6MzkuMDAwMDAwMDAwICswMjAwCi1AQCAtMTYwLDcgKzE2MCw4IEBA IHRoZSBudW1iZXIgb2YgZGF5cyB0byBjZXJ0aWZ5IHRoZSBjZXJ0aWYKLSA9aXRlbSBCPC1tZCBh bGc+Ci0gCi0gdGhlIG1lc3NhZ2UgZGlnZXN0IHRvIHVzZS4gUG9zc2libGUgdmFsdWVzIGluY2x1 ZGUgbWQ1LCBzaGExIGFuZCBtZGMyLgotLVRoaXMgb3B0aW9uIGFsc28gYXBwbGllcyB0byBDUkxz LgotK0ZvciBmdWxsIGxpc3Qgb2YgZGlnZXN0cyBzZWUgb3BlbnNzbCBkZ3N0IC1oIG91dHB1dC4g VGhpcyBvcHRpb24gYWxzbwotK2FwcGxpZXMgdG8gQ1JMcy4KLSAKLSA9aXRlbSBCPC1wb2xpY3kg YXJnPgotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGQvZG9jL2FwcHMvb2NzcC5wb2QuZGdzdCBv cGVuc3NsLTEuMC4wZC9kb2MvYXBwcy9vY3NwLnBvZAotLS0tIG9wZW5zc2wtMS4wLjBkL2RvYy9h cHBzL29jc3AucG9kLmRnc3QJMjAwOC0wMi0yNSAxOToxMTo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsr KyBvcGVuc3NsLTEuMC4wZC9kb2MvYXBwcy9vY3NwLnBvZAkyMDExLTA0LTA1IDIxOjE4OjE3LjAw MDAwMDAwMCArMDIwMAotQEAgLTIxMCw3ICsyMTAsOCBAQCBjaGVjayBpcyBub3QgcGVyZm9ybWVk LgotID1pdGVtIEI8LW1kNXwtc2hhMXwtc2hhMjU2fC1yaXBlbW9kMTYwfC4uLj4KLSAKLSB0aGlz IG9wdGlvbiBzZXRzIGRpZ2VzdCBhbGdvcml0aG0gdG8gdXNlIGZvciBjZXJ0aWZpY2F0ZSBpZGVu dGlmaWNhdGlvbgotLWluIHRoZSBPQ1NQIHJlcXVlc3QuIEJ5IGRlZmF1bHQgU0hBLTEgaXMgdXNl ZC4gCi0raW4gdGhlIE9DU1AgcmVxdWVzdC4gQnkgZGVmYXVsdCBTSEEtMSBpcyB1c2VkLiBTZWUg b3BlbnNzbCBkZ3N0IC1oIG91dHB1dCBmb3IKLSt0aGUgbGlzdCBvZiBhdmFpbGFibGUgYWxnb3Jp dGhtcy4KLSAKLSA9YmFjawotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGQvZG9jL2FwcHMvcmVx LnBvZC5kZ3N0IG9wZW5zc2wtMS4wLjBkL2RvYy9hcHBzL3JlcS5wb2QKLS0tLSBvcGVuc3NsLTEu MC4wZC9kb2MvYXBwcy9yZXEucG9kLmRnc3QJMjAwOS0wNC0xMCAxODo0MjoyOC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4wZC9kb2MvYXBwcy9yZXEucG9kCTIwMTEtMDQtMDUgMjE6 MjA6NDcuMDAwMDAwMDAwICswMjAwCi1AQCAtMjAxLDcgKzIwMSw4IEBAIHdpbGwgbm90IGJlIGVu Y3J5cHRlZC4KLSAKLSB0aGlzIHNwZWNpZmllcyB0aGUgbWVzc2FnZSBkaWdlc3QgdG8gc2lnbiB0 aGUgcmVxdWVzdCB3aXRoIChzdWNoIGFzCi0gQjwtbWQ1PiwgQjwtc2hhMT4pLiBUaGlzIG92ZXJy aWRlcyB0aGUgZGlnZXN0IGFsZ29yaXRobSBzcGVjaWZpZWQgaW4KLS10aGUgY29uZmlndXJhdGlv biBmaWxlLgotK3RoZSBjb25maWd1cmF0aW9uIGZpbGUuIEZvciBmdWxsIGxpc3Qgb2YgcG9zc2li bGUgZGlnZXN0cyBzZWUgb3BlbnNzbAotK2Rnc3QgLWggb3V0cHV0LgotIAotIFNvbWUgcHVibGlj IGtleSBhbGdvcml0aG1zIG1heSBvdmVycmlkZSB0aGlzIGNob2ljZS4gRm9yIGluc3RhbmNlLCBE U0EKLSBzaWduYXR1cmVzIGFsd2F5cyB1c2UgU0hBMSwgR09TVCBSIDM0LjEwIHNpZ25hdHVyZXMg YWx3YXlzIHVzZQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGQvZG9jL2FwcHMveDUwOS5wb2QuZGdz dCBvcGVuc3NsLTEuMC4wZC9kb2MvYXBwcy94NTA5LnBvZAotLS0tIG9wZW5zc2wtMS4wLjBkL2Rv Yy9hcHBzL3g1MDkucG9kLmRnc3QJMjAxMC0wMS0xMiAxODoyNzoxMS4wMDAwMDAwMDAgKzAxMDAK LSsrKyBvcGVuc3NsLTEuMC4wZC9kb2MvYXBwcy94NTA5LnBvZAkyMDExLTA0LTA1IDIxOjE5OjU2 LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwMSw2ICsxMDEsNyBAQCB0aGUgZGlnZXN0IHRvIHVzZS4g VGhpcyBhZmZlY3RzIGFueSBzaWduCi0gZGlnZXN0LCBzdWNoIGFzIHRoZSBCPC1maW5nZXJwcmlu dD4sIEI8LXNpZ25rZXk+IGFuZCBCPC1DQT4gb3B0aW9ucy4gSWYgbm90Ci0gc3BlY2lmaWVkIHRo ZW4gU0hBMSBpcyB1c2VkLiBJZiB0aGUga2V5IGJlaW5nIHVzZWQgdG8gc2lnbiB3aXRoIGlzIGEg RFNBIGtleQotIHRoZW4gdGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdDogU0hBMSBpcyBhbHdheXMg dXNlZCB3aXRoIERTQSBrZXlzLgotK0ZvciBmdWxsIGxpc3Qgb2YgZGlnZXN0cyBzZWUgb3BlbnNz bCBkZ3N0IC1oIG91dHB1dC4KLSAKLSA9aXRlbSBCPC1lbmdpbmUgaWQ+Ci0gCgpkaWZmIC0tZ2l0 IGEvb3BlbnNzbC0xLjAuMGQteG1wcC1zdGFydHRscy5wYXRjaCBiL29wZW5zc2wtMS4wLjBkLXht cHAtc3RhcnR0bHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOTk5Y2Mu LjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMGQteG1wcC1zdGFydHRscy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDEyICswLDAgQEAKLWRpZmYgLXJ1IG9wZW5zc2wtMS4wLjBkLm9sZC9hcHBz L3NfY2xpZW50LmMgb3BlbnNzbC0xLjAuMGQvYXBwcy9zX2NsaWVudC5jCi0tLS0gb3BlbnNzbC0x LjAuMGQub2xkL2FwcHMvc19jbGllbnQuYwkyMDExLTA3LTE3IDIxOjA1OjE5LjkzNDE4MTE2OSAr MDIwMAotKysrIG9wZW5zc2wtMS4wLjBkL2FwcHMvc19jbGllbnQuYwkyMDExLTA3LTE3IDIxOjEx OjQyLjc0NzgyNDk5MCArMDIwMAotQEAgLTExODYsNyArMTE4Niw3IEBACi0gCQkgICAgInhtbG5z PSdqYWJiZXI6Y2xpZW50JyB0bz0nJXMnIHZlcnNpb249JzEuMCc+IiwgaG9zdCk7Ci0gCQlzZWVu ID0gQklPX3JlYWQoc2JpbyxtYnVmLEJVRlNJWlopOwotIAkJbWJ1ZltzZWVuXSA9IDA7Ci0tCQl3 aGlsZSAoIXN0cnN0cihtYnVmLCAiPHN0YXJ0dGxzIHhtbG5zPSd1cm46aWV0ZjpwYXJhbXM6eG1s Om5zOnhtcHAtdGxzJyIpKQotKwkJd2hpbGUgKCFzdHJjYXNlc3RyKG1idWYsICI8c3RhcnR0bHMg eG1sbnM9J3VybjppZXRmOnBhcmFtczp4bWw6bnM6eG1wcC10bHMnIikgJiYgIXN0cmNhc2VzdHIo bWJ1ZiwgIjxzdGFydHRscyB4bWxucz1cInVybjppZXRmOnBhcmFtczp4bWw6bnM6eG1wcC10bHNc IiIpKQotIAkJCXsKLSAJCQlpZiAoc3Ryc3RyKG1idWYsICIvc3RyZWFtOmZlYXR1cmVzPiIpKQot IAkJCQlnb3RvIHNodXQ7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMGUtY2hpbC1maXhlcy5w YXRjaCBiL29wZW5zc2wtMS4wLjBlLWNoaWwtZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDU4YTAzNWYuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMGUtY2hpbC1m aXhlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5z c2wtMS4wLjBlL2VuZ2luZXMvZV9jaGlsLmMuY2hpbCBvcGVuc3NsLTEuMC4wZS9lbmdpbmVzL2Vf Y2hpbC5jCi0tLS0gb3BlbnNzbC0xLjAuMGUvZW5naW5lcy9lX2NoaWwuYy5jaGlsCTIwMTAtMDYt MTUgMTk6MjU6MTIuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMGUvZW5naW5lcy9l X2NoaWwuYwkyMDExLTA5LTIxIDE3OjMyOjAzLjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNjEsNiAr MTI2MSwxMSBAQCBzdGF0aWMgaW50IGh3Y3Joa19pbnNlcnRfY2FyZChjb25zdCBjaGFyCi0gICAg ICAgICBVSSAqdWk7Ci0gCXZvaWQgKmNhbGxiYWNrX2RhdGEgPSBOVUxMOwotICAgICAgICAgVUlf TUVUSE9EICp1aV9tZXRob2QgPSBOVUxMOwotKwkvKiBEZXNwaXRlIHdoYXQgdGhlIGRvY3VtZW50 YXRpb24gc2F5cyBwcm9tcHRfaW5mbyBjYW4gYmUKLSsJICogYW4gZW1wdHkgc3RyaW5nLgotKwkg Ki8KLSsJaWYgKHByb21wdF9pbmZvICYmICEqcHJvbXB0X2luZm8pCi0rCQlwcm9tcHRfaW5mbyA9 IE5VTEw7Ci0gCi0gICAgICAgICBpZiAoY2FjdHgpCi0gICAgICAgICAgICAgICAgIHsKLUBAIC0x Mjg3LDcgKzEyOTIsNyBAQCBzdGF0aWMgaW50IGh3Y3Joa19pbnNlcnRfY2FyZChjb25zdCBjaGFy Ci0gCi0gCWlmICh1aSkKLSAJCXsKLS0JCWNoYXIgYW5zd2VyOwotKwkJY2hhciBhbnN3ZXIgPSAn XDAnOwotIAkJY2hhciBidWZbQlVGU0laXTsKLSAJCS8qIERlc3BpdGUgd2hhdCB0aGUgZG9jdW1l bnRhdGlvbiBzYXlzIHdyb25nX2luZm8gY2FuIGJlCi0gCSAJICogYW4gZW1wdHkgc3RyaW5nLgoK ZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjEtYmV0YTItZmlwcy1tZDUtYWxsb3cucGF0Y2ggYi9v cGVuc3NsLTEuMC4xLWJldGEyLWZpcHMtbWQ1LWFsbG93LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBkNjU0NzMwLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjEtYmV0YTIt Zmlwcy1tZDUtYWxsb3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1kaWZm IC11cCBvcGVuc3NsLTEuMC4xLWJldGEyL2NyeXB0by9tZDUvbWQ1X2Rnc3QuYy5tZDUtYWxsb3cg b3BlbnNzbC0xLjAuMS1iZXRhMi9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMKLS0tLSBvcGVuc3NsLTEu MC4xLWJldGEyL2NyeXB0by9tZDUvbWQ1X2Rnc3QuYy5tZDUtYWxsb3cJMjAxMi0wMi0wNiAyMDow OTo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xLWJldGEyL2NyeXB0by9tZDUv bWQ1X2Rnc3QuYwkyMDEyLTAyLTA2IDIwOjE0OjAyLjMzMjExNzYwMyArMDEwMAotQEAgLTcxLDcg KzcxLDE2IEBAIGNvbnN0IGNoYXIgTUQ1X3ZlcnNpb25bXT0iTUQ1IiBPUEVOU1NMX1YKLSAjZGVm aW5lIElOSVRfREFUQV9DICh1bnNpZ25lZCBsb25nKTB4OThiYWRjZmVMCi0gI2RlZmluZSBJTklU X0RBVEFfRCAodW5zaWduZWQgbG9uZykweDEwMzI1NDc2TAotIAotLW5vbmZpcHNfbWRfaW5pdChN RDUpCi0raW50IE1ENV9Jbml0KE1ENV9DVFggKmMpCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwl7 Ci0rCWlmIChGSVBTX21vZGUoKSAmJiBnZXRlbnYoIk9QRU5TU0xfRklQU19OT05fQVBQUk9WRURf TUQ1X0FMTE9XIikgPT0gTlVMTCkKLSsJCU9wZW5TU0xEaWUoX19GSUxFX18sIF9fTElORV9fLCBc Ci0rICAgICAgICAgICAgICAgICJEaWdlc3QgTUQ1IGZvcmJpZGRlbiBpbiBGSVBTIG1vZGUhIik7 Ci0rCXJldHVybiBwcml2YXRlX01ENV9Jbml0KGMpOwotKwl9Ci0raW50IHByaXZhdGVfTUQ1X0lu aXQoTUQ1X0NUWCAqYykKLSsjZW5kaWYKLSAJewotIAltZW1zZXQgKGMsMCxzaXplb2YoKmMpKTsK LSAJYy0+QT1JTklUX0RBVEFfQTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xLXBrZ2NvbmZp Zy1rcmI1LnBhdGNoIGIvb3BlbnNzbC0xLjAuMS1wa2djb25maWcta3JiNS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRhMTdiZi4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEu MC4xLXBrZ2NvbmZpZy1rcmI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMS9NYWtlZmlsZS5vcmcua3JiNSBvcGVuc3NsLTEuMC4xL01h a2VmaWxlLm9yZwotLS0tIG9wZW5zc2wtMS4wLjEvTWFrZWZpbGUub3JnLmtyYjUJMjAxMi0wMy0x NCAyMToxNTowNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xL01ha2VmaWxlLm9y ZwkyMDEyLTA0LTExIDE2OjI4OjMxLjI1NDcyNTQyMiArMDIwMAotQEAgLTM3MCw3ICszNzAsNyBA QCBsaWJjcnlwdG8ucGM6IE1ha2VmaWxlCi0gCSAgICBlY2hvICdSZXF1aXJlczogJzsgXAotIAkg ICAgZWNobyAnTGliczogLUwkJHtsaWJkaXJ9IC1sY3J5cHRvJzsgXAotIAkgICAgZWNobyAnTGli cy5wcml2YXRlOiAkKEVYX0xJQlMpJzsgXAotLQkgICAgZWNobyAnQ2ZsYWdzOiAtSSQke2luY2x1 ZGVkaXJ9ICQoS1JCNV9JTkNMVURFUyknICkgPiBsaWJjcnlwdG8ucGMKLSsJICAgIGVjaG8gJ0Nm bGFnczogLUkkJHtpbmNsdWRlZGlyfScgKSA+IGxpYmNyeXB0by5wYwotIAotIGxpYnNzbC5wYzog TWFrZWZpbGUKLSAJQCAoIGVjaG8gJ3ByZWZpeD0kKElOU1RBTExUT1ApJzsgXAotQEAgLTM4Myw3 ICszODMsNyBAQCBsaWJzc2wucGM6IE1ha2VmaWxlCi0gCSAgICBlY2hvICdWZXJzaW9uOiAnJChW RVJTSU9OKTsgXAotIAkgICAgZWNobyAnUmVxdWlyZXM6ICc7IFwKLSAJICAgIGVjaG8gJ0xpYnM6 IC1MJCR7bGliZGlyfSAtbHNzbCAtbGNyeXB0byc7IFwKLS0JICAgIGVjaG8gJ0xpYnMucHJpdmF0 ZTogJChFWF9MSUJTKSc7IFwKLSsJICAgIGVjaG8gJ0xpYnMucHJpdmF0ZTogJChFWF9MSUJTKSAk KExJQktSQjUpJzsgXAotIAkgICAgZWNobyAnQ2ZsYWdzOiAtSSQke2luY2x1ZGVkaXJ9ICQoS1JC NV9JTkNMVURFUyknICkgPiBsaWJzc2wucGMKLSAKLSBvcGVuc3NsLnBjOiBNYWtlZmlsZQotQEAg LTM5Nyw3ICszOTcsNyBAQCBvcGVuc3NsLnBjOiBNYWtlZmlsZQotIAkgICAgZWNobyAnVmVyc2lv bjogJyQoVkVSU0lPTik7IFwKLSAJICAgIGVjaG8gJ1JlcXVpcmVzOiAnOyBcCi0gCSAgICBlY2hv ICdMaWJzOiAtTCQke2xpYmRpcn0gLWxzc2wgLWxjcnlwdG8nOyBcCi0tCSAgICBlY2hvICdMaWJz LnByaXZhdGU6ICQoRVhfTElCUyknOyBcCi0rCSAgICBlY2hvICdMaWJzLnByaXZhdGU6ICQoRVhf TElCUykgJChMSUJLUkI1KSc7IFwKLSAJICAgIGVjaG8gJ0NmbGFnczogLUkkJHtpbmNsdWRlZGly fSAkKEtSQjVfSU5DTFVERVMpJyApID4gb3BlbnNzbC5wYwotIAotIE1ha2VmaWxlOiBNYWtlZmls ZS5vcmcgQ29uZmlndXJlIGNvbmZpZwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjFjLWRlZmF1 bHQtcGF0aHMucGF0Y2ggYi9vcGVuc3NsLTEuMC4xYy1kZWZhdWx0LXBhdGhzLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjQxMjhkLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wt MS4wLjFjLWRlZmF1bHQtcGF0aHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBA QAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWMvYXBwcy9zX2NsaWVudC5jLmRlZmF1bHQtcGF0aHMg b3BlbnNzbC0xLjAuMWMvYXBwcy9zX2NsaWVudC5jCi0tLS0gb3BlbnNzbC0xLjAuMWMvYXBwcy9z X2NsaWVudC5jLmRlZmF1bHQtcGF0aHMJMjAxMi0wMy0xOCAxOToxNjowNS4wMDAwMDAwMDAgKzAx MDAKLSsrKyBvcGVuc3NsLTEuMC4xYy9hcHBzL3NfY2xpZW50LmMJMjAxMi0xMi0wNiAxODoyNDow Ni40MjU5MzMyMDMgKzAxMDAKLUBAIC0xMTY2LDEyICsxMTY2LDE5IEBAIGJhZDoKLSAJaWYgKCFz ZXRfY2VydF9rZXlfc3R1ZmYoY3R4LGNlcnQsa2V5KSkKLSAJCWdvdG8gZW5kOwotIAotLQlpZiAo KCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgsQ0FmaWxlLENBcGF0aCkpIHx8Ci0t CQkoIVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKGN0eCkpKQotKwlpZiAoQ0FmaWxl ID09IE5VTEwgJiYgQ0FwYXRoID09IE5VTEwpCi0gCQl7Ci0tCQkvKiBCSU9fcHJpbnRmKGJpb19l cnIsImVycm9yIHNldHRpbmcgZGVmYXVsdCB2ZXJpZnkgbG9jYXRpb25zXG4iKTsgKi8KLS0JCUVS Ul9wcmludF9lcnJvcnMoYmlvX2Vycik7Ci0tCQkvKiBnb3RvIGVuZDsgKi8KLSsJCWlmICghU1NM X0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkKLSsJCQl7Ci0rCQkJRVJSX3ByaW50 X2Vycm9ycyhiaW9fZXJyKTsKLSsJCQl9Ci0rCQl9Ci0rCWVsc2UKLSsJCXsKLSsJCWlmICghU1NM X0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY3R4LENBZmlsZSxDQXBhdGgpKQotKwkJCXsKLSsJ CQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOwotKwkJCX0KLSAJCX0KLSAKLSAjaWZuZGVmIE9Q RU5TU0xfTk9fVExTRVhUCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xYy9hcHBzL3Nfc2VydmVyLmMu ZGVmYXVsdC1wYXRocyBvcGVuc3NsLTEuMC4xYy9hcHBzL3Nfc2VydmVyLmMKLS0tLSBvcGVuc3Ns LTEuMC4xYy9hcHBzL3Nfc2VydmVyLmMuZGVmYXVsdC1wYXRocwkyMDEyLTAzLTE4IDE5OjE2OjA1 LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFjL2FwcHMvc19zZXJ2ZXIuYwkyMDEy LTEyLTA2IDE4OjI1OjExLjE5OTMyOTYxMSArMDEwMAotQEAgLTE1NjUsMTMgKzE1NjUsMjEgQEAg YmFkOgotIAkJfQotICNlbmRpZgotIAotLQlpZiAoKCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0 aW9ucyhjdHgsQ0FmaWxlLENBcGF0aCkpIHx8Ci0tCQkoIVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVy aWZ5X3BhdGhzKGN0eCkpKQotKwlpZiAoQ0FmaWxlID09IE5VTEwgJiYgQ0FwYXRoID09IE5VTEwp Ci0gCQl7Ci0tCQkvKiBCSU9fcHJpbnRmKGJpb19lcnIsIlg1MDlfbG9hZF92ZXJpZnlfbG9jYXRp b25zXG4iKTsgKi8KLS0JCUVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7Ci0tCQkvKiBnb3RvIGVu ZDsgKi8KLSsJCWlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkKLSsJ CQl7Ci0rCQkJRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKLSsJCQl9Ci0rCQl9Ci0rCWVsc2UK LSsJCXsKLSsJCWlmICghU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY3R4LENBZmlsZSxD QXBhdGgpKQotKwkJCXsKLSsJCQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOwotKwkJCX0KLSAJ CX0KLSsKLSAJaWYgKHZwbSkKLSAJCVNTTF9DVFhfc2V0MV9wYXJhbShjdHgsIHZwbSk7Ci0gCi1A QCAtMTYyMiw4ICsxNjMwLDExIEBAIGJhZDoKLSAJCWVsc2UKLSAJCQlTU0xfQ1RYX3Nlc3Nfc2V0 X2NhY2hlX3NpemUoY3R4MiwxMjgpOwotIAotLQkJaWYgKCghU1NMX0NUWF9sb2FkX3ZlcmlmeV9s b2NhdGlvbnMoY3R4MixDQWZpbGUsQ0FwYXRoKSkgfHwKLS0JCQkoIVNTTF9DVFhfc2V0X2RlZmF1 bHRfdmVyaWZ5X3BhdGhzKGN0eDIpKSkKLSsJCWlmICghU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2Nh dGlvbnMoY3R4MixDQWZpbGUsQ0FwYXRoKSkKLSsJCQl7Ci0rCQkJRVJSX3ByaW50X2Vycm9ycyhi aW9fZXJyKTsKLSsJCQl9Ci0rCQlpZiAoIVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhz KGN0eDIpKQotIAkJCXsKLSAJCQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOwotIAkJCX0KLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjFjL2FwcHMvc190aW1lLmMuZGVmYXVsdC1wYXRocyBvcGVuc3Ns LTEuMC4xYy9hcHBzL3NfdGltZS5jCi0tLS0gb3BlbnNzbC0xLjAuMWMvYXBwcy9zX3RpbWUuYy5k ZWZhdWx0LXBhdGhzCTIwMDYtMDQtMTcgMTQ6MjI6MTMuMDAwMDAwMDAwICswMjAwCi0rKysgb3Bl bnNzbC0xLjAuMWMvYXBwcy9zX3RpbWUuYwkyMDEyLTEyLTA2IDE4OjI3OjQxLjY5NDU3NDA0NCAr MDEwMAotQEAgLTM3MywxMiArMzczLDE5IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJn dikKLSAKLSAJU1NMX2xvYWRfZXJyb3Jfc3RyaW5ncygpOwotIAotLQlpZiAoKCFTU0xfQ1RYX2xv YWRfdmVyaWZ5X2xvY2F0aW9ucyh0bV9jdHgsQ0FmaWxlLENBcGF0aCkpIHx8Ci0tCQkoIVNTTF9D VFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKHRtX2N0eCkpKQotKwlpZiAoQ0FmaWxlID09IE5V TEwgJiYgQ0FwYXRoID09IE5VTEwpCi0gCQl7Ci0tCQkvKiBCSU9fcHJpbnRmKGJpb19lcnIsImVy cm9yIHNldHRpbmcgZGVmYXVsdCB2ZXJpZnkgbG9jYXRpb25zXG4iKTsgKi8KLS0JCUVSUl9wcmlu dF9lcnJvcnMoYmlvX2Vycik7Ci0tCQkvKiBnb3RvIGVuZDsgKi8KLSsJCWlmICghU1NMX0NUWF9z ZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHModG1fY3R4KSkKLSsJCQl7Ci0rCQkJRVJSX3ByaW50X2Vy cm9ycyhiaW9fZXJyKTsKLSsJCQl9Ci0rCQl9Ci0rCWVsc2UKLSsJCXsKLSsJCWlmICghU1NMX0NU WF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnModG1fY3R4LENBZmlsZSxDQXBhdGgpKQotKwkJCXsKLSsJ CQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOwotKwkJCX0KLSAJCX0KLSAKLSAJaWYgKHRtX2Np cGhlciA9PSBOVUxMKQoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjFjLWRoLTEwMjQucGF0Y2gg Yi9vcGVuc3NsLTEuMC4xYy1kaC0xMDI0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA4OWYwZjA0Li4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjFjLWRoLTEwMjQucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xYy9h cHBzL3Nfc2VydmVyLmMuZGgxMDI0IG9wZW5zc2wtMS4wLjFjL2FwcHMvc19zZXJ2ZXIuYwotLS0t IG9wZW5zc2wtMS4wLjFjL2FwcHMvc19zZXJ2ZXIuYy5kaDEwMjQJMjAxMi0xMS0xNCAyMDoyNzo1 MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xYy9hcHBzL3Nfc2VydmVyLmMJMjAx Mi0xMS0xNSAyMDo1NjoxNS4yNDc3NzQ0NjUgKzAxMDAKLUBAIC0yMjIsMjcgKzIyMiwzMSBAQCBz dGF0aWMgdm9pZCBzX3NlcnZlcl9pbml0KHZvaWQpOwotICNlbmRpZgotIAotICNpZm5kZWYgT1BF TlNTTF9OT19ESAotLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGRoNTEyX3BbXT17Ci0tCTB4REEsMHg1 OCwweDNDLDB4MTYsMHhEOSwweDg1LDB4MjIsMHg4OSwweEQwLDB4RTQsMHhBRiwweDc1LAotLQkw eDZGLDB4NEMsMHhDQSwweDkyLDB4REQsMHg0QiwweEU1LDB4MzMsMHhCOCwweDA0LDB4RkIsMHgw RiwKLS0JMHhFRCwweDk0LDB4RUYsMHg5QywweDhBLDB4NDQsMHgwMywweEVELDB4NTcsMHg0Niww eDUwLDB4RDMsCi0tCTB4NjksMHg5OSwweERCLDB4MjksMHhENywweDc2LDB4MjcsMHg2QiwweEEy LDB4RDMsMHhENCwweDEyLAotLQkweEUyLDB4MTgsMHhGNCwweERELDB4MUUsMHgwOCwweDRDLDB4 RjYsMHhEOCwweDAwLDB4M0UsMHg3QywKLS0JMHg0NywweDc0LDB4RTgsMHgzMywKLS0JfTsKLS1z dGF0aWMgdW5zaWduZWQgY2hhciBkaDUxMl9nW109ewotLQkweDAyLAotLQl9OwotLQotLXN0YXRp YyBESCAqZ2V0X2RoNTEyKHZvaWQpCi0rc3RhdGljIERIICpnZXRfZGgxMDI0KCkKLSAJewotLQlE SCAqZGg9TlVMTDsKLSsJc3RhdGljIHVuc2lnbmVkIGNoYXIgZGgxMDI0X3BbXT17Ci0rCQkweDk5 LDB4NTgsMHhGQSwweDkwLDB4NTMsMHgyRiwweEUwLDB4NjEsMHg4MywweDlELDB4NTQsMHg2MywK LSsJCTB4QkQsMHgzNSwweDVBLDB4MzEsMHhGMywweEM2LDB4NzksMHhFNSwweEEwLDB4MEYsMHg2 NiwweDc5LAotKwkJMHgzQywweEEwLDB4N0YsMHhFOCwweEEyLDB4NUYsMHhERiwweDExLDB4MDgs MHhBMywweEYwLDB4M0MsCi0rCQkweEMzLDB4M0MsMHg1RCwweDUwLDB4MkMsMHhENSwweEQ2LDB4 NTgsMHgxMiwweERCLDB4QzEsMHhFRiwKLSsJCTB4QjQsMHg0NywweDRBLDB4NUEsMHgzOSwweDhB LDB4NEUsMHhFQiwweDQ0LDB4RTIsMHgwNywweEZCLAotKwkJMHgzRCwweEEzLDB4QzcsMHg2RSww eDUyLDB4RjMsMHgyQiwweDdCLDB4MTAsMHhBNSwweDk4LDB4RTMsCi0rCQkweDM4LDB4MkEsMHhF MiwweDdGLDB4QTQsMHg4RiwweDI2LDB4ODcsMHg5QiwweDY2LDB4N0EsMHhFRCwKLSsJCTB4MkQs MHg0QywweEU3LDB4MzMsMHg3NywweDQ3LDB4OTQsMHg0MywweEI2LDB4QUEsMHg5NywweDIzLAot KwkJMHg4QSwweEZDLDB4QTUsMHhBNiwweDY0LDB4MDksMHhDMCwweDI3LDB4QzAsMHhFRiwweENC LDB4MDUsCi0rCQkweDkwLDB4OUQsMHhENSwweDc1LDB4QkEsMHgwMCwweEUwLDB4RkIsMHhBOCww eDgxLDB4NTIsMHhBNCwKLSsJCTB4QjIsMHg4MywweDIyLDB4NUIsMHhDQiwweEQ3LDB4MTYsMHg5 MywKLSsJCX07Ci0rCXN0YXRpYyB1bnNpZ25lZCBjaGFyIGRoMTAyNF9nW109ewotKwkJMHgwMiwK LSsJCX07Ci0rCURIICpkaDsKLSAKLSAJaWYgKChkaD1ESF9uZXcoKSkgPT0gTlVMTCkgcmV0dXJu KE5VTEwpOwotLQlkaC0+cD1CTl9iaW4yYm4oZGg1MTJfcCxzaXplb2YoZGg1MTJfcCksTlVMTCk7 Ci0tCWRoLT5nPUJOX2JpbjJibihkaDUxMl9nLHNpemVvZihkaDUxMl9nKSxOVUxMKTsKLSsJZGgt PnA9Qk5fYmluMmJuKGRoMTAyNF9wLHNpemVvZihkaDEwMjRfcCksTlVMTCk7Ci0rCWRoLT5nPUJO X2JpbjJibihkaDEwMjRfZyxzaXplb2YoZGgxMDI0X2cpLE5VTEwpOwotIAlpZiAoKGRoLT5wID09 IE5VTEwpIHx8IChkaC0+ZyA9PSBOVUxMKSkKLS0JCXJldHVybihOVUxMKTsKLSsJCXsgREhfZnJl ZShkaCk7IHJldHVybihOVUxMKTsgfQotIAlyZXR1cm4oZGgpOwotIAl9Ci0gI2VuZGlmCi1AQCAt MTY1Nyw3ICsxNjYxLDcgQEAgYmFkOgotIAkJZWxzZQotIAkJCXsKLSAJCQlCSU9fcHJpbnRmKGJp b19zX291dCwiVXNpbmcgZGVmYXVsdCB0ZW1wIERIIHBhcmFtZXRlcnNcbiIpOwotLQkJCWRoPWdl dF9kaDUxMigpOwotKwkJCWRoPWdldF9kaDEwMjQoKTsKLSAJCQl9Ci0gCQkodm9pZClCSU9fZmx1 c2goYmlvX3Nfb3V0KTsKLSAKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xZS1hcm0tdXNlLWVs Zi1hdXh2LWNhcHMucGF0Y2ggYi9vcGVuc3NsLTEuMC4xZS1hcm0tdXNlLWVsZi1hdXh2LWNhcHMu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YThjNDIuLjAwMDAwMDAKLS0t IGEvb3BlbnNzbC0xLjAuMWUtYXJtLXVzZS1lbGYtYXV4di1jYXBzLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsOTMgKzAsMCBAQAotZGlmZiAtLWdpdCBhL2NyeXB0by9hcm1jYXAuYyBiL2NyeXB0 by9hcm1jYXAuYwotaW5kZXggNTI1OGQyZi4uZWZiNDAwOSAxMDA2NDQKLS0tLSBhL2NyeXB0by9h cm1jYXAuYwotKysrIGIvY3J5cHRvL2FybWNhcC5jCi1AQCAtOSwxMSArOSw2IEBACi0gCi0gdW5z aWduZWQgaW50IE9QRU5TU0xfYXJtY2FwX1A7Ci0gCi0tc3RhdGljIHNpZ3NldF90IGFsbF9tYXNr ZWQ7Ci0tCi0tc3RhdGljIHNpZ2ptcF9idWYgaWxsX2ptcDsKLS1zdGF0aWMgdm9pZCBpbGxfaGFu ZGxlciAoaW50IHNpZykgeyBzaWdsb25nam1wKGlsbF9qbXAsc2lnKTsgfQotLQotIC8qCi0gICog Rm9sbG93aW5nIHN1YnJvdXRpbmVzIGNvdWxkIGhhdmUgYmVlbiBpbmxpbmVkLCBidXQgaXQncyBu b3QgYWxsCi0gICogQVJNIGNvbXBpbGVycyBzdXBwb3J0IGlubGluZSBhc3NlbWJsZXIuLi4KLUBA IC0yOSwyNCArMjQsMjYgQEAgdW5zaWduZWQgaW50IE9QRU5TU0xfcmR0c2Modm9pZCkKLSAJCXJl dHVybiAwOwotIAl9Ci0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fPj0yCi0t dm9pZCBPUEVOU1NMX2NwdWlkX3NldHVwKHZvaWQpIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9y KSk7Ci0tI2VuZGlmCi0tdm9pZCBPUEVOU1NMX2NwdWlkX3NldHVwKHZvaWQpCi0rI2lmIGRlZmlu ZWQoX19HTElCQ19fKSAmJiBfX0dMSUJDX18+PTIgJiYgX19HTElCQ19NSU5PUl9fPj0xNgotKyNp bmNsdWRlIDxzeXMvYXV4di5oPgotKwotK3ZvaWQgT1BFTlNTTF9jcHVpZF9maW5kKHZvaWQpCi0r CXsKLSsJCXVuc2lnbmVkIGxvbmcgaHdjYXAgPSBnZXRhdXh2YWwoQVRfSFdDQVApOwotKwkJY2hh ciAqcGxhdCA9IChjaGFyICopZ2V0YXV4dmFsKEFUX1BMQVRGT1JNKTsKLSsKLSsJCU9QRU5TU0xf YXJtY2FwX1AgfD0gaHdjYXAgJiBIV0NBUF9BUk1fTkVPTiA/IEFSTVY3X05FT04gOiAwOwotKwkJ T1BFTlNTTF9hcm1jYXBfUCB8PSBwbGF0ID8gKHBsYXRbMV0gPT0gJzcnID8gQVJNVjdfVElDSyA6 IDApIDogMDsKLSsJfQotKyNlbHNlCi0rc3RhdGljIHNpZ3NldF90IGFsbF9tYXNrZWQ7Ci0rc3Rh dGljIHNpZ2ptcF9idWYgaWxsX2ptcDsKLStzdGF0aWMgdm9pZCBpbGxfaGFuZGxlciAoaW50IHNp ZykgeyBzaWdsb25nam1wKGlsbF9qbXAsc2lnKTsgfQotKwotK3ZvaWQgT1BFTlNTTF9jcHVpZF9m aW5kKHZvaWQpCi0gCXsKLS0JY2hhciAqZTsKLSAJc3RydWN0IHNpZ2FjdGlvbglpbGxfb2FjdCxp bGxfYWN0OwotIAlzaWdzZXRfdAkJb3NldDsKLS0Jc3RhdGljIGludCB0cmlnZ2VyPTA7Ci0tCi0t CWlmICh0cmlnZ2VyKSByZXR1cm47Ci0tCXRyaWdnZXI9MTsKLS0gCi0tCWlmICgoZT1nZXRlbnYo Ik9QRU5TU0xfYXJtY2FwIikpKQotLQkJewotLQkJT1BFTlNTTF9hcm1jYXBfUD1zdHJ0b3VsKGUs TlVMTCwwKTsKLS0JCXJldHVybjsKLS0JCX0KLSAKLSAJc2lnZmlsbHNldCgmYWxsX21hc2tlZCk7 Ci0gCXNpZ2RlbHNldCgmYWxsX21hc2tlZCxTSUdJTEwpOwotQEAgLTU1LDggKzUyLDYgQEAgdm9p ZCBPUEVOU1NMX2NwdWlkX3NldHVwKHZvaWQpCi0gCXNpZ2RlbHNldCgmYWxsX21hc2tlZCxTSUdC VVMpOwotIAlzaWdkZWxzZXQoJmFsbF9tYXNrZWQsU0lHU0VHVik7Ci0gCi0tCU9QRU5TU0xfYXJt Y2FwX1AgPSAwOwotLQotIAltZW1zZXQoJmlsbF9hY3QsMCxzaXplb2YoaWxsX2FjdCkpOwotIAlp bGxfYWN0LnNhX2hhbmRsZXIgPSBpbGxfaGFuZGxlcjsKLSAJaWxsX2FjdC5zYV9tYXNrICAgID0g YWxsX21hc2tlZDsKLUBAIC03OCwzICs3MywyNSBAQCB2b2lkIE9QRU5TU0xfY3B1aWRfc2V0dXAo dm9pZCkKLSAJc2lnYWN0aW9uIChTSUdJTEwsJmlsbF9vYWN0LE5VTEwpOwotIAlzaWdwcm9jbWFz ayhTSUdfU0VUTUFTSywmb3NldCxOVUxMKTsKLSAJfQotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVk KF9fR05VQ19fKSAmJiBfX0dOVUNfXz49MgotK3ZvaWQgT1BFTlNTTF9jcHVpZF9zZXR1cCh2b2lk KSBfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpOwotKyNlbmRpZgotK3ZvaWQgT1BFTlNTTF9j cHVpZF9zZXR1cCh2b2lkKQotKwl7Ci0rCWNoYXIgKmU7Ci0rCXN0YXRpYyBpbnQgdHJpZ2dlcj0w OwotKwotKwlpZiAodHJpZ2dlcikgcmV0dXJuOwotKwl0cmlnZ2VyPTE7Ci0rCi0rCWlmICgoZT1n ZXRlbnYoIk9QRU5TU0xfYXJtY2FwIikpKQotKwkJewotKwkJT1BFTlNTTF9hcm1jYXBfUD1zdHJ0 b3VsKGUsTlVMTCwwKTsKLSsJCXJldHVybjsKLSsJCX0KLSsKLSsJT1BFTlNTTF9hcm1jYXBfUCA9 IDA7Ci0rCU9QRU5TU0xfY3B1aWRfZmluZCgpOwotKwl9CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0x LjAuMWUtY2MtcmVxcy5wYXRjaCBiL29wZW5zc2wtMS4wLjFlLWNjLXJlcXMucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNjZiYjEuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0x LjAuMWUtY2MtcmVxcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9yc2EvcnNhX2dlbi5jLmNjLXJlcXMgb3BlbnNzbC0x LjAuMWUvY3J5cHRvL3JzYS9yc2FfZ2VuLmMKLS0tLSBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vcnNh L3JzYV9nZW4uYy5jYy1yZXFzCTIwMTUtMDEtMTMgMTI6NDU6NTEuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL3JzYS9yc2FfZ2VuLmMJMjAxNS0wMS0xNSAxNzozNTow NC42NDk2OTc5MjIgKzAxMDAKLUBAIC00MzgsNiArNDM4LDEwIEBAIHN0YXRpYyBpbnQgcnNhX2J1 aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLAotIAlpZighcnNhLT5kbXExICYmICgocnNhLT5kbXExPUJO X25ldygpKSA9PSBOVUxMKSkgZ290byBlcnI7Ci0gCWlmKCFyc2EtPmlxbXAgJiYgKChyc2EtPmlx bXA9Qk5fbmV3KCkpID09IE5VTEwpKSBnb3RvIGVycjsKLSAKLSsJLyogcHJlcGFyZSBtaW5pbXVt IHAgYW5kIHEgZGlmZmVyZW5jZSAqLwotKwlpZiAoIUJOX29uZShyMykpIGdvdG8gZXJyOwotKwlp ZiAoYml0c3AgPiAxMDAgJiYgIUJOX2xzaGlmdChyMywgcjMsIGJpdHNwIC0gMTAwKSkgZ290byBl cnI7Ci0rCi0gCUJOX2NvcHkocnNhLT5lLCBlX3ZhbHVlKTsKLSAKLSAJLyogZ2VuZXJhdGUgcCBh bmQgcSAqLwotQEAgLTQ2Myw3ICs0NjcsOSBAQCBzdGF0aWMgaW50IHJzYV9idWlsdGluX2tleWdl bihSU0EgKnJzYSwKLSAJCQl7Ci0gCQkJaWYoIUJOX2dlbmVyYXRlX3ByaW1lX2V4KHJzYS0+cSwg Yml0c3EsIDAsIE5VTEwsIE5VTEwsIGNiKSkKLSAJCQkJZ290byBlcnI7Ci0tCQkJfSB3aGlsZSgo Qk5fY21wKHJzYS0+cCwgcnNhLT5xKSA9PSAwKSAmJiAoKytkZWdlbmVyYXRlIDwgMykpOwotKwkg ICAgICAgCQlpZiAoIUJOX3N1YihyMiwgcnNhLT5xLCByc2EtPnApKQotKwkJCQlnb3RvIGVycjsK LSsJCQl9IHdoaWxlKChCTl91Y21wKHIyLCByMykgPD0gMCkgJiYgKCsrZGVnZW5lcmF0ZSA8IDMp KTsKLSAJCWlmKGRlZ2VuZXJhdGUgPT0gMykKLSAJCQl7Ci0gCQkJb2sgPSAwOyAvKiB3ZSBzZXQg b3VyIG93biBlcnIgKi8KCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xZS1jb21wYXQtc3ltYm9s cy5wYXRjaCBiL29wZW5zc2wtMS4wLjFlLWNvbXBhdC1zeW1ib2xzLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAyNWE5ZDAyLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjFl LWNvbXBhdC1zeW1ib2xzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2RzYS9kc2Ffa2V5LmMuY29tcGF0IG9wZW5zc2wt MS4wLjFlL2NyeXB0by9kc2EvZHNhX2tleS5jCi0tLS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2Rz YS9kc2Ffa2V5LmMuY29tcGF0CTIwMTMtMTEtMjYgMTQ6MzY6MzUuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2RzYS9kc2Ffa2V5LmMJMjAxMy0xMi0xMSAxNjozNDo1 OC42Mzg1NDk2ODcgKzAxMDAKLUBAIC02OCw2ICs2OCwxMSBAQAotICNpbmNsdWRlIDxvcGVuc3Ns L2ZpcHMuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSAKLSsvKiBqdXN0IGEgY29tcGF0 aWJpbGl0eSBzeW1ib2wgLSBuby1vcCAqLwotK3ZvaWQgRklQU19jb3JydXB0X2RzYV9rZXlnZW4o dm9pZCkKLSsJewotKwl9Ci0rCi0gc3RhdGljIGludCBmaXBzX2NoZWNrX2RzYShEU0EgKmRzYSkK LSAJewotIAlFVlBfUEtFWSAqcGs7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZW5n aW5lL2VuZ19hbGwuYy5jb21wYXQgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2VuZ2luZS9lbmdfYWxs LmMKLS0tLSBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYy5jb21wYXQJMjAx My0xMS0yNiAxNDozNjozNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vZW5naW5lL2VuZ19hbGwuYwkyMDEzLTEyLTExIDE2OjMyOjEzLjUxMjgyMDQyNCArMDEwMAot QEAgLTYyLDYgKzYyLDExIEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotICNlbmRpZgot IAotKy8qIGp1c3QgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc3ltYm9sIC0gbm8tb3AgKi8KLSt2 b2lkIEVOR0lORV9sb2FkX2Flc25pICh2b2lkKQotK3sKLSt9Ci0rCi0gdm9pZCBFTkdJTkVfbG9h ZF9idWlsdGluX2VuZ2luZXModm9pZCkKLSAJewotIAkvKiBTb21lIEVOR0lORXMgbmVlZCB0aGlz ICovCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlwcy9maXBzLmMuY29tcGF0IG9w ZW5zc2wtMS4wLjFlL2NyeXB0by9maXBzL2ZpcHMuYwotLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0 by9maXBzL2ZpcHMuYy5jb21wYXQJMjAxMy0xMS0yNiAxNDozNjozNS4wMDAwMDAwMDAgKzAxMDAK LSsrKyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlwcy9maXBzLmMJMjAxMy0xMi0xMSAxNjozODo1 Mi41MjQ4MzE4NTggKzAxMDAKLUBAIC0xMTEsNiArMTExLDEyIEBAIGludCBGSVBTX21vZHVsZV9t b2RlKHZvaWQpCi0gCXJldHVybiByZXQ7Ci0gCX0KLSAKLSsvKiBqdXN0IGEgY29tcGF0IHN5bWJv bCAtIHJldHVybiBOVUxMICovCi0rY29uc3Qgdm9pZCAqRklQU19yYW5kX2NoZWNrKHZvaWQpCi0r CXsKLSsJcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSBpbnQgRklQU19zZWxmdGVzdF9mYWlsZWQodm9p ZCkKLSAgICAgewotICAgICBpbnQgcmV0ID0gMDsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4x ZS1jdmUtMjAxNS0wMjg2LnBhdGNoIGIvb3BlbnNzbC0xLjAuMWUtY3ZlLTIwMTUtMDI4Ni5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRlYzJiNy4uMDAwMDAwMAotLS0gYS9v cGVuc3NsLTEuMC4xZS1jdmUtMjAxNS0wMjg2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMg KzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2FzbjEvYV90eXBlLmMuYm9v bC1jbXAgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2FzbjEvYV90eXBlLmMKLS0tLSBvcGVuc3NsLTEu MC4xZS9jcnlwdG8vYXNuMS9hX3R5cGUuYy5ib29sLWNtcAkyMDE1LTAzLTE4IDEzOjAyOjM2LjAw MDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9hc24xL2FfdHlwZS5jCTIw MTUtMDMtMTggMTQ6Mzg6MDcuMTExNDAxMzkwICswMTAwCi1AQCAtMTI0LDYgKzEyNCw5IEBAIGlu dCBBU04xX1RZUEVfY21wKGNvbnN0IEFTTjFfVFlQRSAqYSwgY28KLSAJY2FzZSBWX0FTTjFfT0JK RUNUOgotIAkJcmVzdWx0ID0gT0JKX2NtcChhLT52YWx1ZS5vYmplY3QsIGItPnZhbHVlLm9iamVj dCk7Ci0gCQlicmVhazsKLSsJY2FzZSBWX0FTTjFfQk9PTEVBTjoKLSsJCXJlc3VsdCA9IGEtPnZh bHVlLmJvb2xlYW4gLSBiLT52YWx1ZS5ib29sZWFuOwotKwkJYnJlYWs7Ci0gCWNhc2UgVl9BU04x X05VTEw6Ci0gCQlyZXN1bHQgPSAwOwkvKiBUaGV5IGRvIG5vdCBoYXZlIGNvbnRlbnQuICovCi0g CQlicmVhazsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xZS1jdmUtMjAxNS0wMjg3LnBhdGNo IGIvb3BlbnNzbC0xLjAuMWUtY3ZlLTIwMTUtMDI4Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZjc3YjA5OS4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4xZS1jdmUtMjAx NS0wMjg3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMWUvY3J5cHRvL2FzbjEvdGFzbl9kZWMuYy5pdGVtLXJldXNlIG9wZW5zc2wtMS4w LjFlL2NyeXB0by9hc24xL3Rhc25fZGVjLmMKLS0tLSBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vYXNu MS90YXNuX2RlYy5jLml0ZW0tcmV1c2UJMjAxMy0wMi0xMSAxNjoyNjowNC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vYXNuMS90YXNuX2RlYy5jCTIwMTUtMDMtMTkg MTU6NDY6NTEuMDk3MDIyNjE2ICswMTAwCi1AQCAtMzEwLDkgKzMxMCwxOSBAQCBpbnQgQVNOMV9p dGVtX2V4X2QyaShBU04xX1ZBTFVFICoqcHZhbCwKLSAJCWNhc2UgQVNOMV9JVFlQRV9DSE9JQ0U6 Ci0gCQlpZiAoYXNuMV9jYiAmJiAhYXNuMV9jYihBU04xX09QX0QySV9QUkUsIHB2YWwsIGl0LCBO VUxMKSkKLSAJCQkJZ290byBhdXhlcnI7Ci0tCi0tCQkvKiBBbGxvY2F0ZSBzdHJ1Y3R1cmUgKi8K LS0JCWlmICghKnB2YWwgJiYgIUFTTjFfaXRlbV9leF9uZXcocHZhbCwgaXQpKQotKwkJaWYgKCpw dmFsKQotKwkJCXsKLSsJCQkvKiBGcmVlIHVwIGFuZCB6ZXJvIENIT0lDRSB2YWx1ZSBpZiBpbml0 aWFsaXNlZCAqLwotKwkJCWkgPSBhc24xX2dldF9jaG9pY2Vfc2VsZWN0b3IocHZhbCwgaXQpOwot KwkJCWlmICgoaSA+PSAwKSAmJiAoaSA8IGl0LT50Y291bnQpKQotKwkJCQl7Ci0rCQkJCXR0ID0g aXQtPnRlbXBsYXRlcyArIGk7Ci0rCQkJCXBjaHB0ciA9IGFzbjFfZ2V0X2ZpZWxkX3B0cihwdmFs LCB0dCk7Ci0rCQkJCUFTTjFfdGVtcGxhdGVfZnJlZShwY2hwdHIsIHR0KTsKLSsJCQkJYXNuMV9z ZXRfY2hvaWNlX3NlbGVjdG9yKHB2YWwsIC0xLCBpdCk7Ci0rCQkJCX0KLSsJCQl9Ci0rCQllbHNl IGlmICghQVNOMV9pdGVtX2V4X25ldyhwdmFsLCBpdCkpCi0gCQkJewotIAkJCUFTTjFlcnIoQVNO MV9GX0FTTjFfSVRFTV9FWF9EMkksCi0gCQkJCQkJRVJSX1JfTkVTVEVEX0FTTjFfRVJST1IpOwot QEAgLTQwNyw2ICs0MTcsMTkgQEAgaW50IEFTTjFfaXRlbV9leF9kMmkoQVNOMV9WQUxVRSAqKnB2 YWwsCi0gCQlpZiAoYXNuMV9jYiAmJiAhYXNuMV9jYihBU04xX09QX0QySV9QUkUsIHB2YWwsIGl0 LCBOVUxMKSkKLSAJCQkJZ290byBhdXhlcnI7Ci0gCi0rCQkvKiBGcmVlIHVwIGFuZCB6ZXJvIGFu eSBBREIgZm91bmQgKi8KLSsJCWZvciAoaSA9IDAsIHR0ID0gaXQtPnRlbXBsYXRlczsgaSA8IGl0 LT50Y291bnQ7IGkrKywgdHQrKykKLSsJCQl7Ci0rCQkJaWYgKHR0LT5mbGFncyAmIEFTTjFfVEZM R19BREJfTUFTSykKLSsJCQkJewotKwkJCQljb25zdCBBU04xX1RFTVBMQVRFICpzZXF0dDsKLSsJ CQkJQVNOMV9WQUxVRSAqKnBzZXF2YWw7Ci0rCQkJCXNlcXR0ID0gYXNuMV9kb19hZGIocHZhbCwg dHQsIDEpOwotKwkJCQlwc2VxdmFsID0gYXNuMV9nZXRfZmllbGRfcHRyKHB2YWwsIHNlcXR0KTsK LSsJCQkJQVNOMV90ZW1wbGF0ZV9mcmVlKHBzZXF2YWwsIHNlcXR0KTsKLSsJCQkJfQotKwkJCX0K LSsKLSAJCS8qIEdldCBlYWNoIGZpZWxkIGVudHJ5ICovCi0gCQlmb3IgKGkgPSAwLCB0dCA9IGl0 LT50ZW1wbGF0ZXM7IGkgPCBpdC0+dGNvdW50OyBpKyssIHR0KyspCi0gCQkJewoKZGlmZiAtLWdp dCBhL29wZW5zc2wtMS4wLjFlLWN2ZS0yMDE1LTAyODgucGF0Y2ggYi9vcGVuc3NsLTEuMC4xZS1j dmUtMjAxNS0wMjg4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGRjNmI5 Li4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjFlLWN2ZS0yMDE1LTAyODgucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8v eDUwOS94NTA5X3JlcS5jLnJlcS1udWxsLWRlcmVmIG9wZW5zc2wtMS4wLjFlL2NyeXB0by94NTA5 L3g1MDlfcmVxLmMKLS0tLSBvcGVuc3NsLTEuMC4xZS9jcnlwdG8veDUwOS94NTA5X3JlcS5jLnJl cS1udWxsLWRlcmVmCTIwMTMtMDItMTEgMTY6MjY6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgb3Bl bnNzbC0xLjAuMWUvY3J5cHRvL3g1MDkveDUwOV9yZXEuYwkyMDE1LTAzLTE4IDE4OjM0OjM1Ljcz MjQ0ODAxNyArMDEwMAotQEAgLTkyLDYgKzkyLDggQEAgWDUwOV9SRVEgKlg1MDlfdG9fWDUwOV9S RVEoWDUwOSAqeCwgRVZQXwotIAkJZ290byBlcnI7Ci0gCi0gCXBrdG1wID0gWDUwOV9nZXRfcHVi a2V5KHgpOwotKwlpZiAocGt0bXAgPT0gTlVMTCkKLSsJCWdvdG8gZXJyOwotIAlpPVg1MDlfUkVR X3NldF9wdWJrZXkocmV0LHBrdG1wKTsKLSAJRVZQX1BLRVlfZnJlZShwa3RtcCk7Ci0gCWlmICgh aSkgZ290byBlcnI7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMWUtY3ZlLTIwMTUtMDI5My5w YXRjaCBiL29wZW5zc2wtMS4wLjFlLWN2ZS0yMDE1LTAyOTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDFjYTc4YjMuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMWUtY3Zl LTIwMTUtMDI5My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4xZS9zc2wvczJfbGliLmMuc3NsMi1hc3NlcnQgb3BlbnNzbC0xLjAuMWUv c3NsL3MyX2xpYi5jCi0tLS0gb3BlbnNzbC0xLjAuMWUvc3NsL3MyX2xpYi5jLnNzbDItYXNzZXJ0 CTIwMTUtMDMtMTggMTM6MDI6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWUv c3NsL3MyX2xpYi5jCTIwMTUtMDMtMTggMTg6MjI6MjAuMTk1MzIyNDg5ICswMTAwCi1AQCAtNDg4 LDcgKzQ4OCw3IEBAIGludCBzc2wyX2dlbmVyYXRlX2tleV9tYXRlcmlhbChTU0wgKnMpCi0gCi0g CQlPUEVOU1NMX2Fzc2VydChzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aCA+PSAwCi0gCQkg ICAgJiYgcy0+c2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5ndGgKLS0JCSAgICA8IChpbnQpc2l6ZW9m KHMtPnNlc3Npb24tPm1hc3Rlcl9rZXkpKTsKLSsJCSAgICA8PSAoaW50KXNpemVvZihzLT5zZXNz aW9uLT5tYXN0ZXJfa2V5KSk7Ci0gCQlFVlBfRGlnZXN0VXBkYXRlKCZjdHgscy0+c2Vzc2lvbi0+ bWFzdGVyX2tleSxzLT5zZXNzaW9uLT5tYXN0ZXJfa2V5X2xlbmd0aCk7Ci0gCQlFVlBfRGlnZXN0 VXBkYXRlKCZjdHgsJmMsMSk7Ci0gCQljKys7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9zc2wv czJfc3J2ci5jLnNzbDItYXNzZXJ0IG9wZW5zc2wtMS4wLjFlL3NzbC9zMl9zcnZyLmMKLS0tLSBv cGVuc3NsLTEuMC4xZS9zc2wvczJfc3J2ci5jLnNzbDItYXNzZXJ0CTIwMTMtMDItMTEgMTY6MjY6 MDQuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWUvc3NsL3MyX3NydnIuYwkyMDE1 LTAzLTE4IDE4OjMwOjExLjQwMzk3NDAzOCArMDEwMAotQEAgLTQ0Niw5ICs0NDYsNiBAQCBzdGF0 aWMgaW50IGdldF9jbGllbnRfbWFzdGVyX2tleShTU0wgKnMpCi0gCQlTU0xlcnIoU1NMX0ZfR0VU X0NMSUVOVF9NQVNURVJfS0VZLFNTTF9SX05PX1BSSVZBVEVLRVkpOwotIAkJcmV0dXJuKC0xKTsK LSAJCX0KLS0JaT1zc2xfcnNhX3ByaXZhdGVfZGVjcnlwdChzLT5jZXJ0LHMtPnMyLT50bXAuZW5j LAotLQkJJihwW3MtPnMyLT50bXAuY2xlYXJdKSwmKHBbcy0+czItPnRtcC5jbGVhcl0pLAotLQkJ KHMtPnMyLT5zc2wyX3JvbGxiYWNrKT9SU0FfU1NMVjIzX1BBRERJTkc6UlNBX1BLQ1MxX1BBRERJ TkcpOwotIAotIAlpc19leHBvcnQ9U1NMX0NfSVNfRVhQT1JUKHMtPnNlc3Npb24tPmNpcGhlcik7 Ci0gCQotQEAgLTQ2NywyMSArNDY0LDYxIEBAIHN0YXRpYyBpbnQgZ2V0X2NsaWVudF9tYXN0ZXJf a2V5KFNTTCAqcykKLSAJZWxzZQotIAkJZWs9NTsKLSAKLSsJLyoKLSsJICogVGhlIGZvcm1hdCBv ZiB0aGUgQ0xJRU5ULU1BU1RFUi1LRVkgbWVzc2FnZSBpcwotKwkgKiAxIGJ5dGUgbWVzc2FnZSB0 eXBlCi0rCSAqIDMgYnl0ZXMgY2lwaGVyCi0rCSAqIDItYnl0ZSBjbGVhciBrZXkgbGVuZ3RoIChz dG9yZWQgaW4gcy0+czItPnRtcC5jbGVhcikKLSsJICogMi1ieXRlIGVuY3J5cHRlZCBrZXkgbGVu Z3RoIChzdG9yZWQgaW4gcy0+czItPnRtcC5lbmMpCi0rCSAqIDItYnl0ZSBrZXkgYXJncyBsZW5n dGggKElWIGV0YykKLSsJICogY2xlYXIga2V5Ci0rCSAqIGVuY3J5cHRlZCBrZXkKLSsJICoga2V5 IGFyZ3MKLSsJICoKLSsJICogSWYgdGhlIGNpcGhlciBpcyBhbiBleHBvcnQgY2lwaGVyLCB0aGVu IHRoZSBlbmNyeXB0ZWQga2V5IGJ5dGVzCi0rCSAqIGFyZSBhIGZpeGVkIHBvcnRpb24gb2YgdGhl IHRvdGFsIGtleSAoNSBvciA4IGJ5dGVzKS4gVGhlIHNpemUgb2YKLSsJICogdGhpcyBwb3J0aW9u IGlzIGluIHxla3wuIElmIHRoZSBjaXBoZXIgaXMgbm90IGFuIGV4cG9ydCBjaXBoZXIsCi0rCSAq IHRoZW4gdGhlIGVudGlyZSBrZXkgbWF0ZXJpYWwgaXMgZW5jcnlwdGVkIChpLmUuLCBjbGVhciBr ZXkgbGVuZ3RoCi0rCSAqIG11c3QgYmUgemVybykuCi0rCSAqLwotKwkgaWYgKCghaXNfZXhwb3J0 ICYmIHMtPnMyLT50bXAuY2xlYXIgIT0gMCkgfHwKLSsJCShpc19leHBvcnQgJiYgcy0+czItPnRt cC5jbGVhciArIGVrICE9IEVWUF9DSVBIRVJfa2V5X2xlbmd0aChjKSkpCi0rCQl7Ci0rCQlzc2wy X3JldHVybl9lcnJvcihzLCBTU0wyX1BFX1VOREVGSU5FRF9FUlJPUik7Ci0rCQlTU0xlcnIoU1NM X0ZfR0VUX0NMSUVOVF9NQVNURVJfS0VZLFNTTF9SX0JBRF9MRU5HVEgpOwotKwkJcmV0dXJuIC0x OwotKwkJfQotKwkvKgotKwkgKiBUaGUgZW5jcnlwdGVkIGJsb2IgbXVzdCBkZWNyeXB0IHRvIHRo ZSBlbmNyeXB0ZWQgcG9ydGlvbiBvZiB0aGUga2V5LgotKwkgKiBEZWNyeXB0aW9uIGNhbid0IGJl IGV4cGFuZGluZywgc28gaWYgd2UgZG9uJ3QgaGF2ZSBlbm91Z2ggZW5jcnlwdGVkCi0rCSAqIGJ5 dGVzIHRvIGZpdCB0aGUga2V5IGluIHRoZSBidWZmZXIsIHN0b3Agbm93LgotKwkgKi8KLSsJaWYg KChpc19leHBvcnQgJiYgcy0+czItPnRtcC5lbmMgPCBlaykgfHwKLSsJCSghaXNfZXhwb3J0ICYm IHMtPnMyLT50bXAuZW5jIDwgRVZQX0NJUEhFUl9rZXlfbGVuZ3RoKGMpKSkKLSsJCXsKLSsJCXNz bDJfcmV0dXJuX2Vycm9yKHMsU1NMMl9QRV9VTkRFRklORURfRVJST1IpOwotKwkJU1NMZXJyKFNT TF9GX0dFVF9DTElFTlRfTUFTVEVSX0tFWSxTU0xfUl9MRU5HVEhfVE9PX1NIT1JUKTsKLSsJCXJl dHVybiAtMTsKLSsJCX0KLSsKLSsJaSA9IHNzbF9yc2FfcHJpdmF0ZV9kZWNyeXB0KHMtPmNlcnQs IHMtPnMyLT50bXAuZW5jLAotKwkJJihwW3MtPnMyLT50bXAuY2xlYXJdKSwKLSsJCSYocFtzLT5z Mi0+dG1wLmNsZWFyXSksCi0rCQkocy0+czItPnNzbDJfcm9sbGJhY2spID8gUlNBX1NTTFYyM19Q QURESU5HIDogUlNBX1BLQ1MxX1BBRERJTkcpOwotKwotIAkvKiBiYWQgZGVjcnlwdCAqLwotICNp ZiAxCi0gCS8qIElmIGEgYmFkIGRlY3J5cHQsIGNvbnRpbnVlIHdpdGggcHJvdG9jb2wgYnV0IHdp dGggYQotIAkgKiByYW5kb20gbWFzdGVyIHNlY3JldCAoQmxlaWNoZW5iYWNoZXIgYXR0YWNrKSAq LwotLQlpZiAoKGkgPCAwKSB8fAotLQkJKCghaXNfZXhwb3J0ICYmIChpICE9IEVWUF9DSVBIRVJf a2V5X2xlbmd0aChjKSkpCi0tCQl8fCAoaXNfZXhwb3J0ICYmICgoaSAhPSBlaykgfHwgKHMtPnMy LT50bXAuY2xlYXIrKHVuc2lnbmVkIGludClpICE9Ci0tCQkJKHVuc2lnbmVkIGludClFVlBfQ0lQ SEVSX2tleV9sZW5ndGgoYykpKSkpKQotKwlpZiAoKGkgPCAwKSB8fCAoKCFpc19leHBvcnQgJiYg aSAhPSBFVlBfQ0lQSEVSX2tleV9sZW5ndGgoYykpCi0rCQl8fCAoaXNfZXhwb3J0ICYmIGkgIT0g ZWspKSkKLSAJCXsKLSAJCUVSUl9jbGVhcl9lcnJvcigpOwotIAkJaWYgKGlzX2V4cG9ydCkKLSAJ CQlpPWVrOwotIAkJZWxzZQotIAkJCWk9RVZQX0NJUEhFUl9rZXlfbGVuZ3RoKGMpOwotLQkJaWYg KFJBTkRfcHNldWRvX2J5dGVzKHAsaSkgPD0gMCkKLSsJCWlmIChSQU5EX3BzZXVkb19ieXRlcygm cFtzLT5zMi0+dG1wLmNsZWFyXSxpKSA8PSAwKQotIAkJCXJldHVybiAwOwotIAkJfQotICNlbHNl Ci1AQCAtNTA1LDcgKzU0Miw4IEBAIHN0YXRpYyBpbnQgZ2V0X2NsaWVudF9tYXN0ZXJfa2V5KFNT TCAqcykKLSAJCX0KLSAjZW5kaWYKLSAKLS0JaWYgKGlzX2V4cG9ydCkgaSs9cy0+czItPnRtcC5j bGVhcjsKLSsJaWYgKGlzX2V4cG9ydCkKLSsJCWkgPSBFVlBfQ0lQSEVSX2tleV9sZW5ndGgoYyk7 Ci0gCi0gCWlmIChpID4gU1NMX01BWF9NQVNURVJfS0VZX0xFTkdUSCkKLSAJCXsKCmRpZmYgLS1n aXQgYS9vcGVuc3NsLTEuMC4xZS1kZWZhdWx0cy5wYXRjaCBiL29wZW5zc2wtMS4wLjFlLWRlZmF1 bHRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzIzZTg3Li4wMDAwMDAw Ci0tLSBhL29wZW5zc2wtMS4wLjFlLWRlZmF1bHRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NjIgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvYXBwcy9vcGVuc3NsLmNuZi5kZWZh dWx0cyBvcGVuc3NsLTEuMC4xZS9hcHBzL29wZW5zc2wuY25mCi0tLS0gb3BlbnNzbC0xLjAuMWUv YXBwcy9vcGVuc3NsLmNuZi5kZWZhdWx0cwkyMDEzLTAyLTExIDE2OjI2OjA0LjAwMDAwMDAwMCAr MDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL2FwcHMvb3BlbnNzbC5jbmYJMjAxNC0wMi0wNiAxODow MDowMC4xNzA5MjkzMzQgKzAxMDAKLUBAIC03Miw3ICs3Miw3IEBAIGNlcnRfb3B0IAk9IGNhX2Rl ZmF1bHQJCSMgQ2VydGlmaWNhdGUgZmkKLSAKLSBkZWZhdWx0X2RheXMJPSAzNjUJCQkjIGhvdyBs b25nIHRvIGNlcnRpZnkgZm9yCi0gZGVmYXVsdF9jcmxfZGF5cz0gMzAJCQkjIGhvdyBsb25nIGJl Zm9yZSBuZXh0IENSTAotLWRlZmF1bHRfbWQJPSBkZWZhdWx0CQkjIHVzZSBwdWJsaWMga2V5IGRl ZmF1bHQgTUQKLStkZWZhdWx0X21kCT0gc2hhMjU2CQkjIHVzZSBTSEEtMjU2IGJ5IGRlZmF1bHQK LSBwcmVzZXJ2ZQk9IG5vCQkJIyBrZWVwIHBhc3NlZCBETiBvcmRlcmluZwotIAotICMgQSBmZXcg ZGlmZmVyZW5jZSB3YXkgb2Ygc3BlY2lmeWluZyBob3cgc2ltaWxhciB0aGUgcmVxdWVzdCBzaG91 bGQgbG9vawotQEAgLTEwMyw3ICsxMDMsOCBAQCBlbWFpbEFkZHJlc3MJCT0gb3B0aW9uYWwKLSAK LSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwotIFsgcmVxIF0KLS1kZWZhdWx0X2JpdHMJCT0gMTAyNAotK2RlZmF1bHRf Yml0cwkJPSAyMDQ4Ci0rZGVmYXVsdF9tZAkJPSBzaGEyNTYKLSBkZWZhdWx0X2tleWZpbGUgCT0g cHJpdmtleS5wZW0KLSBkaXN0aW5ndWlzaGVkX25hbWUJPSByZXFfZGlzdGluZ3Vpc2hlZF9uYW1l Ci0gYXR0cmlidXRlcwkJPSByZXFfYXR0cmlidXRlcwotQEAgLTEyNiwxNyArMTI3LDE4IEBAIHN0 cmluZ19tYXNrID0gdXRmOG9ubHkKLSAKLSBbIHJlcV9kaXN0aW5ndWlzaGVkX25hbWUgXQotIGNv dW50cnlOYW1lCQkJPSBDb3VudHJ5IE5hbWUgKDIgbGV0dGVyIGNvZGUpCi0tY291bnRyeU5hbWVf ZGVmYXVsdAkJPSBBVQotK2NvdW50cnlOYW1lX2RlZmF1bHQJCT0gWFgKLSBjb3VudHJ5TmFtZV9t aW4JCQk9IDIKLSBjb3VudHJ5TmFtZV9tYXgJCQk9IDIKLSAKLSBzdGF0ZU9yUHJvdmluY2VOYW1l CQk9IFN0YXRlIG9yIFByb3ZpbmNlIE5hbWUgKGZ1bGwgbmFtZSkKLS1zdGF0ZU9yUHJvdmluY2VO YW1lX2RlZmF1bHQJPSBTb21lLVN0YXRlCi0rI3N0YXRlT3JQcm92aW5jZU5hbWVfZGVmYXVsdAk9 IERlZmF1bHQgUHJvdmluY2UKLSAKLSBsb2NhbGl0eU5hbWUJCQk9IExvY2FsaXR5IE5hbWUgKGVn LCBjaXR5KQotK2xvY2FsaXR5TmFtZV9kZWZhdWx0CQk9IERlZmF1bHQgQ2l0eQotIAotIDAub3Jn YW5pemF0aW9uTmFtZQkJPSBPcmdhbml6YXRpb24gTmFtZSAoZWcsIGNvbXBhbnkpCi0tMC5vcmdh bml6YXRpb25OYW1lX2RlZmF1bHQJPSBJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQKLSswLm9yZ2Fu aXphdGlvbk5hbWVfZGVmYXVsdAk9IERlZmF1bHQgQ29tcGFueSBMdGQKLSAKLSAjIHdlIGNhbiBk byB0aGlzIGJ1dCBpdCBpcyBub3QgbmVlZGVkIG5vcm1hbGx5IDotKQotICMxLm9yZ2FuaXphdGlv bk5hbWUJCT0gU2Vjb25kIE9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkKLUBAIC0xNDUs NyArMTQ3LDcgQEAgbG9jYWxpdHlOYW1lCQkJPSBMb2NhbGl0eSBOYW1lIChlZywgY2l0eQotIG9y Z2FuaXphdGlvbmFsVW5pdE5hbWUJCT0gT3JnYW5pemF0aW9uYWwgVW5pdCBOYW1lIChlZywgc2Vj dGlvbikKLSAjb3JnYW5pemF0aW9uYWxVbml0TmFtZV9kZWZhdWx0CT0KLSAKLS1jb21tb25OYW1l CQkJPSBDb21tb24gTmFtZSAoZS5nLiBzZXJ2ZXIgRlFETiBvciBZT1VSIG5hbWUpCi0rY29tbW9u TmFtZQkJCT0gQ29tbW9uIE5hbWUgKGVnLCB5b3VyIG5hbWUgb3IgeW91ciBzZXJ2ZXJcJ3MgaG9z dG5hbWUpCi0gY29tbW9uTmFtZV9tYXgJCQk9IDY0Ci0gCi0gZW1haWxBZGRyZXNzCQkJPSBFbWFp bCBBZGRyZXNzCi1AQCAtMzM5LDcgKzM0MSw3IEBAIHNpZ25lcl9rZXkJPSAkZGlyL3ByaXZhdGUv dHNha2V5LnBlbSAjIFQKLSBkZWZhdWx0X3BvbGljeQk9IHRzYV9wb2xpY3kxCQkjIFBvbGljeSBp ZiByZXF1ZXN0IGRpZCBub3Qgc3BlY2lmeSBpdAotIAkJCQkJIyAob3B0aW9uYWwpCi0gb3RoZXJf cG9saWNpZXMJPSB0c2FfcG9saWN5MiwgdHNhX3BvbGljeTMJIyBhY2NlcHRhYmxlIHBvbGljaWVz IChvcHRpb25hbCkKLS1kaWdlc3RzCQk9IG1kNSwgc2hhMQkJIyBBY2NlcHRhYmxlIG1lc3NhZ2Ug ZGlnZXN0cyAobWFuZGF0b3J5KQotK2RpZ2VzdHMJCT0gc2hhMSwgc2hhMjU2LCBzaGEzODQsIHNo YTUxMgkjIEFjY2VwdGFibGUgbWVzc2FnZSBkaWdlc3RzIChtYW5kYXRvcnkpCi0gYWNjdXJhY3kJ PSBzZWNzOjEsIG1pbGxpc2Vjczo1MDAsIG1pY3Jvc2VjczoxMDAJIyAob3B0aW9uYWwpCi0gY2xv Y2tfcHJlY2lzaW9uX2RpZ2l0cyAgPSAwCSMgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBkb3QuIChv cHRpb25hbCkKLSBvcmRlcmluZwkJPSB5ZXMJIyBJcyBvcmRlcmluZyBkZWZpbmVkIGZvciB0aW1l c3RhbXBzPwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjFlLWVuYy1mYWlsLnBhdGNoIGIvb3Bl bnNzbC0xLjAuMWUtZW5jLWZhaWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGE1YTQzZjAuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMWUtZW5jLWZhaWwucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vZXZwL2Jpb19lbmMuYy5lbmMtZmFpbCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZXZwL2Jpb19l bmMuYwotLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9ldnAvYmlvX2VuYy5jLmVuYy1mYWlsCTIw MTMtMDItMTEgMTY6MjY6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWUvY3J5 cHRvL2V2cC9iaW9fZW5jLmMJMjAxNC0wMy0wNCAxNToyMToxMi4xODU4MjE3MzggKzAxMDAKLUBA IC0xOTgsMTAgKzE5OCwxNSBAQCBzdGF0aWMgaW50IGVuY19yZWFkKEJJTyAqYiwgY2hhciAqb3V0 LCBpCi0gCQkJfQotIAkJZWxzZQotIAkJCXsKLS0JCQlFVlBfQ2lwaGVyVXBkYXRlKCYoY3R4LT5j aXBoZXIpLAotKwkJCWlmICghRVZQX0NpcGhlclVwZGF0ZSgmKGN0eC0+Y2lwaGVyKSwKLSAJCQkJ KHVuc2lnbmVkIGNoYXIgKiljdHgtPmJ1ZiwmY3R4LT5idWZfbGVuLAotLQkJCQkodW5zaWduZWQg Y2hhciAqKSYoY3R4LT5idWZbQlVGX09GRlNFVF0pLGkpOwotLQkJCWN0eC0+Y29udD0xOwotKwkJ CQkodW5zaWduZWQgY2hhciAqKSYoY3R4LT5idWZbQlVGX09GRlNFVF0pLGkpKQotKwkJCQl7Ci0r CQkJCWN0eC0+b2sgPSAwOwotKwkJCQljdHgtPmNvbnQgPSAwOwotKwkJCQl9Ci0rCQkJZWxzZQot KwkJCQljdHgtPmNvbnQ9MTsKLSAJCQkvKiBOb3RlOiBpdCBpcyBwb3NzaWJsZSBmb3IgRVZQX0Np cGhlclVwZGF0ZSB0bwotIAkJCSAqIGRlY3J5cHQgemVybyBieXRlcyBiZWNhdXNlIHRoaXMgaXMg b3IgbG9va3MgbGlrZQotIAkJCSAqIHRoZSBmaW5hbCBibG9jazogaWYgdGhpcyBoYXBwZW5zIHdl IHNob3VsZCByZXRyeQotQEAgLTI1Nyw5ICsyNjIsMTQgQEAgc3RhdGljIGludCBlbmNfd3JpdGUo QklPICpiLCBjb25zdCBjaGFyCi0gCXdoaWxlIChpbmwgPiAwKQotIAkJewotIAkJbj0oaW5sID4g RU5DX0JMT0NLX1NJWkUpP0VOQ19CTE9DS19TSVpFOmlubDsKLS0JCUVWUF9DaXBoZXJVcGRhdGUo JihjdHgtPmNpcGhlciksCi0rCQlpZiAoIUVWUF9DaXBoZXJVcGRhdGUoJihjdHgtPmNpcGhlciks Ci0gCQkJKHVuc2lnbmVkIGNoYXIgKiljdHgtPmJ1ZiwmY3R4LT5idWZfbGVuLAotLQkJCSh1bnNp Z25lZCBjaGFyICopaW4sbik7Ci0rCQkJKHVuc2lnbmVkIGNoYXIgKilpbixuKSkKLSsJCQl7Ci0r CQkJQklPX2NvcHlfbmV4dF9yZXRyeShiKTsKLSsJCQljdHgtPm9rID0gMDsKLSsJCQlyZXR1cm4g cmV0IC0gaW5sOwotKwkJCX0KLSAJCWlubC09bjsKLSAJCWluKz1uOwotIAoKZGlmZiAtLWdpdCBh L29wZW5zc2wtMS4wLjFlLWVudi16bGliLnBhdGNoIGIvb3BlbnNzbC0xLjAuMWUtZW52LXpsaWIu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MDJhY2IuLjAwMDAwMDAKLS0t IGEvb3BlbnNzbC0xLjAuMWUtZW52LXpsaWIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCAr MCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9kb2Mvc3NsL1NTTF9DT01QX2FkZF9jb21w cmVzc2lvbl9tZXRob2QucG9kLmVudi16bGliIG9wZW5zc2wtMS4wLjFlL2RvYy9zc2wvU1NMX0NP TVBfYWRkX2NvbXByZXNzaW9uX21ldGhvZC5wb2QKLS0tLSBvcGVuc3NsLTEuMC4xZS9kb2Mvc3Ns L1NTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2QucG9kLmVudi16bGliCTIwMTMtMDItMTEg MTY6MDI6NDguMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWUvZG9jL3NzbC9TU0xf Q09NUF9hZGRfY29tcHJlc3Npb25fbWV0aG9kLnBvZAkyMDEzLTAyLTE5IDE2OjMyOjUxLjAwMDAw MDAwMCArMDEwMAotQEAgLTQ3LDYgKzQ3LDEzIEBAIE9uY2UgdGhlIGlkZW50aXRpZXMgb2YgdGhl IGNvbXByZXNzaW9uIG0KLSBiZWVuIHN0YW5kYXJkaXplZCwgdGhlIGNvbXByZXNzaW9uIEFQSSB3 aWxsIG1vc3QgbGlrZWx5IGJlIGNoYW5nZWQuIFVzaW5nCi0gaXQgaW4gdGhlIGN1cnJlbnQgc3Rh dGUgaXMgbm90IHJlY29tbWVuZGVkLgotIAotK0l0IGlzIGFsc28gbm90IHJlY29tbWVuZGVkIHRv IHVzZSBjb21wcmVzc2lvbiBpZiBkYXRhIHRyYW5zZmVyZWQgY29udGFpbgotK3VudHJ1c3RlZCBw YXJ0cyB0aGF0IGNhbiBiZSBtYW5pcHVsYXRlZCBieSBhbiBhdHRhY2tlciBhcyBoZSBjb3VsZCB0 aGVuCi0rZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBlbmNyeXB0ZWQgZGF0YS4gU2VlIHRoZSBD UklNRSBhdHRhY2suIEZvcgotK3RoYXQgcmVhc29uIHRoZSBkZWZhdWx0IGxvYWRpbmcgb2YgdGhl IHpsaWIgY29tcHJlc3Npb24gbWV0aG9kIGlzCi0rZGlzYWJsZWQgYW5kIGVuYWJsZWQgb25seSBp ZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQjxPUEVOU1NMX0RFRkFVTFRfWkxJQj4KLStpcyBw cmVzZW50IGR1cmluZyB0aGUgbGlicmFyeSBpbml0aWFsaXphdGlvbi4KLSsKLSA9aGVhZDEgUkVU VVJOIFZBTFVFUwotIAotIFNTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2QoKSBtYXkgcmV0 dXJuIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvc3NsL3Nz bF9jaXBoLmMuZW52LXpsaWIgb3BlbnNzbC0xLjAuMWUvc3NsL3NzbF9jaXBoLmMKLS0tLSBvcGVu c3NsLTEuMC4xZS9zc2wvc3NsX2NpcGguYy5lbnYtemxpYgkyMDEzLTAyLTExIDE2OjI2OjA0LjAw MDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL3NzbC9zc2xfY2lwaC5jCTIwMTMtMDIt MTkgMTY6Mzc6MzYuMTYzNTQ1MDg1ICswMTAwCi1AQCAtMTQwLDYgKzE0MCw4IEBACi0gICogT1RI RVJXSVNFLgotICAqLwotIAotKy8qIGZvciBzZWN1cmVfZ2V0ZW52ICovCi0rI2RlZmluZSBfR05V X1NPVVJDRQotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxvcGVuc3NsL29iamVjdHMu aD4KLSAjaWZuZGVmIE9QRU5TU0xfTk9fQ09NUAotQEAgLTQ1NSw3ICs0NTcsNyBAQCBzdGF0aWMg dm9pZCBsb2FkX2J1aWx0aW5fY29tcHJlc3Npb25zKHZvCi0gCi0gCQkJTWVtQ2hlY2tfb2ZmKCk7 Ci0gCQkJc3NsX2NvbXBfbWV0aG9kcz1za19TU0xfQ09NUF9uZXcoc2tfY29tcF9jbXApOwotLQkJ CWlmIChzc2xfY29tcF9tZXRob2RzICE9IE5VTEwpCi0rCQkJaWYgKHNzbF9jb21wX21ldGhvZHMg IT0gTlVMTCAmJiBzZWN1cmVfZ2V0ZW52KCJPUEVOU1NMX0RFRkFVTFRfWkxJQiIpICE9IE5VTEwp Ci0gCQkJCXsKLSAJCQkJY29tcD0oU1NMX0NPTVAgKilPUEVOU1NMX21hbGxvYyhzaXplb2YoU1NM X0NPTVApKTsKLSAJCQkJaWYgKGNvbXAgIT0gTlVMTCkKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEu MC4xZS1maXBzLWN0b3IucGF0Y2ggYi9vcGVuc3NsLTEuMC4xZS1maXBzLWN0b3IucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NTc2ZWYuLjAwMDAwMDAKLS0tIGEvb3BlbnNz bC0xLjAuMWUtZmlwcy1jdG9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAK LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBzL2ZpcHMuYy5maXBzLWN0b3Igb3Bl bnNzbC0xLjAuMWUvY3J5cHRvL2ZpcHMvZmlwcy5jCi0tLS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRv L2ZpcHMvZmlwcy5jLmZpcHMtY3RvcgkyMDEzLTA5LTI2IDEzOjUyOjMwLjc2Nzg4NTQ1NyArMDIw MAotKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBzL2ZpcHMuYwkyMDEzLTA5LTI2IDE0OjAx OjI5LjQwNjAxMDE4NyArMDIwMAotQEAgLTYwLDYgKzYwLDggQEAKLSAjaW5jbHVkZSA8ZGxmY24u aD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUg PHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlICJmaXBzX2xvY2wuaCIK LSAKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi1AQCAtMTk4LDggKzIwMCwxMCBAQCBiaW4yaGV4KHZv aWQgKmJ1Ziwgc2l6ZV90IGxlbikKLSAJcmV0dXJuIGhleDsKLSB9Ci0gCi0tI2RlZmluZSBITUFD X1BSRUZJWCAiLiIgCi0tI2RlZmluZSBITUFDX1NVRkZJWCAiLmhtYWMiIAotKyNkZWZpbmUgSE1B Q19QUkVGSVggIi4iCi0rI2lmbmRlZiBITUFDX1NVRkZJWAotKyNkZWZpbmUgSE1BQ19TVUZGSVgg Ii5obWFjIgotKyNlbmRpZgotICNkZWZpbmUgUkVBRF9CVUZGRVJfTEVOR1RIIDE2Mzg0Ci0gCi0g c3RhdGljIGNoYXIgKgotQEAgLTI3OSwxOSArMjgzLDEzIEBAIGVuZDoKLSB9Ci0gCi0gc3RhdGlj IGludAotLUZJUFNDSEVDS192ZXJpZnkoY29uc3QgY2hhciAqbGlibmFtZSwgY29uc3QgY2hhciAq c3ltYm9sbmFtZSkKLStGSVBTQ0hFQ0tfdmVyaWZ5KGNvbnN0IGNoYXIgKnBhdGgpCi0gewotLQlj aGFyIHBhdGhbUEFUSF9NQVgrMV07Ci0tCWludCBydjsKLSsJaW50IHJ2ID0gMDsKLSAJRklMRSAq aGY7Ci0gCWNoYXIgKmhtYWNwYXRoLCAqcDsKLSAJY2hhciAqaG1hYyA9IE5VTEw7Ci0gCXNpemVf dCBuOwotLQkKLS0JcnYgPSBnZXRfbGlicmFyeV9wYXRoKGxpYm5hbWUsIHN5bWJvbG5hbWUsIHBh dGgsIHNpemVvZihwYXRoKSk7Ci0tCi0tCWlmIChydiA8IDApCi0tCQlyZXR1cm4gMDsKLSAKLSAJ aG1hY3BhdGggPSBtYWtlX2htYWNfcGF0aChwYXRoKTsKLSAJaWYgKGhtYWNwYXRoID09IE5VTEwp Ci1AQCAtMzQxLDYgKzMzOSw1MyBAQCBlbmQ6Ci0gCXJldHVybiAxOwkKLSB9Ci0gCi0rc3RhdGlj IGludAotK3ZlcmlmeV9jaGVja3N1bXModm9pZCkKLSsgICAgewotKwlpbnQgcnY7Ci0rCWNoYXIg cGF0aFtQQVRIX01BWCsxXTsKLSsJY2hhciAqcDsKLSsKLSsJLyogd2UgbmVlZCB0byBhdm9pZCBk bG9wZW5pbmcgbGlic3NsLCBhc3N1bWUgYm90aCBsaWJjcnlwdG8gYW5kIGxpYnNzbAotKwkgICBh cmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5ICovCi0rCi0rCXJ2ID0gZ2V0X2xpYnJhcnlfcGF0aCgi bGliY3J5cHRvLnNvLiIgU0hMSUJfVkVSU0lPTl9OVU1CRVIsICJGSVBTX21vZGVfc2V0IiwgcGF0 aCwgc2l6ZW9mKHBhdGgpKTsKLSsJaWYgKHJ2IDwgMCkKLSsJCXJldHVybiAwOwotKwotKwlydiA9 IEZJUFNDSEVDS192ZXJpZnkocGF0aCk7Ci0rCWlmICghcnYpCi0rCQlyZXR1cm4gMDsKLSsKLSsJ LyogcmVwbGFjZSBsaWJjcnlwdG8gd2l0aCBsaWJzc2wgKi8KLSsJd2hpbGUgKChwID0gc3Ryc3Ry KHBhdGgsICJsaWJjcnlwdG8uc28iKSkgIT0gTlVMTCkKLSsJICAgIHsKLSsJCXAgPSBzdHBjcHko cCwgImxpYnNzbCIpOwotKyAgICAgICAgICAgICAgICBtZW1tb3ZlKHAsIHArMywgc3RybGVuKHAr MikpOwotKwkgICAgfQotKwotKwlydiA9IEZJUFNDSEVDS192ZXJpZnkocGF0aCk7Ci0rCWlmICgh cnYpCi0rCQlyZXR1cm4gMDsKLSsJcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsjaWZuZGVmIEZJUFNf TU9EVUxFX1BBVEgKLSsjZGVmaW5lIEZJUFNfTU9EVUxFX1BBVEggIi9ldGMvc3lzdGVtLWZpcHMi Ci0rI2VuZGlmCi0rCi0raW50Ci0rRklQU19tb2R1bGVfaW5zdGFsbGVkKHZvaWQpCi0rICAgIHsK LSsgICAgaW50IHJ2OwotKyAgICBydiA9IGFjY2VzcyhGSVBTX01PRFVMRV9QQVRILCBGX09LKTsK LSsgICAgaWYgKHJ2IDwgMCAmJiBlcnJubyAhPSBFTk9FTlQpCi0rCXJ2ID0gMDsKLSsKLSsgICAg LyogSW5zdGFsbGVkID09IHRydWUgKi8KLSsgICAgcmV0dXJuICFydjsKLSsgICAgfQotKwotIGlu dCBGSVBTX21vZHVsZV9tb2RlX3NldChpbnQgb25vZmYsIGNvbnN0IGNoYXIgKmF1dGgpCi0gICAg IHsKLSAgICAgaW50IHJldCA9IDA7Ci1AQCAtMzc5LDE1ICs0MjQsNyBAQCBpbnQgRklQU19tb2R1 bGVfbW9kZV9zZXQoaW50IG9ub2ZmLCBjb25zCi0gCX0KLSAjZW5kaWYKLSAKLS0JaWYoIUZJUFND SEVDS192ZXJpZnkoImxpYmNyeXB0by5zby4iIFNITElCX1ZFUlNJT05fTlVNQkVSLCJGSVBTX21v ZGVfc2V0IikpCi0tCSAgICB7Ci0tCSAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RF X1NFVCxGSVBTX1JfRklOR0VSUFJJTlRfRE9FU19OT1RfTUFUQ0gpOwotLQkgICAgZmlwc19zZWxm dGVzdF9mYWlsID0gMTsKLS0JICAgIHJldCA9IDA7Ci0tCSAgICBnb3RvIGVuZDsKLS0JICAgIH0K LS0KLS0JaWYoIUZJUFNDSEVDS192ZXJpZnkoImxpYnNzbC5zby4iIFNITElCX1ZFUlNJT05fTlVN QkVSLCJTU0xfQ1RYX25ldyIpKQotKwlpZighdmVyaWZ5X2NoZWNrc3VtcygpKQotIAkgICAgewot IAkgICAgRklQU2VycihGSVBTX0ZfRklQU19NT0RVTEVfTU9ERV9TRVQsRklQU19SX0ZJTkdFUlBS SU5UX0RPRVNfTk9UX01BVENIKTsKLSAJICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9IDE7Ci1kaWZm IC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlwcy9maXBzLmguZmlwcy1jdG9yIG9wZW5zc2wt MS4wLjFlL2NyeXB0by9maXBzL2ZpcHMuaAotLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9maXBz L2ZpcHMuaC5maXBzLWN0b3IJMjAxMy0wOS0yNiAxMzo1MjozMC44MTQ4ODY1MTUgKzAyMDAKLSsr KyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZmlwcy9maXBzLmgJMjAxMy0wOS0yNiAxMzo1MjozMC44 MTY4ODY1NjAgKzAyMDAKLUBAIC03NCw2ICs3NCw3IEBAIHN0cnVjdCBobWFjX2N0eF9zdDsKLSAK LSBpbnQgRklQU19tb2R1bGVfbW9kZV9zZXQoaW50IG9ub2ZmLCBjb25zdCBjaGFyICphdXRoKTsK LSBpbnQgRklQU19tb2R1bGVfbW9kZSh2b2lkKTsKLStpbnQgRklQU19tb2R1bGVfaW5zdGFsbGVk KHZvaWQpOwotIGNvbnN0IHZvaWQgKkZJUFNfcmFuZF9jaGVjayh2b2lkKTsKLSBpbnQgRklQU19z ZWxmdGVzdCh2b2lkKTsKLSBpbnQgRklQU19zZWxmdGVzdF9mYWlsZWQodm9pZCk7Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vb19pbml0LmMuZmlwcy1jdG9yIG9wZW5zc2wtMS4wLjFl L2NyeXB0by9vX2luaXQuYwotLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9vX2luaXQuYy5maXBz LWN0b3IJMjAxMy0wOS0yNiAxMzo1MjozMC44MDc4ODYzNTcgKzAyMDAKLSsrKyBvcGVuc3NsLTEu MC4xZS9jcnlwdG8vb19pbml0LmMJMjAxMy0wOS0yNiAxNDowMDoyMS4wMDAwMDAwMDAgKzAyMDAK LUBAIC03MSw2ICs3MSw5IEBAIHN0YXRpYyB2b2lkIGluaXRfZmlwc19tb2RlKHZvaWQpCi0gCWNo YXIgYnVmWzJdID0gIjAiOwotIAlpbnQgZmQ7Ci0gCQotKwkvKiBFbnN1cmUgdGhlIHNlbGZ0ZXN0 cyBhbHdheXMgcnVuICovCi0rCUZJUFNfbW9kZV9zZXQoMSk7Ci0rCi0gCWlmIChzZWN1cmVfZ2V0 ZW52KCJPUEVOU1NMX0ZPUkNFX0ZJUFNfTU9ERSIpICE9IE5VTEwpCi0gCQl7Ci0gCQlidWZbMF0g PSAnMSc7Ci1AQCAtODUsOSArODgsMTUgQEAgc3RhdGljIHZvaWQgaW5pdF9maXBzX21vZGUodm9p ZCkKLSAJICogb3RoZXJ3aXNlLiAKLSAJICovCi0gCQotLQlpZiAoYnVmWzBdID09ICcxJykKLSsJ aWYgKGJ1ZlswXSAhPSAnMScpCi0rCQl7Ci0rCQkvKiBkcm9wIGRvd24gdG8gbm9uLUZJUFMgbW9k ZSBpZiBpdCBpcyBub3QgcmVxdWVzdGVkICovCi0rCQlGSVBTX21vZGVfc2V0KDApOwotKwkJfQot KwllbHNlCi0gCQl7Ci0tCQlGSVBTX21vZGVfc2V0KDEpOwotKwkJLyogYWJvcnQgaWYgc2VsZnRl c3QgZmFpbGVkICovCi0rCQlGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0gCQl9Ci0gCX0KLSAjZW5k aWYKLUBAIC05NiwxMyArMTA1LDE3IEBAIHN0YXRpYyB2b2lkIGluaXRfZmlwc19tb2RlKHZvaWQp Ci0gICogQ3VycmVudGx5IG9ubHkgc2V0cyBGSVBTIGNhbGxiYWNrcwotICAqLwotIAotLXZvaWQg T1BFTlNTTF9pbml0X2xpYnJhcnkodm9pZCkKLSt2b2lkIF9fYXR0cmlidXRlX18gKChjb25zdHJ1 Y3RvcikpIE9QRU5TU0xfaW5pdF9saWJyYXJ5KHZvaWQpCi0gCXsKLSAJc3RhdGljIGludCBkb25l ID0gMDsKLSAJaWYgKGRvbmUpCi0gCQlyZXR1cm47Ci0gCWRvbmUgPSAxOwotICNpZmRlZiBPUEVO U1NMX0ZJUFMKLSsJaWYgKCFGSVBTX21vZHVsZV9pbnN0YWxsZWQoKSkKLSsJCXsKLSsJCXJldHVy bjsKLSsJCX0KLSAJUkFORF9pbml0X2ZpcHMoKTsKLSAJaW5pdF9maXBzX21vZGUoKTsKLSAJaWYg KCFGSVBTX21vZGUoKSkKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xZS1pc3N1ZXItaGFzaC5w YXRjaCBiL29wZW5zc2wtMS4wLjFlLWlzc3Vlci1oYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwZjNiZmRiLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjFlLWlzc3Vl ci1oYXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMWUvY3J5cHRvL3g1MDkveDUwOV9jbXAuYy5pc3N1ZXItaGFzaCBvcGVuc3NsLTEu MC4xZS9jcnlwdG8veDUwOS94NTA5X2NtcC5jCi0tLS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRvL3g1 MDkveDUwOV9jbXAuYy5pc3N1ZXItaGFzaAkyMDEzLTAyLTExIDE2OjI2OjA0LjAwMDAwMDAwMCAr MDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0by94NTA5L3g1MDlfY21wLmMJMjAxMy0wMi0x OSAxMjo0NjoxMS4zMTU3ODg1OTIgKzAxMDAKLUBAIC04NSw2ICs4NSw3IEBAIHVuc2lnbmVkIGxv bmcgWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9oYXMKLSAJY2hhciAqZjsKLSAKLSAJRVZQX01EX0NU WF9pbml0KCZjdHgpOwotKwlFVlBfTURfQ1RYX3NldF9mbGFncygmY3R4LCBFVlBfTURfQ1RYX0ZM QUdfTk9OX0ZJUFNfQUxMT1cpOwotIAlmPVg1MDlfTkFNRV9vbmVsaW5lKGEtPmNlcnRfaW5mby0+ aXNzdWVyLE5VTEwsMCk7Ci0gCWlmICghRVZQX0RpZ2VzdEluaXRfZXgoJmN0eCwgRVZQX21kNSgp LCBOVUxMKSkKLSAJCWdvdG8gZXJyOwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjFlLW5vLW1k NS12ZXJpZnkucGF0Y2ggYi9vcGVuc3NsLTEuMC4xZS1uby1tZDUtdmVyaWZ5LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzc5NzM1Li4wMDAwMDAwCi0tLSBhL29wZW5zc2wt MS4wLjFlLW5vLW1kNS12ZXJpZnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBA Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vYXNuMS9hX3ZlcmlmeS5jLm5vLW1kNS12 ZXJpZnkgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2FzbjEvYV92ZXJpZnkuYwotLS0tIG9wZW5zc2wt MS4wLjFlL2NyeXB0by9hc24xL2FfdmVyaWZ5LmMubm8tbWQ1LXZlcmlmeQkyMDEzLTAyLTExIDE2 OjI2OjA0LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9hc24xL2Ff dmVyaWZ5LmMJMjAxMy0xMS0xMyAxNjozMDowNC42Mjg3OTE2MTYgKzAxMDAKLUBAIC01Niw2ICs1 Niw5IEBACi0gICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSAgKi8KLSAK LSsvKiBmb3Igc2VjdXJlX2dldGVudiAqLwotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSsKLSAjaW5j bHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotIAotQEAgLTE3MSw2ICsxNzQsMTEg QEAgaW50IEFTTjFfaXRlbV92ZXJpZnkoY29uc3QgQVNOMV9JVEVNICppdAotIAkJCWdvdG8gZXJy OwotIAkJcmV0ID0gLTE7Ci0gCQl9Ci0rCWVsc2UgaWYgKG1kbmlkID09IE5JRF9tZDUgJiYgc2Vj dXJlX2dldGVudigiT1BFTlNTTF9FTkFCTEVfTUQ1X1ZFUklGWSIpID09IE5VTEwpCi0rCQl7Ci0r CQlBU04xZXJyKEFTTjFfRl9BU04xX0lURU1fVkVSSUZZLCBBU04xX1JfVU5LTk9XTl9NRVNTQUdF X0RJR0VTVF9BTEdPUklUSE0pOwotKwkJZ290byBlcnI7Ci0rCQl9Ci0gCWVsc2UKLSAJCXsKLSAJ CWNvbnN0IEVWUF9NRCAqdHlwZTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xZS1wcGMtYXNt LXVwZGF0ZS5wYXRjaCBiL29wZW5zc2wtMS4wLjFlLXBwYy1hc20tdXBkYXRlLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWE5MmVjLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wt MS4wLjFlLXBwYy1hc20tdXBkYXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjY2NCArMCww IEBACi1kaWZmIC0tZ2l0IGEvQ29uZmlndXJlIGIvQ29uZmlndXJlCi1pbmRleCA5YzgwM2RjLi41 YTVjMmQ4IDEwMDc1NQotLS0tIGEvQ29uZmlndXJlCi0rKysgYi9Db25maWd1cmUKLUBAIC0xMzks OCArMTM5LDggQEAgbXkgJHMzOTB4X2FzbT0iczM5MHhjYXAubyBzMzkweGNwdWlkLm86Ym4tczM5 MHgubyBzMzkweC1tb250Lm8gczM5MHgtZ2YybS5vOjphZXMKLSBteSAkYXJtdjRfYXNtPSJhcm1j YXAubyBhcm12NGNwdWlkLm86Ym5fYXNtLm8gYXJtdjQtbW9udC5vIGFybXY0LWdmMm0ubzo6YWVz X2NiYy5vIGFlcy1hcm12NC5vOjo6c2hhMS1hcm12NC1sYXJnZS5vIHNoYTI1Ni1hcm12NC5vIHNo YTUxMi1hcm12NC5vOjo6Ojo6OmdoYXNoLWFybXY0Lm86OnZvaWQiOwotIG15ICRwYXJpc2MxMV9h c209InBhcmlzY2lkLm86Ym5fYXNtLm8gcGFyaXNjLW1vbnQubzo6YWVzX2NvcmUubyBhZXNfY2Jj Lm8gYWVzLXBhcmlzYy5vOjo6c2hhMS1wYXJpc2MubyBzaGEyNTYtcGFyaXNjLm8gc2hhNTEyLXBh cmlzYy5vOjpyYzQtcGFyaXNjLm86Ojo6OmdoYXNoLXBhcmlzYy5vOjozMiI7Ci0gbXkgJHBhcmlz YzIwX2FzbT0icGFyaXNjaWQubzpwYS1yaXNjMlcubyBwYXJpc2MtbW9udC5vOjphZXNfY29yZS5v IGFlc19jYmMubyBhZXMtcGFyaXNjLm86OjpzaGExLXBhcmlzYy5vIHNoYTI1Ni1wYXJpc2MubyBz aGE1MTItcGFyaXNjLm86OnJjNC1wYXJpc2Mubzo6Ojo6Z2hhc2gtcGFyaXNjLm86OjY0IjsKLS1t eSAkcHBjMzJfYXNtPSJwcGNjcHVpZC5vIHBwY2NhcC5vOmJuLXBwYy5vIHBwYy1tb250Lm8gcHBj NjQtbW9udC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtcHBjLm86OjpzaGExLXBwYy5vIHNo YTI1Ni1wcGMubzo6Ojo6Ojo6IjsKLS1teSAkcHBjNjRfYXNtPSJwcGNjcHVpZC5vIHBwY2NhcC5v OmJuLXBwYy5vIHBwYy1tb250Lm8gcHBjNjQtbW9udC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBh ZXMtcHBjLm86OjpzaGExLXBwYy5vIHNoYTI1Ni1wcGMubyBzaGE1MTItcHBjLm86Ojo6Ojo6OiI7 Ci0rbXkgJHBwYzY0X2FzbT0icHBjY3B1aWQubyBwcGNjYXAubzpibi1wcGMubyBwcGMtbW9udC5v IHBwYzY0LW1vbnQubzo6YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLXBwYy5vIHZwYWVzLXBwYy5v IGFlc3A4LXBwYy5vOjo6c2hhMS1wcGMubyBzaGEyNTYtcHBjLm8gc2hhNTEyLXBwYy5vIHNoYTI1 NnA4LXBwYy5vIHNoYTUxMnA4LXBwYy5vOjo6Ojo6OmdoYXNocDgtcHBjLm86IjsKLStteSAkcHBj MzJfYXNtPSRwcGM2NF9hc207Ci0gbXkgJG5vX2FzbT0iOjo6Ojo6Ojo6Ojo6Ojo6dm9pZCI7Ci0g Ci0gIyBBcyBmb3IgJEJTRHRocmVhZHMuIElkZWEgaXMgdG8gbWFpbnRhaW4gImNvbGxlY3RpdmUi IHNldCBvZiBmbGFncywKLUBAIC0zNTcsNiArMzU3LDcgQEAgbXkgJXRhYmxlPSgKLSAjIyMjCi0g ImxpbnV4LWdlbmVyaWM2NCIsImdjYzotRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6 LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19V TlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChT SExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSAibGludXgtcHBjNjQiLAkiZ2NjOi1tNjQg LURCX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9G T1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3Bw YzY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hM SUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKLSsibGludXgtcHBjNjRsZSIsImdjYzot bTY0IC1ETF9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lY VFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6 JHBwYzY0X2FzbTpsaW51eDY0bGU6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwk KFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjoiLAotICJsaW51eC1pYTY0IiwJImdjYzot RExfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZP VVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZj bjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1Ip IiwKLSAibGludXgtaWE2NC1lY2MiLCJlY2M6LURMX0VORElBTiAtRFRFUk1JTyAtTzIgLVdhbGwg LW5vX2NwcHJ0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hV TksgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChT SExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSAibGludXgtaWE2NC1pY2MiLCJpY2M6LURM X0VORElBTiAtRFRFUk1JTyAtTzIgLVdhbGwgLW5vX2NwcHJ0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6 U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19JTlQ6JHtpYTY0X2Fz bX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElC X01JTk9SKSIsCi1AQCAtNDYyLDggKzQ2Myw4IEBAIG15ICV0YWJsZT0oCi0gCi0gIyMjIyBJQk0n cyBBSVguCi0gImFpeDMtY2MiLCAgImNjOi1PIC1EQl9FTkRJQU4gLXFtYXhtZW09MTYzODQ6Oih1 bmtub3duKTpBSVg6OkJOX0xMT05HIFJDNF9DSEFSOjo6IiwKLS0iYWl4LWdjYyIsICAiZ2NjOi1P IC1EQl9FTkRJQU46Oi1wdGhyZWFkOkFJWDo6Qk5fTExPTkcgUkM0X0NIQVI6JHtwcGMzMl9hc219 OmFpeDMyOmRsZmNuOmFpeC1zaGFyZWQ6Oi1zaGFyZWQgLVdsLC1HOi5zby5cJChTSExJQl9NQUpP UikuXCQoU0hMSUJfTUlOT1IpOjotWDMyIiwKLS0iYWl4NjQtZ2NjIiwiZ2NjOi1tYWl4NjQgLU8g LURCX0VORElBTjo6LXB0aHJlYWQ6QUlYOjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSOiR7 cHBjNjRfYXNtfTphaXg2NDpkbGZjbjphaXgtc2hhcmVkOjotbWFpeDY0IC1zaGFyZWQgLVdsLC1H Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjotWDY0IiwKLSsiYWl4LWdjYyIs ICAiZ2NjOi1PIC1EQl9FTkRJQU46Oi1wdGhyZWFkOkFJWDo6Qk5fTExPTkcgUkM0X0NIQVI6JHBw YzMyX2FzbTphaXgzMjpkbGZjbjphaXgtc2hhcmVkOjotc2hhcmVkIC1XbCwtRzouc28uXCQoU0hM SUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6LVgzMiIsCi0rImFpeDY0LWdjYyIsImdjYzotbWFp eDY0IC1PIC1EQl9FTkRJQU46Oi1wdGhyZWFkOkFJWDo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRf Q0hBUjokcHBjNjRfYXNtOmFpeDY0OmRsZmNuOmFpeC1zaGFyZWQ6Oi1tYWl4NjQgLXNoYXJlZCAt V2wsLUc6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Oi1YNjQiLAotICMgQmVs b3cgdGFyZ2V0cyBhc3N1bWUgQUlYIDUuIElkZWEgaXMgdG8gZWZmZWN0aXZlbHkgZGlzcmVnYXJk ICRPQkpFQ1RfTU9ERQotICMgYXQgYnVpbGQgdGltZS4gJE9CSkVDVF9NT0RFIGlzIHJlc3BlY3Rl ZCBhdCAuL2NvbmZpZyBzdGFnZSEKLSAiYWl4LWNjIiwgICAiY2M6LXEzMiAtTyAtREJfRU5ESUFO IC1xbWF4bWVtPTE2Mzg0IC1xcm8gLXFyb2NvbnN0OjotcXRocmVhZGVkIC1EX1RIUkVBRF9TQUZF OkFJWDo6Qk5fTExPTkcgUkM0X0NIQVI6JHtwcGMzMl9hc219OmFpeDMyOmRsZmNuOmFpeC1zaGFy ZWQ6Oi1xMzIgLUc6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Oi1YIDMyIiwK LUBAIC0xNTI1LDcgKzE1MjYsNyBAQCBlbHNlCXsKLSAJJHdwX29iaj0id3BfYmxvY2subyI7Ci0g CX0KLSAkY21sbF9vYmo9JGNtbGxfZW5jCXVubGVzcyAoJGNtbGxfb2JqID1+IC8ubyQvKTsKLS1p ZiAoJG1vZGVzX29iaiA9fiAvZ2hhc2gvKQotK2lmICgkbW9kZXNfb2JqID1+IC9naGFzaFwtLykK LSAJewotIAkkY2ZsYWdzLj0iIC1ER0hBU0hfQVNNIjsKLSAJfQotZGlmZiAtLWdpdCBhL2NvbmZp ZyBiL2NvbmZpZwotaW5kZXggODhiOWJjNi4uOGI4MDgwMiAxMDA3NTUKLS0tLSBhL2NvbmZpZwot KysrIGIvY29uZmlnCi1AQCAtNTg3LDEzICs1ODcsMjAgQEAgY2FzZSAiJEdVRVNTT1MiIGluCi0g CWZpCi0gCTs7Ci0gICBwcGM2NC0qLWxpbnV4MikKLS0JZWNobyAiV0FSTklORyEgSWYgeW91IHdp c2ggdG8gYnVpbGQgNjQtYml0IGxpYnJhcnksIHRoZW4geW91IGhhdmUgdG8iCi0tCWVjaG8gIiAg ICAgICAgIGludm9rZSAnLi9Db25maWd1cmUgbGludXgtcHBjNjQnICptYW51YWxseSouIgotLQlp ZiBbICIkVEVTVCIgPSAiZmFsc2UiIC1hIC10IDEgXTsgdGhlbgotLQkgICAgZWNobyAiICAgICAg ICAgWW91IGhhdmUgYWJvdXQgNSBzZWNvbmRzIHRvIHByZXNzIEN0cmwtQyB0byBhYm9ydC4iCi0t CSAgICAodHJhcCAic3R0eSBgc3R0eSAtZ2AiIDIgMDsgc3R0eSAtaWNhbm9uIG1pbiAwIHRpbWUg NTA7IHJlYWQgd2FzdGUpIDwmMQotKwlpZiBbIC16ICIkS0VSTkVMX0JJVFMiIF07IHRoZW4KLSsJ ICAgIGVjaG8gIldBUk5JTkchIElmIHlvdSB3aXNoIHRvIGJ1aWxkIDY0LWJpdCBsaWJyYXJ5LCB0 aGVuIHlvdSBoYXZlIHRvIgotKwkgICAgZWNobyAiICAgICAgICAgaW52b2tlICcuL0NvbmZpZ3Vy ZSBsaW51eC1wcGM2NCcgKm1hbnVhbGx5Ki4iCi0rCSAgICBpZiBbICIkVEVTVCIgPSAiZmFsc2Ui IC1hIC10IDEgXTsgdGhlbgotKwkJZWNobyAiICAgICAgICAgWW91IGhhdmUgYWJvdXQgNSBzZWNv bmRzIHRvIHByZXNzIEN0cmwtQyB0byBhYm9ydC4iCi0rCQkodHJhcCAic3R0eSBgc3R0eSAtZ2Ai IDIgMDsgc3R0eSAtaWNhbm9uIG1pbiAwIHRpbWUgNTA7IHJlYWQgd2FzdGUpIDwmMQotKwkgICAg ZmkKLSsJZmkKLSsJaWYgWyAiJEtFUk5FTF9CSVRTIiA9ICI2NCIgXTsgdGhlbgotKwkgICAgT1VU PSJsaW51eC1wcGM2NCIKLSsJZWxzZQotKwkgICAgT1VUPSJsaW51eC1wcGMiCi0rCSAgICAoZWNo byAiX19MUDY0X18iIHwgZ2NjIC1FIC14IGMgLSAyPi9kZXYvbnVsbCB8IGdyZXAgIl5fX0xQNjRf XyIgMj4mMSA+IC9kZXYvbnVsbCkgfHwgb3B0aW9ucz0iJG9wdGlvbnMgLW0zMiIKLSAJZmkKLS0J T1VUPSJsaW51eC1wcGMiCi0gCTs7Ci0gICBwcGMtKi1saW51eDIpIE9VVD0ibGludXgtcHBjIiA7 OwotICAgcHBjNjB4LSotdnh3b3JrcyopIE9VVD0idnh3b3Jrcy1wcGM2MHgiIDs7Ci1kaWZmIC0t Z2l0IGEvY3J5cHRvL2Flcy9NYWtlZmlsZSBiL2NyeXB0by9hZXMvTWFrZWZpbGUKLWluZGV4IDQ1 ZWRlMGEuLjg0N2Y0ZWUgMTAwNjQ0Ci0tLS0gYS9jcnlwdG8vYWVzL01ha2VmaWxlCi0rKysgYi9j cnlwdG8vYWVzL01ha2VmaWxlCi1AQCAtNzEsNiArNzEsMTAgQEAgYWVzLXNwYXJjdjkuczogYXNt L2Flcy1zcGFyY3Y5LnBsCi0gCi0gYWVzLXBwYy5zOglhc20vYWVzLXBwYy5wbAotIAkkKFBFUkwp IGFzbS9hZXMtcHBjLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACi0rdnBhZXMtcHBjLnM6CWFzbS92 cGFlcy1wcGMucGwKLSsJJChQRVJMKSBhc20vdnBhZXMtcHBjLnBsICQoUEVSTEFTTV9TQ0hFTUUp ICRACi0rYWVzcDgtcHBjLnM6CWFzbS9hZXNwOC1wcGMucGwKLSsJJChQRVJMKSBhc20vYWVzcDgt cHBjLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACi0gCi0gYWVzLXBhcmlzYy5zOglhc20vYWVzLXBh cmlzYy5wbAotIAkkKFBFUkwpIGFzbS9hZXMtcGFyaXNjLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRA Ci1kaWZmIC0tZ2l0IGEvY3J5cHRvL2Flcy9hc20vYWVzLXBwYy5wbCBiL2NyeXB0by9hZXMvYXNt L2Flcy1wcGMucGwKLWluZGV4IDdjNTJjYmUuLjdhOTlmYzMgMTAwNjQ0Ci0tLS0gYS9jcnlwdG8v YWVzL2FzbS9hZXMtcHBjLnBsCi0rKysgYi9jcnlwdG8vYWVzL2FzbS9hZXMtcHBjLnBsCi1AQCAt NDUsNiArNDUsOCBAQCBpZiAoJGZsYXZvdXIgPX4gLzY0LykgewotIAkkUFVTSAk9InN0dyI7Ci0g fSBlbHNlIHsgZGllICJub25zZW5zZSAkZmxhdm91ciI7IH0KLSAKLSskTElUVExFX0VORElBTiA9 ICgkZmxhdm91cj1+L2xlJC8pID8gJFNJWkVfVCA6IDA7Ci0rCi0gJDAgPX4gbS8oLipbXC9cXF0p W15cL1xcXSskLzsgJGRpcj0kMTsKLSAoICR4bGF0ZT0iJHtkaXJ9cHBjLXhsYXRlLnBsIiBhbmQg LWYgJHhsYXRlICkgb3IKLSAoICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS9wcGMteGxhdGUu cGwiIGFuZCAtZiAkeGxhdGUpIG9yCi1AQCAtNjgsNyArNzAsNyBAQCAka2V5PSJyNSI7Ci0gJFRi bDA9InIzIjsKLSAkVGJsMT0icjYiOwotICRUYmwyPSJyNyI7Ci0tJFRibDM9InIyIjsKLSskVGJs Mz0kb3V0OwkjIHN0YXkgYXdheSBmcm9tICJyMiI7ICRvdXQgaXMgb2ZmbG9hZGVkIHRvIHN0YWNr Ci0gCi0gJHMwPSJyOCI7Ci0gJHMxPSJyOSI7Ci1AQCAtNzYsNyArNzgsNyBAQCAkczI9InIxMCI7 Ci0gJHMzPSJyMTEiOwotIAotICR0MD0icjEyIjsKLS0kdDE9InIxMyI7Ci0rJHQxPSJyMCI7CSMg c3RheSBhd2F5IGZyb20gInIxMyI7Ci0gJHQyPSJyMTQiOwotICR0Mz0icjE1IjsKLSAKLUBAIC0x MDAsOSArMTAyLDYgQEAgJGFjYzEzPSJyMjkiOwotICRhY2MxND0icjMwIjsKLSAkYWNjMTU9InIz MSI7Ci0gCi0tIyBzdGF5IGF3YXkgZnJvbSBUTFMgcG9pbnRlcgotLWlmICgkU0laRV9UPT04KQl7 IGRpZSBpZiAoJHQxIG5lICJyMTMiKTsgICR0MT0icjAiOwkJfQotLWVsc2UJCXsgZGllIGlmICgk VGJsMyBuZSAicjIiKTsgJFRibDM9JHQwOyAkdDA9InIwIjsJfQotICRtYXNrODA9JFRibDI7Ci0g JG1hc2sxYj0kVGJsMzsKLSAKLUBAIC0zMzcsOCArMzM2LDcgQEAgJGNvZGUuPTw8X19fOwotIAkk U1RVCSRzcCwtJEZSQU1FKCRzcCkKLSAJbWZscglyMAotIAotLQkkUFVTSAkkdG9jLGAkRlJBTUUt JFNJWkVfVCoyMGAoJHNwKQotLQkkUFVTSAlyMTMsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3ApCi0r CSRQVVNICSRvdXQsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3ApCi0gCSRQVVNICXIxNCxgJEZSQU1F LSRTSVpFX1QqMThgKCRzcCkKLSAJJFBVU0gJcjE1LGAkRlJBTUUtJFNJWkVfVCoxN2AoJHNwKQot IAkkUFVTSAlyMTYsYCRGUkFNRS0kU0laRV9UKjE2YCgkc3ApCi1AQCAtMzY1LDE2ICszNjMsNjEg QEAgJGNvZGUuPTw8X19fOwotIAlibmUJTGVuY191bmFsaWduZWQKLSAKLSBMZW5jX3VuYWxpZ25l ZF9vazoKLStfX18KLSskY29kZS49PDxfX18gaWYgKCEkTElUVExFX0VORElBTik7Ci0gCWx3egkk czAsMCgkaW5wKQotIAlsd3oJJHMxLDQoJGlucCkKLSAJbHd6CSRzMiw4KCRpbnApCi0gCWx3egkk czMsMTIoJGlucCkKLStfX18KLSskY29kZS49PDxfX18gaWYgKCRMSVRUTEVfRU5ESUFOKTsKLSsJ bHd6CSR0MCwwKCRpbnApCi0rCWx3egkkdDEsNCgkaW5wKQotKwlsd3oJJHQyLDgoJGlucCkKLSsJ bHd6CSR0MywxMigkaW5wKQotKwlyb3Rsd2kJJHMwLCR0MCw4Ci0rCXJvdGx3aQkkczEsJHQxLDgK LSsJcm90bHdpCSRzMiwkdDIsOAotKwlyb3Rsd2kJJHMzLCR0Myw4Ci0rCXJsd2ltaQkkczAsJHQw LDI0LDAsNwotKwlybHdpbWkJJHMxLCR0MSwyNCwwLDcKLSsJcmx3aW1pCSRzMiwkdDIsMjQsMCw3 Ci0rCXJsd2ltaQkkczMsJHQzLDI0LDAsNwotKwlybHdpbWkJJHMwLCR0MCwyNCwxNiwyMwotKwly bHdpbWkJJHMxLCR0MSwyNCwxNiwyMwotKwlybHdpbWkJJHMyLCR0MiwyNCwxNiwyMwotKwlybHdp bWkJJHMzLCR0MywyNCwxNiwyMwotK19fXwotKyRjb2RlLj08PF9fXzsKLSAJYmwJTEFFU19UZQot IAlibAlMcHBjX0FFU19lbmNyeXB0X2NvbXBhY3QKLSsJJFBPUAkkb3V0LGAkRlJBTUUtJFNJWkVf VCoxOWAoJHNwKQotK19fXwotKyRjb2RlLj08PF9fXyBpZiAoJExJVFRMRV9FTkRJQU4pOwotKwly b3Rsd2kJJHQwLCRzMCw4Ci0rCXJvdGx3aQkkdDEsJHMxLDgKLSsJcm90bHdpCSR0MiwkczIsOAot Kwlyb3Rsd2kJJHQzLCRzMyw4Ci0rCXJsd2ltaQkkdDAsJHMwLDI0LDAsNwotKwlybHdpbWkJJHQx LCRzMSwyNCwwLDcKLSsJcmx3aW1pCSR0MiwkczIsMjQsMCw3Ci0rCXJsd2ltaQkkdDMsJHMzLDI0 LDAsNwotKwlybHdpbWkJJHQwLCRzMCwyNCwxNiwyMwotKwlybHdpbWkJJHQxLCRzMSwyNCwxNiwy MwotKwlybHdpbWkJJHQyLCRzMiwyNCwxNiwyMwotKwlybHdpbWkJJHQzLCRzMywyNCwxNiwyMwot KwlzdHcJJHQwLDAoJG91dCkKLSsJc3R3CSR0MSw0KCRvdXQpCi0rCXN0dwkkdDIsOCgkb3V0KQot KwlzdHcJJHQzLDEyKCRvdXQpCi0rX19fCi0rJGNvZGUuPTw8X19fIGlmICghJExJVFRMRV9FTkRJ QU4pOwotIAlzdHcJJHMwLDAoJG91dCkKLSAJc3R3CSRzMSw0KCRvdXQpCi0gCXN0dwkkczIsOCgk b3V0KQotIAlzdHcJJHMzLDEyKCRvdXQpCi0rX19fCi0rJGNvZGUuPTw8X19fOwotIAliCUxlbmNf ZG9uZQotIAotIExlbmNfdW5hbGlnbmVkOgotQEAgLTQxNyw2ICs0NjAsNyBAQCBMZW5jX3hwYWdl OgotIAotIAlibAlMQUVTX1RlCi0gCWJsCUxwcGNfQUVTX2VuY3J5cHRfY29tcGFjdAotKwkkUE9Q CSRvdXQsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3ApCi0gCi0gCWV4dHJ3aQkkYWNjMDAsJHMwLDgs MAotIAlleHRyd2kJJGFjYzAxLCRzMCw4LDgKLUBAIC00NDksOCArNDkzLDYgQEAgTGVuY194cGFn ZToKLSAKLSBMZW5jX2RvbmU6Ci0gCSRQT1AJcjAsYCRGUkFNRSskTFJTQVZFYCgkc3ApCi0tCSRQ T1AJJHRvYyxgJEZSQU1FLSRTSVpFX1QqMjBgKCRzcCkKLS0JJFBPUAlyMTMsYCRGUkFNRS0kU0la RV9UKjE5YCgkc3ApCi0gCSRQT1AJcjE0LGAkRlJBTUUtJFNJWkVfVCoxOGAoJHNwKQotIAkkUE9Q CXIxNSxgJEZSQU1FLSRTSVpFX1QqMTdgKCRzcCkKLSAJJFBPUAlyMTYsYCRGUkFNRS0kU0laRV9U KjE2YCgkc3ApCi1AQCAtNzY0LDYgKzgwNiw3IEBAIExlbmNfY29tcGFjdF9kb25lOgotIAlibHIK LSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0rLnNpemUJLkFFU19lbmNy eXB0LC4tLkFFU19lbmNyeXB0Ci0gCi0gLmdsb2JsCS5BRVNfZGVjcnlwdAotIC5hbGlnbgk3Ci1A QCAtNzcxLDggKzgxNCw3IEBAIExlbmNfY29tcGFjdF9kb25lOgotIAkkU1RVCSRzcCwtJEZSQU1F KCRzcCkKLSAJbWZscglyMAotIAotLQkkUFVTSAkkdG9jLGAkRlJBTUUtJFNJWkVfVCoyMGAoJHNw KQotLQkkUFVTSAlyMTMsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3ApCi0rCSRQVVNICSRvdXQsYCRG UkFNRS0kU0laRV9UKjE5YCgkc3ApCi0gCSRQVVNICXIxNCxgJEZSQU1FLSRTSVpFX1QqMThgKCRz cCkKLSAJJFBVU0gJcjE1LGAkRlJBTUUtJFNJWkVfVCoxN2AoJHNwKQotIAkkUFVTSAlyMTYsYCRG UkFNRS0kU0laRV9UKjE2YCgkc3ApCi1AQCAtNzk5LDE2ICs4NDEsNjEgQEAgTGVuY19jb21wYWN0 X2RvbmU6Ci0gCWJuZQlMZGVjX3VuYWxpZ25lZAotIAotIExkZWNfdW5hbGlnbmVkX29rOgotK19f XwotKyRjb2RlLj08PF9fXyBpZiAoISRMSVRUTEVfRU5ESUFOKTsKLSAJbHd6CSRzMCwwKCRpbnAp Ci0gCWx3egkkczEsNCgkaW5wKQotIAlsd3oJJHMyLDgoJGlucCkKLSAJbHd6CSRzMywxMigkaW5w KQotK19fXwotKyRjb2RlLj08PF9fXyBpZiAoJExJVFRMRV9FTkRJQU4pOwotKwlsd3oJJHQwLDAo JGlucCkKLSsJbHd6CSR0MSw0KCRpbnApCi0rCWx3egkkdDIsOCgkaW5wKQotKwlsd3oJJHQzLDEy KCRpbnApCi0rCXJvdGx3aQkkczAsJHQwLDgKLSsJcm90bHdpCSRzMSwkdDEsOAotKwlyb3Rsd2kJ JHMyLCR0Miw4Ci0rCXJvdGx3aQkkczMsJHQzLDgKLSsJcmx3aW1pCSRzMCwkdDAsMjQsMCw3Ci0r CXJsd2ltaQkkczEsJHQxLDI0LDAsNwotKwlybHdpbWkJJHMyLCR0MiwyNCwwLDcKLSsJcmx3aW1p CSRzMywkdDMsMjQsMCw3Ci0rCXJsd2ltaQkkczAsJHQwLDI0LDE2LDIzCi0rCXJsd2ltaQkkczEs JHQxLDI0LDE2LDIzCi0rCXJsd2ltaQkkczIsJHQyLDI0LDE2LDIzCi0rCXJsd2ltaQkkczMsJHQz LDI0LDE2LDIzCi0rX19fCi0rJGNvZGUuPTw8X19fOwotIAlibAlMQUVTX1RkCi0gCWJsCUxwcGNf QUVTX2RlY3J5cHRfY29tcGFjdAotKwkkUE9QCSRvdXQsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3Ap Ci0rX19fCi0rJGNvZGUuPTw8X19fIGlmICgkTElUVExFX0VORElBTik7Ci0rCXJvdGx3aQkkdDAs JHMwLDgKLSsJcm90bHdpCSR0MSwkczEsOAotKwlyb3Rsd2kJJHQyLCRzMiw4Ci0rCXJvdGx3aQkk dDMsJHMzLDgKLSsJcmx3aW1pCSR0MCwkczAsMjQsMCw3Ci0rCXJsd2ltaQkkdDEsJHMxLDI0LDAs NwotKwlybHdpbWkJJHQyLCRzMiwyNCwwLDcKLSsJcmx3aW1pCSR0MywkczMsMjQsMCw3Ci0rCXJs d2ltaQkkdDAsJHMwLDI0LDE2LDIzCi0rCXJsd2ltaQkkdDEsJHMxLDI0LDE2LDIzCi0rCXJsd2lt aQkkdDIsJHMyLDI0LDE2LDIzCi0rCXJsd2ltaQkkdDMsJHMzLDI0LDE2LDIzCi0rCXN0dwkkdDAs MCgkb3V0KQotKwlzdHcJJHQxLDQoJG91dCkKLSsJc3R3CSR0Miw4KCRvdXQpCi0rCXN0dwkkdDMs MTIoJG91dCkKLStfX18KLSskY29kZS49PDxfX18gaWYgKCEkTElUVExFX0VORElBTik7Ci0gCXN0 dwkkczAsMCgkb3V0KQotIAlzdHcJJHMxLDQoJG91dCkKLSAJc3R3CSRzMiw4KCRvdXQpCi0gCXN0 dwkkczMsMTIoJG91dCkKLStfX18KLSskY29kZS49PDxfX187Ci0gCWIJTGRlY19kb25lCi0gCi0g TGRlY191bmFsaWduZWQ6Ci1AQCAtODUxLDYgKzkzOCw3IEBAIExkZWNfeHBhZ2U6Ci0gCi0gCWJs CUxBRVNfVGQKLSAJYmwJTHBwY19BRVNfZGVjcnlwdF9jb21wYWN0Ci0rCSRQT1AJJG91dCxgJEZS QU1FLSRTSVpFX1QqMTlgKCRzcCkKLSAKLSAJZXh0cndpCSRhY2MwMCwkczAsOCwwCi0gCWV4dHJ3 aQkkYWNjMDEsJHMwLDgsOAotQEAgLTg4Myw4ICs5NzEsNiBAQCBMZGVjX3hwYWdlOgotIAotIExk ZWNfZG9uZToKLSAJJFBPUAlyMCxgJEZSQU1FKyRMUlNBVkVgKCRzcCkKLS0JJFBPUAkkdG9jLGAk RlJBTUUtJFNJWkVfVCoyMGAoJHNwKQotLQkkUE9QCXIxMyxgJEZSQU1FLSRTSVpFX1QqMTlgKCRz cCkKLSAJJFBPUAlyMTQsYCRGUkFNRS0kU0laRV9UKjE4YCgkc3ApCi0gCSRQT1AJcjE1LGAkRlJB TUUtJFNJWkVfVCoxN2AoJHNwKQotIAkkUE9QCXIxNixgJEZSQU1FLSRTSVpFX1QqMTZgKCRzcCkK LUBAIC0xMzU1LDYgKzE0NDEsNyBAQCBMZGVjX2NvbXBhY3RfZG9uZToKLSAJYmxyCi0gCS5sb25n CTAKLSAJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDAsMAotKy5zaXplCS5BRVNfZGVjcnlwdCwuLS5B RVNfZGVjcnlwdAotIAotIC5hc2NpegkiQUVTIGZvciBQUEMsIENSWVBUT0dBTVMgYnkgPGFwcHJv XEBvcGVuc3NsLm9yZz4iCi0gLmFsaWduCTcKLWRpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS9h ZXNwOC1wcGMucGwgYi9jcnlwdG8vYWVzL2FzbS9hZXNwOC1wcGMucGwKLW5ldyBmaWxlIG1vZGUg MTAwNzU1Ci1pbmRleCAwMDAwMDAwLi4zZWU4OTc5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9jcnlw dG8vYWVzL2FzbS9hZXNwOC1wcGMucGwKLUBAIC0wLDAgKzEsMTk0MCBAQAotKyMhL3Vzci9iaW4v ZW52IHBlcmwKLSsjCi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292 IDxhcHByb0BvcGVuc3NsLm9yZz4gZm9yIHRoZSBPcGVuU1NMCi0rIyBwcm9qZWN0LiBUaGUgbW9k dWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCi0rIyBDUllQ VE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVy dGhlcgotKyMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRv Z2Ftcy8uCi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotKyMKLSsjIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgc3Vw cG9ydCBmb3IgQUVTIGluc3RydWN0aW9ucyBhcyBwZXIgUG93ZXJJU0EKLSsjIHNwZWNpZmljYXRp b24gdmVyc2lvbiAyLjA3LCBmaXJzdCBpbXBsZW1lbnRlZCBieSBQT1dFUjggcHJvY2Vzc29yLgot KyMgVGhlIG1vZHVsZSBpcyBlbmRpYW4tYWdub3N0aWMgaW4gc2Vuc2UgdGhhdCBpdCBzdXBwb3J0 cyBib3RoIGJpZy0KLSsjIGFuZCBsaXR0bGUtZW5kaWFuIGNhc2VzLiBEYXRhIGFsaWdubWVudCBp biBwYXJhbGxlbGl6YWJsZSBtb2RlcyBpcwotKyMgaGFuZGxlZCB3aXRoIFZTWCBsb2FkcyBhbmQg c3RvcmVzLCB3aGljaCBpbXBsaWVzIE1TUi5WU1ggZmxhZyBiZWluZwotKyMgc2V0LiBJdCBzaG91 bGQgYWxzbyBiZSBub3RlZCB0aGF0IElTQSBzcGVjaWZpY2F0aW9uIGRvZXNuJ3QgcHJvaGliaXQK LSsjIGFsaWdubWVudCBleGNlcHRpb25zIGZvciB0aGVzZSBpbnN0cnVjdGlvbnMgb24gcGFnZSBi b3VuZGFyaWVzLgotKyMgSW5pdGlhbGx5IGFsaWdubWVudCB3YXMgaGFuZGxlZCBpbiBwdXJlIEFs dGlWZWMvVk1YIHdheSBbd2hlbiBkYXRhCi0rIyBpcyBhbGlnbmVkIHByb2dyYW1tYXRpY2FsbHks IHdoaWNoIGluIHR1cm4gZ3VhcmFudGVlcyBleGNlcHRpb24tCi0rIyBmcmVlIGV4ZWN1dGlvbl0s IGJ1dCBpdCB0dXJuZWQgdG8gaGFtcGVyIHBlcmZvcm1hbmNlIHdoZW4gdmNpcGhlcgotKyMgaW5z dHJ1Y3Rpb25zIGFyZSBpbnRlcmxlYXZlZC4gSXQncyByZWNrb25lZCB0aGF0IGV2ZW50dWFsCi0r IyBtaXNhbGlnbm1lbnQgcGVuYWx0aWVzIGF0IHBhZ2UgYm91bmRhcmllcyBhcmUgaW4gYXZlcmFn ZSBsb3dlcgotKyMgdGhhbiBhZGRpdGlvbmFsIG92ZXJoZWFkIGluIHB1cmUgQWx0aVZlYyBhcHBy b2FjaC4KLSsKLSskZmxhdm91ciA9IHNoaWZ0OwotKwotK2lmICgkZmxhdm91ciA9fiAvNjQvKSB7 Ci0rCSRTSVpFX1QJPTg7Ci0rCSRMUlNBVkUJPTIqJFNJWkVfVDsKLSsJJFNUVQk9InN0ZHUiOwot KwkkUE9QCT0ibGQiOwotKwkkUFVTSAk9InN0ZCI7Ci0rCSRVQ01QCT0iY21wbGQiOwotKwkkU0hM CT0ic2xkaSI7Ci0rfSBlbHNpZiAoJGZsYXZvdXIgPX4gLzMyLykgewotKwkkU0laRV9UCT00Owot KwkkTFJTQVZFCT0kU0laRV9UOwotKwkkU1RVCT0ic3R3dSI7Ci0rCSRQT1AJPSJsd3oiOwotKwkk UFVTSAk9InN0dyI7Ci0rCSRVQ01QCT0iY21wbHciOwotKwkkU0hMCT0ic2x3aSI7Ci0rfSBlbHNl IHsgZGllICJub25zZW5zZSAkZmxhdm91ciI7IH0KLSsKLSskTElUVExFX0VORElBTiA9ICgkZmxh dm91cj1+L2xlJC8pID8gJFNJWkVfVCA6IDA7Ci0rCi0rJDAgPX4gbS8oLipbXC9cXF0pW15cL1xc XSskLzsgJGRpcj0kMTsKLSsoICR4bGF0ZT0iJHtkaXJ9cHBjLXhsYXRlLnBsIiBhbmQgLWYgJHhs YXRlICkgb3IKLSsoICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS9wcGMteGxhdGUucGwiIGFu ZCAtZiAkeGxhdGUpIG9yCi0rZGllICJjYW4ndCBsb2NhdGUgcHBjLXhsYXRlLnBsIjsKLSsKLStv cGVuIFNURE9VVCwifCAkXlggJHhsYXRlICRmbGF2b3VyICIuc2hpZnQgfHwgZGllICJjYW4ndCBj YWxsICR4bGF0ZTogJCEiOwotKwotKyRGUkFNRT04KiRTSVpFX1Q7Ci0rJHByZWZpeD0iYWVzX3A4 IjsKLSsKLSskc3A9InIxIjsKLSskdnJzYXZlPSJyMTIiOwotKwotKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LSt7e3sJIyBLZXkgc2V0dXAgcHJvY2VkdXJlcwkJCQkJCSMKLStteSAoJGlucCwkYml0cywkb3V0 LCRwdHIsJGNudCwkcm91bmRzKT1tYXAoInIkXyIsKDMuLjgpKTsKLStteSAoJHplcm8sJGluMCwk aW4xLCRrZXksJHJjb24sJG1hc2ssJHRtcCk9bWFwKCJ2JF8iLCgwLi42KSk7Ci0rbXkgKCRzdGFn ZSwkb3V0cGVybSwkb3V0bWFzaywkb3V0aGVhZCwkb3V0dGFpbCk9bWFwKCJ2JF8iLCg3Li4xMSkp OwotKwotKyRjb2RlLj08PF9fXzsKLSsubWFjaGluZQkiYW55IgotKwotKy50ZXh0Ci0rCi0rLmFs aWduCTcKLStyY29uOgotKy5sb25nCTB4MDEwMDAwMDAsIDB4MDEwMDAwMDAsIDB4MDEwMDAwMDAs IDB4MDEwMDAwMDAJP3JldgotKy5sb25nCTB4MWIwMDAwMDAsIDB4MWIwMDAwMDAsIDB4MWIwMDAw MDAsIDB4MWIwMDAwMDAJP3JldgotKy5sb25nCTB4MGQwZTBmMGMsIDB4MGQwZTBmMGMsIDB4MGQw ZTBmMGMsIDB4MGQwZTBmMGMJP3JldgotKy5sb25nCTAsMCwwLDAJCQkJCQk/YXNpcwotK0xjb25z dHM6Ci0rCW1mbHIJcjAKLSsJYmNsCTIwLDMxLFwkKzQKLSsJbWZscgkkcHRyCSAjdnZ2dnYgImRp c3RhbmNlIGJldHdlZW4gLiBhbmQgcmNvbgotKwlhZGRpCSRwdHIsJHB0ciwtMHg0OAotKwltdGxy CXIwCi0rCWJscgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKLSsuYXNj aXoJIkFFUyBmb3IgUG93ZXJJU0EgMi4wNywgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wu b3JnPiIKLSsKLSsuZ2xvYmwJLiR7cHJlZml4fV9zZXRfZW5jcnlwdF9rZXkKLSsuYWxpZ24JNQot Ky4ke3ByZWZpeH1fc2V0X2VuY3J5cHRfa2V5OgotK0xzZXRfZW5jcnlwdF9rZXk6Ci0rCW1mbHIJ CXIxMQotKwkkUFVTSAkJcjExLCRMUlNBVkUoJHNwKQotKwotKwlsaQkJJHB0ciwtMQotKwkke1VD TVB9aQkkaW5wLDAKLSsJYmVxLQkJTGVuY19rZXlfYWJvcnQJCSMgaWYgKCRpbnA9PTApIHJldHVy biAtMTsKLSsJJHtVQ01QfWkJJG91dCwwCi0rCWJlcS0JCUxlbmNfa2V5X2Fib3J0CQkjIGlmICgk b3V0PT0wKSByZXR1cm4gLTE7Ci0rCWxpCQkkcHRyLC0yCi0rCWNtcHdpCQkkYml0cywxMjgKLSsJ Ymx0LQkJTGVuY19rZXlfYWJvcnQKLSsJY21wd2kJCSRiaXRzLDI1NgotKwliZ3QtCQlMZW5jX2tl eV9hYm9ydAotKwlhbmRpLgkJcjAsJGJpdHMsMHgzZgotKwlibmUtCQlMZW5jX2tleV9hYm9ydAot KwotKwlsaXMJCXIwLDB4ZmZmMAotKwltZnNwcgkJJHZyc2F2ZSwyNTYKLSsJbXRzcHIJCTI1Nixy MAotKwotKwlibAkJTGNvbnN0cwotKwltdGxyCQlyMTEKLSsKLSsJbmVnCQlyOSwkaW5wCi0rCWx2 eAkJJGluMCwwLCRpbnAKLSsJYWRkaQkJJGlucCwkaW5wLDE1CQkjIDE1IGlzIG5vdCB0eXBvCi0r CWx2c3IJCSRrZXksMCxyOQkJIyBib3Jyb3cgJGtleQotKwlsaQkJcjgsMHgyMAotKwljbXB3aQkJ JGJpdHMsMTkyCi0rCWx2eAkJJGluMSwwLCRpbnAKLSsJbGU/dnNwbHRpc2IJJG1hc2ssMHgwZgkJ IyBib3Jyb3cgJG1hc2sKLSsJbHZ4CQkkcmNvbiwwLCRwdHIKLSsJbGU/dnhvcgkJJGtleSwka2V5 LCRtYXNrCQkjIGFkanVzdCBmb3IgYnl0ZSBzd2FwCi0rCWx2eAkJJG1hc2sscjgsJHB0cgotKwlh ZGRpCQkkcHRyLCRwdHIsMHgxMAotKwl2cGVybQkJJGluMCwkaW4wLCRpbjEsJGtleQkjIGFsaWdu IFthbmQgYnl0ZSBzd2FwIGluIExFXQotKwlsaQkJJGNudCw4Ci0rCXZ4b3IJCSR6ZXJvLCR6ZXJv LCR6ZXJvCi0rCW10Y3RyCQkkY250Ci0rCi0rCT9sdnNyCQkkb3V0cGVybSwwLCRvdXQKLSsJdnNw bHRpc2IJJG91dG1hc2ssLTEKLSsJbHZ4CQkkb3V0aGVhZCwwLCRvdXQKLSsJP3ZwZXJtCQkkb3V0 bWFzaywkemVybywkb3V0bWFzaywkb3V0cGVybQotKwotKwlibHQJCUxvb3AxMjgKLSsJYWRkaQkJ JGlucCwkaW5wLDgKLSsJYmVxCQlMMTkyCi0rCWFkZGkJCSRpbnAsJGlucCw4Ci0rCWIJCUwyNTYK LSsKLSsuYWxpZ24JNAotK0xvb3AxMjg6Ci0rCXZwZXJtCQkka2V5LCRpbjAsJGluMCwkbWFzawkj IHJvdGF0ZS1uLXNwbGF0Ci0rCXZzbGRvaQkJJHRtcCwkemVybywkaW4wLDEyCSMgPj4zMgotKwkg dnBlcm0JCSRvdXR0YWlsLCRpbjAsJGluMCwkb3V0cGVybQkjIHJvdGF0ZQotKwkgdnNlbAkJJHN0 YWdlLCRvdXRoZWFkLCRvdXR0YWlsLCRvdXRtYXNrCi0rCSB2bXIJCSRvdXRoZWFkLCRvdXR0YWls Ci0rCXZjaXBoZXJsYXN0CSRrZXksJGtleSwkcmNvbgotKwkgc3R2eAkJJHN0YWdlLDAsJG91dAot KwkgYWRkaQkJJG91dCwkb3V0LDE2Ci0rCi0rCXZ4b3IJCSRpbjAsJGluMCwkdG1wCi0rCXZzbGRv aQkJJHRtcCwkemVybywkdG1wLDEyCSMgPj4zMgotKwl2eG9yCQkkaW4wLCRpbjAsJHRtcAotKwl2 c2xkb2kJCSR0bXAsJHplcm8sJHRtcCwxMgkjID4+MzIKLSsJdnhvcgkJJGluMCwkaW4wLCR0bXAK LSsJIHZhZGR1d20JJHJjb24sJHJjb24sJHJjb24KLSsJdnhvcgkJJGluMCwkaW4wLCRrZXkKLSsJ YmRuegkJTG9vcDEyOAotKwotKwlsdngJCSRyY29uLDAsJHB0cgkJIyBsYXN0IHR3byByb3VuZCBr ZXlzCi0rCi0rCXZwZXJtCQkka2V5LCRpbjAsJGluMCwkbWFzawkjIHJvdGF0ZS1uLXNwbGF0Ci0r CXZzbGRvaQkJJHRtcCwkemVybywkaW4wLDEyCSMgPj4zMgotKwkgdnBlcm0JCSRvdXR0YWlsLCRp bjAsJGluMCwkb3V0cGVybQkjIHJvdGF0ZQotKwkgdnNlbAkJJHN0YWdlLCRvdXRoZWFkLCRvdXR0 YWlsLCRvdXRtYXNrCi0rCSB2bXIJCSRvdXRoZWFkLCRvdXR0YWlsCi0rCXZjaXBoZXJsYXN0CSRr ZXksJGtleSwkcmNvbgotKwkgc3R2eAkJJHN0YWdlLDAsJG91dAotKwkgYWRkaQkJJG91dCwkb3V0 LDE2Ci0rCi0rCXZ4b3IJCSRpbjAsJGluMCwkdG1wCi0rCXZzbGRvaQkJJHRtcCwkemVybywkdG1w LDEyCSMgPj4zMgotKwl2eG9yCQkkaW4wLCRpbjAsJHRtcAotKwl2c2xkb2kJCSR0bXAsJHplcm8s JHRtcCwxMgkjID4+MzIKLSsJdnhvcgkJJGluMCwkaW4wLCR0bXAKLSsJIHZhZGR1d20JJHJjb24s JHJjb24sJHJjb24KLSsJdnhvcgkJJGluMCwkaW4wLCRrZXkKLSsKLSsJdnBlcm0JCSRrZXksJGlu MCwkaW4wLCRtYXNrCSMgcm90YXRlLW4tc3BsYXQKLSsJdnNsZG9pCQkkdG1wLCR6ZXJvLCRpbjAs MTIJIyA+PjMyCi0rCSB2cGVybQkJJG91dHRhaWwsJGluMCwkaW4wLCRvdXRwZXJtCSMgcm90YXRl Ci0rCSB2c2VsCQkkc3RhZ2UsJG91dGhlYWQsJG91dHRhaWwsJG91dG1hc2sKLSsJIHZtcgkJJG91 dGhlYWQsJG91dHRhaWwKLSsJdmNpcGhlcmxhc3QJJGtleSwka2V5LCRyY29uCi0rCSBzdHZ4CQkk c3RhZ2UsMCwkb3V0Ci0rCSBhZGRpCQkkb3V0LCRvdXQsMTYKLSsKLSsJdnhvcgkJJGluMCwkaW4w LCR0bXAKLSsJdnNsZG9pCQkkdG1wLCR6ZXJvLCR0bXAsMTIJIyA+PjMyCi0rCXZ4b3IJCSRpbjAs JGluMCwkdG1wCi0rCXZzbGRvaQkJJHRtcCwkemVybywkdG1wLDEyCSMgPj4zMgotKwl2eG9yCQkk aW4wLCRpbjAsJHRtcAotKwl2eG9yCQkkaW4wLCRpbjAsJGtleQotKwkgdnBlcm0JCSRvdXR0YWls LCRpbjAsJGluMCwkb3V0cGVybQkjIHJvdGF0ZQotKwkgdnNlbAkJJHN0YWdlLCRvdXRoZWFkLCRv dXR0YWlsLCRvdXRtYXNrCi0rCSB2bXIJCSRvdXRoZWFkLCRvdXR0YWlsCi0rCSBzdHZ4CQkkc3Rh Z2UsMCwkb3V0Ci0rCi0rCWFkZGkJCSRpbnAsJG91dCwxNQkJIyAxNSBpcyBub3QgdHlwbwotKwlh ZGRpCQkkb3V0LCRvdXQsMHg1MAotKwotKwlsaQkJJHJvdW5kcywxMAotKwliCQlMZG9uZQotKwot Ky5hbGlnbgk0Ci0rTDE5MjoKLSsJbHZ4CQkkdG1wLDAsJGlucAotKwlsaQkJJGNudCw0Ci0rCSB2 cGVybQkJJG91dHRhaWwsJGluMCwkaW4wLCRvdXRwZXJtCSMgcm90YXRlCi0rCSB2c2VsCQkkc3Rh Z2UsJG91dGhlYWQsJG91dHRhaWwsJG91dG1hc2sKLSsJIHZtcgkJJG91dGhlYWQsJG91dHRhaWwK LSsJIHN0dngJCSRzdGFnZSwwLCRvdXQKLSsJIGFkZGkJCSRvdXQsJG91dCwxNgotKwl2cGVybQkJ JGluMSwkaW4xLCR0bXAsJGtleQkjIGFsaWduIFthbmQgYnl0ZSBzd2FwIGluIExFXQotKwl2c3Bs dGlzYgkka2V5LDgJCQkjIGJvcnJvdyAka2V5Ci0rCW10Y3RyCQkkY250Ci0rCXZzdWJ1Ym0JCSRt YXNrLCRtYXNrLCRrZXkJIyBhZGp1c3QgdGhlIG1hc2sKLSsKLStMb29wMTkyOgotKwl2cGVybQkJ JGtleSwkaW4xLCRpbjEsJG1hc2sJIyByb2F0ZS1uLXNwbGF0Ci0rCXZzbGRvaQkJJHRtcCwkemVy bywkaW4wLDEyCSMgPj4zMgotKwl2Y2lwaGVybGFzdAkka2V5LCRrZXksJHJjb24KLSsKLSsJdnhv cgkJJGluMCwkaW4wLCR0bXAKLSsJdnNsZG9pCQkkdG1wLCR6ZXJvLCR0bXAsMTIJIyA+PjMyCi0r CXZ4b3IJCSRpbjAsJGluMCwkdG1wCi0rCXZzbGRvaQkJJHRtcCwkemVybywkdG1wLDEyCSMgPj4z MgotKwl2eG9yCQkkaW4wLCRpbjAsJHRtcAotKwotKwkgdnNsZG9pCQkkc3RhZ2UsJHplcm8sJGlu MSw4Ci0rCXZzcGx0dwkJJHRtcCwkaW4wLDMKLSsJdnhvcgkJJHRtcCwkdG1wLCRpbjEKLSsJdnNs ZG9pCQkkaW4xLCR6ZXJvLCRpbjEsMTIJIyA+PjMyCi0rCSB2YWRkdXdtCSRyY29uLCRyY29uLCRy Y29uCi0rCXZ4b3IJCSRpbjEsJGluMSwkdG1wCi0rCXZ4b3IJCSRpbjAsJGluMCwka2V5Ci0rCXZ4 b3IJCSRpbjEsJGluMSwka2V5Ci0rCSB2c2xkb2kJCSRzdGFnZSwkc3RhZ2UsJGluMCw4Ci0rCi0r CXZwZXJtCQkka2V5LCRpbjEsJGluMSwkbWFzawkjIHJvdGF0ZS1uLXNwbGF0Ci0rCXZzbGRvaQkJ JHRtcCwkemVybywkaW4wLDEyCSMgPj4zMgotKwkgdnBlcm0JCSRvdXR0YWlsLCRzdGFnZSwkc3Rh Z2UsJG91dHBlcm0JIyByb3RhdGUKLSsJIHZzZWwJCSRzdGFnZSwkb3V0aGVhZCwkb3V0dGFpbCwk b3V0bWFzawotKwkgdm1yCQkkb3V0aGVhZCwkb3V0dGFpbAotKwl2Y2lwaGVybGFzdAkka2V5LCRr ZXksJHJjb24KLSsJIHN0dngJCSRzdGFnZSwwLCRvdXQKLSsJIGFkZGkJCSRvdXQsJG91dCwxNgot KwotKwkgdnNsZG9pCQkkc3RhZ2UsJGluMCwkaW4xLDgKLSsJdnhvcgkJJGluMCwkaW4wLCR0bXAK LSsJdnNsZG9pCQkkdG1wLCR6ZXJvLCR0bXAsMTIJIyA+PjMyCi0rCSB2cGVybQkJJG91dHRhaWws JHN0YWdlLCRzdGFnZSwkb3V0cGVybQkjIHJvdGF0ZQotKwkgdnNlbAkJJHN0YWdlLCRvdXRoZWFk LCRvdXR0YWlsLCRvdXRtYXNrCi0rCSB2bXIJCSRvdXRoZWFkLCRvdXR0YWlsCi0rCXZ4b3IJCSRp bjAsJGluMCwkdG1wCi0rCXZzbGRvaQkJJHRtcCwkemVybywkdG1wLDEyCSMgPj4zMgotKwl2eG9y CQkkaW4wLCRpbjAsJHRtcAotKwkgc3R2eAkJJHN0YWdlLDAsJG91dAotKwkgYWRkaQkJJG91dCwk b3V0LDE2Ci0rCi0rCXZzcGx0dwkJJHRtcCwkaW4wLDMKLSsJdnhvcgkJJHRtcCwkdG1wLCRpbjEK LSsJdnNsZG9pCQkkaW4xLCR6ZXJvLCRpbjEsMTIJIyA+PjMyCi0rCSB2YWRkdXdtCSRyY29uLCRy Y29uLCRyY29uCi0rCXZ4b3IJCSRpbjEsJGluMSwkdG1wCi0rCXZ4b3IJCSRpbjAsJGluMCwka2V5 Ci0rCXZ4b3IJCSRpbjEsJGluMSwka2V5Ci0rCSB2cGVybQkJJG91dHRhaWwsJGluMCwkaW4wLCRv dXRwZXJtCSMgcm90YXRlCi0rCSB2c2VsCQkkc3RhZ2UsJG91dGhlYWQsJG91dHRhaWwsJG91dG1h c2sKLSsJIHZtcgkJJG91dGhlYWQsJG91dHRhaWwKLSsJIHN0dngJCSRzdGFnZSwwLCRvdXQKLSsJ IGFkZGkJCSRpbnAsJG91dCwxNQkJIyAxNSBpcyBub3QgdHlwbwotKwkgYWRkaQkJJG91dCwkb3V0 LDE2Ci0rCWJkbnoJCUxvb3AxOTIKLSsKLSsJbGkJCSRyb3VuZHMsMTIKLSsJYWRkaQkJJG91dCwk b3V0LDB4MjAKLSsJYgkJTGRvbmUKLSsKLSsuYWxpZ24JNAotK0wyNTY6Ci0rCWx2eAkJJHRtcCww LCRpbnAKLSsJbGkJCSRjbnQsNwotKwlsaQkJJHJvdW5kcywxNAotKwkgdnBlcm0JCSRvdXR0YWls LCRpbjAsJGluMCwkb3V0cGVybQkjIHJvdGF0ZQotKwkgdnNlbAkJJHN0YWdlLCRvdXRoZWFkLCRv dXR0YWlsLCRvdXRtYXNrCi0rCSB2bXIJCSRvdXRoZWFkLCRvdXR0YWlsCi0rCSBzdHZ4CQkkc3Rh Z2UsMCwkb3V0Ci0rCSBhZGRpCQkkb3V0LCRvdXQsMTYKLSsJdnBlcm0JCSRpbjEsJGluMSwkdG1w LCRrZXkJIyBhbGlnbiBbYW5kIGJ5dGUgc3dhcCBpbiBMRV0KLSsJbXRjdHIJCSRjbnQKLSsKLStM b29wMjU2OgotKwl2cGVybQkJJGtleSwkaW4xLCRpbjEsJG1hc2sJIyByb3RhdGUtbi1zcGxhdAot Kwl2c2xkb2kJCSR0bXAsJHplcm8sJGluMCwxMgkjID4+MzIKLSsJIHZwZXJtCQkkb3V0dGFpbCwk aW4xLCRpbjEsJG91dHBlcm0JIyByb3RhdGUKLSsJIHZzZWwJCSRzdGFnZSwkb3V0aGVhZCwkb3V0 dGFpbCwkb3V0bWFzawotKwkgdm1yCQkkb3V0aGVhZCwkb3V0dGFpbAotKwl2Y2lwaGVybGFzdAkk a2V5LCRrZXksJHJjb24KLSsJIHN0dngJCSRzdGFnZSwwLCRvdXQKLSsJIGFkZGkJCSRvdXQsJG91 dCwxNgotKwotKwl2eG9yCQkkaW4wLCRpbjAsJHRtcAotKwl2c2xkb2kJCSR0bXAsJHplcm8sJHRt cCwxMgkjID4+MzIKLSsJdnhvcgkJJGluMCwkaW4wLCR0bXAKLSsJdnNsZG9pCQkkdG1wLCR6ZXJv LCR0bXAsMTIJIyA+PjMyCi0rCXZ4b3IJCSRpbjAsJGluMCwkdG1wCi0rCSB2YWRkdXdtCSRyY29u LCRyY29uLCRyY29uCi0rCXZ4b3IJCSRpbjAsJGluMCwka2V5Ci0rCSB2cGVybQkJJG91dHRhaWws JGluMCwkaW4wLCRvdXRwZXJtCSMgcm90YXRlCi0rCSB2c2VsCQkkc3RhZ2UsJG91dGhlYWQsJG91 dHRhaWwsJG91dG1hc2sKLSsJIHZtcgkJJG91dGhlYWQsJG91dHRhaWwKLSsJIHN0dngJCSRzdGFn ZSwwLCRvdXQKLSsJIGFkZGkJCSRpbnAsJG91dCwxNQkJIyAxNSBpcyBub3QgdHlwbwotKwkgYWRk aQkJJG91dCwkb3V0LDE2Ci0rCWJkegkJTGRvbmUKLSsKLSsJdnNwbHR3CQkka2V5LCRpbjAsMwkJ IyBqdXN0IHNwbGF0Ci0rCXZzbGRvaQkJJHRtcCwkemVybywkaW4xLDEyCSMgPj4zMgotKwl2c2Jv eAkJJGtleSwka2V5Ci0rCi0rCXZ4b3IJCSRpbjEsJGluMSwkdG1wCi0rCXZzbGRvaQkJJHRtcCwk emVybywkdG1wLDEyCSMgPj4zMgotKwl2eG9yCQkkaW4xLCRpbjEsJHRtcAotKwl2c2xkb2kJCSR0 bXAsJHplcm8sJHRtcCwxMgkjID4+MzIKLSsJdnhvcgkJJGluMSwkaW4xLCR0bXAKLSsKLSsJdnhv cgkJJGluMSwkaW4xLCRrZXkKLSsJYgkJTG9vcDI1NgotKwotKy5hbGlnbgk0Ci0rTGRvbmU6Ci0r CWx2eAkJJGluMSwwLCRpbnAJCSMgcmVkdW5kYW50IGluIGFsaWduZWQgY2FzZQotKwl2c2VsCQkk aW4xLCRvdXRoZWFkLCRpbjEsJG91dG1hc2sKLSsJc3R2eAkJJGluMSwwLCRpbnAKLSsJbGkJCSRw dHIsMAotKwltdHNwcgkJMjU2LCR2cnNhdmUKLSsJc3R3CQkkcm91bmRzLDAoJG91dCkKLSsKLStM ZW5jX2tleV9hYm9ydDoKLSsJbXIJCXIzLCRwdHIKLSsJYmxyCi0rCS5sb25nCQkwCi0rCS5ieXRl CQkwLDEyLDB4MTQsMSwwLDAsMywwCi0rCS5sb25nCQkwCi0rLnNpemUJLiR7cHJlZml4fV9zZXRf ZW5jcnlwdF9rZXksLi0uJHtwcmVmaXh9X3NldF9lbmNyeXB0X2tleQotKwotKy5nbG9ibAkuJHtw cmVmaXh9X3NldF9kZWNyeXB0X2tleQotKy5hbGlnbgk1Ci0rLiR7cHJlZml4fV9zZXRfZGVjcnlw dF9rZXk6Ci0rCSRTVFUJCSRzcCwtJEZSQU1FKCRzcCkKLSsJbWZscgkJcjEwCi0rCSRQVVNICQly MTAsJEZSQU1FKyRMUlNBVkUoJHNwKQotKwlibAkJTHNldF9lbmNyeXB0X2tleQotKwltdGxyCQly MTAKLSsKLSsJY21wd2kJCXIzLDAKLSsJYm5lLQkJTGRlY19rZXlfYWJvcnQKLSsKLSsJc2x3aQkJ JGNudCwkcm91bmRzLDQKLSsJc3ViaQkJJGlucCwkb3V0LDI0MAkJIyBmaXJzdCByb3VuZCBrZXkK LSsJc3J3aQkJJHJvdW5kcywkcm91bmRzLDEKLSsJYWRkCQkkb3V0LCRpbnAsJGNudAkJIyBsYXN0 IHJvdW5kIGtleQotKwltdGN0cgkJJHJvdW5kcwotKwotK0xkZWNrZXk6Ci0rCWx3egkJcjAsIDAo JGlucCkKLSsJbHd6CQlyNiwgNCgkaW5wKQotKwlsd3oJCXI3LCA4KCRpbnApCi0rCWx3egkJcjgs IDEyKCRpbnApCi0rCWFkZGkJCSRpbnAsJGlucCwxNgotKwlsd3oJCXI5LCAwKCRvdXQpCi0rCWx3 egkJcjEwLDQoJG91dCkKLSsJbHd6CQlyMTEsOCgkb3V0KQotKwlsd3oJCXIxMiwxMigkb3V0KQot KwlzdHcJCXIwLCAwKCRvdXQpCi0rCXN0dwkJcjYsIDQoJG91dCkKLSsJc3R3CQlyNywgOCgkb3V0 KQotKwlzdHcJCXI4LCAxMigkb3V0KQotKwlzdWJpCQkkb3V0LCRvdXQsMTYKLSsJc3R3CQlyOSwg LTE2KCRpbnApCi0rCXN0dwkJcjEwLC0xMigkaW5wKQotKwlzdHcJCXIxMSwtOCgkaW5wKQotKwlz dHcJCXIxMiwtNCgkaW5wKQotKwliZG56CQlMZGVja2V5Ci0rCi0rCXhvcgkJcjMscjMscjMJCSMg cmV0dXJuIHZhbHVlCi0rTGRlY19rZXlfYWJvcnQ6Ci0rCWFkZGkJCSRzcCwkc3AsJEZSQU1FCi0r CWJscgotKwkubG9uZwkJMAotKwkuYnl0ZQkJMCwxMiw0LDEsMHg4MCwwLDMsMAotKwkubG9uZwkJ MAotKy5zaXplCS4ke3ByZWZpeH1fc2V0X2RlY3J5cHRfa2V5LC4tLiR7cHJlZml4fV9zZXRfZGVj cnlwdF9rZXkKLStfX18KLSt9fX0KLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0re3t7CSMgU2luZ2xlIGJs b2NrIGVuLSBhbmQgZGVjcnlwdCBwcm9jZWR1cmVzCQkJIwotK3N1YiBnZW5fYmxvY2sgKCkgewot K215ICRkaXIgPSBzaGlmdDsKLStteSAkbiAgID0gJGRpciBlcSAiZGUiID8gIm4iIDogIiI7Ci0r bXkgKCRpbnAsJG91dCwka2V5LCRyb3VuZHMsJGlkeCk9bWFwKCJyJF8iLCgzLi43KSk7Ci0rCi0r JGNvZGUuPTw8X19fOwotKy5nbG9ibAkuJHtwcmVmaXh9XyR7ZGlyfWNyeXB0Ci0rLmFsaWduCTUK LSsuJHtwcmVmaXh9XyR7ZGlyfWNyeXB0OgotKwlsd3oJCSRyb3VuZHMsMjQwKCRrZXkpCi0rCWxp cwkJcjAsMHhmYzAwCi0rCW1mc3ByCQkkdnJzYXZlLDI1NgotKwlsaQkJJGlkeCwxNQkJCSMgMTUg aXMgbm90IHR5cG8KLSsJbXRzcHIJCTI1NixyMAotKwotKwlsdngJCXYwLDAsJGlucAotKwluZWcJ CXIxMSwkb3V0Ci0rCWx2eAkJdjEsJGlkeCwkaW5wCi0rCWx2c2wJCXYyLDAsJGlucAkJIyBpbnBw ZXJtCi0rCWxlP3ZzcGx0aXNiCXY0LDB4MGYKLSsJP2x2c2wJCXYzLDAscjExCQkjIG91dHBlcm0K LSsJbGU/dnhvcgkJdjIsdjIsdjQKLSsJbGkJCSRpZHgsMTYKLSsJdnBlcm0JCXYwLHYwLHYxLHYy CQkjIGFsaWduIFthbmQgYnl0ZSBzd2FwIGluIExFXQotKwlsdngJCXYxLDAsJGtleQotKwk/bHZz bAkJdjUsMCwka2V5CQkjIGtleXBlcm0KLSsJc3J3aQkJJHJvdW5kcywkcm91bmRzLDEKLSsJbHZ4 CQl2MiwkaWR4LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCXN1YmkJCSRyb3VuZHMsJHJv dW5kcywxCi0rCT92cGVybQkJdjEsdjEsdjIsdjUJCSMgYWxpZ24gcm91bmQga2V5Ci0rCi0rCXZ4 b3IJCXYwLHYwLHYxCi0rCWx2eAkJdjEsJGlkeCwka2V5Ci0rCWFkZGkJCSRpZHgsJGlkeCwxNgot KwltdGN0cgkJJHJvdW5kcwotKwotK0xvb3BfJHtkaXJ9YzoKLSsJP3ZwZXJtCQl2Mix2Mix2MSx2 NQotKwl2JHtufWNpcGhlcgl2MCx2MCx2MgotKwlsdngJCXYyLCRpZHgsJGtleQotKwlhZGRpCQkk aWR4LCRpZHgsMTYKLSsJP3ZwZXJtCQl2MSx2MSx2Mix2NQotKwl2JHtufWNpcGhlcgl2MCx2MCx2 MQotKwlsdngJCXYxLCRpZHgsJGtleQotKwlhZGRpCQkkaWR4LCRpZHgsMTYKLSsJYmRuegkJTG9v cF8ke2Rpcn1jCi0rCi0rCT92cGVybQkJdjIsdjIsdjEsdjUKLSsJdiR7bn1jaXBoZXIJdjAsdjAs djIKLSsJbHZ4CQl2MiwkaWR4LCRrZXkKLSsJP3ZwZXJtCQl2MSx2MSx2Mix2NQotKwl2JHtufWNp cGhlcmxhc3QJdjAsdjAsdjEKLSsKLSsJdnNwbHRpc2IJdjIsLTEKLSsJdnhvcgkJdjEsdjEsdjEK LSsJbGkJCSRpZHgsMTUJCQkjIDE1IGlzIG5vdCB0eXBvCi0rCT92cGVybQkJdjIsdjEsdjIsdjMJ CSMgb3V0bWFzawotKwlsZT92eG9yCQl2Myx2Myx2NAotKwlsdngJCXYxLDAsJG91dAkJIyBvdXRo ZWFkCi0rCXZwZXJtCQl2MCx2MCx2MCx2MwkJIyByb3RhdGUgW2FuZCBieXRlIHN3YXAgaW4gTEVd Ci0rCXZzZWwJCXYxLHYxLHYwLHYyCi0rCWx2eAkJdjQsJGlkeCwkb3V0Ci0rCXN0dngJCXYxLDAs JG91dAotKwl2c2VsCQl2MCx2MCx2NCx2MgotKwlzdHZ4CQl2MCwkaWR4LCRvdXQKLSsKLSsJbXRz cHIJCTI1NiwkdnJzYXZlCi0rCWJscgotKwkubG9uZwkJMAotKwkuYnl0ZQkJMCwxMiwweDE0LDAs MCwwLDMsMAotKwkubG9uZwkJMAotKy5zaXplCS4ke3ByZWZpeH1fJHtkaXJ9Y3J5cHQsLi0uJHtw cmVmaXh9XyR7ZGlyfWNyeXB0Ci0rX19fCi0rfQotKyZnZW5fYmxvY2soImVuIik7Ci0rJmdlbl9i bG9jaygiZGUiKTsKLSt9fX0KLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0re3t7CSMgQ0JDIGVuLSBhbmQg ZGVjcnlwdCBwcm9jZWR1cmVzCQkJCSMKLStteSAoJGlucCwkb3V0LCRsZW4sJGtleSwkaXZwLCRl bmMsJHJvdW5kcywkaWR4KT1tYXAoInIkXyIsKDMuLjEwKSk7Ci0rbXkgKCRybmRrZXkwLCRybmRr ZXkxLCRpbm91dCwkdG1wKT0JCW1hcCgidiRfIiwoMC4uMykpOwotK215ICgkaXZlYywkaW5wdGFp bCwkaW5wcGVybSwkb3V0aGVhZCwkb3V0cGVybSwkb3V0bWFzaywka2V5cGVybSk9Ci0rCQkJCQkJ bWFwKCJ2JF8iLCg0Li4xMCkpOwotKyRjb2RlLj08PF9fXzsKLSsuZ2xvYmwJLiR7cHJlZml4fV9j YmNfZW5jcnlwdAotKy5hbGlnbgk1Ci0rLiR7cHJlZml4fV9jYmNfZW5jcnlwdDoKLSsJJHtVQ01Q fWkJJGxlbiwxNgotKwlibHRsci0KLSsKLSsJY21wd2kJCSRlbmMsMAkJCSMgdGVzdCBkaXJlY3Rp b24KLSsJbGlzCQlyMCwweGZmZTAKLSsJbWZzcHIJCSR2cnNhdmUsMjU2Ci0rCW10c3ByCQkyNTYs cjAKLSsKLSsJbGkJCSRpZHgsMTUKLSsJdnhvcgkJJHJuZGtleTAsJHJuZGtleTAsJHJuZGtleTAK LSsJbGU/dnNwbHRpc2IJJHRtcCwweDBmCi0rCi0rCWx2eAkJJGl2ZWMsMCwkaXZwCQkjIGxvYWQg W3VuYWxpZ25lZF0gaXYKLSsJbHZzbAkJJGlucHBlcm0sMCwkaXZwCi0rCWx2eAkJJGlucHRhaWws JGlkeCwkaXZwCi0rCWxlP3Z4b3IJCSRpbnBwZXJtLCRpbnBwZXJtLCR0bXAKLSsJdnBlcm0JCSRp dmVjLCRpdmVjLCRpbnB0YWlsLCRpbnBwZXJtCi0rCi0rCW5lZwkJcjExLCRpbnAKLSsJP2x2c2wJ CSRrZXlwZXJtLDAsJGtleQkJIyBwcmVwYXJlIGZvciB1bmFsaWduZWQga2V5Ci0rCWx3egkJJHJv dW5kcywyNDAoJGtleSkKLSsKLSsJbHZzcgkJJGlucHBlcm0sMCxyMTEJCSMgcHJlcGFyZSBmb3Ig dW5hbGlnbmVkIGxvYWQKLSsJbHZ4CQkkaW5wdGFpbCwwLCRpbnAKLSsJYWRkaQkJJGlucCwkaW5w LDE1CQkjIDE1IGlzIG5vdCB0eXBvCi0rCWxlP3Z4b3IJCSRpbnBwZXJtLCRpbnBwZXJtLCR0bXAK LSsKLSsJP2x2c3IJCSRvdXRwZXJtLDAsJG91dAkJIyBwcmVwYXJlIGZvciB1bmFsaWduZWQgc3Rv cmUKLSsJdnNwbHRpc2IJJG91dG1hc2ssLTEKLSsJbHZ4CQkkb3V0aGVhZCwwLCRvdXQKLSsJP3Zw ZXJtCQkkb3V0bWFzaywkcm5ka2V5MCwkb3V0bWFzaywkb3V0cGVybQotKwlsZT92eG9yCQkkb3V0 cGVybSwkb3V0cGVybSwkdG1wCi0rCi0rCXNyd2kJCSRyb3VuZHMsJHJvdW5kcywxCi0rCWxpCQkk aWR4LDE2Ci0rCXN1YmkJCSRyb3VuZHMsJHJvdW5kcywxCi0rCWJlcQkJTGNiY19kZWMKLSsKLStM Y2JjX2VuYzoKLSsJdm1yCQkkaW5vdXQsJGlucHRhaWwKLSsJbHZ4CQkkaW5wdGFpbCwwLCRpbnAK LSsJYWRkaQkJJGlucCwkaW5wLDE2Ci0rCW10Y3RyCQkkcm91bmRzCi0rCXN1YmkJCSRsZW4sJGxl biwxNgkJIyBsZW4tPTE2Ci0rCi0rCWx2eAkJJHJuZGtleTAsMCwka2V5Ci0rCSB2cGVybQkJJGlu b3V0LCRpbm91dCwkaW5wdGFpbCwkaW5wcGVybQotKwlsdngJCSRybmRrZXkxLCRpZHgsJGtleQot KwlhZGRpCQkkaWR4LCRpZHgsMTYKLSsJP3ZwZXJtCQkkcm5ka2V5MCwkcm5ka2V5MCwkcm5ka2V5 MSwka2V5cGVybQotKwl2eG9yCQkkaW5vdXQsJGlub3V0LCRybmRrZXkwCi0rCWx2eAkJJHJuZGtl eTAsJGlkeCwka2V5Ci0rCWFkZGkJCSRpZHgsJGlkeCwxNgotKwl2eG9yCQkkaW5vdXQsJGlub3V0 LCRpdmVjCi0rCi0rTG9vcF9jYmNfZW5jOgotKwk/dnBlcm0JCSRybmRrZXkxLCRybmRrZXkxLCRy bmRrZXkwLCRrZXlwZXJtCi0rCXZjaXBoZXIJCSRpbm91dCwkaW5vdXQsJHJuZGtleTEKLSsJbHZ4 CQkkcm5ka2V5MSwkaWR4LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCT92cGVybQkJJHJu ZGtleTAsJHJuZGtleTAsJHJuZGtleTEsJGtleXBlcm0KLSsJdmNpcGhlcgkJJGlub3V0LCRpbm91 dCwkcm5ka2V5MAotKwlsdngJCSRybmRrZXkwLCRpZHgsJGtleQotKwlhZGRpCQkkaWR4LCRpZHgs MTYKLSsJYmRuegkJTG9vcF9jYmNfZW5jCi0rCi0rCT92cGVybQkJJHJuZGtleTEsJHJuZGtleTEs JHJuZGtleTAsJGtleXBlcm0KLSsJdmNpcGhlcgkJJGlub3V0LCRpbm91dCwkcm5ka2V5MQotKwls dngJCSRybmRrZXkxLCRpZHgsJGtleQotKwlsaQkJJGlkeCwxNgotKwk/dnBlcm0JCSRybmRrZXkw LCRybmRrZXkwLCRybmRrZXkxLCRrZXlwZXJtCi0rCXZjaXBoZXJsYXN0CSRpdmVjLCRpbm91dCwk cm5ka2V5MAotKwkke1VDTVB9aQkkbGVuLDE2Ci0rCi0rCXZwZXJtCQkkdG1wLCRpdmVjLCRpdmVj LCRvdXRwZXJtCi0rCXZzZWwJCSRpbm91dCwkb3V0aGVhZCwkdG1wLCRvdXRtYXNrCi0rCXZtcgkJ JG91dGhlYWQsJHRtcAotKwlzdHZ4CQkkaW5vdXQsMCwkb3V0Ci0rCWFkZGkJCSRvdXQsJG91dCwx NgotKwliZ2UJCUxjYmNfZW5jCi0rCi0rCWIJCUxjYmNfZG9uZQotKwotKy5hbGlnbgk0Ci0rTGNi Y19kZWM6Ci0rCSR7VUNNUH1pCSRsZW4sMTI4Ci0rCWJnZQkJX2Flc3A4X2NiY19kZWNyeXB0OHgK LSsJdm1yCQkkdG1wLCRpbnB0YWlsCi0rCWx2eAkJJGlucHRhaWwsMCwkaW5wCi0rCWFkZGkJCSRp bnAsJGlucCwxNgotKwltdGN0cgkJJHJvdW5kcwotKwlzdWJpCQkkbGVuLCRsZW4sMTYJCSMgbGVu LT0xNgotKwotKwlsdngJCSRybmRrZXkwLDAsJGtleQotKwkgdnBlcm0JCSR0bXAsJHRtcCwkaW5w dGFpbCwkaW5wcGVybQotKwlsdngJCSRybmRrZXkxLCRpZHgsJGtleQotKwlhZGRpCQkkaWR4LCRp ZHgsMTYKLSsJP3ZwZXJtCQkkcm5ka2V5MCwkcm5ka2V5MCwkcm5ka2V5MSwka2V5cGVybQotKwl2 eG9yCQkkaW5vdXQsJHRtcCwkcm5ka2V5MAotKwlsdngJCSRybmRrZXkwLCRpZHgsJGtleQotKwlh ZGRpCQkkaWR4LCRpZHgsMTYKLSsKLStMb29wX2NiY19kZWM6Ci0rCT92cGVybQkJJHJuZGtleTEs JHJuZGtleTEsJHJuZGtleTAsJGtleXBlcm0KLSsJdm5jaXBoZXIJJGlub3V0LCRpbm91dCwkcm5k a2V5MQotKwlsdngJCSRybmRrZXkxLCRpZHgsJGtleQotKwlhZGRpCQkkaWR4LCRpZHgsMTYKLSsJ P3ZwZXJtCQkkcm5ka2V5MCwkcm5ka2V5MCwkcm5ka2V5MSwka2V5cGVybQotKwl2bmNpcGhlcgkk aW5vdXQsJGlub3V0LCRybmRrZXkwCi0rCWx2eAkJJHJuZGtleTAsJGlkeCwka2V5Ci0rCWFkZGkJ CSRpZHgsJGlkeCwxNgotKwliZG56CQlMb29wX2NiY19kZWMKLSsKLSsJP3ZwZXJtCQkkcm5ka2V5 MSwkcm5ka2V5MSwkcm5ka2V5MCwka2V5cGVybQotKwl2bmNpcGhlcgkkaW5vdXQsJGlub3V0LCRy bmRrZXkxCi0rCWx2eAkJJHJuZGtleTEsJGlkeCwka2V5Ci0rCWxpCQkkaWR4LDE2Ci0rCT92cGVy bQkJJHJuZGtleTAsJHJuZGtleTAsJHJuZGtleTEsJGtleXBlcm0KLSsJdm5jaXBoZXJsYXN0CSRp bm91dCwkaW5vdXQsJHJuZGtleTAKLSsJJHtVQ01QfWkJJGxlbiwxNgotKwotKwl2eG9yCQkkaW5v dXQsJGlub3V0LCRpdmVjCi0rCXZtcgkJJGl2ZWMsJHRtcAotKwl2cGVybQkJJHRtcCwkaW5vdXQs JGlub3V0LCRvdXRwZXJtCi0rCXZzZWwJCSRpbm91dCwkb3V0aGVhZCwkdG1wLCRvdXRtYXNrCi0r CXZtcgkJJG91dGhlYWQsJHRtcAotKwlzdHZ4CQkkaW5vdXQsMCwkb3V0Ci0rCWFkZGkJCSRvdXQs JG91dCwxNgotKwliZ2UJCUxjYmNfZGVjCi0rCi0rTGNiY19kb25lOgotKwlhZGRpCQkkb3V0LCRv dXQsLTEKLSsJbHZ4CQkkaW5vdXQsMCwkb3V0CQkjIHJlZHVuZGFudCBpbiBhbGlnbmVkIGNhc2UK LSsJdnNlbAkJJGlub3V0LCRvdXRoZWFkLCRpbm91dCwkb3V0bWFzawotKwlzdHZ4CQkkaW5vdXQs MCwkb3V0Ci0rCi0rCW5lZwkJJGVuYywkaXZwCQkjIHdyaXRlIFt1bmFsaWduZWRdIGl2Ci0rCWxp CQkkaWR4LDE1CQkJIyAxNSBpcyBub3QgdHlwbwotKwl2eG9yCQkkcm5ka2V5MCwkcm5ka2V5MCwk cm5ka2V5MAotKwl2c3BsdGlzYgkkb3V0bWFzaywtMQotKwlsZT92c3BsdGlzYgkkdG1wLDB4MGYK LSsJP2x2c2wJCSRvdXRwZXJtLDAsJGVuYwotKwk/dnBlcm0JCSRvdXRtYXNrLCRybmRrZXkwLCRv dXRtYXNrLCRvdXRwZXJtCi0rCWxlP3Z4b3IJCSRvdXRwZXJtLCRvdXRwZXJtLCR0bXAKLSsJbHZ4 CQkkb3V0aGVhZCwwLCRpdnAKLSsJdnBlcm0JCSRpdmVjLCRpdmVjLCRpdmVjLCRvdXRwZXJtCi0r CXZzZWwJCSRpbm91dCwkb3V0aGVhZCwkaXZlYywkb3V0bWFzawotKwlsdngJCSRpbnB0YWlsLCRp ZHgsJGl2cAotKwlzdHZ4CQkkaW5vdXQsMCwkaXZwCi0rCXZzZWwJCSRpbm91dCwkaXZlYywkaW5w dGFpbCwkb3V0bWFzawotKwlzdHZ4CQkkaW5vdXQsJGlkeCwkaXZwCi0rCi0rCW10c3ByCQkyNTYs JHZyc2F2ZQotKwlibHIKLSsJLmxvbmcJCTAKLSsJLmJ5dGUJCTAsMTIsMHgxNCwwLDAsMCw2LDAK LSsJLmxvbmcJCTAKLStfX18KLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0re3sJIyBPcHRpbWl6ZWQgQ0JD IGRlY3J5cHQgcHJvY2VkdXJlCQkJCSMKLStteSAka2V5Xz0icjExIjsKLStteSAoJHgwMCwkeDEw LCR4MjAsJHgzMCwkeDQwLCR4NTAsJHg2MCwkeDcwKT1tYXAoInIkXyIsKDAsOCwyNi4uMzEpKTsK LStteSAoJGluMCwgJGluMSwgJGluMiwgJGluMywgJGluNCwgJGluNSwgJGluNiwgJGluNyApPW1h cCgidiRfIiwoMC4uMywxMC4uMTMpKTsKLStteSAoJG91dDAsJG91dDEsJG91dDIsJG91dDMsJG91 dDQsJG91dDUsJG91dDYsJG91dDcpPW1hcCgidiRfIiwoMTQuLjIxKSk7Ci0rbXkgJHJuZGtleTA9 InYyMyI7CSMgdjI0LXYyNSByb3RhdGluZyBidWZmZXIgZm9yIGZpcnN0IGZvdW5kIGtleXMKLSsJ CQkjIHYyNi12MzEgbGFzdCA2IHJvdW5kIGtleXMKLStteSAoJHRtcCwka2V5cGVybSk9KCRpbjMs JGluNCk7CSMgYWxpYXNlcyB3aXRoICJjYWxsZXIiLCByZWR1bmRhbnQgYXNzaWdubWVudAotKwot KyRjb2RlLj08PF9fXzsKLSsuYWxpZ24JNQotK19hZXNwOF9jYmNfZGVjcnlwdDh4OgotKwkkU1RV CQkkc3AsLWAoJEZSQU1FKzIxKjE2KzYqJFNJWkVfVClgKCRzcCkKLSsJbGkJCXIxMCxgJEZSQU1F KzgqMTYrMTVgCi0rCWxpCQlyMTEsYCRGUkFNRSs4KjE2KzMxYAotKwlzdHZ4CQl2MjAscjEwLCRz cAkJIyBBQkkgc2F5cyBzbwotKwlhZGRpCQlyMTAscjEwLDMyCi0rCXN0dngJCXYyMSxyMTEsJHNw Ci0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2eAkJdjIyLHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIx MCwzMgotKwlzdHZ4CQl2MjMscjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0rCXN0dngJCXYy NCxyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJc3R2eAkJdjI1LHIxMSwkc3AKLSsJYWRk aQkJcjExLHIxMSwzMgotKwlzdHZ4CQl2MjYscjEwLCRzcAotKwlhZGRpCQlyMTAscjEwLDMyCi0r CXN0dngJCXYyNyxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2eAkJdjI4LHIxMCwk c3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlzdHZ4CQl2MjkscjExLCRzcAotKwlhZGRpCQlyMTEs cjExLDMyCi0rCXN0dngJCXYzMCxyMTAsJHNwCi0rCXN0dngJCXYzMSxyMTEsJHNwCi0rCWxpCQly MCwtMQotKwlzdHcJCSR2cnNhdmUsYCRGUkFNRSsyMSoxNi00YCgkc3ApCSMgc2F2ZSB2cnNhdmUK LSsJbGkJCSR4MTAsMHgxMAotKwkkUFVTSAkJcjI2LGAkRlJBTUUrMjEqMTYrMCokU0laRV9UYCgk c3ApCi0rCWxpCQkkeDIwLDB4MjAKLSsJJFBVU0gJCXIyNyxgJEZSQU1FKzIxKjE2KzEqJFNJWkVf VGAoJHNwKQotKwlsaQkJJHgzMCwweDMwCi0rCSRQVVNICQlyMjgsYCRGUkFNRSsyMSoxNisyKiRT SVpFX1RgKCRzcCkKLSsJbGkJCSR4NDAsMHg0MAotKwkkUFVTSAkJcjI5LGAkRlJBTUUrMjEqMTYr MyokU0laRV9UYCgkc3ApCi0rCWxpCQkkeDUwLDB4NTAKLSsJJFBVU0gJCXIzMCxgJEZSQU1FKzIx KjE2KzQqJFNJWkVfVGAoJHNwKQotKwlsaQkJJHg2MCwweDYwCi0rCSRQVVNICQlyMzEsYCRGUkFN RSsyMSoxNis1KiRTSVpFX1RgKCRzcCkKLSsJbGkJCSR4NzAsMHg3MAotKwltdHNwcgkJMjU2LHIw Ci0rCi0rCXN1YmkJCSRyb3VuZHMsJHJvdW5kcywzCSMgLTQgaW4gdG90YWwKLSsJc3ViaQkJJGxl biwkbGVuLDEyOAkJIyBiaWFzCi0rCi0rCWx2eAkJJHJuZGtleTAsJHgwMCwka2V5CSMgbG9hZCBr ZXkgc2NoZWR1bGUKLSsJbHZ4CQl2MzAsJHgxMCwka2V5Ci0rCWFkZGkJCSRrZXksJGtleSwweDIw Ci0rCWx2eAkJdjMxLCR4MDAsJGtleQotKwk/dnBlcm0JCSRybmRrZXkwLCRybmRrZXkwLHYzMCwk a2V5cGVybQotKwlhZGRpCQkka2V5Xywkc3AsJEZSQU1FKzE1Ci0rCW10Y3RyCQkkcm91bmRzCi0r Ci0rTG9hZF9jYmNfZGVjX2tleToKLSsJP3ZwZXJtCQl2MjQsdjMwLHYzMSwka2V5cGVybQotKwls dngJCXYzMCwkeDEwLCRrZXkKLSsJYWRkaQkJJGtleSwka2V5LDB4MjAKLSsJc3R2eAkJdjI0LCR4 MDAsJGtleV8JCSMgb2ZmLWxvYWQgcm91bmRbMV0KLSsJP3ZwZXJtCQl2MjUsdjMxLHYzMCwka2V5 cGVybQotKwlsdngJCXYzMSwkeDAwLCRrZXkKLSsJc3R2eAkJdjI1LCR4MTAsJGtleV8JCSMgb2Zm LWxvYWQgcm91bmRbMl0KLSsJYWRkaQkJJGtleV8sJGtleV8sMHgyMAotKwliZG56CQlMb2FkX2Ni Y19kZWNfa2V5Ci0rCi0rCWx2eAkJdjI2LCR4MTAsJGtleQotKwk/dnBlcm0JCXYyNCx2MzAsdjMx LCRrZXlwZXJtCi0rCWx2eAkJdjI3LCR4MjAsJGtleQotKwlzdHZ4CQl2MjQsJHgwMCwka2V5XwkJ IyBvZmYtbG9hZCByb3VuZFszXQotKwk/dnBlcm0JCXYyNSx2MzEsdjI2LCRrZXlwZXJtCi0rCWx2 eAkJdjI4LCR4MzAsJGtleQotKwlzdHZ4CQl2MjUsJHgxMCwka2V5XwkJIyBvZmYtbG9hZCByb3Vu ZFs0XQotKwlhZGRpCQkka2V5Xywkc3AsJEZSQU1FKzE1CSMgcmV3aW5kICRrZXlfCi0rCT92cGVy bQkJdjI2LHYyNix2MjcsJGtleXBlcm0KLSsJbHZ4CQl2MjksJHg0MCwka2V5Ci0rCT92cGVybQkJ djI3LHYyNyx2MjgsJGtleXBlcm0KLSsJbHZ4CQl2MzAsJHg1MCwka2V5Ci0rCT92cGVybQkJdjI4 LHYyOCx2MjksJGtleXBlcm0KLSsJbHZ4CQl2MzEsJHg2MCwka2V5Ci0rCT92cGVybQkJdjI5LHYy OSx2MzAsJGtleXBlcm0KLSsJbHZ4CQkkb3V0MCwkeDcwLCRrZXkJCSMgYm9ycm93ICRvdXQwCi0r CT92cGVybQkJdjMwLHYzMCx2MzEsJGtleXBlcm0KLSsJbHZ4CQl2MjQsJHgwMCwka2V5XwkJIyBw cmUtbG9hZCByb3VuZFsxXQotKwk/dnBlcm0JCXYzMSx2MzEsJG91dDAsJGtleXBlcm0KLSsJbHZ4 CQl2MjUsJHgxMCwka2V5XwkJIyBwcmUtbG9hZCByb3VuZFsyXQotKwotKwkjbHZ4CQkkaW5wdGFp bCwwLCRpbnAJCSMgImNhbGxlciIgYWxyZWFkeSBkaWQgdGhpcwotKwkjYWRkaQkJJGlucCwkaW5w LDE1CQkjIDE1IGlzIG5vdCB0eXBvCi0rCXN1YmkJCSRpbnAsJGlucCwxNQkJIyB1bmRvICJjYWxs ZXIiCi0rCi0rCSBsZT9saQkJJGlkeCw4Ci0rCWx2eF91CQkkaW4wLCR4MDAsJGlucAkJIyBsb2Fk IGZpcnN0IDggIndvcmRzIgotKwkgbGU/bHZzbAkkaW5wcGVybSwwLCRpZHgKLSsJIGxlP3ZzcGx0 aXNiCSR0bXAsMHgwZgotKwlsdnhfdQkJJGluMSwkeDEwLCRpbnAKLSsJIGxlP3Z4b3IJJGlucHBl cm0sJGlucHBlcm0sJHRtcAkjIHRyYW5zZm9ybSBmb3IgbHZ4X3Uvc3R2eF91Ci0rCWx2eF91CQkk aW4yLCR4MjAsJGlucAotKwkgbGU/dnBlcm0JJGluMCwkaW4wLCRpbjAsJGlucHBlcm0KLSsJbHZ4 X3UJCSRpbjMsJHgzMCwkaW5wCi0rCSBsZT92cGVybQkkaW4xLCRpbjEsJGluMSwkaW5wcGVybQot KwlsdnhfdQkJJGluNCwkeDQwLCRpbnAKLSsJIGxlP3ZwZXJtCSRpbjIsJGluMiwkaW4yLCRpbnBw ZXJtCi0rCXZ4b3IJCSRvdXQwLCRpbjAsJHJuZGtleTAKLSsJbHZ4X3UJCSRpbjUsJHg1MCwkaW5w Ci0rCSBsZT92cGVybQkkaW4zLCRpbjMsJGluMywkaW5wcGVybQotKwl2eG9yCQkkb3V0MSwkaW4x LCRybmRrZXkwCi0rCWx2eF91CQkkaW42LCR4NjAsJGlucAotKwkgbGU/dnBlcm0JJGluNCwkaW40 LCRpbjQsJGlucHBlcm0KLSsJdnhvcgkJJG91dDIsJGluMiwkcm5ka2V5MAotKwlsdnhfdQkJJGlu NywkeDcwLCRpbnAKLSsJYWRkaQkJJGlucCwkaW5wLDB4ODAKLSsJIGxlP3ZwZXJtCSRpbjUsJGlu NSwkaW41LCRpbnBwZXJtCi0rCXZ4b3IJCSRvdXQzLCRpbjMsJHJuZGtleTAKLSsJIGxlP3ZwZXJt CSRpbjYsJGluNiwkaW42LCRpbnBwZXJtCi0rCXZ4b3IJCSRvdXQ0LCRpbjQsJHJuZGtleTAKLSsJ IGxlP3ZwZXJtCSRpbjcsJGluNywkaW43LCRpbnBwZXJtCi0rCXZ4b3IJCSRvdXQ1LCRpbjUsJHJu ZGtleTAKLSsJdnhvcgkJJG91dDYsJGluNiwkcm5ka2V5MAotKwl2eG9yCQkkb3V0NywkaW43LCRy bmRrZXkwCi0rCi0rCW10Y3RyCQkkcm91bmRzCi0rCWIJCUxvb3BfY2JjX2RlYzh4Ci0rLmFsaWdu CTUKLStMb29wX2NiY19kZWM4eDoKLSsJdm5jaXBoZXIJJG91dDAsJG91dDAsdjI0Ci0rCXZuY2lw aGVyCSRvdXQxLCRvdXQxLHYyNAotKwl2bmNpcGhlcgkkb3V0Miwkb3V0Mix2MjQKLSsJdm5jaXBo ZXIJJG91dDMsJG91dDMsdjI0Ci0rCXZuY2lwaGVyCSRvdXQ0LCRvdXQ0LHYyNAotKwl2bmNpcGhl cgkkb3V0NSwkb3V0NSx2MjQKLSsJdm5jaXBoZXIJJG91dDYsJG91dDYsdjI0Ci0rCXZuY2lwaGVy CSRvdXQ3LCRvdXQ3LHYyNAotKwlsdngJCXYyNCwkeDIwLCRrZXlfCQkjIHJvdW5kWzNdCi0rCWFk ZGkJCSRrZXlfLCRrZXlfLDB4MjAKLSsKLSsJdm5jaXBoZXIJJG91dDAsJG91dDAsdjI1Ci0rCXZu Y2lwaGVyCSRvdXQxLCRvdXQxLHYyNQotKwl2bmNpcGhlcgkkb3V0Miwkb3V0Mix2MjUKLSsJdm5j aXBoZXIJJG91dDMsJG91dDMsdjI1Ci0rCXZuY2lwaGVyCSRvdXQ0LCRvdXQ0LHYyNQotKwl2bmNp cGhlcgkkb3V0NSwkb3V0NSx2MjUKLSsJdm5jaXBoZXIJJG91dDYsJG91dDYsdjI1Ci0rCXZuY2lw aGVyCSRvdXQ3LCRvdXQ3LHYyNQotKwlsdngJCXYyNSwkeDEwLCRrZXlfCQkjIHJvdW5kWzRdCi0r CWJkbnoJCUxvb3BfY2JjX2RlYzh4Ci0rCi0rCXN1YmljCQkkbGVuLCRsZW4sMTI4CQkjICRsZW4t PTEyOAotKwl2bmNpcGhlcgkkb3V0MCwkb3V0MCx2MjQKLSsJdm5jaXBoZXIJJG91dDEsJG91dDEs djI0Ci0rCXZuY2lwaGVyCSRvdXQyLCRvdXQyLHYyNAotKwl2bmNpcGhlcgkkb3V0Mywkb3V0Myx2 MjQKLSsJdm5jaXBoZXIJJG91dDQsJG91dDQsdjI0Ci0rCXZuY2lwaGVyCSRvdXQ1LCRvdXQ1LHYy NAotKwl2bmNpcGhlcgkkb3V0Niwkb3V0Nix2MjQKLSsJdm5jaXBoZXIJJG91dDcsJG91dDcsdjI0 Ci0rCi0rCXN1YmZlLgkJcjAscjAscjAJCSMgYm9ycm93Py0xOjAKLSsJdm5jaXBoZXIJJG91dDAs JG91dDAsdjI1Ci0rCXZuY2lwaGVyCSRvdXQxLCRvdXQxLHYyNQotKwl2bmNpcGhlcgkkb3V0Miwk b3V0Mix2MjUKLSsJdm5jaXBoZXIJJG91dDMsJG91dDMsdjI1Ci0rCXZuY2lwaGVyCSRvdXQ0LCRv dXQ0LHYyNQotKwl2bmNpcGhlcgkkb3V0NSwkb3V0NSx2MjUKLSsJdm5jaXBoZXIJJG91dDYsJG91 dDYsdjI1Ci0rCXZuY2lwaGVyCSRvdXQ3LCRvdXQ3LHYyNQotKwotKwlhbmQJCXIwLHIwLCRsZW4K LSsJdm5jaXBoZXIJJG91dDAsJG91dDAsdjI2Ci0rCXZuY2lwaGVyCSRvdXQxLCRvdXQxLHYyNgot Kwl2bmNpcGhlcgkkb3V0Miwkb3V0Mix2MjYKLSsJdm5jaXBoZXIJJG91dDMsJG91dDMsdjI2Ci0r CXZuY2lwaGVyCSRvdXQ0LCRvdXQ0LHYyNgotKwl2bmNpcGhlcgkkb3V0NSwkb3V0NSx2MjYKLSsJ dm5jaXBoZXIJJG91dDYsJG91dDYsdjI2Ci0rCXZuY2lwaGVyCSRvdXQ3LCRvdXQ3LHYyNgotKwot KwlhZGQJCSRpbnAsJGlucCxyMAkJIyAkaW5wIGlzIGFkanVzdGVkIGluIHN1Y2gKLSsJCQkJCQkj IHdheSB0aGF0IGF0IGV4aXQgZnJvbSB0aGUKLSsJCQkJCQkjIGxvb3AgaW5YLWluNyBhcmUgbG9h ZGVkCi0rCQkJCQkJIyB3aXRoIGxhc3QgIndvcmRzIgotKwl2bmNpcGhlcgkkb3V0MCwkb3V0MCx2 MjcKLSsJdm5jaXBoZXIJJG91dDEsJG91dDEsdjI3Ci0rCXZuY2lwaGVyCSRvdXQyLCRvdXQyLHYy NwotKwl2bmNpcGhlcgkkb3V0Mywkb3V0Myx2MjcKLSsJdm5jaXBoZXIJJG91dDQsJG91dDQsdjI3 Ci0rCXZuY2lwaGVyCSRvdXQ1LCRvdXQ1LHYyNwotKwl2bmNpcGhlcgkkb3V0Niwkb3V0Nix2MjcK LSsJdm5jaXBoZXIJJG91dDcsJG91dDcsdjI3Ci0rCi0rCWFkZGkJCSRrZXlfLCRzcCwkRlJBTUUr MTUJIyByZXdpbmQgJGtleV8KLSsJdm5jaXBoZXIJJG91dDAsJG91dDAsdjI4Ci0rCXZuY2lwaGVy CSRvdXQxLCRvdXQxLHYyOAotKwl2bmNpcGhlcgkkb3V0Miwkb3V0Mix2MjgKLSsJdm5jaXBoZXIJ JG91dDMsJG91dDMsdjI4Ci0rCXZuY2lwaGVyCSRvdXQ0LCRvdXQ0LHYyOAotKwl2bmNpcGhlcgkk b3V0NSwkb3V0NSx2MjgKLSsJdm5jaXBoZXIJJG91dDYsJG91dDYsdjI4Ci0rCXZuY2lwaGVyCSRv dXQ3LCRvdXQ3LHYyOAotKwlsdngJCXYyNCwkeDAwLCRrZXlfCQkjIHJlLXByZS1sb2FkIHJvdW5k WzFdCi0rCi0rCXZuY2lwaGVyCSRvdXQwLCRvdXQwLHYyOQotKwl2bmNpcGhlcgkkb3V0MSwkb3V0 MSx2MjkKLSsJdm5jaXBoZXIJJG91dDIsJG91dDIsdjI5Ci0rCXZuY2lwaGVyCSRvdXQzLCRvdXQz LHYyOQotKwl2bmNpcGhlcgkkb3V0NCwkb3V0NCx2MjkKLSsJdm5jaXBoZXIJJG91dDUsJG91dDUs djI5Ci0rCXZuY2lwaGVyCSRvdXQ2LCRvdXQ2LHYyOQotKwl2bmNpcGhlcgkkb3V0Nywkb3V0Nyx2 MjkKLSsJbHZ4CQl2MjUsJHgxMCwka2V5XwkJIyByZS1wcmUtbG9hZCByb3VuZFsyXQotKwotKwl2 bmNpcGhlcgkkb3V0MCwkb3V0MCx2MzAKLSsJIHZ4b3IJCSRpdmVjLCRpdmVjLHYzMQkJIyB4b3Ig d2l0aCBsYXN0IHJvdW5kIGtleQotKwl2bmNpcGhlcgkkb3V0MSwkb3V0MSx2MzAKLSsJIHZ4b3IJ CSRpbjAsJGluMCx2MzEKLSsJdm5jaXBoZXIJJG91dDIsJG91dDIsdjMwCi0rCSB2eG9yCQkkaW4x LCRpbjEsdjMxCi0rCXZuY2lwaGVyCSRvdXQzLCRvdXQzLHYzMAotKwkgdnhvcgkJJGluMiwkaW4y LHYzMQotKwl2bmNpcGhlcgkkb3V0NCwkb3V0NCx2MzAKLSsJIHZ4b3IJCSRpbjMsJGluMyx2MzEK LSsJdm5jaXBoZXIJJG91dDUsJG91dDUsdjMwCi0rCSB2eG9yCQkkaW40LCRpbjQsdjMxCi0rCXZu Y2lwaGVyCSRvdXQ2LCRvdXQ2LHYzMAotKwkgdnhvcgkJJGluNSwkaW41LHYzMQotKwl2bmNpcGhl cgkkb3V0Nywkb3V0Nyx2MzAKLSsJIHZ4b3IJCSRpbjYsJGluNix2MzEKLSsKLSsJdm5jaXBoZXJs YXN0CSRvdXQwLCRvdXQwLCRpdmVjCi0rCXZuY2lwaGVybGFzdAkkb3V0MSwkb3V0MSwkaW4wCi0r CSBsdnhfdQkJJGluMCwkeDAwLCRpbnAJCSMgbG9hZCBuZXh0IGlucHV0IGJsb2NrCi0rCXZuY2lw aGVybGFzdAkkb3V0Miwkb3V0MiwkaW4xCi0rCSBsdnhfdQkJJGluMSwkeDEwLCRpbnAKLSsJdm5j aXBoZXJsYXN0CSRvdXQzLCRvdXQzLCRpbjIKLSsJIGxlP3ZwZXJtCSRpbjAsJGluMCwkaW4wLCRp bnBwZXJtCi0rCSBsdnhfdQkJJGluMiwkeDIwLCRpbnAKLSsJdm5jaXBoZXJsYXN0CSRvdXQ0LCRv dXQ0LCRpbjMKLSsJIGxlP3ZwZXJtCSRpbjEsJGluMSwkaW4xLCRpbnBwZXJtCi0rCSBsdnhfdQkJ JGluMywkeDMwLCRpbnAKLSsJdm5jaXBoZXJsYXN0CSRvdXQ1LCRvdXQ1LCRpbjQKLSsJIGxlP3Zw ZXJtCSRpbjIsJGluMiwkaW4yLCRpbnBwZXJtCi0rCSBsdnhfdQkJJGluNCwkeDQwLCRpbnAKLSsJ dm5jaXBoZXJsYXN0CSRvdXQ2LCRvdXQ2LCRpbjUKLSsJIGxlP3ZwZXJtCSRpbjMsJGluMywkaW4z LCRpbnBwZXJtCi0rCSBsdnhfdQkJJGluNSwkeDUwLCRpbnAKLSsJdm5jaXBoZXJsYXN0CSRvdXQ3 LCRvdXQ3LCRpbjYKLSsJIGxlP3ZwZXJtCSRpbjQsJGluNCwkaW40LCRpbnBwZXJtCi0rCSBsdnhf dQkJJGluNiwkeDYwLCRpbnAKLSsJdm1yCQkkaXZlYywkaW43Ci0rCSBsZT92cGVybQkkaW41LCRp bjUsJGluNSwkaW5wcGVybQotKwkgbHZ4X3UJCSRpbjcsJHg3MCwkaW5wCi0rCSBhZGRpCQkkaW5w LCRpbnAsMHg4MAotKwotKwlsZT92cGVybQkkb3V0MCwkb3V0MCwkb3V0MCwkaW5wcGVybQotKwls ZT92cGVybQkkb3V0MSwkb3V0MSwkb3V0MSwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQwLCR4MDAs JG91dAotKwkgbGU/dnBlcm0JJGluNiwkaW42LCRpbjYsJGlucHBlcm0KLSsJIHZ4b3IJCSRvdXQw LCRpbjAsJHJuZGtleTAKLSsJbGU/dnBlcm0JJG91dDIsJG91dDIsJG91dDIsJGlucHBlcm0KLSsJ c3R2eF91CQkkb3V0MSwkeDEwLCRvdXQKLSsJIGxlP3ZwZXJtCSRpbjcsJGluNywkaW43LCRpbnBw ZXJtCi0rCSB2eG9yCQkkb3V0MSwkaW4xLCRybmRrZXkwCi0rCWxlP3ZwZXJtCSRvdXQzLCRvdXQz LCRvdXQzLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDIsJHgyMCwkb3V0Ci0rCSB2eG9yCQkkb3V0 MiwkaW4yLCRybmRrZXkwCi0rCWxlP3ZwZXJtCSRvdXQ0LCRvdXQ0LCRvdXQ0LCRpbnBwZXJtCi0r CXN0dnhfdQkJJG91dDMsJHgzMCwkb3V0Ci0rCSB2eG9yCQkkb3V0MywkaW4zLCRybmRrZXkwCi0r CWxlP3ZwZXJtCSRvdXQ1LCRvdXQ1LCRvdXQ1LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDQsJHg0 MCwkb3V0Ci0rCSB2eG9yCQkkb3V0NCwkaW40LCRybmRrZXkwCi0rCWxlP3ZwZXJtCSRvdXQ2LCRv dXQ2LCRvdXQ2LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDUsJHg1MCwkb3V0Ci0rCSB2eG9yCQkk b3V0NSwkaW41LCRybmRrZXkwCi0rCWxlP3ZwZXJtCSRvdXQ3LCRvdXQ3LCRvdXQ3LCRpbnBwZXJt Ci0rCXN0dnhfdQkJJG91dDYsJHg2MCwkb3V0Ci0rCSB2eG9yCQkkb3V0NiwkaW42LCRybmRrZXkw Ci0rCXN0dnhfdQkJJG91dDcsJHg3MCwkb3V0Ci0rCWFkZGkJCSRvdXQsJG91dCwweDgwCi0rCSB2 eG9yCQkkb3V0NywkaW43LCRybmRrZXkwCi0rCi0rCW10Y3RyCQkkcm91bmRzCi0rCWJlcQkJTG9v cF9jYmNfZGVjOHgJCSMgZGlkICRsZW4tPTEyOCBib3Jyb3c/Ci0rCi0rCWFkZGljLgkJJGxlbiwk bGVuLDEyOAotKwliZXEJCUxjYmNfZGVjOHhfZG9uZQotKwlub3AKLSsJbm9wCi0rCi0rTG9vcF9j YmNfZGVjOHhfdGFpbDoJCQkJIyB1cCB0byA3ICJ3b3JkcyIgdGFpbC4uLgotKwl2bmNpcGhlcgkk b3V0MSwkb3V0MSx2MjQKLSsJdm5jaXBoZXIJJG91dDIsJG91dDIsdjI0Ci0rCXZuY2lwaGVyCSRv dXQzLCRvdXQzLHYyNAotKwl2bmNpcGhlcgkkb3V0NCwkb3V0NCx2MjQKLSsJdm5jaXBoZXIJJG91 dDUsJG91dDUsdjI0Ci0rCXZuY2lwaGVyCSRvdXQ2LCRvdXQ2LHYyNAotKwl2bmNpcGhlcgkkb3V0 Nywkb3V0Nyx2MjQKLSsJbHZ4CQl2MjQsJHgyMCwka2V5XwkJIyByb3VuZFszXQotKwlhZGRpCQkk a2V5Xywka2V5XywweDIwCi0rCi0rCXZuY2lwaGVyCSRvdXQxLCRvdXQxLHYyNQotKwl2bmNpcGhl cgkkb3V0Miwkb3V0Mix2MjUKLSsJdm5jaXBoZXIJJG91dDMsJG91dDMsdjI1Ci0rCXZuY2lwaGVy CSRvdXQ0LCRvdXQ0LHYyNQotKwl2bmNpcGhlcgkkb3V0NSwkb3V0NSx2MjUKLSsJdm5jaXBoZXIJ JG91dDYsJG91dDYsdjI1Ci0rCXZuY2lwaGVyCSRvdXQ3LCRvdXQ3LHYyNQotKwlsdngJCXYyNSwk eDEwLCRrZXlfCQkjIHJvdW5kWzRdCi0rCWJkbnoJCUxvb3BfY2JjX2RlYzh4X3RhaWwKLSsKLSsJ dm5jaXBoZXIJJG91dDEsJG91dDEsdjI0Ci0rCXZuY2lwaGVyCSRvdXQyLCRvdXQyLHYyNAotKwl2 bmNpcGhlcgkkb3V0Mywkb3V0Myx2MjQKLSsJdm5jaXBoZXIJJG91dDQsJG91dDQsdjI0Ci0rCXZu Y2lwaGVyCSRvdXQ1LCRvdXQ1LHYyNAotKwl2bmNpcGhlcgkkb3V0Niwkb3V0Nix2MjQKLSsJdm5j aXBoZXIJJG91dDcsJG91dDcsdjI0Ci0rCi0rCXZuY2lwaGVyCSRvdXQxLCRvdXQxLHYyNQotKwl2 bmNpcGhlcgkkb3V0Miwkb3V0Mix2MjUKLSsJdm5jaXBoZXIJJG91dDMsJG91dDMsdjI1Ci0rCXZu Y2lwaGVyCSRvdXQ0LCRvdXQ0LHYyNQotKwl2bmNpcGhlcgkkb3V0NSwkb3V0NSx2MjUKLSsJdm5j aXBoZXIJJG91dDYsJG91dDYsdjI1Ci0rCXZuY2lwaGVyCSRvdXQ3LCRvdXQ3LHYyNQotKwotKwl2 bmNpcGhlcgkkb3V0MSwkb3V0MSx2MjYKLSsJdm5jaXBoZXIJJG91dDIsJG91dDIsdjI2Ci0rCXZu Y2lwaGVyCSRvdXQzLCRvdXQzLHYyNgotKwl2bmNpcGhlcgkkb3V0NCwkb3V0NCx2MjYKLSsJdm5j aXBoZXIJJG91dDUsJG91dDUsdjI2Ci0rCXZuY2lwaGVyCSRvdXQ2LCRvdXQ2LHYyNgotKwl2bmNp cGhlcgkkb3V0Nywkb3V0Nyx2MjYKLSsKLSsJdm5jaXBoZXIJJG91dDEsJG91dDEsdjI3Ci0rCXZu Y2lwaGVyCSRvdXQyLCRvdXQyLHYyNwotKwl2bmNpcGhlcgkkb3V0Mywkb3V0Myx2MjcKLSsJdm5j aXBoZXIJJG91dDQsJG91dDQsdjI3Ci0rCXZuY2lwaGVyCSRvdXQ1LCRvdXQ1LHYyNwotKwl2bmNp cGhlcgkkb3V0Niwkb3V0Nix2MjcKLSsJdm5jaXBoZXIJJG91dDcsJG91dDcsdjI3Ci0rCi0rCXZu Y2lwaGVyCSRvdXQxLCRvdXQxLHYyOAotKwl2bmNpcGhlcgkkb3V0Miwkb3V0Mix2MjgKLSsJdm5j aXBoZXIJJG91dDMsJG91dDMsdjI4Ci0rCXZuY2lwaGVyCSRvdXQ0LCRvdXQ0LHYyOAotKwl2bmNp cGhlcgkkb3V0NSwkb3V0NSx2MjgKLSsJdm5jaXBoZXIJJG91dDYsJG91dDYsdjI4Ci0rCXZuY2lw aGVyCSRvdXQ3LCRvdXQ3LHYyOAotKwotKwl2bmNpcGhlcgkkb3V0MSwkb3V0MSx2MjkKLSsJdm5j aXBoZXIJJG91dDIsJG91dDIsdjI5Ci0rCXZuY2lwaGVyCSRvdXQzLCRvdXQzLHYyOQotKwl2bmNp cGhlcgkkb3V0NCwkb3V0NCx2MjkKLSsJdm5jaXBoZXIJJG91dDUsJG91dDUsdjI5Ci0rCXZuY2lw aGVyCSRvdXQ2LCRvdXQ2LHYyOQotKwl2bmNpcGhlcgkkb3V0Nywkb3V0Nyx2MjkKLSsKLSsJdm5j aXBoZXIJJG91dDEsJG91dDEsdjMwCi0rCSB2eG9yCQkkaXZlYywkaXZlYyx2MzEJCSMgbGFzdCBy b3VuZCBrZXkKLSsJdm5jaXBoZXIJJG91dDIsJG91dDIsdjMwCi0rCSB2eG9yCQkkaW4xLCRpbjEs djMxCi0rCXZuY2lwaGVyCSRvdXQzLCRvdXQzLHYzMAotKwkgdnhvcgkJJGluMiwkaW4yLHYzMQot Kwl2bmNpcGhlcgkkb3V0NCwkb3V0NCx2MzAKLSsJIHZ4b3IJCSRpbjMsJGluMyx2MzEKLSsJdm5j aXBoZXIJJG91dDUsJG91dDUsdjMwCi0rCSB2eG9yCQkkaW40LCRpbjQsdjMxCi0rCXZuY2lwaGVy CSRvdXQ2LCRvdXQ2LHYzMAotKwkgdnhvcgkJJGluNSwkaW41LHYzMQotKwl2bmNpcGhlcgkkb3V0 Nywkb3V0Nyx2MzAKLSsJIHZ4b3IJCSRpbjYsJGluNix2MzEKLSsKLSsJY21wbHdpCQkkbGVuLDMy CQkJIyBzd2l0Y2goJGxlbikKLSsJYmx0CQlMY2JjX2RlYzh4X29uZQotKwlub3AKLSsJYmVxCQlM Y2JjX2RlYzh4X3R3bwotKwljbXBsd2kJCSRsZW4sNjQKLSsJYmx0CQlMY2JjX2RlYzh4X3RocmVl Ci0rCW5vcAotKwliZXEJCUxjYmNfZGVjOHhfZm91cgotKwljbXBsd2kJCSRsZW4sOTYKLSsJYmx0 CQlMY2JjX2RlYzh4X2ZpdmUKLSsJbm9wCi0rCWJlcQkJTGNiY19kZWM4eF9zaXgKLSsKLStMY2Jj X2RlYzh4X3NldmVuOgotKwl2bmNpcGhlcmxhc3QJJG91dDEsJG91dDEsJGl2ZWMKLSsJdm5jaXBo ZXJsYXN0CSRvdXQyLCRvdXQyLCRpbjEKLSsJdm5jaXBoZXJsYXN0CSRvdXQzLCRvdXQzLCRpbjIK LSsJdm5jaXBoZXJsYXN0CSRvdXQ0LCRvdXQ0LCRpbjMKLSsJdm5jaXBoZXJsYXN0CSRvdXQ1LCRv dXQ1LCRpbjQKLSsJdm5jaXBoZXJsYXN0CSRvdXQ2LCRvdXQ2LCRpbjUKLSsJdm5jaXBoZXJsYXN0 CSRvdXQ3LCRvdXQ3LCRpbjYKLSsJdm1yCQkkaXZlYywkaW43Ci0rCi0rCWxlP3ZwZXJtCSRvdXQx LCRvdXQxLCRvdXQxLCRpbnBwZXJtCi0rCWxlP3ZwZXJtCSRvdXQyLCRvdXQyLCRvdXQyLCRpbnBw ZXJtCi0rCXN0dnhfdQkJJG91dDEsJHgwMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQzLCRvdXQzLCRv dXQzLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDIsJHgxMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ0 LCRvdXQ0LCRvdXQ0LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDMsJHgyMCwkb3V0Ci0rCWxlP3Zw ZXJtCSRvdXQ1LCRvdXQ1LCRvdXQ1LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDQsJHgzMCwkb3V0 Ci0rCWxlP3ZwZXJtCSRvdXQ2LCRvdXQ2LCRvdXQ2LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDUs JHg0MCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ3LCRvdXQ3LCRvdXQ3LCRpbnBwZXJtCi0rCXN0dnhf dQkJJG91dDYsJHg1MCwkb3V0Ci0rCXN0dnhfdQkJJG91dDcsJHg2MCwkb3V0Ci0rCWFkZGkJCSRv dXQsJG91dCwweDcwCi0rCWIJCUxjYmNfZGVjOHhfZG9uZQotKwotKy5hbGlnbgk1Ci0rTGNiY19k ZWM4eF9zaXg6Ci0rCXZuY2lwaGVybGFzdAkkb3V0Miwkb3V0MiwkaXZlYwotKwl2bmNpcGhlcmxh c3QJJG91dDMsJG91dDMsJGluMgotKwl2bmNpcGhlcmxhc3QJJG91dDQsJG91dDQsJGluMwotKwl2 bmNpcGhlcmxhc3QJJG91dDUsJG91dDUsJGluNAotKwl2bmNpcGhlcmxhc3QJJG91dDYsJG91dDYs JGluNQotKwl2bmNpcGhlcmxhc3QJJG91dDcsJG91dDcsJGluNgotKwl2bXIJCSRpdmVjLCRpbjcK LSsKLSsJbGU/dnBlcm0JJG91dDIsJG91dDIsJG91dDIsJGlucHBlcm0KLSsJbGU/dnBlcm0JJG91 dDMsJG91dDMsJG91dDMsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0MiwkeDAwLCRvdXQKLSsJbGU/ dnBlcm0JJG91dDQsJG91dDQsJG91dDQsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0MywkeDEwLCRv dXQKLSsJbGU/dnBlcm0JJG91dDUsJG91dDUsJG91dDUsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0 NCwkeDIwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDYsJG91dDYsJG91dDYsJGlucHBlcm0KLSsJc3R2 eF91CQkkb3V0NSwkeDMwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDcsJG91dDcsJG91dDcsJGlucHBl cm0KLSsJc3R2eF91CQkkb3V0NiwkeDQwLCRvdXQKLSsJc3R2eF91CQkkb3V0NywkeDUwLCRvdXQK LSsJYWRkaQkJJG91dCwkb3V0LDB4NjAKLSsJYgkJTGNiY19kZWM4eF9kb25lCi0rCi0rLmFsaWdu CTUKLStMY2JjX2RlYzh4X2ZpdmU6Ci0rCXZuY2lwaGVybGFzdAkkb3V0Mywkb3V0MywkaXZlYwot Kwl2bmNpcGhlcmxhc3QJJG91dDQsJG91dDQsJGluMwotKwl2bmNpcGhlcmxhc3QJJG91dDUsJG91 dDUsJGluNAotKwl2bmNpcGhlcmxhc3QJJG91dDYsJG91dDYsJGluNQotKwl2bmNpcGhlcmxhc3QJ JG91dDcsJG91dDcsJGluNgotKwl2bXIJCSRpdmVjLCRpbjcKLSsKLSsJbGU/dnBlcm0JJG91dDMs JG91dDMsJG91dDMsJGlucHBlcm0KLSsJbGU/dnBlcm0JJG91dDQsJG91dDQsJG91dDQsJGlucHBl cm0KLSsJc3R2eF91CQkkb3V0MywkeDAwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDUsJG91dDUsJG91 dDUsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0NCwkeDEwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDYs JG91dDYsJG91dDYsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0NSwkeDIwLCRvdXQKLSsJbGU/dnBl cm0JJG91dDcsJG91dDcsJG91dDcsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0NiwkeDMwLCRvdXQK LSsJc3R2eF91CQkkb3V0NywkeDQwLCRvdXQKLSsJYWRkaQkJJG91dCwkb3V0LDB4NTAKLSsJYgkJ TGNiY19kZWM4eF9kb25lCi0rCi0rLmFsaWduCTUKLStMY2JjX2RlYzh4X2ZvdXI6Ci0rCXZuY2lw aGVybGFzdAkkb3V0NCwkb3V0NCwkaXZlYwotKwl2bmNpcGhlcmxhc3QJJG91dDUsJG91dDUsJGlu NAotKwl2bmNpcGhlcmxhc3QJJG91dDYsJG91dDYsJGluNQotKwl2bmNpcGhlcmxhc3QJJG91dDcs JG91dDcsJGluNgotKwl2bXIJCSRpdmVjLCRpbjcKLSsKLSsJbGU/dnBlcm0JJG91dDQsJG91dDQs JG91dDQsJGlucHBlcm0KLSsJbGU/dnBlcm0JJG91dDUsJG91dDUsJG91dDUsJGlucHBlcm0KLSsJ c3R2eF91CQkkb3V0NCwkeDAwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDYsJG91dDYsJG91dDYsJGlu cHBlcm0KLSsJc3R2eF91CQkkb3V0NSwkeDEwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDcsJG91dDcs JG91dDcsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0NiwkeDIwLCRvdXQKLSsJc3R2eF91CQkkb3V0 NywkeDMwLCRvdXQKLSsJYWRkaQkJJG91dCwkb3V0LDB4NDAKLSsJYgkJTGNiY19kZWM4eF9kb25l Ci0rCi0rLmFsaWduCTUKLStMY2JjX2RlYzh4X3RocmVlOgotKwl2bmNpcGhlcmxhc3QJJG91dDUs JG91dDUsJGl2ZWMKLSsJdm5jaXBoZXJsYXN0CSRvdXQ2LCRvdXQ2LCRpbjUKLSsJdm5jaXBoZXJs YXN0CSRvdXQ3LCRvdXQ3LCRpbjYKLSsJdm1yCQkkaXZlYywkaW43Ci0rCi0rCWxlP3ZwZXJtCSRv dXQ1LCRvdXQ1LCRvdXQ1LCRpbnBwZXJtCi0rCWxlP3ZwZXJtCSRvdXQ2LCRvdXQ2LCRvdXQ2LCRp bnBwZXJtCi0rCXN0dnhfdQkJJG91dDUsJHgwMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ3LCRvdXQ3 LCRvdXQ3LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDYsJHgxMCwkb3V0Ci0rCXN0dnhfdQkJJG91 dDcsJHgyMCwkb3V0Ci0rCWFkZGkJCSRvdXQsJG91dCwweDMwCi0rCWIJCUxjYmNfZGVjOHhfZG9u ZQotKwotKy5hbGlnbgk1Ci0rTGNiY19kZWM4eF90d286Ci0rCXZuY2lwaGVybGFzdAkkb3V0Niwk b3V0NiwkaXZlYwotKwl2bmNpcGhlcmxhc3QJJG91dDcsJG91dDcsJGluNgotKwl2bXIJCSRpdmVj LCRpbjcKLSsKLSsJbGU/dnBlcm0JJG91dDYsJG91dDYsJG91dDYsJGlucHBlcm0KLSsJbGU/dnBl cm0JJG91dDcsJG91dDcsJG91dDcsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0NiwkeDAwLCRvdXQK LSsJc3R2eF91CQkkb3V0NywkeDEwLCRvdXQKLSsJYWRkaQkJJG91dCwkb3V0LDB4MjAKLSsJYgkJ TGNiY19kZWM4eF9kb25lCi0rCi0rLmFsaWduCTUKLStMY2JjX2RlYzh4X29uZToKLSsJdm5jaXBo ZXJsYXN0CSRvdXQ3LCRvdXQ3LCRpdmVjCi0rCXZtcgkJJGl2ZWMsJGluNwotKwotKwlsZT92cGVy bQkkb3V0Nywkb3V0Nywkb3V0NywkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQ3LDAsJG91dAotKwlh ZGRpCQkkb3V0LCRvdXQsMHgxMAotKwotK0xjYmNfZGVjOHhfZG9uZToKLSsJbGU/dnBlcm0JJGl2 ZWMsJGl2ZWMsJGl2ZWMsJGlucHBlcm0KLSsJc3R2eF91CQkkaXZlYywwLCRpdnAJCSMgd3JpdGUg W3VuYWxpZ25lZF0gaXYKLSsKLSsJbGkJCXIxMCxgJEZSQU1FKzE1YAotKwlsaQkJcjExLGAkRlJB TUUrMzFgCi0rCXN0dngJCSRpbnBwZXJtLHIxMCwkc3AJIyB3aXBlIGNvcGllcyBvZiByb3VuZCBr ZXlzCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJc3R2eAkJJGlucHBlcm0scjExLCRzcAotKwlhZGRp CQlyMTEscjExLDMyCi0rCXN0dngJCSRpbnBwZXJtLHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwz MgotKwlzdHZ4CQkkaW5wcGVybSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2eAkJ JGlucHBlcm0scjEwLCRzcAotKwlhZGRpCQlyMTAscjEwLDMyCi0rCXN0dngJCSRpbnBwZXJtLHIx MSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQkkaW5wcGVybSxyMTAsJHNwCi0rCWFk ZGkJCXIxMCxyMTAsMzIKLSsJc3R2eAkJJGlucHBlcm0scjExLCRzcAotKwlhZGRpCQlyMTEscjEx LDMyCi0rCi0rCW10c3ByCQkyNTYsJHZyc2F2ZQotKwlsdngJCXYyMCxyMTAsJHNwCQkjIEFCSSBz YXlzIHNvCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjEscjExLCRzcAotKwlhZGRpCQly MTEscjExLDMyCi0rCWx2eAkJdjIyLHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlsdngJ CXYyMyxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJbHZ4CQl2MjQscjEwLCRzcAotKwlh ZGRpCQlyMTAscjEwLDMyCi0rCWx2eAkJdjI1LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgot KwlsdngJCXYyNixyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjcscjExLCRz cAotKwlhZGRpCQlyMTEscjExLDMyCi0rCWx2eAkJdjI4LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIx MCwzMgotKwlsdngJCXYyOSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJbHZ4CQl2MzAs cjEwLCRzcAotKwlsdngJCXYzMSxyMTEsJHNwCi0rCSRQT1AJCXIyNixgJEZSQU1FKzIxKjE2KzAq JFNJWkVfVGAoJHNwKQotKwkkUE9QCQlyMjcsYCRGUkFNRSsyMSoxNisxKiRTSVpFX1RgKCRzcCkK LSsJJFBPUAkJcjI4LGAkRlJBTUUrMjEqMTYrMiokU0laRV9UYCgkc3ApCi0rCSRQT1AJCXIyOSxg JEZSQU1FKzIxKjE2KzMqJFNJWkVfVGAoJHNwKQotKwkkUE9QCQlyMzAsYCRGUkFNRSsyMSoxNis0 KiRTSVpFX1RgKCRzcCkKLSsJJFBPUAkJcjMxLGAkRlJBTUUrMjEqMTYrNSokU0laRV9UYCgkc3Ap Ci0rCWFkZGkJCSRzcCwkc3AsYCRGUkFNRSsyMSoxNis2KiRTSVpFX1RgCi0rCWJscgotKwkubG9u ZwkJMAotKwkuYnl0ZQkJMCwxMiwweDE0LDAsMHg4MCw2LDYsMAotKwkubG9uZwkJMAotKy5zaXpl CS4ke3ByZWZpeH1fY2JjX2VuY3J5cHQsLi0uJHtwcmVmaXh9X2NiY19lbmNyeXB0Ci0rX19fCi0r fX0JfX19Ci0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotK3t7ewkjIENUUiBwcm9jZWR1cmVbc10JCQkJ CQkjCi0rbXkgKCRpbnAsJG91dCwkbGVuLCRrZXksJGl2cCwkeDEwLCRyb3VuZHMsJGlkeCk9bWFw KCJyJF8iLCgzLi4xMCkpOwotK215ICgkcm5ka2V5MCwkcm5ka2V5MSwkaW5vdXQsJHRtcCk9CQlt YXAoInYkXyIsKDAuLjMpKTsKLStteSAoJGl2ZWMsJGlucHRhaWwsJGlucHBlcm0sJG91dGhlYWQs JG91dHBlcm0sJG91dG1hc2ssJGtleXBlcm0sJG9uZSk9Ci0rCQkJCQkJbWFwKCJ2JF8iLCg0Li4x MSkpOwotK215ICRkYXQ9JHRtcDsKLSsKLSskY29kZS49PDxfX187Ci0rLmdsb2JsCS4ke3ByZWZp eH1fY3RyMzJfZW5jcnlwdF9ibG9ja3MKLSsuYWxpZ24JNQotKy4ke3ByZWZpeH1fY3RyMzJfZW5j cnlwdF9ibG9ja3M6Ci0rCSR7VUNNUH1pCSRsZW4sMQotKwlibHRsci0KLSsKLSsJbGlzCQlyMCww eGZmZjAKLSsJbWZzcHIJCSR2cnNhdmUsMjU2Ci0rCW10c3ByCQkyNTYscjAKLSsKLSsJbGkJCSRp ZHgsMTUKLSsJdnhvcgkJJHJuZGtleTAsJHJuZGtleTAsJHJuZGtleTAKLSsJbGU/dnNwbHRpc2IJ JHRtcCwweDBmCi0rCi0rCWx2eAkJJGl2ZWMsMCwkaXZwCQkjIGxvYWQgW3VuYWxpZ25lZF0gaXYK LSsJbHZzbAkJJGlucHBlcm0sMCwkaXZwCi0rCWx2eAkJJGlucHRhaWwsJGlkeCwkaXZwCi0rCSB2 c3BsdGlzYgkkb25lLDEKLSsJbGU/dnhvcgkJJGlucHBlcm0sJGlucHBlcm0sJHRtcAotKwl2cGVy bQkJJGl2ZWMsJGl2ZWMsJGlucHRhaWwsJGlucHBlcm0KLSsJIHZzbGRvaQkJJG9uZSwkcm5ka2V5 MCwkb25lLDEKLSsKLSsJbmVnCQlyMTEsJGlucAotKwk/bHZzbAkJJGtleXBlcm0sMCwka2V5CQkj IHByZXBhcmUgZm9yIHVuYWxpZ25lZCBrZXkKLSsJbHd6CQkkcm91bmRzLDI0MCgka2V5KQotKwot KwlsdnNyCQkkaW5wcGVybSwwLHIxMQkJIyBwcmVwYXJlIGZvciB1bmFsaWduZWQgbG9hZAotKwls dngJCSRpbnB0YWlsLDAsJGlucAotKwlhZGRpCQkkaW5wLCRpbnAsMTUJCSMgMTUgaXMgbm90IHR5 cG8KLSsJbGU/dnhvcgkJJGlucHBlcm0sJGlucHBlcm0sJHRtcAotKwotKwlzcndpCQkkcm91bmRz LCRyb3VuZHMsMQotKwlsaQkJJGlkeCwxNgotKwlzdWJpCQkkcm91bmRzLCRyb3VuZHMsMQotKwot Kwkke1VDTVB9aQkkbGVuLDgKLSsJYmdlCQlfYWVzcDhfY3RyMzJfZW5jcnlwdDh4Ci0rCi0rCT9s dnNyCQkkb3V0cGVybSwwLCRvdXQJCSMgcHJlcGFyZSBmb3IgdW5hbGlnbmVkIHN0b3JlCi0rCXZz cGx0aXNiCSRvdXRtYXNrLC0xCi0rCWx2eAkJJG91dGhlYWQsMCwkb3V0Ci0rCT92cGVybQkJJG91 dG1hc2ssJHJuZGtleTAsJG91dG1hc2ssJG91dHBlcm0KLSsJbGU/dnhvcgkJJG91dHBlcm0sJG91 dHBlcm0sJHRtcAotKwotKwlsdngJCSRybmRrZXkwLDAsJGtleQotKwltdGN0cgkJJHJvdW5kcwot KwlsdngJCSRybmRrZXkxLCRpZHgsJGtleQotKwlhZGRpCQkkaWR4LCRpZHgsMTYKLSsJP3ZwZXJt CQkkcm5ka2V5MCwkcm5ka2V5MCwkcm5ka2V5MSwka2V5cGVybQotKwl2eG9yCQkkaW5vdXQsJGl2 ZWMsJHJuZGtleTAKLSsJbHZ4CQkkcm5ka2V5MCwkaWR4LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4 LDE2Ci0rCWIJCUxvb3BfY3RyMzJfZW5jCi0rCi0rLmFsaWduCTUKLStMb29wX2N0cjMyX2VuYzoK LSsJP3ZwZXJtCQkkcm5ka2V5MSwkcm5ka2V5MSwkcm5ka2V5MCwka2V5cGVybQotKwl2Y2lwaGVy CQkkaW5vdXQsJGlub3V0LCRybmRrZXkxCi0rCWx2eAkJJHJuZGtleTEsJGlkeCwka2V5Ci0rCWFk ZGkJCSRpZHgsJGlkeCwxNgotKwk/dnBlcm0JCSRybmRrZXkwLCRybmRrZXkwLCRybmRrZXkxLCRr ZXlwZXJtCi0rCXZjaXBoZXIJCSRpbm91dCwkaW5vdXQsJHJuZGtleTAKLSsJbHZ4CQkkcm5ka2V5 MCwkaWR4LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCWJkbnoJCUxvb3BfY3RyMzJfZW5j Ci0rCi0rCXZhZGR1d20JCSRpdmVjLCRpdmVjLCRvbmUKLSsJIHZtcgkJJGRhdCwkaW5wdGFpbAot KwkgbHZ4CQkkaW5wdGFpbCwwLCRpbnAKLSsJIGFkZGkJCSRpbnAsJGlucCwxNgotKwkgc3ViaWMu CQkkbGVuLCRsZW4sMQkJIyBibG9ja3MtLQotKwotKwk/dnBlcm0JCSRybmRrZXkxLCRybmRrZXkx LCRybmRrZXkwLCRrZXlwZXJtCi0rCXZjaXBoZXIJCSRpbm91dCwkaW5vdXQsJHJuZGtleTEKLSsJ bHZ4CQkkcm5ka2V5MSwkaWR4LCRrZXkKLSsJIHZwZXJtCQkkZGF0LCRkYXQsJGlucHRhaWwsJGlu cHBlcm0KLSsJIGxpCQkkaWR4LDE2Ci0rCT92cGVybQkJJHJuZGtleTEsJHJuZGtleTAsJHJuZGtl eTEsJGtleXBlcm0KLSsJIGx2eAkJJHJuZGtleTAsMCwka2V5Ci0rCXZ4b3IJCSRkYXQsJGRhdCwk cm5ka2V5MQkjIGxhc3Qgcm91bmQga2V5Ci0rCXZjaXBoZXJsYXN0CSRpbm91dCwkaW5vdXQsJGRh dAotKwotKwkgbHZ4CQkkcm5ka2V5MSwkaWR4LCRrZXkKLSsJIGFkZGkJCSRpZHgsJGlkeCwxNgot Kwl2cGVybQkJJGlub3V0LCRpbm91dCwkaW5vdXQsJG91dHBlcm0KLSsJdnNlbAkJJGRhdCwkb3V0 aGVhZCwkaW5vdXQsJG91dG1hc2sKLSsJIG10Y3RyCQkkcm91bmRzCi0rCSA/dnBlcm0JCSRybmRr ZXkwLCRybmRrZXkwLCRybmRrZXkxLCRrZXlwZXJtCi0rCXZtcgkJJG91dGhlYWQsJGlub3V0Ci0r CSB2eG9yCQkkaW5vdXQsJGl2ZWMsJHJuZGtleTAKLSsJIGx2eAkJJHJuZGtleTAsJGlkeCwka2V5 Ci0rCSBhZGRpCQkkaWR4LCRpZHgsMTYKLSsJc3R2eAkJJGRhdCwwLCRvdXQKLSsJYWRkaQkJJG91 dCwkb3V0LDE2Ci0rCWJuZQkJTG9vcF9jdHIzMl9lbmMKLSsKLSsJYWRkaQkJJG91dCwkb3V0LC0x Ci0rCWx2eAkJJGlub3V0LDAsJG91dAkJIyByZWR1bmRhbnQgaW4gYWxpZ25lZCBjYXNlCi0rCXZz ZWwJCSRpbm91dCwkb3V0aGVhZCwkaW5vdXQsJG91dG1hc2sKLSsJc3R2eAkJJGlub3V0LDAsJG91 dAotKwotKwltdHNwcgkJMjU2LCR2cnNhdmUKLSsJYmxyCi0rCS5sb25nCQkwCi0rCS5ieXRlCQkw LDEyLDB4MTQsMCwwLDAsNiwwCi0rCS5sb25nCQkwCi0rX19fCi0rIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot K3t7CSMgT3B0aW1pemVkIENUUiBwcm9jZWR1cmUJCQkJCSMKLStteSAka2V5Xz0icjExIjsKLStt eSAoJHgwMCwkeDEwLCR4MjAsJHgzMCwkeDQwLCR4NTAsJHg2MCwkeDcwKT1tYXAoInIkXyIsKDAs OCwyNi4uMzEpKTsKLStteSAoJGluMCwgJGluMSwgJGluMiwgJGluMywgJGluNCwgJGluNSwgJGlu NiwgJGluNyApPW1hcCgidiRfIiwoMC4uMywxMCwxMi4uMTQpKTsKLStteSAoJG91dDAsJG91dDEs JG91dDIsJG91dDMsJG91dDQsJG91dDUsJG91dDYsJG91dDcpPW1hcCgidiRfIiwoMTUuLjIyKSk7 Ci0rbXkgJHJuZGtleTA9InYyMyI7CSMgdjI0LXYyNSByb3RhdGluZyBidWZmZXIgZm9yIGZpcnN0 IGZvdW5kIGtleXMKLSsJCQkjIHYyNi12MzEgbGFzdCA2IHJvdW5kIGtleXMKLStteSAoJHRtcCwk a2V5cGVybSk9KCRpbjMsJGluNCk7CSMgYWxpYXNlcyB3aXRoICJjYWxsZXIiLCByZWR1bmRhbnQg YXNzaWdubWVudAotK215ICgkdHdvLCR0aHJlZSwkZm91cik9KCRvdXRoZWFkLCRvdXRwZXJtLCRv dXRtYXNrKTsKLSsKLSskY29kZS49PDxfX187Ci0rLmFsaWduCTUKLStfYWVzcDhfY3RyMzJfZW5j cnlwdDh4OgotKwkkU1RVCQkkc3AsLWAoJEZSQU1FKzIxKjE2KzYqJFNJWkVfVClgKCRzcCkKLSsJ bGkJCXIxMCxgJEZSQU1FKzgqMTYrMTVgCi0rCWxpCQlyMTEsYCRGUkFNRSs4KjE2KzMxYAotKwlz dHZ4CQl2MjAscjEwLCRzcAkJIyBBQkkgc2F5cyBzbwotKwlhZGRpCQlyMTAscjEwLDMyCi0rCXN0 dngJCXYyMSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2eAkJdjIyLHIxMCwkc3AK LSsJYWRkaQkJcjEwLHIxMCwzMgotKwlzdHZ4CQl2MjMscjExLCRzcAotKwlhZGRpCQlyMTEscjEx LDMyCi0rCXN0dngJCXYyNCxyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJc3R2eAkJdjI1 LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQl2MjYscjEwLCRzcAotKwlhZGRp CQlyMTAscjEwLDMyCi0rCXN0dngJCXYyNyxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJ c3R2eAkJdjI4LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlzdHZ4CQl2MjkscjExLCRz cAotKwlhZGRpCQlyMTEscjExLDMyCi0rCXN0dngJCXYzMCxyMTAsJHNwCi0rCXN0dngJCXYzMSxy MTEsJHNwCi0rCWxpCQlyMCwtMQotKwlzdHcJCSR2cnNhdmUsYCRGUkFNRSsyMSoxNi00YCgkc3Ap CSMgc2F2ZSB2cnNhdmUKLSsJbGkJCSR4MTAsMHgxMAotKwkkUFVTSAkJcjI2LGAkRlJBTUUrMjEq MTYrMCokU0laRV9UYCgkc3ApCi0rCWxpCQkkeDIwLDB4MjAKLSsJJFBVU0gJCXIyNyxgJEZSQU1F KzIxKjE2KzEqJFNJWkVfVGAoJHNwKQotKwlsaQkJJHgzMCwweDMwCi0rCSRQVVNICQlyMjgsYCRG UkFNRSsyMSoxNisyKiRTSVpFX1RgKCRzcCkKLSsJbGkJCSR4NDAsMHg0MAotKwkkUFVTSAkJcjI5 LGAkRlJBTUUrMjEqMTYrMyokU0laRV9UYCgkc3ApCi0rCWxpCQkkeDUwLDB4NTAKLSsJJFBVU0gJ CXIzMCxgJEZSQU1FKzIxKjE2KzQqJFNJWkVfVGAoJHNwKQotKwlsaQkJJHg2MCwweDYwCi0rCSRQ VVNICQlyMzEsYCRGUkFNRSsyMSoxNis1KiRTSVpFX1RgKCRzcCkKLSsJbGkJCSR4NzAsMHg3MAot KwltdHNwcgkJMjU2LHIwCi0rCi0rCXN1YmkJCSRyb3VuZHMsJHJvdW5kcywzCSMgLTQgaW4gdG90 YWwKLSsKLSsJbHZ4CQkkcm5ka2V5MCwkeDAwLCRrZXkJIyBsb2FkIGtleSBzY2hlZHVsZQotKwls dngJCXYzMCwkeDEwLCRrZXkKLSsJYWRkaQkJJGtleSwka2V5LDB4MjAKLSsJbHZ4CQl2MzEsJHgw MCwka2V5Ci0rCT92cGVybQkJJHJuZGtleTAsJHJuZGtleTAsdjMwLCRrZXlwZXJtCi0rCWFkZGkJ CSRrZXlfLCRzcCwkRlJBTUUrMTUKLSsJbXRjdHIJCSRyb3VuZHMKLSsKLStMb2FkX2N0cjMyX2Vu Y19rZXk6Ci0rCT92cGVybQkJdjI0LHYzMCx2MzEsJGtleXBlcm0KLSsJbHZ4CQl2MzAsJHgxMCwk a2V5Ci0rCWFkZGkJCSRrZXksJGtleSwweDIwCi0rCXN0dngJCXYyNCwkeDAwLCRrZXlfCQkjIG9m Zi1sb2FkIHJvdW5kWzFdCi0rCT92cGVybQkJdjI1LHYzMSx2MzAsJGtleXBlcm0KLSsJbHZ4CQl2 MzEsJHgwMCwka2V5Ci0rCXN0dngJCXYyNSwkeDEwLCRrZXlfCQkjIG9mZi1sb2FkIHJvdW5kWzJd Ci0rCWFkZGkJCSRrZXlfLCRrZXlfLDB4MjAKLSsJYmRuegkJTG9hZF9jdHIzMl9lbmNfa2V5Ci0r Ci0rCWx2eAkJdjI2LCR4MTAsJGtleQotKwk/dnBlcm0JCXYyNCx2MzAsdjMxLCRrZXlwZXJtCi0r CWx2eAkJdjI3LCR4MjAsJGtleQotKwlzdHZ4CQl2MjQsJHgwMCwka2V5XwkJIyBvZmYtbG9hZCBy b3VuZFszXQotKwk/dnBlcm0JCXYyNSx2MzEsdjI2LCRrZXlwZXJtCi0rCWx2eAkJdjI4LCR4MzAs JGtleQotKwlzdHZ4CQl2MjUsJHgxMCwka2V5XwkJIyBvZmYtbG9hZCByb3VuZFs0XQotKwlhZGRp CQkka2V5Xywkc3AsJEZSQU1FKzE1CSMgcmV3aW5kICRrZXlfCi0rCT92cGVybQkJdjI2LHYyNix2 MjcsJGtleXBlcm0KLSsJbHZ4CQl2MjksJHg0MCwka2V5Ci0rCT92cGVybQkJdjI3LHYyNyx2Mjgs JGtleXBlcm0KLSsJbHZ4CQl2MzAsJHg1MCwka2V5Ci0rCT92cGVybQkJdjI4LHYyOCx2MjksJGtl eXBlcm0KLSsJbHZ4CQl2MzEsJHg2MCwka2V5Ci0rCT92cGVybQkJdjI5LHYyOSx2MzAsJGtleXBl cm0KLSsJbHZ4CQkkb3V0MCwkeDcwLCRrZXkJCSMgYm9ycm93ICRvdXQwCi0rCT92cGVybQkJdjMw LHYzMCx2MzEsJGtleXBlcm0KLSsJbHZ4CQl2MjQsJHgwMCwka2V5XwkJIyBwcmUtbG9hZCByb3Vu ZFsxXQotKwk/dnBlcm0JCXYzMSx2MzEsJG91dDAsJGtleXBlcm0KLSsJbHZ4CQl2MjUsJHgxMCwk a2V5XwkJIyBwcmUtbG9hZCByb3VuZFsyXQotKwotKwl2YWRkdXdtCQkkdHdvLCRvbmUsJG9uZQot KwlzdWJpCQkkaW5wLCRpbnAsMTUJCSMgdW5kbyAiY2FsbGVyIgotKwkkU0hMCQkkbGVuLCRsZW4s NAotKwotKwl2YWRkdXdtCQkkb3V0MSwkaXZlYywkb25lCSMgY291bnRlciB2YWx1ZXMgLi4uCi0r CXZhZGR1d20JCSRvdXQyLCRpdmVjLCR0d28KLSsJdnhvcgkJJG91dDAsJGl2ZWMsJHJuZGtleTAJ IyAuLi4geG9yZWQgd2l0aCBybmRrZXlbMF0KLSsJIGxlP2xpCQkkaWR4LDgKLSsJdmFkZHV3bQkJ JG91dDMsJG91dDEsJHR3bwotKwl2eG9yCQkkb3V0MSwkb3V0MSwkcm5ka2V5MAotKwkgbGU/bHZz bAkkaW5wcGVybSwwLCRpZHgKLSsJdmFkZHV3bQkJJG91dDQsJG91dDIsJHR3bwotKwl2eG9yCQkk b3V0Miwkb3V0Miwkcm5ka2V5MAotKwkgbGU/dnNwbHRpc2IJJHRtcCwweDBmCi0rCXZhZGR1d20J CSRvdXQ1LCRvdXQzLCR0d28KLSsJdnhvcgkJJG91dDMsJG91dDMsJHJuZGtleTAKLSsJIGxlP3Z4 b3IJJGlucHBlcm0sJGlucHBlcm0sJHRtcAkjIHRyYW5zZm9ybSBmb3IgbHZ4X3Uvc3R2eF91Ci0r CXZhZGR1d20JCSRvdXQ2LCRvdXQ0LCR0d28KLSsJdnhvcgkJJG91dDQsJG91dDQsJHJuZGtleTAK LSsJdmFkZHV3bQkJJG91dDcsJG91dDUsJHR3bwotKwl2eG9yCQkkb3V0NSwkb3V0NSwkcm5ka2V5 MAotKwl2YWRkdXdtCQkkaXZlYywkb3V0NiwkdHdvCSMgbmV4dCBjb3VudGVyIHZhbHVlCi0rCXZ4 b3IJCSRvdXQ2LCRvdXQ2LCRybmRrZXkwCi0rCXZ4b3IJCSRvdXQ3LCRvdXQ3LCRybmRrZXkwCi0r Ci0rCW10Y3RyCQkkcm91bmRzCi0rCWIJCUxvb3BfY3RyMzJfZW5jOHgKLSsuYWxpZ24JNQotK0xv b3BfY3RyMzJfZW5jOHg6Ci0rCXZjaXBoZXIgCSRvdXQwLCRvdXQwLHYyNAotKwl2Y2lwaGVyIAkk b3V0MSwkb3V0MSx2MjQKLSsJdmNpcGhlciAJJG91dDIsJG91dDIsdjI0Ci0rCXZjaXBoZXIgCSRv dXQzLCRvdXQzLHYyNAotKwl2Y2lwaGVyIAkkb3V0NCwkb3V0NCx2MjQKLSsJdmNpcGhlciAJJG91 dDUsJG91dDUsdjI0Ci0rCXZjaXBoZXIgCSRvdXQ2LCRvdXQ2LHYyNAotKwl2Y2lwaGVyIAkkb3V0 Nywkb3V0Nyx2MjQKLStMb29wX2N0cjMyX2VuYzh4X21pZGRsZToKLSsJbHZ4CQl2MjQsJHgyMCwk a2V5XwkJIyByb3VuZFszXQotKwlhZGRpCQkka2V5Xywka2V5XywweDIwCi0rCi0rCXZjaXBoZXIg CSRvdXQwLCRvdXQwLHYyNQotKwl2Y2lwaGVyIAkkb3V0MSwkb3V0MSx2MjUKLSsJdmNpcGhlciAJ JG91dDIsJG91dDIsdjI1Ci0rCXZjaXBoZXIgCSRvdXQzLCRvdXQzLHYyNQotKwl2Y2lwaGVyIAkk b3V0NCwkb3V0NCx2MjUKLSsJdmNpcGhlciAJJG91dDUsJG91dDUsdjI1Ci0rCXZjaXBoZXIgCSRv dXQ2LCRvdXQ2LHYyNQotKwl2Y2lwaGVyIAkkb3V0Nywkb3V0Nyx2MjUKLSsJbHZ4CQl2MjUsJHgx MCwka2V5XwkJIyByb3VuZFs0XQotKwliZG56CQlMb29wX2N0cjMyX2VuYzh4Ci0rCi0rCXN1Ymlj CQlyMTEsJGxlbiwyNTYJCSMgJGxlbi0yNTYsIGJvcnJvdyAka2V5XwotKwl2Y2lwaGVyIAkkb3V0 MCwkb3V0MCx2MjQKLSsJdmNpcGhlciAJJG91dDEsJG91dDEsdjI0Ci0rCXZjaXBoZXIgCSRvdXQy LCRvdXQyLHYyNAotKwl2Y2lwaGVyIAkkb3V0Mywkb3V0Myx2MjQKLSsJdmNpcGhlciAJJG91dDQs JG91dDQsdjI0Ci0rCXZjaXBoZXIgCSRvdXQ1LCRvdXQ1LHYyNAotKwl2Y2lwaGVyIAkkb3V0Niwk b3V0Nix2MjQKLSsJdmNpcGhlciAJJG91dDcsJG91dDcsdjI0Ci0rCi0rCXN1YmZlCQlyMCxyMCxy MAkJIyBib3Jyb3c/LTE6MAotKwl2Y2lwaGVyIAkkb3V0MCwkb3V0MCx2MjUKLSsJdmNpcGhlciAJ JG91dDEsJG91dDEsdjI1Ci0rCXZjaXBoZXIgCSRvdXQyLCRvdXQyLHYyNQotKwl2Y2lwaGVyIAkk b3V0Mywkb3V0Myx2MjUKLSsJdmNpcGhlciAJJG91dDQsJG91dDQsdjI1Ci0rCXZjaXBoZXIJCSRv dXQ1LCRvdXQ1LHYyNQotKwl2Y2lwaGVyCQkkb3V0Niwkb3V0Nix2MjUKLSsJdmNpcGhlcgkJJG91 dDcsJG91dDcsdjI1Ci0rCi0rCWFuZAkJcjAscjAscjExCi0rCWFkZGkJCSRrZXlfLCRzcCwkRlJB TUUrMTUJIyByZXdpbmQgJGtleV8KLSsJdmNpcGhlcgkJJG91dDAsJG91dDAsdjI2Ci0rCXZjaXBo ZXIJCSRvdXQxLCRvdXQxLHYyNgotKwl2Y2lwaGVyCQkkb3V0Miwkb3V0Mix2MjYKLSsJdmNpcGhl cgkJJG91dDMsJG91dDMsdjI2Ci0rCXZjaXBoZXIJCSRvdXQ0LCRvdXQ0LHYyNgotKwl2Y2lwaGVy CQkkb3V0NSwkb3V0NSx2MjYKLSsJdmNpcGhlcgkJJG91dDYsJG91dDYsdjI2Ci0rCXZjaXBoZXIJ CSRvdXQ3LCRvdXQ3LHYyNgotKwlsdngJCXYyNCwkeDAwLCRrZXlfCQkjIHJlLXByZS1sb2FkIHJv dW5kWzFdCi0rCi0rCXN1YmljCQkkbGVuLCRsZW4sMTI5CQkjICRsZW4tPTEyOQotKwl2Y2lwaGVy CQkkb3V0MCwkb3V0MCx2MjcKLSsJYWRkaQkJJGxlbiwkbGVuLDEJCSMgJGxlbi09MTI4IHJlYWxs eQotKwl2Y2lwaGVyCQkkb3V0MSwkb3V0MSx2MjcKLSsJdmNpcGhlcgkJJG91dDIsJG91dDIsdjI3 Ci0rCXZjaXBoZXIJCSRvdXQzLCRvdXQzLHYyNwotKwl2Y2lwaGVyCQkkb3V0NCwkb3V0NCx2MjcK LSsJdmNpcGhlcgkJJG91dDUsJG91dDUsdjI3Ci0rCXZjaXBoZXIJCSRvdXQ2LCRvdXQ2LHYyNwot Kwl2Y2lwaGVyCQkkb3V0Nywkb3V0Nyx2MjcKLSsJbHZ4CQl2MjUsJHgxMCwka2V5XwkJIyByZS1w cmUtbG9hZCByb3VuZFsyXQotKwotKwl2Y2lwaGVyCQkkb3V0MCwkb3V0MCx2MjgKLSsJIGx2eF91 CQkkaW4wLCR4MDAsJGlucAkJIyBsb2FkIGlucHV0Ci0rCXZjaXBoZXIJCSRvdXQxLCRvdXQxLHYy OAotKwkgbHZ4X3UJCSRpbjEsJHgxMCwkaW5wCi0rCXZjaXBoZXIJCSRvdXQyLCRvdXQyLHYyOAot KwkgbHZ4X3UJCSRpbjIsJHgyMCwkaW5wCi0rCXZjaXBoZXIJCSRvdXQzLCRvdXQzLHYyOAotKwkg bHZ4X3UJCSRpbjMsJHgzMCwkaW5wCi0rCXZjaXBoZXIJCSRvdXQ0LCRvdXQ0LHYyOAotKwkgbHZ4 X3UJCSRpbjQsJHg0MCwkaW5wCi0rCXZjaXBoZXIJCSRvdXQ1LCRvdXQ1LHYyOAotKwkgbHZ4X3UJ CSRpbjUsJHg1MCwkaW5wCi0rCXZjaXBoZXIJCSRvdXQ2LCRvdXQ2LHYyOAotKwkgbHZ4X3UJCSRp bjYsJHg2MCwkaW5wCi0rCXZjaXBoZXIJCSRvdXQ3LCRvdXQ3LHYyOAotKwkgbHZ4X3UJCSRpbjcs JHg3MCwkaW5wCi0rCSBhZGRpCQkkaW5wLCRpbnAsMHg4MAotKwotKwl2Y2lwaGVyCQkkb3V0MCwk b3V0MCx2MjkKLSsJIGxlP3ZwZXJtCSRpbjAsJGluMCwkaW4wLCRpbnBwZXJtCi0rCXZjaXBoZXIJ CSRvdXQxLCRvdXQxLHYyOQotKwkgbGU/dnBlcm0JJGluMSwkaW4xLCRpbjEsJGlucHBlcm0KLSsJ dmNpcGhlcgkJJG91dDIsJG91dDIsdjI5Ci0rCSBsZT92cGVybQkkaW4yLCRpbjIsJGluMiwkaW5w cGVybQotKwl2Y2lwaGVyCQkkb3V0Mywkb3V0Myx2MjkKLSsJIGxlP3ZwZXJtCSRpbjMsJGluMywk aW4zLCRpbnBwZXJtCi0rCXZjaXBoZXIJCSRvdXQ0LCRvdXQ0LHYyOQotKwkgbGU/dnBlcm0JJGlu NCwkaW40LCRpbjQsJGlucHBlcm0KLSsJdmNpcGhlcgkJJG91dDUsJG91dDUsdjI5Ci0rCSBsZT92 cGVybQkkaW41LCRpbjUsJGluNSwkaW5wcGVybQotKwl2Y2lwaGVyCQkkb3V0Niwkb3V0Nix2MjkK LSsJIGxlP3ZwZXJtCSRpbjYsJGluNiwkaW42LCRpbnBwZXJtCi0rCXZjaXBoZXIJCSRvdXQ3LCRv dXQ3LHYyOQotKwkgbGU/dnBlcm0JJGluNywkaW43LCRpbjcsJGlucHBlcm0KLSsKLSsJYWRkCQkk aW5wLCRpbnAscjAJCSMgJGlucCBpcyBhZGp1c3RlZCBpbiBzdWNoCi0rCQkJCQkJIyB3YXkgdGhh dCBhdCBleGl0IGZyb20gdGhlCi0rCQkJCQkJIyBsb29wIGluWC1pbjcgYXJlIGxvYWRlZAotKwkJ CQkJCSMgd2l0aCBsYXN0ICJ3b3JkcyIKLSsJc3ViZmUuCQlyMCxyMCxyMAkJIyBib3Jyb3c/LTE6 MAotKwl2Y2lwaGVyCQkkb3V0MCwkb3V0MCx2MzAKLSsJIHZ4b3IJCSRpbjAsJGluMCx2MzEJCSMg eG9yIHdpdGggbGFzdCByb3VuZCBrZXkKLSsJdmNpcGhlcgkJJG91dDEsJG91dDEsdjMwCi0rCSB2 eG9yCQkkaW4xLCRpbjEsdjMxCi0rCXZjaXBoZXIJCSRvdXQyLCRvdXQyLHYzMAotKwkgdnhvcgkJ JGluMiwkaW4yLHYzMQotKwl2Y2lwaGVyCQkkb3V0Mywkb3V0Myx2MzAKLSsJIHZ4b3IJCSRpbjMs JGluMyx2MzEKLSsJdmNpcGhlcgkJJG91dDQsJG91dDQsdjMwCi0rCSB2eG9yCQkkaW40LCRpbjQs djMxCi0rCXZjaXBoZXIJCSRvdXQ1LCRvdXQ1LHYzMAotKwkgdnhvcgkJJGluNSwkaW41LHYzMQot Kwl2Y2lwaGVyCQkkb3V0Niwkb3V0Nix2MzAKLSsJIHZ4b3IJCSRpbjYsJGluNix2MzEKLSsJdmNp cGhlcgkJJG91dDcsJG91dDcsdjMwCi0rCSB2eG9yCQkkaW43LCRpbjcsdjMxCi0rCi0rCWJuZQkJ TGN0cjMyX2VuYzh4X2JyZWFrCSMgZGlkICRsZW4tMTI5IGJvcnJvdz8KLSsKLSsJdmNpcGhlcmxh c3QJJGluMCwkb3V0MCwkaW4wCi0rCXZjaXBoZXJsYXN0CSRpbjEsJG91dDEsJGluMQotKwkgdmFk ZHV3bQkkb3V0MSwkaXZlYywkb25lCSMgY291bnRlciB2YWx1ZXMgLi4uCi0rCXZjaXBoZXJsYXN0 CSRpbjIsJG91dDIsJGluMgotKwkgdmFkZHV3bQkkb3V0MiwkaXZlYywkdHdvCi0rCSB2eG9yCQkk b3V0MCwkaXZlYywkcm5ka2V5MAkjIC4uLiB4b3JlZCB3aXRoIHJuZGtleVswXQotKwl2Y2lwaGVy bGFzdAkkaW4zLCRvdXQzLCRpbjMKLSsJIHZhZGR1d20JJG91dDMsJG91dDEsJHR3bwotKwkgdnhv cgkJJG91dDEsJG91dDEsJHJuZGtleTAKLSsJdmNpcGhlcmxhc3QJJGluNCwkb3V0NCwkaW40Ci0r CSB2YWRkdXdtCSRvdXQ0LCRvdXQyLCR0d28KLSsJIHZ4b3IJCSRvdXQyLCRvdXQyLCRybmRrZXkw Ci0rCXZjaXBoZXJsYXN0CSRpbjUsJG91dDUsJGluNQotKwkgdmFkZHV3bQkkb3V0NSwkb3V0Mywk dHdvCi0rCSB2eG9yCQkkb3V0Mywkb3V0Mywkcm5ka2V5MAotKwl2Y2lwaGVybGFzdAkkaW42LCRv dXQ2LCRpbjYKLSsJIHZhZGR1d20JJG91dDYsJG91dDQsJHR3bwotKwkgdnhvcgkJJG91dDQsJG91 dDQsJHJuZGtleTAKLSsJdmNpcGhlcmxhc3QJJGluNywkb3V0NywkaW43Ci0rCSB2YWRkdXdtCSRv dXQ3LCRvdXQ1LCR0d28KLSsJIHZ4b3IJCSRvdXQ1LCRvdXQ1LCRybmRrZXkwCi0rCWxlP3ZwZXJt CSRpbjAsJGluMCwkaW4wLCRpbnBwZXJtCi0rCSB2YWRkdXdtCSRpdmVjLCRvdXQ2LCR0d28JIyBu ZXh0IGNvdW50ZXIgdmFsdWUKLSsJIHZ4b3IJCSRvdXQ2LCRvdXQ2LCRybmRrZXkwCi0rCWxlP3Zw ZXJtCSRpbjEsJGluMSwkaW4xLCRpbnBwZXJtCi0rCSB2eG9yCQkkb3V0Nywkb3V0Nywkcm5ka2V5 MAotKwltdGN0cgkJJHJvdW5kcwotKwotKwkgdmNpcGhlcgkkb3V0MCwkb3V0MCx2MjQKLSsJc3R2 eF91CQkkaW4wLCR4MDAsJG91dAotKwlsZT92cGVybQkkaW4yLCRpbjIsJGluMiwkaW5wcGVybQot KwkgdmNpcGhlcgkkb3V0MSwkb3V0MSx2MjQKLSsJc3R2eF91CQkkaW4xLCR4MTAsJG91dAotKwls ZT92cGVybQkkaW4zLCRpbjMsJGluMywkaW5wcGVybQotKwkgdmNpcGhlcgkkb3V0Miwkb3V0Mix2 MjQKLSsJc3R2eF91CQkkaW4yLCR4MjAsJG91dAotKwlsZT92cGVybQkkaW40LCRpbjQsJGluNCwk aW5wcGVybQotKwkgdmNpcGhlcgkkb3V0Mywkb3V0Myx2MjQKLSsJc3R2eF91CQkkaW4zLCR4MzAs JG91dAotKwlsZT92cGVybQkkaW41LCRpbjUsJGluNSwkaW5wcGVybQotKwkgdmNpcGhlcgkkb3V0 NCwkb3V0NCx2MjQKLSsJc3R2eF91CQkkaW40LCR4NDAsJG91dAotKwlsZT92cGVybQkkaW42LCRp bjYsJGluNiwkaW5wcGVybQotKwkgdmNpcGhlcgkkb3V0NSwkb3V0NSx2MjQKLSsJc3R2eF91CQkk aW41LCR4NTAsJG91dAotKwlsZT92cGVybQkkaW43LCRpbjcsJGluNywkaW5wcGVybQotKwkgdmNp cGhlcgkkb3V0Niwkb3V0Nix2MjQKLSsJc3R2eF91CQkkaW42LCR4NjAsJG91dAotKwkgdmNpcGhl cgkkb3V0Nywkb3V0Nyx2MjQKLSsJc3R2eF91CQkkaW43LCR4NzAsJG91dAotKwlhZGRpCQkkb3V0 LCRvdXQsMHg4MAotKwotKwliCQlMb29wX2N0cjMyX2VuYzh4X21pZGRsZQotKwotKy5hbGlnbgk1 Ci0rTGN0cjMyX2VuYzh4X2JyZWFrOgotKwljbXB3aQkJJGxlbiwtMHg2MAotKwlibHQJCUxjdHIz Ml9lbmM4eF9vbmUKLSsJbm9wCi0rCWJlcQkJTGN0cjMyX2VuYzh4X3R3bwotKwljbXB3aQkJJGxl biwtMHg0MAotKwlibHQJCUxjdHIzMl9lbmM4eF90aHJlZQotKwlub3AKLSsJYmVxCQlMY3RyMzJf ZW5jOHhfZm91cgotKwljbXB3aQkJJGxlbiwtMHgyMAotKwlibHQJCUxjdHIzMl9lbmM4eF9maXZl Ci0rCW5vcAotKwliZXEJCUxjdHIzMl9lbmM4eF9zaXgKLSsJY21wd2kJCSRsZW4sMHgwMAotKwli bHQJCUxjdHIzMl9lbmM4eF9zZXZlbgotKwotK0xjdHIzMl9lbmM4eF9laWdodDoKLSsJdmNpcGhl cmxhc3QJJG91dDAsJG91dDAsJGluMAotKwl2Y2lwaGVybGFzdAkkb3V0MSwkb3V0MSwkaW4xCi0r CXZjaXBoZXJsYXN0CSRvdXQyLCRvdXQyLCRpbjIKLSsJdmNpcGhlcmxhc3QJJG91dDMsJG91dDMs JGluMwotKwl2Y2lwaGVybGFzdAkkb3V0NCwkb3V0NCwkaW40Ci0rCXZjaXBoZXJsYXN0CSRvdXQ1 LCRvdXQ1LCRpbjUKLSsJdmNpcGhlcmxhc3QJJG91dDYsJG91dDYsJGluNgotKwl2Y2lwaGVybGFz dAkkb3V0Nywkb3V0NywkaW43Ci0rCi0rCWxlP3ZwZXJtCSRvdXQwLCRvdXQwLCRvdXQwLCRpbnBw ZXJtCi0rCWxlP3ZwZXJtCSRvdXQxLCRvdXQxLCRvdXQxLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91 dDAsJHgwMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQyLCRvdXQyLCRvdXQyLCRpbnBwZXJtCi0rCXN0 dnhfdQkJJG91dDEsJHgxMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQzLCRvdXQzLCRvdXQzLCRpbnBw ZXJtCi0rCXN0dnhfdQkJJG91dDIsJHgyMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ0LCRvdXQ0LCRv dXQ0LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDMsJHgzMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ1 LCRvdXQ1LCRvdXQ1LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDQsJHg0MCwkb3V0Ci0rCWxlP3Zw ZXJtCSRvdXQ2LCRvdXQ2LCRvdXQ2LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDUsJHg1MCwkb3V0 Ci0rCWxlP3ZwZXJtCSRvdXQ3LCRvdXQ3LCRvdXQ3LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDYs JHg2MCwkb3V0Ci0rCXN0dnhfdQkJJG91dDcsJHg3MCwkb3V0Ci0rCWFkZGkJCSRvdXQsJG91dCww eDgwCi0rCWIJCUxjdHIzMl9lbmM4eF9kb25lCi0rCi0rLmFsaWduCTUKLStMY3RyMzJfZW5jOHhf c2V2ZW46Ci0rCXZjaXBoZXJsYXN0CSRvdXQwLCRvdXQwLCRpbjEKLSsJdmNpcGhlcmxhc3QJJG91 dDEsJG91dDEsJGluMgotKwl2Y2lwaGVybGFzdAkkb3V0Miwkb3V0MiwkaW4zCi0rCXZjaXBoZXJs YXN0CSRvdXQzLCRvdXQzLCRpbjQKLSsJdmNpcGhlcmxhc3QJJG91dDQsJG91dDQsJGluNQotKwl2 Y2lwaGVybGFzdAkkb3V0NSwkb3V0NSwkaW42Ci0rCXZjaXBoZXJsYXN0CSRvdXQ2LCRvdXQ2LCRp bjcKLSsKLSsJbGU/dnBlcm0JJG91dDAsJG91dDAsJG91dDAsJGlucHBlcm0KLSsJbGU/dnBlcm0J JG91dDEsJG91dDEsJG91dDEsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0MCwkeDAwLCRvdXQKLSsJ bGU/dnBlcm0JJG91dDIsJG91dDIsJG91dDIsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0MSwkeDEw LCRvdXQKLSsJbGU/dnBlcm0JJG91dDMsJG91dDMsJG91dDMsJGlucHBlcm0KLSsJc3R2eF91CQkk b3V0MiwkeDIwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDQsJG91dDQsJG91dDQsJGlucHBlcm0KLSsJ c3R2eF91CQkkb3V0MywkeDMwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDUsJG91dDUsJG91dDUsJGlu cHBlcm0KLSsJc3R2eF91CQkkb3V0NCwkeDQwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDYsJG91dDYs JG91dDYsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0NSwkeDUwLCRvdXQKLSsJc3R2eF91CQkkb3V0 NiwkeDYwLCRvdXQKLSsJYWRkaQkJJG91dCwkb3V0LDB4NzAKLSsJYgkJTGN0cjMyX2VuYzh4X2Rv bmUKLSsKLSsuYWxpZ24JNQotK0xjdHIzMl9lbmM4eF9zaXg6Ci0rCXZjaXBoZXJsYXN0CSRvdXQw LCRvdXQwLCRpbjIKLSsJdmNpcGhlcmxhc3QJJG91dDEsJG91dDEsJGluMwotKwl2Y2lwaGVybGFz dAkkb3V0Miwkb3V0MiwkaW40Ci0rCXZjaXBoZXJsYXN0CSRvdXQzLCRvdXQzLCRpbjUKLSsJdmNp cGhlcmxhc3QJJG91dDQsJG91dDQsJGluNgotKwl2Y2lwaGVybGFzdAkkb3V0NSwkb3V0NSwkaW43 Ci0rCi0rCWxlP3ZwZXJtCSRvdXQwLCRvdXQwLCRvdXQwLCRpbnBwZXJtCi0rCWxlP3ZwZXJtCSRv dXQxLCRvdXQxLCRvdXQxLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDAsJHgwMCwkb3V0Ci0rCWxl P3ZwZXJtCSRvdXQyLCRvdXQyLCRvdXQyLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDEsJHgxMCwk b3V0Ci0rCWxlP3ZwZXJtCSRvdXQzLCRvdXQzLCRvdXQzLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91 dDIsJHgyMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ0LCRvdXQ0LCRvdXQ0LCRpbnBwZXJtCi0rCXN0 dnhfdQkJJG91dDMsJHgzMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ1LCRvdXQ1LCRvdXQ1LCRpbnBw ZXJtCi0rCXN0dnhfdQkJJG91dDQsJHg0MCwkb3V0Ci0rCXN0dnhfdQkJJG91dDUsJHg1MCwkb3V0 Ci0rCWFkZGkJCSRvdXQsJG91dCwweDYwCi0rCWIJCUxjdHIzMl9lbmM4eF9kb25lCi0rCi0rLmFs aWduCTUKLStMY3RyMzJfZW5jOHhfZml2ZToKLSsJdmNpcGhlcmxhc3QJJG91dDAsJG91dDAsJGlu MwotKwl2Y2lwaGVybGFzdAkkb3V0MSwkb3V0MSwkaW40Ci0rCXZjaXBoZXJsYXN0CSRvdXQyLCRv dXQyLCRpbjUKLSsJdmNpcGhlcmxhc3QJJG91dDMsJG91dDMsJGluNgotKwl2Y2lwaGVybGFzdAkk b3V0NCwkb3V0NCwkaW43Ci0rCi0rCWxlP3ZwZXJtCSRvdXQwLCRvdXQwLCRvdXQwLCRpbnBwZXJt Ci0rCWxlP3ZwZXJtCSRvdXQxLCRvdXQxLCRvdXQxLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDAs JHgwMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQyLCRvdXQyLCRvdXQyLCRpbnBwZXJtCi0rCXN0dnhf dQkJJG91dDEsJHgxMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQzLCRvdXQzLCRvdXQzLCRpbnBwZXJt Ci0rCXN0dnhfdQkJJG91dDIsJHgyMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ0LCRvdXQ0LCRvdXQ0 LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDMsJHgzMCwkb3V0Ci0rCXN0dnhfdQkJJG91dDQsJHg0 MCwkb3V0Ci0rCWFkZGkJCSRvdXQsJG91dCwweDUwCi0rCWIJCUxjdHIzMl9lbmM4eF9kb25lCi0r Ci0rLmFsaWduCTUKLStMY3RyMzJfZW5jOHhfZm91cjoKLSsJdmNpcGhlcmxhc3QJJG91dDAsJG91 dDAsJGluNAotKwl2Y2lwaGVybGFzdAkkb3V0MSwkb3V0MSwkaW41Ci0rCXZjaXBoZXJsYXN0CSRv dXQyLCRvdXQyLCRpbjYKLSsJdmNpcGhlcmxhc3QJJG91dDMsJG91dDMsJGluNwotKwotKwlsZT92 cGVybQkkb3V0MCwkb3V0MCwkb3V0MCwkaW5wcGVybQotKwlsZT92cGVybQkkb3V0MSwkb3V0MSwk b3V0MSwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQwLCR4MDAsJG91dAotKwlsZT92cGVybQkkb3V0 Miwkb3V0Miwkb3V0MiwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQxLCR4MTAsJG91dAotKwlsZT92 cGVybQkkb3V0Mywkb3V0Mywkb3V0MywkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQyLCR4MjAsJG91 dAotKwlzdHZ4X3UJCSRvdXQzLCR4MzAsJG91dAotKwlhZGRpCQkkb3V0LCRvdXQsMHg0MAotKwli CQlMY3RyMzJfZW5jOHhfZG9uZQotKwotKy5hbGlnbgk1Ci0rTGN0cjMyX2VuYzh4X3RocmVlOgot Kwl2Y2lwaGVybGFzdAkkb3V0MCwkb3V0MCwkaW41Ci0rCXZjaXBoZXJsYXN0CSRvdXQxLCRvdXQx LCRpbjYKLSsJdmNpcGhlcmxhc3QJJG91dDIsJG91dDIsJGluNwotKwotKwlsZT92cGVybQkkb3V0 MCwkb3V0MCwkb3V0MCwkaW5wcGVybQotKwlsZT92cGVybQkkb3V0MSwkb3V0MSwkb3V0MSwkaW5w cGVybQotKwlzdHZ4X3UJCSRvdXQwLCR4MDAsJG91dAotKwlsZT92cGVybQkkb3V0Miwkb3V0Miwk b3V0MiwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQxLCR4MTAsJG91dAotKwlzdHZ4X3UJCSRvdXQy LCR4MjAsJG91dAotKwlhZGRpCQkkb3V0LCRvdXQsMHgzMAotKwliCQlMY2JjX2RlYzh4X2RvbmUK LSsKLSsuYWxpZ24JNQotK0xjdHIzMl9lbmM4eF90d286Ci0rCXZjaXBoZXJsYXN0CSRvdXQwLCRv dXQwLCRpbjYKLSsJdmNpcGhlcmxhc3QJJG91dDEsJG91dDEsJGluNwotKwotKwlsZT92cGVybQkk b3V0MCwkb3V0MCwkb3V0MCwkaW5wcGVybQotKwlsZT92cGVybQkkb3V0MSwkb3V0MSwkb3V0MSwk aW5wcGVybQotKwlzdHZ4X3UJCSRvdXQwLCR4MDAsJG91dAotKwlzdHZ4X3UJCSRvdXQxLCR4MTAs JG91dAotKwlhZGRpCQkkb3V0LCRvdXQsMHgyMAotKwliCQlMY2JjX2RlYzh4X2RvbmUKLSsKLSsu YWxpZ24JNQotK0xjdHIzMl9lbmM4eF9vbmU6Ci0rCXZjaXBoZXJsYXN0CSRvdXQwLCRvdXQwLCRp bjcKLSsKLSsJbGU/dnBlcm0JJG91dDAsJG91dDAsJG91dDAsJGlucHBlcm0KLSsJc3R2eF91CQkk b3V0MCwwLCRvdXQKLSsJYWRkaQkJJG91dCwkb3V0LDB4MTAKLSsKLStMY3RyMzJfZW5jOHhfZG9u ZToKLSsJbGkJCXIxMCxgJEZSQU1FKzE1YAotKwlsaQkJcjExLGAkRlJBTUUrMzFgCi0rCXN0dngJ CSRpbnBwZXJtLHIxMCwkc3AJIyB3aXBlIGNvcGllcyBvZiByb3VuZCBrZXlzCi0rCWFkZGkJCXIx MCxyMTAsMzIKLSsJc3R2eAkJJGlucHBlcm0scjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0r CXN0dngJCSRpbnBwZXJtLHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlzdHZ4CQkkaW5w cGVybSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2eAkJJGlucHBlcm0scjEwLCRz cAotKwlhZGRpCQlyMTAscjEwLDMyCi0rCXN0dngJCSRpbnBwZXJtLHIxMSwkc3AKLSsJYWRkaQkJ cjExLHIxMSwzMgotKwlzdHZ4CQkkaW5wcGVybSxyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIK LSsJc3R2eAkJJGlucHBlcm0scjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0rCi0rCW10c3By CQkyNTYsJHZyc2F2ZQotKwlsdngJCXYyMCxyMTAsJHNwCQkjIEFCSSBzYXlzIHNvCi0rCWFkZGkJ CXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjEscjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0rCWx2 eAkJdjIyLHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlsdngJCXYyMyxyMTEsJHNwCi0r CWFkZGkJCXIxMSxyMTEsMzIKLSsJbHZ4CQl2MjQscjEwLCRzcAotKwlhZGRpCQlyMTAscjEwLDMy Ci0rCWx2eAkJdjI1LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlsdngJCXYyNixyMTAs JHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjcscjExLCRzcAotKwlhZGRpCQlyMTEs cjExLDMyCi0rCWx2eAkJdjI4LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlsdngJCXYy OSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJbHZ4CQl2MzAscjEwLCRzcAotKwlsdngJ CXYzMSxyMTEsJHNwCi0rCSRQT1AJCXIyNixgJEZSQU1FKzIxKjE2KzAqJFNJWkVfVGAoJHNwKQot KwkkUE9QCQlyMjcsYCRGUkFNRSsyMSoxNisxKiRTSVpFX1RgKCRzcCkKLSsJJFBPUAkJcjI4LGAk RlJBTUUrMjEqMTYrMiokU0laRV9UYCgkc3ApCi0rCSRQT1AJCXIyOSxgJEZSQU1FKzIxKjE2KzMq JFNJWkVfVGAoJHNwKQotKwkkUE9QCQlyMzAsYCRGUkFNRSsyMSoxNis0KiRTSVpFX1RgKCRzcCkK LSsJJFBPUAkJcjMxLGAkRlJBTUUrMjEqMTYrNSokU0laRV9UYCgkc3ApCi0rCWFkZGkJCSRzcCwk c3AsYCRGUkFNRSsyMSoxNis2KiRTSVpFX1RgCi0rCWJscgotKwkubG9uZwkJMAotKwkuYnl0ZQkJ MCwxMiwweDE0LDAsMHg4MCw2LDYsMAotKwkubG9uZwkJMAotKy5zaXplCS4ke3ByZWZpeH1fY3Ry MzJfZW5jcnlwdF9ibG9ja3MsLi0uJHtwcmVmaXh9X2N0cjMyX2VuY3J5cHRfYmxvY2tzCi0rX19f Ci0rfX0JfX19Ci0rCi0rbXkgJGNvbnN0cz0xOwotK2ZvcmVhY2goc3BsaXQoIlxuIiwkY29kZSkp IHsKLSsgICAgICAgIHMvXGAoW15cYF0qKVxgL2V2YWwoJDEpL2dlbzsKLSsKLSsJIyBjb25zdGFu dHMgdGFibGUgZW5kaWFuLXNwZWNpZmljIGNvbnZlcnNpb24KLSsJaWYgKCRjb25zdHMgJiYgbS9c Lihsb25nfGJ5dGUpXHMrKC4rKVxzKyhcP1thLXpdKikkL28pIHsKLSsJICAgIG15ICRjb252PSQz OwotKwkgICAgbXkgQGJ5dGVzPSgpOwotKwotKwkgICAgIyBjb252ZXJ0IHRvIGVuZGlhbi1hZ25v c3RpYyBmb3JtYXQKLSsJICAgIGlmICgkMSBlcSAibG9uZyIpIHsKLSsJICAgICAgZm9yZWFjaCAo c3BsaXQoLyxccyovLCQyKSkgewotKwkJbXkgJGwgPSAvXjAvP29jdDppbnQ7Ci0rCQlwdXNoIEBi eXRlcywoJGw+PjI0KSYweGZmLCgkbD4+MTYpJjB4ZmYsKCRsPj44KSYweGZmLCRsJjB4ZmY7Ci0r CSAgICAgIH0KLSsJICAgIH0gZWxzZSB7Ci0rCQlAYnl0ZXMgPSBtYXAoL14wLz9vY3Q6aW50LHNw bGl0KC8sXHMqLywkMikpOwotKwkgICAgfQotKwotKwkgICAgIyBsaXR0bGUtZW5kaWFuIGNvbnZl cnNpb24KLSsJICAgIGlmICgkZmxhdm91ciA9fiAvbGUkL28pIHsKLSsJCVNXSVRDSDogZm9yKCRj b252KSAgewotKwkJICAgIC9cP2ludi8gJiYgZG8gICB7IEBieXRlcz1tYXAoJF9eMHhmLEBieXRl cyk7IGxhc3Q7IH07Ci0rCQkgICAgL1w/cmV2LyAmJiBkbyAgIHsgQGJ5dGVzPXJldmVyc2UoQGJ5 dGVzKTsgICAgbGFzdDsgfTsgCi0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgICAjZW1pdAotKwkgICAg cHJpbnQgIi5ieXRlXHQiLGpvaW4oJywnLG1hcCAoc3ByaW50ZigiMHglMDJ4IiwkXyksQGJ5dGVz KSksIlxuIjsKLSsJICAgIG5leHQ7Ci0rCX0KLSsJJGNvbnN0cz0wIGlmIChtL0xjb25zdHM6L28p OwkjIGVuZCBvZiB0YWJsZQotKwotKwkjIGluc3RydWN0aW9ucyBwcmVmaXhlZCB3aXRoICc/JyBh cmUgZW5kaWFuLXNwZWNpZmljIGFuZCBuZWVkCi0rCSMgdG8gYmUgYWRqdXN0ZWQgYWNjb3JkaW5n bHkuLi4KLSsJaWYgKCRmbGF2b3VyID1+IC9sZSQvbykgewkjIGxpdHRsZS1lbmRpYW4KLSsJICAg IHMvbGVcPy8vbwkJb3IKLSsJICAgIHMvYmVcPy8jYmUjL28Jb3IKLSsJICAgIHMvXD9sdnNyL2x2 c2wvbwlvcgotKwkgICAgcy9cP2x2c2wvbHZzci9vCW9yCi0rCSAgICBzL1w/KHZwZXJtXHMrdlsw LTldKyxccyopKHZbMC05XSssXHMqKSh2WzAtOV0rLFxzKikodlswLTldKykvJDEkMyQyJDQvbyBv cgotKwkgICAgcy9cPyh2c2xkb2lccyt2WzAtOV0rLFxzKikodlswLTldKywpXHMqKHZbMC05XSss XHMqKShbMC05XSspLyQxJDMkMiAxNi0kNC9vIG9yCi0rCSAgICBzL1w/KHZzcGx0d1xzK3ZbMC05 XSssXHMqKSh2WzAtOV0rLClccyooWzAtOV0pLyQxJDIgMy0kMy9vOwotKwl9IGVsc2UgewkJCSMg YmlnLWVuZGlhbgotKwkgICAgcy9sZVw/LyNsZSMvbwlvcgotKwkgICAgcy9iZVw/Ly9vCQlvcgot KwkgICAgcy9cPyhbYS16XSspLyQxL287Ci0rCX0KLSsKLSsgICAgICAgIHByaW50ICRfLCJcbiI7 Ci0rfQotKwotK2Nsb3NlIFNURE9VVDsKLWRpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS92cGFl cy1wcGMucGwgYi9jcnlwdG8vYWVzL2FzbS92cGFlcy1wcGMucGwKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi43ZmRhNjBlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9jcnlwdG8v YWVzL2FzbS92cGFlcy1wcGMucGwKLUBAIC0wLDAgKzEsMTUxMiBAQAotKyMhL3Vzci9iaW4vZW52 IHBlcmwKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgQ29uc3RhbnQtdGltZSBTU1NFMyBBRVMgY29y ZSBpbXBsZW1lbnRhdGlvbi4KLSsjIyB2ZXJzaW9uIDAuMQotKyMjCi0rIyMgQnkgTWlrZSBIYW1i dXJnIChTdGFuZm9yZCBVbml2ZXJzaXR5KSwgMjAwOQotKyMjIFB1YmxpYyBkb21haW4uCi0rIyMK LSsjIyBGb3IgZGV0YWlscyBzZWUgaHR0cDovL3NoaWZ0bGVmdC5vcmcvcGFwZXJzL3ZlY3Rvcl9h ZXMvIGFuZAotKyMjIGh0dHA6Ly9jcnlwdG8uc3RhbmZvcmQuZWR1L3ZwYWVzLy4KLSsKLSsjIENC QyBlbmNyeXB0L2RlY3J5cHQgcGVyZm9ybWFuY2UgaW4gY3ljbGVzIHBlciBieXRlIHByb2Nlc3Nl ZCB3aXRoCi0rIyAxMjgtYml0IGtleS4KLSsjCi0rIwkJYWVzLXBwYy5wbAkJdGhpcwotKyMgRzRl CQkzNS41LzUyLjEvKDIzLjgpCTExLjkoKikvMTUuNAotKyMgUE9XRVI2CTQyLjcvNTQuMy8oMjgu MikJNjMuMC85Mi44KCoqKQotKyMgUE9XRVI3CTMyLjMvNDIuOS8oMTguNCkJMTguNS8yMy4zCi0r IwotKyMgKCopCVRoaXMgaXMgfjEwJSB3b3JzZSB0aGFuIHJlcG9ydGVkIGluIHBhcGVyLiBUaGUg cmVhc29uIGlzCi0rIwl0d29mb2xkLiBUaGlzIG1vZHVsZSBkb2Vzbid0IG1ha2UgYW55IGFzc3Vt cHRpb24gYWJvdXQKLSsjCWtleSBzY2hlZHVsZSAob3IgZGF0YSBmb3IgdGhhdCBtYXR0ZXIpIGFs aWdubWVudCBhbmQgaGFuZGxlcwotKyMJaXQgaW4tbGluZS4gU2Vjb25kbHkgaXQsIGJlaW5nIHRy YW5zbGl0ZXJhdGVkIGZyb20KLSsjCXZwYWVzLXg4Nl82NC5wbCwgcmVsaWVzIG9uICJuZXN0ZWQg aW52ZXJzaW9uIiBiZXR0ZXIgc3VpdGVkCi0rIwlmb3IgSW50ZWwgQ1BVcy4KLSsjICgqKikJSW5h ZGVxdWF0ZSBQT1dFUjYgcGVyZm9ybWFuY2UgaXMgZHVlIHRvIGFzdHJvbm9taWMgQWx0aVZlYwot KyMJbGF0ZW5jeSwgOSBjeWNsZXMgcGVyIHNpbXBsZSBsb2dpY2FsIG9wZXJhdGlvbi4KLSsKLSsk Zmxhdm91ciA9IHNoaWZ0OwotKwotK2lmICgkZmxhdm91ciA9fiAvNjQvKSB7Ci0rCSRTSVpFX1QJ PTg7Ci0rCSRMUlNBVkUJPTIqJFNJWkVfVDsKLSsJJFNUVQk9InN0ZHUiOwotKwkkUE9QCT0ibGQi OwotKwkkUFVTSAk9InN0ZCI7Ci0rCSRVQ01QCT0iY21wbGQiOwotK30gZWxzaWYgKCRmbGF2b3Vy ID1+IC8zMi8pIHsKLSsJJFNJWkVfVAk9NDsKLSsJJExSU0FWRQk9JFNJWkVfVDsKLSsJJFNUVQk9 InN0d3UiOwotKwkkUE9QCT0ibHd6IjsKLSsJJFBVU0gJPSJzdHciOwotKwkkVUNNUAk9ImNtcGx3 IjsKLSt9IGVsc2UgeyBkaWUgIm5vbnNlbnNlICRmbGF2b3VyIjsgfQotKwotKyRzcD0icjEiOwot KyRGUkFNRT02KiRTSVpFX1QrMTMqMTY7CSMgMTMqMTYgaXMgZm9yIHYyMC12MzEgb2ZmbG9hZAot KwotKyQwID1+IG0vKC4qW1wvXFxdKVteXC9cXF0rJC87ICRkaXI9JDE7Ci0rKCAkeGxhdGU9IiR7 ZGlyfXBwYy14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSApIG9yCi0rKCAkeGxhdGU9IiR7ZGlyfS4u Ly4uL3Blcmxhc20vcHBjLXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlKSBvcgotK2RpZSAiY2FuJ3Qg bG9jYXRlIHBwYy14bGF0ZS5wbCI7Ci0rCi0rb3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAkZmxh dm91ciAiLnNoaWZ0IHx8IGRpZSAiY2FuJ3QgY2FsbCAkeGxhdGU6ICQhIjsKLSsKLSskY29kZS49 PDxfX187Ci0rLm1hY2hpbmUJImFueSIKLSsKLSsudGV4dAotKwotKy5hbGlnbgk3CSMgdG90YWxs eSBzdHJhdGVnaWMgYWxpZ25tZW50Ci0rX3ZwYWVzX2NvbnN0czoKLStMa19tY19mb3J3YXJkOgkj IG1jX2ZvcndhcmQKLSsJLmxvbmcJMHgwMTAyMDMwMCwgMHgwNTA2MDcwNCwgMHgwOTBhMGIwOCwg MHgwZDBlMGYwYwk/aW52Ci0rCS5sb25nCTB4MDUwNjA3MDQsIDB4MDkwYTBiMDgsIDB4MGQwZTBm MGMsIDB4MDEwMjAzMDAJP2ludgotKwkubG9uZwkweDA5MGEwYjA4LCAweDBkMGUwZjBjLCAweDAx MDIwMzAwLCAweDA1MDYwNzA0CT9pbnYKLSsJLmxvbmcJMHgwZDBlMGYwYywgMHgwMTAyMDMwMCwg MHgwNTA2MDcwNCwgMHgwOTBhMGIwOAk/aW52Ci0rTGtfbWNfYmFja3dhcmQ6CSMgbWNfYmFja3dh cmQKLSsJLmxvbmcJMHgwMzAwMDEwMiwgMHgwNzA0MDUwNiwgMHgwYjA4MDkwYSwgMHgwZjBjMGQw ZQk/aW52Ci0rCS5sb25nCTB4MGYwYzBkMGUsIDB4MDMwMDAxMDIsIDB4MDcwNDA1MDYsIDB4MGIw ODA5MGEJP2ludgotKwkubG9uZwkweDBiMDgwOTBhLCAweDBmMGMwZDBlLCAweDAzMDAwMTAyLCAw eDA3MDQwNTA2CT9pbnYKLSsJLmxvbmcJMHgwNzA0MDUwNiwgMHgwYjA4MDkwYSwgMHgwZjBjMGQw ZSwgMHgwMzAwMDEwMgk/aW52Ci0rTGtfc3I6CQkjIHNyCi0rCS5sb25nCTB4MDAwMTAyMDMsIDB4 MDQwNTA2MDcsIDB4MDgwOTBhMGIsIDB4MGMwZDBlMGYJP2ludgotKwkubG9uZwkweDAwMDUwYTBm LCAweDA0MDkwZTAzLCAweDA4MGQwMjA3LCAweDBjMDEwNjBiCT9pbnYKLSsJLmxvbmcJMHgwMDA5 MDIwYiwgMHgwNDBkMDYwZiwgMHgwODAxMGEwMywgMHgwYzA1MGUwNwk/aW52Ci0rCS5sb25nCTB4 MDAwZDBhMDcsIDB4MDQwMTBlMGIsIDB4MDgwNTAyMGYsIDB4MGMwOTA2MDMJP2ludgotKwotKyMj Ci0rIyMgIkhvdCIgY29uc3RhbnRzCi0rIyMKLStMa19pbnY6CQkjIGludiwgaW52YQotKwkubG9u ZwkweGYwMDEwODBkLCAweDBmMDYwNTBlLCAweDAyMGMwYjBhLCAweDA5MDMwNzA0CT9yZXYKLSsJ LmxvbmcJMHhmMDA3MGIwZiwgMHgwNjBhMDQwMSwgMHgwOTA4MDUwMiwgMHgwYzBlMGQwMwk/cmV2 Ci0rTGtfaXB0OgkJIyBpbnB1dCB0cmFuc2Zvcm0gKGxvLCBoaSkKLSsJLmxvbmcJMHgwMDcwMmE1 YSwgMHg5OGU4YjJjMiwgMHgwODc4MjI1MiwgMHg5MGUwYmFjYQk/cmV2Ci0rCS5sb25nCTB4MDA0 ZDdjMzEsIDB4N2QzMDAxNGMsIDB4ODFjY2ZkYjAsIDB4ZmNiMTgwY2QJP3JldgotK0xrX3NibzoJ CSMgc2JvdSwgc2JvdAotKwkubG9uZwkweDAwYzdiZDZmLCAweDE3NmRkMmQwLCAweDc4YTgwMmM1 LCAweDdhYmZhYTE1CT9yZXYKLSsJLmxvbmcJMHgwMDZhYmI1ZiwgMHhhNTc0ZTRjZiwgMHhmYTM1 MmI0MSwgMHhkMTkwMWU4ZQk/cmV2Ci0rTGtfc2IxOgkJIyBzYjF1LCBzYjF0Ci0rCS5sb25nCTB4 MDAyM2UyZmEsIDB4MTVkNDE4MzYsIDB4ZWZkOTJlMGQsIDB4YzFjY2Y3M2IJP3JldgotKwkubG9u ZwkweDAwM2U1MGNiLCAweDhmZTE5YmIxLCAweDQ0ZjUyYTE0LCAweDZlN2FkZmE1CT9yZXYKLStM a19zYjI6CQkjIHNiMnUsIHNiMnQKLSsJLmxvbmcJMHgwMDI5ZTEwYSwgMHg0MDg4ZWI2OSwgMHg0 YTIzODJhYiwgMHhjODYzYTFjMgk/cmV2Ci0rCS5sb25nCTB4MDAyNDcxMGIsIDB4YzY5MzdhZTIs IDB4Y2QyZjk4YmMsIDB4NTVlOWI3NWUJP3JldgotKwotKyMjCi0rIyMgIERlY3J5cHRpb24gc3R1 ZmYKLSsjIwotK0xrX2RpcHQ6CSMgZGVjcnlwdGlvbiBpbnB1dCB0cmFuc2Zvcm0KLSsJLmxvbmcJ MHgwMDVmNTQwYiwgMHgwNDViNTAwZiwgMHgxYTQ1NGUxMSwgMHgxZTQxNGExNQk/cmV2Ci0rCS5s b25nCTB4MDA2NTA1NjAsIDB4ZTY4M2UzODYsIDB4OTRmMTkxZjQsIDB4NzIxNzc3MTIJP3Jldgot K0xrX2RzYm86CSMgZGVjcnlwdGlvbiBzYm94IGZpbmFsIG91dHB1dAotKwkubG9uZwkweDAwNDBm OTdlLCAweDUzZWE4NzEzLCAweDJkM2U5NGQ0LCAweGI5NmRhYWM3CT9yZXYKLSsJLmxvbmcJMHgw MDFkNDQ5MywgMHgwZjU2ZDcxMiwgMHg5YzhlYzVkOCwgMHg1OTgxNGJjYQk/cmV2Ci0rTGtfZHNi OToJIyBkZWNyeXB0aW9uIHNib3ggb3V0cHV0ICo5KnUsICo5KnQKLSsJLmxvbmcJMHgwMGQ2ODY5 YSwgMHg1MzAzMWM4NSwgMHhjOTRjOTk0ZiwgMHg1MDFmZDVjYQk/cmV2Ci0rCS5sb25nCTB4MDA0 OWQ3ZWMsIDB4ODkxNzNiYzAsIDB4NjVhNWZiYjIsIDB4OWUyYzVlNzIJP3JldgotK0xrX2RzYmQ6 CSMgZGVjcnlwdGlvbiBzYm94IG91dHB1dCAqRCp1LCAqRCp0Ci0rCS5sb25nCTB4MDBhMmIxZTYs IDB4ZGZjYzU3N2QsIDB4Mzk0NDJhODgsIDB4MTM5YjZlZjUJP3JldgotKwkubG9uZwkweDAwY2Jj NjI0LCAweGY3ZmFlMjNjLCAweGQzZWZkZTE1LCAweDBkMTgzMTI5CT9yZXYKLStMa19kc2JiOgkj IGRlY3J5cHRpb24gc2JveCBvdXRwdXQgKkIqdSwgKkIqdAotKwkubG9uZwkweDAwNDJiNDk2LCAw eDkyNjQyMmQwLCAweDA0ZDRmMmIwLCAweGY2NDYyNjYwCT9yZXYKLSsJLmxvbmcJMHgwMDY3NTlj ZCwgMHhhNjk4OTRjMSwgMHg2YmFhNTUzMiwgMHgzZTBjZmZmMwk/cmV2Ci0rTGtfZHNiZToJIyBk ZWNyeXB0aW9uIHNib3ggb3V0cHV0ICpFKnUsICpFKnQKLSsJLmxvbmcJMHgwMGQwZDQyNiwgMHg5 NjkyZjI0NiwgMHhiMGY2YjQ2NCwgMHgwNDYwNDIyMgk/cmV2Ci0rCS5sb25nCTB4MDBjMWFhZmYs IDB4Y2RhNjU1MGMsIDB4MzIzZTU5OTgsIDB4NmJmMzY3OTQJP3JldgotKwotKyMjCi0rIyMgIEtl eSBzY2hlZHVsZSBjb25zdGFudHMKLSsjIwotK0xrX2Rrc2Q6CSMgZGVjcnlwdGlvbiBrZXkgc2No ZWR1bGU6IGludnNrZXcgeCpECi0rCS5sb25nCTB4MDA0N2U0YTMsIDB4NWQxYWI5ZmUsIDB4Zjli ZTFkNWEsIDB4YTRlMzQwMDcJP3JldgotKwkubG9uZwkweDAwODMzNmI1LCAweGY0NzdjMjQxLCAw eDFlOWQyOGFiLCAweGVhNjlkYzVmCT9yZXYKLStMa19ka3NiOgkjIGRlY3J5cHRpb24ga2V5IHNj aGVkdWxlOiBpbnZza2V3IHgqQgotKwkubG9uZwkweDAwZDU1MDg1LCAweDFmY2E0ZjlhLCAweDk5 NGNjOTFjLCAweDg2NTNkNjAzCT9yZXYKLSsJLmxvbmcJMHgwMDRhZmNiNiwgMHhhN2VkNWIxMSwg MHhjODgyMzQ3ZSwgMHg2ZjI1OTNkOQk/cmV2Ci0rTGtfZGtzZToJIyBkZWNyeXB0aW9uIGtleSBz Y2hlZHVsZTogaW52c2tldyB4KkUgKyAweDYzCi0rCS5sb25nCTB4MDBkNmM5MWYsIDB4Y2ExYzAz ZDUsIDB4ODY1MDRmOTksIDB4NGM5YTg1NTMJP3JldgotKwkubG9uZwkweGU4N2JkYzRmLCAweDA1 OTYzMWEyLCAweDg3MTRiMzIwLCAweDZhZjk1ZWNkCT9yZXYKLStMa19ka3M5OgkjIGRlY3J5cHRp b24ga2V5IHNjaGVkdWxlOiBpbnZza2V3IHgqOQotKwkubG9uZwkweDAwYTdkOTdlLCAweGM4NmYx MWI2LCAweGZjNWIyNTgyLCAweDM0OTNlZDRhCT9yZXYKLSsJLmxvbmcJMHgwMDMzMTQyNywgMHg2 MjUxNzY0NSwgMHhjZWZkZGFlOSwgMHhhYzlmYjg4Ygk/cmV2Ci0rCi0rTGtfcmNvbjoJIyByY29u Ci0rCS5sb25nCTB4YjZlZTlkYWYsIDB4Yjk5MTgzMWYsIDB4ODE3ZDdjNGQsIDB4MDg5ODJhNzAJ P2FzaXMKLStMa19zNjM6Ci0rCS5sb25nCTB4NWI1YjViNWIsIDB4NWI1YjViNWIsIDB4NWI1YjVi NWIsIDB4NWI1YjViNWIJP2FzaXMKLSsKLStMa19vcHQ6CQkjIG91dHB1dCB0cmFuc2Zvcm0KLSsJ LmxvbmcJMHgwMDYwYjZkNiwgMHgyOTQ5OWZmZiwgMHgwODY4YmVkZSwgMHgyMTQxOTdmNwk/cmV2 Ci0rCS5sb25nCTB4MDBlY2JjNTAsIDB4NTFiZGVkMDEsIDB4ZTAwYzVjYjAsIDB4YjE1ZDBkZTEJ P3JldgotK0xrX2Rlc2tldzoJIyBkZXNrZXcgdGFibGVzOiBpbnZlcnRzIHRoZSBzYm94J3MgInNr ZXciCi0rCS5sb25nCTB4MDBlM2E0NDcsIDB4NDBhM2U0MDcsIDB4MWFmOWJlNWQsIDB4NWFiOWZl MWQJP3JldgotKwkubG9uZwkweDAwNjllYTgzLCAweGRjYjUzNjVmLCAweDc3MWU5ZGY0LCAweGFi YzI0MTI4CT9yZXYKLSsuYWxpZ24JNQotK0xjb25zdHM6Ci0rCW1mbHIJcjAKLSsJYmNsCTIwLDMx LFwkKzQKLSsJbWZscglyMTIJI3Z2dnZ2ICJkaXN0YW5jZSBiZXR3ZWVuIC4gYW5kIF92cGFlc19j b25zdHMKLSsJYWRkaQlyMTIscjEyLC0weDMwOAotKwltdGxyCXIwCi0rCWJscgotKwkubG9uZwkw Ci0rCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKLSsuYXNjaXogICJWZWN0b3IgUGVybXV0YXRp b24gQUVTIGZvciBBbHRpVmVjLCBNaWtlIEhhbWJ1cmcgKFN0YW5mb3JkIFVuaXZlcnNpdHkpIgot Ky5hbGlnbgk2Ci0rX19fCi0rDAotK215ICgkaW5wdGFpbCwkaW5wcGVybSwkb3V0aGVhZCwkb3V0 cGVybSwkb3V0bWFzaywka2V5cGVybSkgPSBtYXAoInYkXyIsKDI2Li4zMSkpOwotK3sKLStteSAo JGlucCwkb3V0LCRrZXkpID0gbWFwKCJyJF8iLCgzLi41KSk7Ci0rCi0rbXkgKCRpbnZsbywkaW52 aGksJGlwdGxvLCRpcHRoaSwkc2JvdSwkc2JvdCkgPSBtYXAoInYkXyIsKDEwLi4xNSkpOwotK215 ICgkc2IxdSwkc2IxdCwkc2IydSwkc2IydCkgPSBtYXAoInYkXyIsKDE2Li4xOSkpOwotK215ICgk c2I5dSwkc2I5dCwkc2JkdSwkc2JkdCwkc2JidSwkc2JidCwkc2JldSwkc2JldCk9bWFwKCJ2JF8i LCgxNi4uMjMpKTsKLSsKLSskY29kZS49PDxfX187Ci0rIyMKLSsjIyAgX2Flc19wcmVoZWF0Ci0r IyMKLSsjIyAgRmlsbHMgcmVnaXN0ZXIgJXIxMCAtPiAuYWVzX2NvbnN0cyAoc28geW91IGNhbiAt ZlBJQykKLSsjIyAgYW5kICV4bW05LSV4bW0xNSBhcyBzcGVjaWZpZWQgYmVsb3cuCi0rIyMKLSsu YWxpZ24JNAotK192cGFlc19lbmNyeXB0X3ByZWhlYXQ6Ci0rCW1mbHIJcjgKLSsJYmwJTGNvbnN0 cwotKwltdGxyCXI4Ci0rCWxpCXIxMSwgMHhjMAkJIyBMa19pbnYKLSsJbGkJcjEwLCAweGQwCi0r CWxpCXI5LCAgMHhlMAkJIyBMa19pcHQKLSsJbGkJcjgsICAweGYwCi0rCXZ4b3IJdjcsIHY3LCB2 NwkJIyAweDAwLi4wMAotKwl2c3BsdGlzYgl2OCw0CQkjIDB4MDQuLjA0Ci0rCXZzcGx0aXNiCXY5 LDB4MGYJCSMgMHgwZi4uMGYKLSsJbHZ4CSRpbnZsbywgcjEyLCByMTEKLSsJbGkJcjExLCAweDEw MAotKwlsdngJJGludmhpLCByMTIsIHIxMAotKwlsaQlyMTAsIDB4MTEwCi0rCWx2eAkkaXB0bG8s IHIxMiwgcjkKLSsJbGkJcjksICAweDEyMAotKwlsdngJJGlwdGhpLCByMTIsIHI4Ci0rCWxpCXI4 LCAgMHgxMzAKLSsJbHZ4CSRzYm91LCByMTIsIHIxMQotKwlsaQlyMTEsIDB4MTQwCi0rCWx2eAkk c2JvdCwgcjEyLCByMTAKLSsJbGkJcjEwLCAweDE1MAotKwlsdngJJHNiMXUsIHIxMiwgcjkKLSsJ bHZ4CSRzYjF0LCByMTIsIHI4Ci0rCWx2eAkkc2IydSwgcjEyLCByMTEKLSsJbHZ4CSRzYjJ0LCBy MTIsIHIxMAotKwlibHIKLSsJLmxvbmcJMAotKwkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0r Ci0rIyMKLSsjIyAgX2Flc19lbmNyeXB0X2NvcmUKLSsjIwotKyMjICBBRVMtZW5jcnlwdCAleG1t MC4KLSsjIwotKyMjICBJbnB1dHM6Ci0rIyMgICAgICV4bW0wID0gaW5wdXQKLSsjIyAgICAgJXht bTktJXhtbTE1IGFzIGluIF92cGFlc19wcmVoZWF0Ci0rIyMgICAgKCVyZHgpID0gc2NoZWR1bGVk IGtleXMKLSsjIwotKyMjICBPdXRwdXQgaW4gJXhtbTAKLSsjIyAgQ2xvYmJlcnMgICV4bW0xLSV4 bW02LCAlcjksICVyMTAsICVyMTEsICVyYXgKLSsjIwotKyMjCi0rLmFsaWduIDUKLStfdnBhZXNf ZW5jcnlwdF9jb3JlOgotKwlsd3oJcjgsIDI0MCgka2V5KQkJIyBwdWxsIHJvdW5kcwotKwlsaQly OSwgMTYKLSsJbHZ4CXY1LCAwLCAka2V5CQkjIHZtb3ZkcXUJKCVyOSksCSV4bW01CQkjIHJvdW5k MCBrZXkKLSsJbGkJcjExLCAweDEwCi0rCWx2eAl2NiwgcjksICRrZXkKLSsJYWRkaQlyOSwgcjks IDE2Ci0rCT92cGVybQl2NSwgdjUsIHY2LCAka2V5cGVybQkjIGFsaWduIHJvdW5kIGtleQotKwlh ZGRpCXIxMCwgcjExLCAweDQwCi0rCXZzcmIJdjEsIHYwLCB2OAkJIyB2cHNybGIJXCQ0LAkleG1t MCwJJXhtbTAKLSsJdnBlcm0JdjAsICRpcHRsbywgJGlwdGxvLCB2MAkjIHZwc2h1ZmIJJXhtbTEs CSV4bW0yLAkleG1tMQotKwl2cGVybQl2MSwgJGlwdGhpLCAkaXB0aGksIHYxCSMgdnBzaHVmYgkl eG1tMCwJJXhtbTMsCSV4bW0yCi0rCXZ4b3IJdjAsIHYwLCB2NQkJIyB2cHhvcgkleG1tNSwJJXht bTEsCSV4bW0wCi0rCXZ4b3IJdjAsIHYwLCB2MQkJIyB2cHhvcgkleG1tMiwJJXhtbTAsCSV4bW0w Ci0rCW10Y3RyCXI4Ci0rCWIJTGVuY19lbnRyeQotKwotKy5hbGlnbiA0Ci0rTGVuY19sb29wOgot KwkjIG1pZGRsZSBvZiBtaWRkbGUgcm91bmQKLSsJdnBlcm0JdjQsICRzYjF0LCB2NywgdjIJIyB2 cHNodWZiCSV4bW0yLAkleG1tMTMsCSV4bW00CSMgNCA9IHNiMXUKLSsJbHZ4CXYxLCByMTIsIHIx MQkJIyB2bW92ZHFhCS0weDQwKCVyMTEsJXIxMCksICV4bW0xCSMgLkxrX21jX2ZvcndhcmRbXQot KwlhZGRpCXIxMSwgcjExLCAxNgotKwl2cGVybQl2MCwgJHNiMXUsIHY3LCB2MwkjIHZwc2h1ZmIJ JXhtbTMsCSV4bW0xMiwJJXhtbTAJIyAwID0gc2IxdAotKwl2eG9yCXY0LCB2NCwgdjUJCSMgdnB4 b3IJCSV4bW01LAkleG1tNCwJJXhtbTQJIyA0ID0gc2IxdSArIGsKLSsJYW5kaS4JcjExLCByMTEs IDB4MzAJCSMgYW5kCQlcJDB4MzAsICVyMTEJIyAuLi4gbW9kIDQKLSsJdnBlcm0JdjUsICRzYjJ0 LCB2NywgdjIJIyB2cHNodWZiCSV4bW0yLAkleG1tMTUsCSV4bW01CSMgNCA9IHNiMnUKLSsJdnhv cgl2MCwgdjAsIHY0CQkjIHZweG9yCQkleG1tNCwJJXhtbTAsCSV4bW0wCSMgMCA9IEEKLSsJdnBl cm0JdjIsICRzYjJ1LCB2NywgdjMJIyB2cHNodWZiCSV4bW0zLAkleG1tMTQsCSV4bW0yCSMgMiA9 IHNiMnQKLSsJbHZ4CXY0LCByMTIsIHIxMAkJIyB2bW92ZHFhCSglcjExLCVyMTApLCAleG1tNAkj IC5Ma19tY19iYWNrd2FyZFtdCi0rCWFkZGkJcjEwLCByMTEsIDB4NDAKLSsJdnBlcm0JdjMsIHYw LCB2NywgdjEJCSMgdnBzaHVmYgkleG1tMSwJJXhtbTAsCSV4bW0zCSMgMCA9IEIKLSsJdnhvcgl2 MiwgdjIsIHY1CQkjIHZweG9yCQkleG1tNSwJJXhtbTIsCSV4bW0yCSMgMiA9IDJBCi0rCXZwZXJt CXYwLCB2MCwgdjcsIHY0CQkjIHZwc2h1ZmIJJXhtbTQsCSV4bW0wLAkleG1tMAkjIDMgPSBECi0r CXZ4b3IJdjMsIHYzLCB2MgkJIyB2cHhvcgkJJXhtbTIsCSV4bW0zLAkleG1tMwkjIDAgPSAyQStC Ci0rCXZwZXJtCXY0LCB2MywgdjcsIHYxCQkjIHZwc2h1ZmIJJXhtbTEsCSV4bW0zLAkleG1tNAkj IDAgPSAyQitDCi0rCXZ4b3IJdjAsIHYwLCB2MwkJIyB2cHhvcgkJJXhtbTMsCSV4bW0wLAkleG1t MAkjIDMgPSAyQStCK0QKLSsJdnhvcgl2MCwgdjAsIHY0CQkjIHZweG9yCQkleG1tNCwJJXhtbTAs ICV4bW0wCSMgMCA9IDJBKzNCK0MrRAotKwotK0xlbmNfZW50cnk6Ci0rCSMgdG9wIG9mIHJvdW5k Ci0rCXZzcmIJdjEsIHYwLCB2OAkJIyB2cHNybGIJXCQ0LAkleG1tMCwJJXhtbTAJIyAxID0gaQot Kwl2cGVybQl2NSwgJGludmhpLCAkaW52aGksIHYwCSMgdnBzaHVmYgkleG1tMSwJJXhtbTExLAkl eG1tNQkjIDIgPSBhL2sKLSsJdnhvcgl2MCwgdjAsIHYxCQkjIHZweG9yCQkleG1tMCwJJXhtbTEs CSV4bW0xCSMgMCA9IGoKLSsJdnBlcm0JdjMsICRpbnZsbywgJGludmxvLCB2MQkjIHZwc2h1ZmIJ JXhtbTAsIAkleG1tMTAsCSV4bW0zICAJIyAzID0gMS9pCi0rCXZwZXJtCXY0LCAkaW52bG8sICRp bnZsbywgdjAJIyB2cHNodWZiCSV4bW0xLCAJJXhtbTEwLAkleG1tNCAgCSMgNCA9IDEvagotKwl2 YW5kCXYwLCB2MCwgdjkKLSsJdnhvcgl2MywgdjMsIHY1CQkjIHZweG9yCQkleG1tNSwJJXhtbTMs CSV4bW0zCSMgMyA9IGlhayA9IDEvaSArIGEvawotKwl2eG9yCXY0LCB2NCwgdjUJCSMgdnB4b3IJ CSV4bW01LAkleG1tNCwJJXhtbTQgIAkjIDQgPSBqYWsgPSAxL2ogKyBhL2sKLSsJdnBlcm0JdjIs ICRpbnZsbywgdjcsIHYzCSMgdnBzaHVmYgkleG1tMywJJXhtbTEwLAkleG1tMiAgCSMgMiA9IDEv aWFrCi0rCXZtcgl2NSwgdjYKLSsJbHZ4CXY2LCByOSwgJGtleQkJIyB2bW92ZHF1CSglcjkpLCAl eG1tNQotKwl2cGVybQl2MywgJGludmxvLCB2NywgdjQJIyB2cHNodWZiCSV4bW00LAkleG1tMTAs CSV4bW0zCSMgMyA9IDEvamFrCi0rCWFkZGkJcjksIHI5LCAxNgotKwl2eG9yCXYyLCB2MiwgdjAJ CSMgdnB4b3IJCSV4bW0xLAkleG1tMiwJJXhtbTIgIAkjIDIgPSBpbwotKwk/dnBlcm0JdjUsIHY1 LCB2NiwgJGtleXBlcm0JIyBhbGlnbiByb3VuZCBrZXkKLSsJdnhvcgl2MywgdjMsIHYxCQkjIHZw eG9yCQkleG1tMCwJJXhtbTMsCSV4bW0zCSMgMyA9IGpvCi0rCWJkbnoJTGVuY19sb29wCi0rCi0r CSMgbWlkZGxlIG9mIGxhc3Qgcm91bmQKLSsJYWRkaQlyMTAsIHIxMSwgMHg4MAotKwkJCQkJIyB2 bW92ZHFhCS0weDYwKCVyMTApLCAleG1tNAkjIDMgOiBzYm91CS5Ma19zYm8KLSsJCQkJCSMgdm1v dmRxYQktMHg1MCglcjEwKSwgJXhtbTAJIyAwIDogc2JvdAkuTGtfc2JvKzE2Ci0rCXZwZXJtCXY0 LCAkc2JvdSwgdjcsIHYyCSMgdnBzaHVmYgkleG1tMiwJJXhtbTQsCSV4bW00CSMgNCA9IHNib3UK LSsJbHZ4CXYxLCByMTIsIHIxMAkJIyB2bW92ZHFhCTB4NDAoJXIxMSwlcjEwKSwgJXhtbTEJIyAu TGtfc3JbXQotKwl2cGVybQl2MCwgJHNib3QsIHY3LCB2MwkjIHZwc2h1ZmIJJXhtbTMsCSV4bW0w LAkleG1tMAkjIDAgPSBzYjF0Ci0rCXZ4b3IJdjQsIHY0LCB2NQkJIyB2cHhvcgkJJXhtbTUsCSV4 bW00LAkleG1tNAkjIDQgPSBzYjF1ICsgawotKwl2eG9yCXYwLCB2MCwgdjQJCSMgdnB4b3IJCSV4 bW00LAkleG1tMCwJJXhtbTAJIyAwID0gQQotKwl2cGVybQl2MCwgdjAsIHY3LCB2MQkJIyB2cHNo dWZiCSV4bW0xLAkleG1tMCwJJXhtbTAKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiww eDE0LDAsMCwwLDAsMAotKwotKy5nbG9ibAkudnBhZXNfZW5jcnlwdAotKy5hbGlnbgk1Ci0rLnZw YWVzX2VuY3J5cHQ6Ci0rCSRTVFUJJHNwLC0kRlJBTUUoJHNwKQotKwlsaQlyMTAsYDE1KzYqJFNJ WkVfVGAKLSsJbGkJcjExLGAzMSs2KiRTSVpFX1RgCi0rCW1mbHIJcjYKLSsJbWZzcHIJcjcsIDI1 NgkJCSMgc2F2ZSB2cnNhdmUKLSsJc3R2eAl2MjAscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIK LSsJc3R2eAl2MjEscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjIscjEwLCRz cAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjMscjExLCRzcAotKwlhZGRpCXIxMSxyMTEs MzIKLSsJc3R2eAl2MjQscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjUscjEx LCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjYscjEwLCRzcAotKwlhZGRpCXIxMCxy MTAsMzIKLSsJc3R2eAl2MjcscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2Mjgs cjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjkscjExLCRzcAotKwlhZGRpCXIx MSxyMTEsMzIKLSsJc3R2eAl2MzAscjEwLCRzcAotKwlzdHZ4CXYzMSxyMTEsJHNwCi0rCXN0dwly NyxgJEZSQU1FLTRgKCRzcCkJIyBzYXZlIHZyc2F2ZQotKwlsaQlyMCwgLTEKLSsJJFBVU0gJcjYs YCRGUkFNRSskTFJTQVZFYCgkc3ApCi0rCW10c3ByCTI1NiwgcjAJCQkjIHByZXNlcnZlIGFsbCBB bHRpVmVjIHJlZ2lzdGVycwotKwotKwlibAlfdnBhZXNfZW5jcnlwdF9wcmVoZWF0Ci0rCi0rCT9s dnNsCSRpbnBwZXJtLCAwLCAkaW5wCSMgcHJlcGFyZSBmb3IgdW5hbGlnbmVkIGFjY2VzcwotKwls dngJdjAsIDAsICRpbnAKLSsJYWRkaQkkaW5wLCAkaW5wLCAxNQkJIyAxNSBpcyBub3QgYSB0eXBv Ci0rCSA/bHZzcgkkb3V0cGVybSwgMCwgJG91dAotKwk/bHZzbAkka2V5cGVybSwgMCwgJGtleQkj IHByZXBhcmUgZm9yIHVuYWxpZ25lZCBhY2Nlc3MKLSsJIHZub3IJJG91dG1hc2ssIHY3LCB2Nwkj IDB4ZmYuLmZmCi0rCWx2eAkkaW5wdGFpbCwgMCwgJGlucAkjIHJlZHVuZGFudCBpbiBhbGlnbmVk IGNhc2UKLSsJID92cGVybQkkb3V0bWFzaywgdjcsICRvdXRtYXNrLCAkb3V0cGVybQotKwkgbHZ4 CSRvdXRoZWFkLCAwLCAkb3V0Ci0rCT92cGVybQl2MCwgdjAsICRpbnB0YWlsLCAkaW5wcGVybQot KwotKwlibAlfdnBhZXNfZW5jcnlwdF9jb3JlCi0rCi0rCXZwZXJtCXYwLCB2MCwgdjAsICRvdXRw ZXJtCSMgcm90YXRlIHJpZ2h0L2xlZnQKLSsJdnNlbAl2MSwgJG91dGhlYWQsIHYwLCAkb3V0bWFz awotKwl2bXIJJG91dGhlYWQsIHYwCi0rCXN0dngJdjEsIDAsICRvdXQKLSsJYWRkaQkkb3V0LCAk b3V0LCAxNQkJIyAxNSBpcyBub3QgYSB0eXBvCi0rCSMjIyMjIyMjCi0rCi0rCWx2eAl2MSwgMCwg JG91dAkJIyByZWR1bmRhbnQgaW4gYWxpZ25lZCBjYXNlCi0rCXZzZWwJdjEsICRvdXRoZWFkLCB2 MSwgJG91dG1hc2sKLSsJc3R2eAl2MSwgMCwgJG91dAotKwotKwlsaQlyMTAsYDE1KzYqJFNJWkVf VGAKLSsJbGkJcjExLGAzMSs2KiRTSVpFX1RgCi0rCW10bHIJcjYKLSsJbXRzcHIJMjU2LCByNwkJ CSMgcmVzdG9yZSB2cnNhdmUKLSsJbHZ4CXYyMCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgot KwlsdngJdjIxLHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjIscjEwLCRzcAot KwlhZGRpCXIxMCxyMTAsMzIKLSsJbHZ4CXYyMyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgot KwlsdngJdjI0LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjUscjExLCRzcAot KwlhZGRpCXIxMSxyMTEsMzIKLSsJbHZ4CXYyNixyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgot KwlsdngJdjI3LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjgscjEwLCRzcAot KwlhZGRpCXIxMCxyMTAsMzIKLSsJbHZ4CXYyOSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgot KwlsdngJdjMwLHIxMCwkc3AKLSsJbHZ4CXYzMSxyMTEsJHNwCi0rCWFkZGkJJHNwLCRzcCwkRlJB TUUKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiwweDA0LDEsMHg4MCwwLDMsMAotKwku bG9uZwkwCi0rLnNpemUJLnZwYWVzX2VuY3J5cHQsLi0udnBhZXNfZW5jcnlwdAotKwotKy5hbGln bgk0Ci0rX3ZwYWVzX2RlY3J5cHRfcHJlaGVhdDoKLSsJbWZscglyOAotKwlibAlMY29uc3RzCi0r CW10bHIJcjgKLSsJbGkJcjExLCAweGMwCQkjIExrX2ludgotKwlsaQlyMTAsIDB4ZDAKLSsJbGkJ cjksICAweDE2MAkJIyBMZGlwdAotKwlsaQlyOCwgIDB4MTcwCi0rCXZ4b3IJdjcsIHY3LCB2NwkJ IyAweDAwLi4wMAotKwl2c3BsdGlzYgl2OCw0CQkjIDB4MDQuLjA0Ci0rCXZzcGx0aXNiCXY5LDB4 MGYJCSMgMHgwZi4uMGYKLSsJbHZ4CSRpbnZsbywgcjEyLCByMTEKLSsJbGkJcjExLCAweDE4MAot KwlsdngJJGludmhpLCByMTIsIHIxMAotKwlsaQlyMTAsIDB4MTkwCi0rCWx2eAkkaXB0bG8sIHIx MiwgcjkKLSsJbGkJcjksICAweDFhMAotKwlsdngJJGlwdGhpLCByMTIsIHI4Ci0rCWxpCXI4LCAg MHgxYjAKLSsJbHZ4CSRzYm91LCByMTIsIHIxMQotKwlsaQlyMTEsIDB4MWMwCi0rCWx2eAkkc2Jv dCwgcjEyLCByMTAKLSsJbGkJcjEwLCAweDFkMAotKwlsdngJJHNiOXUsIHIxMiwgcjkKLSsJbGkJ cjksICAweDFlMAotKwlsdngJJHNiOXQsIHIxMiwgcjgKLSsJbGkJcjgsICAweDFmMAotKwlsdngJ JHNiZHUsIHIxMiwgcjExCi0rCWxpCXIxMSwgMHgyMDAKLSsJbHZ4CSRzYmR0LCByMTIsIHIxMAot KwlsaQlyMTAsIDB4MjEwCi0rCWx2eAkkc2JidSwgcjEyLCByOQotKwlsdngJJHNiYnQsIHIxMiwg cjgKLSsJbHZ4CSRzYmV1LCByMTIsIHIxMQotKwlsdngJJHNiZXQsIHIxMiwgcjEwCi0rCWJscgot KwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKLSsKLSsjIwotKyMjICBEZWNy eXB0aW9uIGNvcmUKLSsjIwotKyMjICBTYW1lIEFQSSBhcyBlbmNyeXB0aW9uIGNvcmUuCi0rIyMK LSsuYWxpZ24JNAotK192cGFlc19kZWNyeXB0X2NvcmU6Ci0rCWx3eglyOCwgMjQwKCRrZXkpCQkj IHB1bGwgcm91bmRzCi0rCWxpCXI5LCAxNgotKwlsdngJdjUsIDAsICRrZXkJCSMgdm1vdmRxdQko JXI5KSwJJXhtbTQJCSMgcm91bmQwIGtleQotKwlsaQlyMTEsIDB4MzAKLSsJbHZ4CXY2LCByOSwg JGtleQotKwlhZGRpCXI5LCByOSwgMTYKLSsJP3ZwZXJtCXY1LCB2NSwgdjYsICRrZXlwZXJtCSMg YWxpZ24gcm91bmQga2V5Ci0rCXZzcmIJdjEsIHYwLCB2OAkJIyB2cHNybGIJXCQ0LAkleG1tMCwJ JXhtbTAKLSsJdnBlcm0JdjAsICRpcHRsbywgJGlwdGxvLCB2MAkjIHZwc2h1ZmIJJXhtbTEsCSV4 bW0yLAkleG1tMgotKwl2cGVybQl2MSwgJGlwdGhpLCAkaXB0aGksIHYxCSMgdnBzaHVmYgkleG1t MCwJJXhtbTEsCSV4bW0wCi0rCXZ4b3IJdjAsIHYwLCB2NQkJIyB2cHhvcgkleG1tNCwJJXhtbTIs CSV4bW0yCi0rCXZ4b3IJdjAsIHYwLCB2MQkJIyB2cHhvcgkleG1tMiwJJXhtbTAsCSV4bW0wCi0r CW10Y3RyCXI4Ci0rCWIJTGRlY19lbnRyeQotKwotKy5hbGlnbiA0Ci0rTGRlY19sb29wOgotKyMK LSsjICBJbnZlcnNlIG1peCBjb2x1bW5zCi0rIwotKwlsdngJdjAsIHIxMiwgcjExCQkjIHY1IGFu ZCB2MCBhcmUgZmxpcHBlZAotKwkJCQkJIyB2bW92ZHFhCS0weDIwKCVyMTApLCV4bW00CQkjIDQg OiBzYjl1Ci0rCQkJCQkjIHZtb3ZkcWEJLTB4MTAoJXIxMCksJXhtbTEJCSMgMCA6IHNiOXQKLSsJ dnBlcm0JdjQsICRzYjl1LCB2NywgdjIJIyB2cHNodWZiCSV4bW0yLAkleG1tNCwJJXhtbTQJCSMg NCA9IHNiOXUKLSsJc3ViaQlyMTEsIHIxMSwgMTYKLSsJdnBlcm0JdjEsICRzYjl0LCB2NywgdjMJ IyB2cHNodWZiCSV4bW0zLAkleG1tMSwJJXhtbTEJCSMgMCA9IHNiOXQKLSsJYW5kaS4JcjExLCBy MTEsIDB4MzAKLSsJdnhvcgl2NSwgdjUsIHY0CQkjIHZweG9yCQkleG1tNCwJJXhtbTAsCSV4bW0w Ci0rCQkJCQkjIHZtb3ZkcWEJMHgwMCglcjEwKSwleG1tNAkJIyA0IDogc2JkdQotKwl2eG9yCXY1 LCB2NSwgdjEJCSMgdnB4b3IJCSV4bW0xLAkleG1tMCwJJXhtbTAJCSMgMCA9IGNoCi0rCQkJCQkj IHZtb3ZkcWEJMHgxMCglcjEwKSwleG1tMQkJIyAwIDogc2JkdAotKwotKwl2cGVybQl2NCwgJHNi ZHUsIHY3LCB2MgkjIHZwc2h1ZmIJJXhtbTIsCSV4bW00LAkleG1tNAkJIyA0ID0gc2JkdQotKwl2 cGVybSAJdjUsIHY1LCB2NywgdjAJCSMgdnBzaHVmYgkleG1tNSwJJXhtbTAsCSV4bW0wCQkjIE1D IGNoCi0rCXZwZXJtCXYxLCAkc2JkdCwgdjcsIHYzCSMgdnBzaHVmYgkleG1tMywJJXhtbTEsCSV4 bW0xCQkjIDAgPSBzYmR0Ci0rCXZ4b3IJdjUsIHY1LCB2NAkJIyB2cHhvcgkJJXhtbTQsCSV4bW0w LAkleG1tMAkJIyA0ID0gY2gKLSsJCQkJCSMgdm1vdmRxYQkweDIwKCVyMTApLAkleG1tNAkJIyA0 IDogc2JidQotKwl2eG9yCXY1LCB2NSwgdjEJCSMgdnB4b3IJCSV4bW0xLAkleG1tMCwJJXhtbTAJ CSMgMCA9IGNoCi0rCQkJCQkjIHZtb3ZkcWEJMHgzMCglcjEwKSwJJXhtbTEJCSMgMCA6IHNiYnQK LSsKLSsJdnBlcm0JdjQsICRzYmJ1LCB2NywgdjIJIyB2cHNodWZiCSV4bW0yLAkleG1tNCwJJXht bTQJCSMgNCA9IHNiYnUKLSsJdnBlcm0JdjUsIHY1LCB2NywgdjAJCSMgdnBzaHVmYgkleG1tNSwJ JXhtbTAsCSV4bW0wCQkjIE1DIGNoCi0rCXZwZXJtCXYxLCAkc2JidCwgdjcsIHYzCSMgdnBzaHVm YgkleG1tMywJJXhtbTEsCSV4bW0xCQkjIDAgPSBzYmJ0Ci0rCXZ4b3IJdjUsIHY1LCB2NAkJIyB2 cHhvcgkJJXhtbTQsCSV4bW0wLAkleG1tMAkJIyA0ID0gY2gKLSsJCQkJCSMgdm1vdmRxYQkweDQw KCVyMTApLAkleG1tNAkJIyA0IDogc2JldQotKwl2eG9yCXY1LCB2NSwgdjEJCSMgdnB4b3IJCSV4 bW0xLAkleG1tMCwJJXhtbTAJCSMgMCA9IGNoCi0rCQkJCQkjIHZtb3ZkcWEJMHg1MCglcjEwKSwJ JXhtbTEJCSMgMCA6IHNiZXQKLSsKLSsJdnBlcm0JdjQsICRzYmV1LCB2NywgdjIJIyB2cHNodWZi CSV4bW0yLAkleG1tNCwJJXhtbTQJCSMgNCA9IHNiZXUKLSsJdnBlcm0JdjUsIHY1LCB2NywgdjAJ CSMgdnBzaHVmYgkleG1tNSwJJXhtbTAsCSV4bW0wCQkjIE1DIGNoCi0rCXZwZXJtCXYxLCAkc2Jl dCwgdjcsIHYzCSMgdnBzaHVmYgkleG1tMywJJXhtbTEsCSV4bW0xCQkjIDAgPSBzYmV0Ci0rCXZ4 b3IJdjAsIHY1LCB2NAkJIyB2cHhvcgkJJXhtbTQsCSV4bW0wLAkleG1tMAkJIyA0ID0gY2gKLSsJ dnhvcgl2MCwgdjAsIHYxCQkjIHZweG9yCQkleG1tMSwJJXhtbTAsCSV4bW0wCQkjIDAgPSBjaAot KwotK0xkZWNfZW50cnk6Ci0rCSMgdG9wIG9mIHJvdW5kCi0rCXZzcmIJdjEsIHYwLCB2OAkJIyB2 cHNybGIJXCQ0LAkleG1tMCwJJXhtbTAJIyAxID0gaQotKwl2cGVybQl2MiwgJGludmhpLCAkaW52 aGksIHYwCSMgdnBzaHVmYgkleG1tMSwJJXhtbTExLAkleG1tMgkjIDIgPSBhL2sKLSsJdnhvcgl2 MCwgdjAsIHYxCQkjIHZweG9yCQkleG1tMCwJJXhtbTEsCSV4bW0xCSMgMCA9IGoKLSsJdnBlcm0J djMsICRpbnZsbywgJGludmxvLCB2MQkjIHZwc2h1ZmIJJXhtbTAsIAkleG1tMTAsCSV4bW0zCSMg MyA9IDEvaQotKwl2cGVybQl2NCwgJGludmxvLCAkaW52bG8sIHYwCSMgdnBzaHVmYgkleG1tMSwJ JXhtbTEwLAkleG1tNAkjIDQgPSAxL2oKLSsJdmFuZAl2MCwgdjAsIHY5Ci0rCXZ4b3IJdjMsIHYz LCB2MgkJIyB2cHhvcgkJJXhtbTIsCSV4bW0zLAkleG1tMwkjIDMgPSBpYWsgPSAxL2kgKyBhL2sK LSsJdnhvcgl2NCwgdjQsIHYyCQkjIHZweG9yCQkleG1tMiwgCSV4bW00LAkleG1tNAkjIDQgPSBq YWsgPSAxL2ogKyBhL2sKLSsJdnBlcm0JdjIsICRpbnZsbywgdjcsIHYzCSMgdnBzaHVmYgkleG1t MywJJXhtbTEwLAkleG1tMgkjIDIgPSAxL2lhawotKwl2bXIJdjUsIHY2Ci0rCWx2eAl2Niwgcjks ICRrZXkJCSMgdm1vdmRxdQkoJXI5KSwJJXhtbTAKLSsJdnBlcm0JdjMsICRpbnZsbywgdjcsIHY0 CSMgdnBzaHVmYgkleG1tNCwgICV4bW0xMCwJJXhtbTMJIyAzID0gMS9qYWsKLSsJYWRkaQlyOSwg cjksIDE2Ci0rCXZ4b3IJdjIsIHYyLCB2MAkJIyB2cHhvcgkJJXhtbTEsCSV4bW0yLAkleG1tMgkj IDIgPSBpbwotKwk/dnBlcm0JdjUsIHY1LCB2NiwgJGtleXBlcm0JIyBhbGlnbiByb3VuZCBrZXkK LSsJdnhvcgl2MywgdjMsIHYxCQkjIHZweG9yCQkleG1tMCwgICV4bW0zLAkleG1tMwkjIDMgPSBq bwotKwliZG56CUxkZWNfbG9vcAotKwotKwkjIG1pZGRsZSBvZiBsYXN0IHJvdW5kCi0rCWFkZGkJ cjEwLCByMTEsIDB4ODAKLSsJCQkJCSMgdm1vdmRxYQkweDYwKCVyMTApLAkleG1tNAkjIDMgOiBz Ym91Ci0rCXZwZXJtCXY0LCAkc2JvdSwgdjcsIHYyCSMgdnBzaHVmYgkleG1tMiwJJXhtbTQsCSV4 bW00CSMgNCA9IHNib3UKLSsJCQkJCSMgdm1vdmRxYQkweDcwKCVyMTApLAkleG1tMQkjIDAgOiBz Ym90Ci0rCWx2eAl2MiwgcjEyLCByMTAJCSMgdm1vdmRxYQktMHgxNjAoJXIxMSksCSV4bW0yCSMg LkxrX3NyLS5Ma19kc2JkPS0weDE2MAotKwl2cGVybQl2MSwgJHNib3QsIHY3LCB2MwkjIHZwc2h1 ZmIJJXhtbTMsCSV4bW0xLAkleG1tMQkjIDAgPSBzYjF0Ci0rCXZ4b3IJdjQsIHY0LCB2NQkJIyB2 cHhvcgkJJXhtbTAsCSV4bW00LAkleG1tNAkjIDQgPSBzYjF1ICsgawotKwl2eG9yCXYwLCB2MSwg djQJCSMgdnB4b3IJCSV4bW00LAkleG1tMSwJJXhtbTAJIyAwID0gQQotKwl2cGVybQl2MCwgdjAs IHY3LCB2MgkJIyB2cHNodWZiCSV4bW0yLAkleG1tMCwJJXhtbTAKLSsJYmxyCi0rCS5sb25nCTAK LSsJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDAsMAotKwotKy5nbG9ibAkudnBhZXNfZGVjcnlwdAot Ky5hbGlnbgk1Ci0rLnZwYWVzX2RlY3J5cHQ6Ci0rCSRTVFUJJHNwLC0kRlJBTUUoJHNwKQotKwls aQlyMTAsYDE1KzYqJFNJWkVfVGAKLSsJbGkJcjExLGAzMSs2KiRTSVpFX1RgCi0rCW1mbHIJcjYK LSsJbWZzcHIJcjcsIDI1NgkJCSMgc2F2ZSB2cnNhdmUKLSsJc3R2eAl2MjAscjEwLCRzcAotKwlh ZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjEscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJ c3R2eAl2MjIscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjMscjExLCRzcAot KwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjQscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIK LSsJc3R2eAl2MjUscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjYscjEwLCRz cAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjcscjExLCRzcAotKwlhZGRpCXIxMSxyMTEs MzIKLSsJc3R2eAl2MjgscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjkscjEx LCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MzAscjEwLCRzcAotKwlzdHZ4CXYzMSxy MTEsJHNwCi0rCXN0dwlyNyxgJEZSQU1FLTRgKCRzcCkJIyBzYXZlIHZyc2F2ZQotKwlsaQlyMCwg LTEKLSsJJFBVU0gJcjYsYCRGUkFNRSskTFJTQVZFYCgkc3ApCi0rCW10c3ByCTI1NiwgcjAJCQkj IHByZXNlcnZlIGFsbCBBbHRpVmVjIHJlZ2lzdGVycwotKwotKwlibAlfdnBhZXNfZGVjcnlwdF9w cmVoZWF0Ci0rCi0rCT9sdnNsCSRpbnBwZXJtLCAwLCAkaW5wCSMgcHJlcGFyZSBmb3IgdW5hbGln bmVkIGFjY2VzcwotKwlsdngJdjAsIDAsICRpbnAKLSsJYWRkaQkkaW5wLCAkaW5wLCAxNQkJIyAx NSBpcyBub3QgYSB0eXBvCi0rCSA/bHZzcgkkb3V0cGVybSwgMCwgJG91dAotKwk/bHZzbAkka2V5 cGVybSwgMCwgJGtleQotKwkgdm5vcgkkb3V0bWFzaywgdjcsIHY3CSMgMHhmZi4uZmYKLSsJbHZ4 CSRpbnB0YWlsLCAwLCAkaW5wCSMgcmVkdW5kYW50IGluIGFsaWduZWQgY2FzZQotKwkgP3ZwZXJt CSRvdXRtYXNrLCB2NywgJG91dG1hc2ssICRvdXRwZXJtCi0rCSBsdngJJG91dGhlYWQsIDAsICRv dXQKLSsJP3ZwZXJtCXYwLCB2MCwgJGlucHRhaWwsICRpbnBwZXJtCi0rCi0rCWJsCV92cGFlc19k ZWNyeXB0X2NvcmUKLSsKLSsJdnBlcm0JdjAsIHYwLCB2MCwgJG91dHBlcm0JIyByb3RhdGUgcmln aHQvbGVmdAotKwl2c2VsCXYxLCAkb3V0aGVhZCwgdjAsICRvdXRtYXNrCi0rCXZtcgkkb3V0aGVh ZCwgdjAKLSsJc3R2eAl2MSwgMCwgJG91dAotKwlhZGRpCSRvdXQsICRvdXQsIDE1CQkjIDE1IGlz IG5vdCBhIHR5cG8KLSsJIyMjIyMjIyMKLSsKLSsJbHZ4CXYxLCAwLCAkb3V0CQkjIHJlZHVuZGFu dCBpbiBhbGlnbmVkIGNhc2UKLSsJdnNlbAl2MSwgJG91dGhlYWQsIHYxLCAkb3V0bWFzawotKwlz dHZ4CXYxLCAwLCAkb3V0Ci0rCi0rCWxpCXIxMCxgMTUrNiokU0laRV9UYAotKwlsaQlyMTEsYDMx KzYqJFNJWkVfVGAKLSsJbXRscglyNgotKwltdHNwcgkyNTYsIHI3CQkJIyByZXN0b3JlIHZyc2F2 ZQotKwlsdngJdjIwLHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjEscjExLCRz cAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJbHZ4CXYyMixyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwz MgotKwlsdngJdjIzLHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjQscjEwLCRz cAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJbHZ4CXYyNSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwz MgotKwlsdngJdjI2LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjcscjExLCRz cAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJbHZ4CXYyOCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwz MgotKwlsdngJdjI5LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MzAscjEwLCRz cAotKwlsdngJdjMxLHIxMSwkc3AKLSsJYWRkaQkkc3AsJHNwLCRGUkFNRQotKwlibHIKLSsJLmxv bmcJMAotKwkuYnl0ZQkwLDEyLDB4MDQsMSwweDgwLDAsMywwCi0rCS5sb25nCTAKLSsuc2l6ZQku dnBhZXNfZGVjcnlwdCwuLS52cGFlc19kZWNyeXB0Ci0rCi0rLmdsb2JsCS52cGFlc19jYmNfZW5j cnlwdAotKy5hbGlnbgk1Ci0rLnZwYWVzX2NiY19lbmNyeXB0OgotKwkke1VDTVB9aSByNSwxNgot KwlibHRsci0KLSsKLSsJJFNUVQkkc3AsLWAoJEZSQU1FKzIqJFNJWkVfVClgKCRzcCkKLSsJbWZs cglyMAotKwlsaQlyMTAsYDE1KzYqJFNJWkVfVGAKLSsJbGkJcjExLGAzMSs2KiRTSVpFX1RgCi0r CW1mc3ByCXIxMiwgMjU2Ci0rCXN0dngJdjIwLHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0r CXN0dngJdjIxLHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCXN0dngJdjIyLHIxMCwkc3AK LSsJYWRkaQlyMTAscjEwLDMyCi0rCXN0dngJdjIzLHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMy Ci0rCXN0dngJdjI0LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCXN0dngJdjI1LHIxMSwk c3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCXN0dngJdjI2LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEw LDMyCi0rCXN0dngJdjI3LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCXN0dngJdjI4LHIx MCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCXN0dngJdjI5LHIxMSwkc3AKLSsJYWRkaQlyMTEs cjExLDMyCi0rCXN0dngJdjMwLHIxMCwkc3AKLSsJc3R2eAl2MzEscjExLCRzcAotKwlzdHcJcjEy LGAkRlJBTUUtNGAoJHNwKQkjIHNhdmUgdnJzYXZlCi0rCSRQVVNICXIzMCxgJEZSQU1FKyRTSVpF X1QqMGAoJHNwKQotKwkkUFVTSAlyMzEsYCRGUkFNRSskU0laRV9UKjFgKCRzcCkKLSsJbGkJcjks IC0xNgotKwkkUFVTSAlyMCwgYCRGUkFNRSskU0laRV9UKjIrJExSU0FWRWAoJHNwKQotKwotKwlh bmQJcjMwLCByNSwgcjkJCSMgY29weSBsZW5ndGgmLTE2Ci0rCW1yCXI1LCByNgkJCSMgY29weSBw b2ludGVyIHRvIGtleQotKwltcglyMzEsIHI3CQkJIyBjb3B5IHBvaW50ZXIgdG8gaXYKLSsJYmx0 CUxjYmNfYWJvcnQKLSsJY21wd2kJcjgsIDAJCQkjIHRlc3QgZGlyZWN0aW9uCi0rCWxpCXI2LCAt MQotKwltcglyNywgcjEyCQkJIyBjb3B5IHZyc2F2ZQotKwltdHNwcgkyNTYsIHI2CQkJIyBwcmVz ZXJ2ZSBhbGwgQWx0aVZlYyByZWdpc3RlcnMKLSsKLSsJbHZ4CXYyNCwgMCwgcjMxCQkjIGxvYWQg W3BvdGVudGlhbGx5IHVuYWxpZ25lZF0gaXYKLSsJbGkJcjksIDE1Ci0rCT9sdnNsCSRpbnBwZXJt LCAwLCByMzEKLSsJbHZ4CXYyNSwgcjksIHIzMQotKwk/dnBlcm0JdjI0LCB2MjQsIHYyNSwgJGlu cHBlcm0KLSsKLSsJbmVnCXI4LCAkaW5wCQkjIHByZXBhcmUgZm9yIHVuYWxpZ25lZCBhY2Nlc3MK LSsJIHZ4b3IJdjcsIHY3LCB2NwotKwk/bHZzbAkka2V5cGVybSwgMCwgJGtleQotKwkgP2x2c3IJ JG91dHBlcm0sIDAsICRvdXQKLSsJP2x2c3IJJGlucHBlcm0sIDAsIHI4CQkjIC0kaW5wCi0rCSB2 bm9yCSRvdXRtYXNrLCB2NywgdjcJIyAweGZmLi5mZgotKwlsdngJJGlucHRhaWwsIDAsICRpbnAK LSsJID92cGVybQkkb3V0bWFzaywgdjcsICRvdXRtYXNrLCAkb3V0cGVybQotKwlhZGRpCSRpbnAs ICRpbnAsIDE1CQkjIDE1IGlzIG5vdCBhIHR5cG8KLSsJIGx2eAkkb3V0aGVhZCwgMCwgJG91dAot KwotKwliZXEJTGNiY19kZWNyeXB0Ci0rCi0rCWJsCV92cGFlc19lbmNyeXB0X3ByZWhlYXQKLSsJ bGkJcjAsIDE2Ci0rCi0rTGNiY19lbmNfbG9vcDoKLSsJdm1yCXYwLCAkaW5wdGFpbAotKwlsdngJ JGlucHRhaWwsIDAsICRpbnAKLSsJYWRkaQkkaW5wLCAkaW5wLCAxNgotKwk/dnBlcm0JdjAsIHYw LCAkaW5wdGFpbCwgJGlucHBlcm0KLSsJdnhvcgl2MCwgdjAsIHYyNAkJIyBePSBpdgotKwotKwli bAlfdnBhZXNfZW5jcnlwdF9jb3JlCi0rCi0rCXZtcgl2MjQsIHYwCQkJIyBwdXQgYXNpZGUgaXYK LSsJc3ViLglyMzAsIHIzMCwgcjAJCSMgbGVuIC09IDE2Ci0rCXZwZXJtCXYwLCB2MCwgdjAsICRv dXRwZXJtCSMgcm90YXRlIHJpZ2h0L2xlZnQKLSsJdnNlbAl2MSwgJG91dGhlYWQsIHYwLCAkb3V0 bWFzawotKwl2bXIJJG91dGhlYWQsIHYwCi0rCXN0dngJdjEsIDAsICRvdXQKLSsJYWRkaQkkb3V0 LCAkb3V0LCAxNgotKwlibmUJTGNiY19lbmNfbG9vcAotKwotKwliCUxjYmNfZG9uZQotKwotKy5h bGlnbgk1Ci0rTGNiY19kZWNyeXB0OgotKwlibAlfdnBhZXNfZGVjcnlwdF9wcmVoZWF0Ci0rCWxp CXIwLCAxNgotKwotK0xjYmNfZGVjX2xvb3A6Ci0rCXZtcgl2MCwgJGlucHRhaWwKLSsJbHZ4CSRp bnB0YWlsLCAwLCAkaW5wCi0rCWFkZGkJJGlucCwgJGlucCwgMTYKLSsJP3ZwZXJtCXYwLCB2MCwg JGlucHRhaWwsICRpbnBwZXJtCi0rCXZtcgl2MjUsIHYwCQkJIyBwdXQgYXNpZGUgaW5wdXQKLSsK LSsJYmwJX3ZwYWVzX2RlY3J5cHRfY29yZQotKwotKwl2eG9yCXYwLCB2MCwgdjI0CQkjIF49IGl2 Ci0rCXZtcgl2MjQsIHYyNQotKwlzdWIuCXIzMCwgcjMwLCByMAkJIyBsZW4gLT0gMTYKLSsJdnBl cm0JdjAsIHYwLCB2MCwgJG91dHBlcm0JIyByb3RhdGUgcmlnaHQvbGVmdAotKwl2c2VsCXYxLCAk b3V0aGVhZCwgdjAsICRvdXRtYXNrCi0rCXZtcgkkb3V0aGVhZCwgdjAKLSsJc3R2eAl2MSwgMCwg JG91dAotKwlhZGRpCSRvdXQsICRvdXQsIDE2Ci0rCWJuZQlMY2JjX2RlY19sb29wCi0rCi0rTGNi Y19kb25lOgotKwlhZGRpCSRvdXQsICRvdXQsIC0xCi0rCWx2eAl2MSwgMCwgJG91dAkJIyByZWR1 bmRhbnQgaW4gYWxpZ25lZCBjYXNlCi0rCXZzZWwJdjEsICRvdXRoZWFkLCB2MSwgJG91dG1hc2sK LSsJc3R2eAl2MSwgMCwgJG91dAotKwotKwluZWcJcjgsIHIzMQkJCSMgd3JpdGUgW3BvdGVudGlh bGx5IHVuYWxpZ25lZF0gaXYKLSsJP2x2c2wJJG91dHBlcm0sIDAsIHI4Ci0rCWxpCXI2LCAxNQot Kwl2bm9yCSRvdXRtYXNrLCB2NywgdjcJIyAweGZmLi5mZgotKwk/dnBlcm0JJG91dG1hc2ssIHY3 LCAkb3V0bWFzaywgJG91dHBlcm0KLSsJbHZ4CSRvdXRoZWFkLCAwLCByMzEKLSsJdnBlcm0JdjI0 LCB2MjQsIHYyNCwgJG91dHBlcm0JIyByb3RhdGUgcmlnaHQvbGVmdAotKwl2c2VsCXYwLCAkb3V0 aGVhZCwgdjI0LCAkb3V0bWFzawotKwlsdngJdjEsIHI2LCByMzEKLSsJc3R2eAl2MCwgMCwgcjMx Ci0rCXZzZWwJdjEsIHYyNCwgdjEsICRvdXRtYXNrCi0rCXN0dngJdjEsIHI2LCByMzEKLSsKLSsJ bXRzcHIJMjU2LCByNwkJCSMgcmVzdG9yZSB2cnNhdmUKLSsJbGkJcjEwLGAxNSs2KiRTSVpFX1Rg Ci0rCWxpCXIxMSxgMzErNiokU0laRV9UYAotKwlsdngJdjIwLHIxMCwkc3AKLSsJYWRkaQlyMTAs cjEwLDMyCi0rCWx2eAl2MjEscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJbHZ4CXYyMixy MTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlsdngJdjIzLHIxMSwkc3AKLSsJYWRkaQlyMTEs cjExLDMyCi0rCWx2eAl2MjQscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJbHZ4CXYyNSxy MTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjI2LHIxMCwkc3AKLSsJYWRkaQlyMTAs cjEwLDMyCi0rCWx2eAl2MjcscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJbHZ4CXYyOCxy MTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlsdngJdjI5LHIxMSwkc3AKLSsJYWRkaQlyMTEs cjExLDMyCi0rCWx2eAl2MzAscjEwLCRzcAotKwlsdngJdjMxLHIxMSwkc3AKLStMY2JjX2Fib3J0 OgotKwkkUE9QCXIwLCBgJEZSQU1FKyRTSVpFX1QqMiskTFJTQVZFYCgkc3ApCi0rCSRQT1AJcjMw LGAkRlJBTUUrJFNJWkVfVCowYCgkc3ApCi0rCSRQT1AJcjMxLGAkRlJBTUUrJFNJWkVfVCoxYCgk c3ApCi0rCW10bHIJcjAKLSsJYWRkaQkkc3AsJHNwLGAkRlJBTUUrJFNJWkVfVCoyYAotKwlibHIK LSsJLmxvbmcJMAotKwkuYnl0ZQkwLDEyLDB4MDQsMSwweDgwLDIsNiwwCi0rCS5sb25nCTAKLSsu c2l6ZQkudnBhZXNfY2JjX2VuY3J5cHQsLi0udnBhZXNfY2JjX2VuY3J5cHQKLStfX18KLSt9DAot K3sKLStteSAoJGlucCwkYml0cywkb3V0KT1tYXAoInIkXyIsKDMuLjUpKTsKLStteSAkZGlyPSJj cjEiOwotK215ICgkaW52bG8sJGludmhpLCRpcHRsbywkaXB0aGksJHJjb24pID0gbWFwKCJ2JF8i LCgxMC4uMTMsMjQpKTsKLSsKLSskY29kZS49PDxfX187Ci0rIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAg ICAgQUVTIGtleSBzY2hlZHVsZSAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKLSsjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKy5hbGlnbgk0Ci0r X3ZwYWVzX2tleV9wcmVoZWF0OgotKwltZmxyCXI4Ci0rCWJsCUxjb25zdHMKLSsJbXRscglyOAot KwlsaQlyMTEsIDB4YzAJCSMgTGtfaW52Ci0rCWxpCXIxMCwgMHhkMAotKwlsaQlyOSwgIDB4ZTAJ CSMgTF9pcHQKLSsJbGkJcjgsICAweGYwCi0rCi0rCXZzcGx0aXNiCXY4LDQJCSMgMHgwNC4uMDQK LSsJdnhvcgl2OSx2OSx2OQkJIyAweDAwLi4wMAotKwlsdngJJGludmxvLCByMTIsIHIxMQkjIExr X2ludgotKwlsaQlyMTEsIDB4MTIwCi0rCWx2eAkkaW52aGksIHIxMiwgcjEwCi0rCWxpCXIxMCwg MHgxMzAKLSsJbHZ4CSRpcHRsbywgcjEyLCByOQkJIyBMa19pcHQKLSsJbGkJcjksIDB4MjIwCi0r CWx2eAkkaXB0aGksIHIxMiwgcjgKLSsJbGkJcjgsIDB4MjMwCi0rCi0rCWx2eAl2MTQsIHIxMiwg cjExCQkjIExrX3NiMQotKwlsaQlyMTEsIDB4MjQwCi0rCWx2eAl2MTUsIHIxMiwgcjEwCi0rCWxp CXIxMCwgMHgyNTAKLSsKLSsJbHZ4CXYxNiwgcjEyLCByOQkJIyBMa19ka3NkCi0rCWxpCXI5LCAw eDI2MAotKwlsdngJdjE3LCByMTIsIHI4Ci0rCWxpCXI4LCAweDI3MAotKwlsdngJdjE4LCByMTIs IHIxMQkJIyBMa19ka3NiCi0rCWxpCXIxMSwgMHgyODAKLSsJbHZ4CXYxOSwgcjEyLCByMTAKLSsJ bGkJcjEwLCAweDI5MAotKwlsdngJdjIwLCByMTIsIHI5CQkjIExrX2Rrc2UKLSsJbGkJcjksIDB4 MmEwCi0rCWx2eAl2MjEsIHIxMiwgcjgKLSsJbGkJcjgsIDB4MmIwCi0rCWx2eAl2MjIsIHIxMiwg cjExCQkjIExrX2RrczkKLSsJbHZ4CXYyMywgcjEyLCByMTAKLSsKLSsJbHZ4CXYyNCwgcjEyLCBy OQkJIyBMa19yY29uCi0rCWx2eAl2MjUsIDAsIHIxMgkJIyBMa19tY19mb3J3YXJkWzBdCi0rCWx2 eAl2MjYsIHIxMiwgcjgJCSMgTGtzNjMKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiww eDE0LDAsMCwwLDAsMAotKwotKy5hbGlnbgk0Ci0rX3ZwYWVzX3NjaGVkdWxlX2NvcmU6Ci0rCW1m bHIJcjcKLSsKLSsJYmwJX3ZwYWVzX2tleV9wcmVoZWF0CSMgbG9hZCB0aGUgdGFibGVzCi0rCi0r CSNsdngJdjAsIDAsICRpbnAJCSMgdm1vdmRxdQkoJXJkaSksCSV4bW0wCQkjIGxvYWQga2V5ICh1 bmFsaWduZWQpCi0rCW5lZwlyOCwgJGlucAkJIyBwcmVwYXJlIGZvciB1bmFsaWduZWQgYWNjZXNz Ci0rCWx2eAl2MCwgMCwgJGlucAotKwlhZGRpCSRpbnAsICRpbnAsIDE1CQkjIDE1IGlzIG5vdCB0 eXBvCi0rCT9sdnNyCSRpbnBwZXJtLCAwLCByOAkJIyAtJGlucAotKwlsdngJdjYsIDAsICRpbnAJ CSMgdjYgc2VydmVzIGFzIGlucHRhaWwKLSsJYWRkaQkkaW5wLCAkaW5wLCA4Ci0rCT92cGVybQl2 MCwgdjAsIHY2LCAkaW5wcGVybQotKwotKwkjIGlucHV0IHRyYW5zZm9ybQotKwl2bXIJdjMsIHYw CQkJIyB2bW92ZHFhCSV4bW0wLAkleG1tMwotKwlibAlfdnBhZXNfc2NoZWR1bGVfdHJhbnNmb3Jt Ci0rCXZtcgl2NywgdjAJCQkjIHZtb3ZkcWEJJXhtbTAsCSV4bW03Ci0rCi0rCWJuZQkkZGlyLCBM c2NoZWR1bGVfYW1fZGVjcnlwdGluZwotKwotKwkjIGVuY3J5cHRpbmcsIG91dHB1dCB6ZXJvdGgg cm91bmQga2V5IGFmdGVyIHRyYW5zZm9ybQotKwlsaQlyOCwgMHgzMAkJIyBtb3YJXCQweDMwLCVy OGQKLSsJYWRkaQlyMTAsIHIxMiwgMHg4MAkJIyBsZWEJLkxrX3NyKCVyaXApLCVyMTAKLSsKLSsJ P2x2c3IJJG91dHBlcm0sIDAsICRvdXQJIyBwcmVwYXJlIGZvciB1bmFsaWduZWQgYWNjZXNzCi0r CXZub3IJJG91dG1hc2ssIHY5LCB2OQkjIDB4ZmYuLmZmCi0rCWx2eAkkb3V0aGVhZCwgMCwgJG91 dAotKwk/dnBlcm0JJG91dG1hc2ssIHY5LCAkb3V0bWFzaywgJG91dHBlcm0KLSsKLSsJI3N0dngJ djAsIDAsICRvdXQJCSMgdm1vdmRxdQkleG1tMCwJKCVyZHgpCi0rCXZwZXJtCXYxLCB2MCwgdjAs ICRvdXRwZXJtCSMgcm90YXRlIHJpZ2h0L2xlZnQKLSsJdnNlbAl2MiwgJG91dGhlYWQsIHYxLCAk b3V0bWFzawotKwl2bXIJJG91dGhlYWQsIHYxCi0rCXN0dngJdjIsIDAsICRvdXQKLSsJYglMc2No ZWR1bGVfZ28KLSsKLStMc2NoZWR1bGVfYW1fZGVjcnlwdGluZzoKLSsJc3J3aQlyOCwgJGJpdHMs IDEJCSMgc2hyCVwkMSwlcjhkCi0rCWFuZGkuCXI4LCByOCwgMzIJCSMgYW5kCVwkMzIsJXI4ZAot Kwl4b3JpCXI4LCByOCwgMzIJCSMgeG9yCVwkMzIsJXI4ZAkjIG5iaXRzPT0xOTI/MDozMgotKwlh ZGRpCXIxMCwgcjEyLCAweDgwCQkjIGxlYQkuTGtfc3IoJXJpcCksJXIxMAotKwkjIGRlY3J5cHRp bmcsIG91dHB1dCB6ZXJvdGggcm91bmQga2V5IGFmdGVyIHNoaWZ0cm93cwotKwlsdngJdjEsIHI4 LCByMTAJCSMgdm1vdmRxYQkoJXI4LCVyMTApLAkleG1tMQotKwl2cGVybQl2NCwgdjMsIHYzLCB2 MQkJIyB2cHNodWZiCSV4bW0xLAkleG1tMywJJXhtbTMKLSsKLSsJbmVnCXIwLCAkb3V0CQkjIHBy ZXBhcmUgZm9yIHVuYWxpZ25lZCBhY2Nlc3MKLSsJP2x2c2wJJG91dHBlcm0sIDAsIHIwCi0rCWFk ZGkJJG91dCwgJG91dCwgMTUJCSMgMTUgaXMgbm90IHR5cG8KLSsJdm5vcgkkb3V0bWFzaywgdjks IHY5CSMgMHhmZi4uZmYKLSsJbHZ4CSRvdXRoZWFkLCAwLCAkb3V0Ci0rCT92cGVybQkkb3V0bWFz aywgJG91dG1hc2ssIHY5LCAkb3V0cGVybQotKwotKwkjc3R2eAl2NCwgMCwgJG91dAkJIyB2bW92 ZHF1CSV4bW0zLAkoJXJkeCkKLSsJdnBlcm0JdjQsIHY0LCB2NCwgJG91dHBlcm0JIyByb3RhdGUg cmlnaHQvbGVmdAotKwl2c2VsCXYyLCAkb3V0aGVhZCwgdjQsICRvdXRtYXNrCi0rCXZtcgkkb3V0 aGVhZCwgdjQKLSsJc3R2eAl2MiwgMCwgJG91dAotKwl4b3JpCXI4LCByOCwgMHgzMAkJIyB4b3IJ XCQweDMwLCAlcjgKLSsKLStMc2NoZWR1bGVfZ286Ci0rCWNtcGx3aQkkYml0cywgMTkyCQkjIGNt cAlcJDE5MiwJJWVzaQotKwliZ3QJTHNjaGVkdWxlXzI1NgotKwliZXEJTHNjaGVkdWxlXzE5Mgot KwkjIDEyODogZmFsbCB0aG91Z2gKLSsKLSsjIwotKyMjICAuc2NoZWR1bGVfMTI4Ci0rIyMKLSsj IyAgMTI4LWJpdCBzcGVjaWZpYyBwYXJ0IG9mIGtleSBzY2hlZHVsZS4KLSsjIwotKyMjICBUaGlz IHNjaGVkdWxlIGlzIHJlYWxseSBzaW1wbGUsIGJlY2F1c2UgYWxsIGl0cyBwYXJ0cwotKyMjICBh cmUgYWNjb21wbGlzaGVkIGJ5IHRoZSBzdWJyb3V0aW5lcy4KLSsjIwotK0xzY2hlZHVsZV8xMjg6 Ci0rCWxpCXIwLCAxMAkJCSMgbW92CVwkMTAsICVlc2kKLSsJbXRjdHIJcjAKLSsKLStMb29wX3Nj aGVkdWxlXzEyODoKLSsJYmwgCV92cGFlc19zY2hlZHVsZV9yb3VuZAotKwliZHogCUxzY2hlZHVs ZV9tYW5nbGVfbGFzdAkjIGRlYwklZXNpCi0rCWJsCV92cGFlc19zY2hlZHVsZV9tYW5nbGUJIyB3 cml0ZSBvdXRwdXQKLSsJYiAJTG9vcF9zY2hlZHVsZV8xMjgKLSsKLSsjIwotKyMjICAuYWVzX3Nj aGVkdWxlXzE5MgotKyMjCi0rIyMgIDE5Mi1iaXQgc3BlY2lmaWMgcGFydCBvZiBrZXkgc2NoZWR1 bGUuCi0rIyMKLSsjIyAgVGhlIG1haW4gYm9keSBvZiB0aGlzIHNjaGVkdWxlIGlzIHRoZSBzYW1l IGFzIHRoZSAxMjgtYml0Ci0rIyMgIHNjaGVkdWxlLCBidXQgd2l0aCBtb3JlIHNtZWFyaW5nLiAg VGhlIGxvbmcsIGhpZ2ggc2lkZSBpcwotKyMjICBzdG9yZWQgaW4gJXhtbTcgYXMgYmVmb3JlLCBh bmQgdGhlIHNob3J0LCBsb3cgc2lkZSBpcyBpbgotKyMjICB0aGUgaGlnaCBiaXRzIG9mICV4bW02 LgotKyMjCi0rIyMgIFRoaXMgc2NoZWR1bGUgaXMgc29tZXdoYXQgbmFzdGllciwgaG93ZXZlciwg YmVjYXVzZSBlYWNoCi0rIyMgIHJvdW5kIHByb2R1Y2VzIDE5MiBiaXRzIG9mIGtleSBtYXRlcmlh bCwgb3IgMS41IHJvdW5kIGtleXMuCi0rIyMgIFRoZXJlZm9yZSwgb24gZWFjaCBjeWNsZSB3ZSBk byAyIHJvdW5kcyBhbmQgcHJvZHVjZSAzIHJvdW5kCi0rIyMgIGtleXMuCi0rIyMKLSsuYWxpZ24J NAotK0xzY2hlZHVsZV8xOTI6Ci0rCWxpCXIwLCA0CQkJIyBtb3YJXCQ0LAklZXNpCi0rCWx2eAl2 MCwgMCwgJGlucAotKwk/dnBlcm0JdjAsIHY2LCB2MCwgJGlucHBlcm0KLSsJP3ZzbGRvaQl2MCwg djMsIHYwLCA4CQkjIHZtb3ZkcXUJOCglcmRpKSwleG1tMAkJIyBsb2FkIGtleSBwYXJ0IDIgKHZl cnkgdW5hbGlnbmVkKQotKwlibAlfdnBhZXNfc2NoZWR1bGVfdHJhbnNmb3JtCSMgaW5wdXQgdHJh bnNmb3JtCi0rCT92c2xkb2kJdjYsIHYwLCB2OSwgOAotKwk/dnNsZG9pCXY2LCB2OSwgdjYsIDgJ CSMgY2xvYmJlciAibG93IiBzaWRlIHdpdGggemVyb3MKLSsJbXRjdHIJcjAKLSsKLStMb29wX3Nj aGVkdWxlXzE5MjoKLSsJYmwJX3ZwYWVzX3NjaGVkdWxlX3JvdW5kCi0rCT92c2xkb2kJdjAsIHY2 LCB2MCwgOAkJIyB2cGFsaWducglcJDgsJXhtbTYsJXhtbTAsJXhtbTAKLSsJYmwJX3ZwYWVzX3Nj aGVkdWxlX21hbmdsZQkjIHNhdmUga2V5IG4KLSsJYmwJX3ZwYWVzX3NjaGVkdWxlXzE5Ml9zbWVh cgotKwlibAlfdnBhZXNfc2NoZWR1bGVfbWFuZ2xlCSMgc2F2ZSBrZXkgbisxCi0rCWJsCV92cGFl c19zY2hlZHVsZV9yb3VuZAotKwliZHogCUxzY2hlZHVsZV9tYW5nbGVfbGFzdAkjIGRlYwklZXNp Ci0rCWJsCV92cGFlc19zY2hlZHVsZV9tYW5nbGUJIyBzYXZlIGtleSBuKzIKLSsJYmwJX3ZwYWVz X3NjaGVkdWxlXzE5Ml9zbWVhcgotKwliCUxvb3Bfc2NoZWR1bGVfMTkyCi0rCi0rIyMKLSsjIyAg LmFlc19zY2hlZHVsZV8yNTYKLSsjIwotKyMjICAyNTYtYml0IHNwZWNpZmljIHBhcnQgb2Yga2V5 IHNjaGVkdWxlLgotKyMjCi0rIyMgIFRoZSBzdHJ1Y3R1cmUgaGVyZSBpcyB2ZXJ5IHNpbWlsYXIg dG8gdGhlIDEyOC1iaXQKLSsjIyAgc2NoZWR1bGUsIGJ1dCB3aXRoIGFuIGFkZGl0aW9uYWwgImxv dyBzaWRlIiBpbgotKyMjICAleG1tNi4gIFRoZSBsb3cgc2lkZSdzIHJvdW5kcyBhcmUgdGhlIHNh bWUgYXMgdGhlCi0rIyMgIGhpZ2ggc2lkZSdzLCBleGNlcHQgbm8gcmNvbiBhbmQgbm8gcm90YXRp b24uCi0rIyMKLSsuYWxpZ24JNAotK0xzY2hlZHVsZV8yNTY6Ci0rCWxpCXIwLCA3CQkJIyBtb3YJ XCQ3LCAlZXNpCi0rCWFkZGkJJGlucCwgJGlucCwgOAotKwlsdngJdjAsIDAsICRpbnAJCSMgdm1v dmRxdQkxNiglcmRpKSwleG1tMAkJIyBsb2FkIGtleSBwYXJ0IDIgKHVuYWxpZ25lZCkKLSsJP3Zw ZXJtCXYwLCB2NiwgdjAsICRpbnBwZXJtCi0rCWJsCV92cGFlc19zY2hlZHVsZV90cmFuc2Zvcm0J IyBpbnB1dCB0cmFuc2Zvcm0KLSsJbXRjdHIJcjAKLSsKLStMb29wX3NjaGVkdWxlXzI1NjoKLSsJ YmwJX3ZwYWVzX3NjaGVkdWxlX21hbmdsZQkjIG91dHB1dCBsb3cgcmVzdWx0Ci0rCXZtcgl2Niwg djAJCQkjIHZtb3ZkcWEJJXhtbTAsCSV4bW02CQkjIHNhdmUgY3VyX2xvIGluIHhtbTYKLSsKLSsJ IyBoaWdoIHJvdW5kCi0rCWJsCV92cGFlc19zY2hlZHVsZV9yb3VuZAotKwliZHogCUxzY2hlZHVs ZV9tYW5nbGVfbGFzdAkjIGRlYwklZXNpCi0rCWJsCV92cGFlc19zY2hlZHVsZV9tYW5nbGUJCi0r Ci0rCSMgbG93IHJvdW5kLiBzd2FwIHhtbTcgYW5kIHhtbTYKLSsJP3ZzcGx0dwl2MCwgdjAsIDMJ CSMgdnBzaHVmZAlcJDB4RkYsCSV4bW0wLAkleG1tMAotKwl2bXIJdjUsIHY3CQkJIyB2bW92ZHFh CSV4bW03LAkleG1tNQotKwl2bXIJdjcsIHY2CQkJIyB2bW92ZHFhCSV4bW02LAkleG1tNwotKwli bAlfdnBhZXNfc2NoZWR1bGVfbG93X3JvdW5kCi0rCXZtcgl2NywgdjUJCQkjIHZtb3ZkcWEJJXht bTUsCSV4bW03Ci0rCQotKwliCUxvb3Bfc2NoZWR1bGVfMjU2Ci0rIyMKLSsjIyAgLmFlc19zY2hl ZHVsZV9tYW5nbGVfbGFzdAotKyMjCi0rIyMgIE1hbmdsZXIgZm9yIGxhc3Qgcm91bmQgb2Yga2V5 IHNjaGVkdWxlCi0rIyMgIE1hbmdsZXMgJXhtbTAKLSsjIyAgICB3aGVuIGVuY3J5cHRpbmcsIG91 dHB1dHMgb3V0KCV4bW0wKSBeIDYzCi0rIyMgICAgd2hlbiBkZWNyeXB0aW5nLCBvdXRwdXRzIHVu c2tldygleG1tMCkKLSsjIwotKyMjICBBbHdheXMgY2FsbGVkIHJpZ2h0IGJlZm9yZSByZXR1cm4u Li4ganVtcHMgdG8gY2xlYW51cCBhbmQgZXhpdHMKLSsjIwotKy5hbGlnbgk0Ci0rTHNjaGVkdWxl X21hbmdsZV9sYXN0OgotKwkjIHNjaGVkdWxlIGxhc3Qgcm91bmQga2V5IGZyb20geG1tMAotKwls aQlyMTEsIDB4MmUwCQkjIGxlYQkuTGtfZGVza2V3KCVyaXApLCVyMTEKLSsJbGkJcjksICAweDJm MAotKwlibmUJJGRpciwgTHNjaGVkdWxlX21hbmdsZV9sYXN0X2RlYwotKwotKwkjIGVuY3J5cHRp bmcKLSsJbHZ4CXYxLCByOCwgcjEwCQkjIHZtb3ZkcWEJKCVyOCwlcjEwKSwleG1tMQotKwlsaQly MTEsIDB4MmMwCQkjIGxlYQkJLkxrX29wdCglcmlwKSwJJXIxMQkjIHByZXBhcmUgdG8gb3V0cHV0 IHRyYW5zZm9ybQotKwlsaQlyOSwgIDB4MmQwCQkjIHByZXBhcmUgdG8gb3V0cHV0IHRyYW5zZm9y bQotKwl2cGVybQl2MCwgdjAsIHYwLCB2MQkJIyB2cHNodWZiCSV4bW0xLAkleG1tMCwJJXhtbTAJ IyBvdXRwdXQgcGVybXV0ZQotKwotKwlsdngJJGlwdGxvLCByMTEsIHIxMgkjIHJlbG9hZCAkaXB0 Ci0rCWx2eAkkaXB0aGksIHI5LCByMTIKLSsJYWRkaQkkb3V0LCAkb3V0LCAxNgkJIyBhZGQJXCQx NiwJJXJkeAotKwl2eG9yCXYwLCB2MCwgdjI2CQkjIHZweG9yCQkuTGtfczYzKCVyaXApLAkleG1t MCwJJXhtbTAKLSsJYmwJX3ZwYWVzX3NjaGVkdWxlX3RyYW5zZm9ybQkjIG91dHB1dCB0cmFuc2Zv cm0KLSsKLSsJI3N0dngJdjAsIHIwLCAkb3V0CQkjIHZtb3ZkcXUJJXhtbTAsCSglcmR4KQkJIyBz YXZlIGxhc3Qga2V5Ci0rCXZwZXJtCXYwLCB2MCwgdjAsICRvdXRwZXJtCSMgcm90YXRlIHJpZ2h0 L2xlZnQKLSsJdnNlbAl2MiwgJG91dGhlYWQsIHYwLCAkb3V0bWFzawotKwl2bXIJJG91dGhlYWQs IHYwCi0rCXN0dngJdjIsIDAsICRvdXQKLSsKLSsJYWRkaQkkb3V0LCAkb3V0LCAxNQkJIyAxNSBp cyBub3QgdHlwbwotKwlsdngJdjEsIDAsICRvdXQJCSMgcmVkdW5kYW50IGluIGFsaWduZWQgY2Fz ZQotKwl2c2VsCXYxLCAkb3V0aGVhZCwgdjEsICRvdXRtYXNrCi0rCXN0dngJdjEsIDAsICRvdXQK LSsJYglMc2NoZWR1bGVfbWFuZ2xlX2RvbmUKLSsKLSsuYWxpZ24JNAotK0xzY2hlZHVsZV9tYW5n bGVfbGFzdF9kZWM6Ci0rCWx2eAkkaXB0bG8sIHIxMSwgcjEyCSMgcmVsb2FkICRpcHQKLSsJbHZ4 CSRpcHRoaSwgcjksICByMTIKLSsJYWRkaQkkb3V0LCAkb3V0LCAtMTYJCSMgYWRkCVwkLTE2LAkl cmR4IAotKwl2eG9yCXYwLCB2MCwgdjI2CQkjIHZweG9yCS5Ma19zNjMoJXJpcCksCSV4bW0wLAkl eG1tMAotKwlibAlfdnBhZXNfc2NoZWR1bGVfdHJhbnNmb3JtCSMgb3V0cHV0IHRyYW5zZm9ybQot KwotKwkjc3R2eAl2MCwgcjAsICRvdXQJCSMgdm1vdmRxdQkleG1tMCwJKCVyZHgpCQkjIHNhdmUg bGFzdCBrZXkKLSsJdnBlcm0JdjAsIHYwLCB2MCwgJG91dHBlcm0JIyByb3RhdGUgcmlnaHQvbGVm dAotKwl2c2VsCXYyLCAkb3V0aGVhZCwgdjAsICRvdXRtYXNrCi0rCXZtcgkkb3V0aGVhZCwgdjAK LSsJc3R2eAl2MiwgMCwgJG91dAotKwotKwlhZGRpCSRvdXQsICRvdXQsIC0xNQkJIyAtMTUgaXMg bm90IHR5cG8KLSsJbHZ4CXYxLCAwLCAkb3V0CQkjIHJlZHVuZGFudCBpbiBhbGlnbmVkIGNhc2UK LSsJdnNlbAl2MSwgJG91dGhlYWQsIHYxLCAkb3V0bWFzawotKwlzdHZ4CXYxLCAwLCAkb3V0Ci0r Ci0rTHNjaGVkdWxlX21hbmdsZV9kb25lOgotKwltdGxyCXI3Ci0rCSMgY2xlYW51cAotKwl2eG9y CXYwLCB2MCwgdjAJCSMgdnB4b3IJCSV4bW0wLAkleG1tMCwJJXhtbTAKLSsJdnhvcgl2MSwgdjEs IHYxCQkjIHZweG9yCQkleG1tMSwJJXhtbTEsCSV4bW0xCi0rCXZ4b3IJdjIsIHYyLCB2MgkJIyB2 cHhvcgkJJXhtbTIsCSV4bW0yLAkleG1tMgotKwl2eG9yCXYzLCB2MywgdjMJCSMgdnB4b3IJCSV4 bW0zLAkleG1tMywJJXhtbTMKLSsJdnhvcgl2NCwgdjQsIHY0CQkjIHZweG9yCQkleG1tNCwJJXht bTQsCSV4bW00Ci0rCXZ4b3IJdjUsIHY1LCB2NQkJIyB2cHhvcgkJJXhtbTUsCSV4bW01LAkleG1t NQotKwl2eG9yCXY2LCB2NiwgdjYJCSMgdnB4b3IJCSV4bW02LAkleG1tNiwJJXhtbTYKLSsJdnhv cgl2NywgdjcsIHY3CQkjIHZweG9yCQkleG1tNywJJXhtbTcsCSV4bW03Ci0rCi0rCWJscgotKwku bG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKLSsKLSsjIwotKyMjICAuYWVzX3Nj aGVkdWxlXzE5Ml9zbWVhcgotKyMjCi0rIyMgIFNtZWFyIHRoZSBzaG9ydCwgbG93IHNpZGUgaW4g dGhlIDE5Mi1iaXQga2V5IHNjaGVkdWxlLgotKyMjCi0rIyMgIElucHV0czoKLSsjIyAgICAleG1t NzogaGlnaCBzaWRlLCBiICBhICB4ICB5Ci0rIyMgICAgJXhtbTY6ICBsb3cgc2lkZSwgZCAgYyAg MCAgMAotKyMjICAgICV4bW0xMzogMAotKyMjCi0rIyMgIE91dHB1dHM6Ci0rIyMgICAgJXhtbTY6 IGIrYytkICBiK2MgIDAgIDAKLSsjIyAgICAleG1tMDogYitjK2QgIGIrYyAgYiAgYQotKyMjCi0r LmFsaWduCTQKLStfdnBhZXNfc2NoZWR1bGVfMTkyX3NtZWFyOgotKwk/dnNwbHR3CXYwLCB2Nywg MwotKwk/dnNsZG9pCXYxLCB2OSwgdjYsIDEyCQkjIHZwc2h1ZmQJXCQweDgwLAkleG1tNiwJJXht bTEJIyBkIGMgMCAwIC0+IGMgMCAwIDAKLSsJP3ZzbGRvaQl2MCwgdjcsIHYwLCA4CQkjIHZwc2h1 ZmQJXCQweEZFLAkleG1tNywJJXhtbTAJIyBiIGEgXyBfIC0+IGIgYiBiIGEKLSsJdnhvcgl2Niwg djYsIHYxCQkjIHZweG9yCQkleG1tMSwJJXhtbTYsCSV4bW02CSMgLT4gYytkIGMgMCAwCi0rCXZ4 b3IJdjYsIHY2LCB2MAkJIyB2cHhvcgkJJXhtbTAsCSV4bW02LAkleG1tNgkjIC0+IGIrYytkIGIr YyBiIGEKLSsJdm1yCXYwLCB2NgotKwk/dnNsZG9pCXY2LCB2NiwgdjksIDgKLSsJP3ZzbGRvaQl2 NiwgdjksIHY2LCA4CQkjIGNsb2JiZXIgbG93IHNpZGUgd2l0aCB6ZXJvcwotKwlibHIKLSsJLmxv bmcJMAotKwkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0rCi0rIyMKLSsjIyAgLmFlc19zY2hl ZHVsZV9yb3VuZAotKyMjCi0rIyMgIFJ1bnMgb25lIG1haW4gcm91bmQgb2YgdGhlIGtleSBzY2hl ZHVsZSBvbiAleG1tMCwgJXhtbTcKLSsjIwotKyMjICBTcGVjaWZpY2FsbHksIHJ1bnMgc3ViYnl0 ZXMgb24gdGhlIGhpZ2ggZHdvcmQgb2YgJXhtbTAKLSsjIyAgdGhlbiByb3RhdGVzIGl0IGJ5IG9u ZSBieXRlIGFuZCB4b3JzIGludG8gdGhlIGxvdyBkd29yZCBvZgotKyMjICAleG1tNy4KLSsjIwot KyMjICBBZGRzIHJjb24gZnJvbSBsb3cgYnl0ZSBvZiAleG1tOCwgdGhlbiByb3RhdGVzICV4bW04 IGZvcgotKyMjICBuZXh0IHJjb24uCi0rIyMKLSsjIyAgU21lYXJzIHRoZSBkd29yZHMgb2YgJXht bTcgYnkgeG9yaW5nIHRoZSBsb3cgaW50byB0aGUKLSsjIyAgc2Vjb25kIGxvdywgcmVzdWx0IGlu dG8gdGhpcmQsIHJlc3VsdCBpbnRvIGhpZ2hlc3QuCi0rIyMKLSsjIyAgUmV0dXJucyByZXN1bHRz IGluICV4bW03ID0gJXhtbTAuCi0rIyMgIENsb2JiZXJzICV4bW0xLSV4bW00LCAlcjExLgotKyMj Ci0rLmFsaWduCTQKLStfdnBhZXNfc2NoZWR1bGVfcm91bmQ6Ci0rCSMgZXh0cmFjdCByY29uIGZy b20geG1tOAotKwkjdnhvcgl2NCwgdjQsIHY0CQkjIHZweG9yCQkleG1tNCwJJXhtbTQsCSV4bW00 Ci0rCT92c2xkb2kJdjEsICRyY29uLCB2OSwgMTUJIyB2cGFsaWducglcJDE1LAkleG1tOCwJJXht bTQsCSV4bW0xCi0rCT92c2xkb2kJJHJjb24sICRyY29uLCAkcmNvbiwgMTUJIyB2cGFsaWducglc JDE1LAkleG1tOCwJJXhtbTgsCSV4bW04Ci0rCXZ4b3IJdjcsIHY3LCB2MQkJIyB2cHhvcgkJJXht bTEsCSV4bW03LAkleG1tNwotKwotKwkjIHJvdGF0ZQotKwk/dnNwbHR3CXYwLCB2MCwgMwkJIyB2 cHNodWZkCVwkMHhGRiwJJXhtbTAsCSV4bW0wCi0rCT92c2xkb2kJdjAsIHYwLCB2MCwgMQkJIyB2 cGFsaWducglcJDEsCSV4bW0wLAkleG1tMCwJJXhtbTAKLSsKLSsJIyBmYWxsIHRocm91Z2guLi4K LSsKLSsJIyBsb3cgcm91bmQ6IHNhbWUgYXMgaGlnaCByb3VuZCwgYnV0IG5vIHJvdGF0aW9uIGFu ZCBubyByY29uLgotK192cGFlc19zY2hlZHVsZV9sb3dfcm91bmQ6Ci0rCSMgc21lYXIgeG1tNwot Kwk/dnNsZG9pCXYxLCB2OSwgdjcsIDEyCQkjIHZwc2xsZHEJXCQ0LAkleG1tNywJJXhtbTEKLSsJ dnhvcgl2NywgdjcsIHYxCQkjIHZweG9yCQkleG1tMSwJJXhtbTcsCSV4bW03Ci0rCXZzcGx0aXNi CXYxLCAweDBmCSMgMHgwZi4uMGYKLSsJP3ZzbGRvaQl2NCwgdjksIHY3LCA4CQkjIHZwc2xsZHEJ XCQ4LAkleG1tNywJJXhtbTQKLSsKLSsJIyBzdWJieXRlcwotKwl2YW5kCXYxLCB2MSwgdjAJCSMg dnBhbmQJCSV4bW05LAkleG1tMCwJJXhtbTEJCSMgMCA9IGsKLSsJdnNyYgl2MCwgdjAsIHY4CQkj IHZwc3JsYglcJDQsCSV4bW0wLAkleG1tMAkJIyAxID0gaQotKwkgdnhvcgl2NywgdjcsIHY0CQkj IHZweG9yCQkleG1tNCwJJXhtbTcsCSV4bW03Ci0rCXZwZXJtCXYyLCAkaW52aGksIHY5LCB2MQkj IHZwc2h1ZmIJJXhtbTEsCSV4bW0xMSwJJXhtbTIJCSMgMiA9IGEvawotKwl2eG9yCXYxLCB2MSwg djAJCSMgdnB4b3IJCSV4bW0wLAkleG1tMSwJJXhtbTEJCSMgMCA9IGoKLSsJdnBlcm0JdjMsICRp bnZsbywgdjksIHYwCSMgdnBzaHVmYgkleG1tMCwgCSV4bW0xMCwJJXhtbTMJCSMgMyA9IDEvaQot Kwl2eG9yCXYzLCB2MywgdjIJCSMgdnB4b3IJCSV4bW0yLAkleG1tMywJJXhtbTMJCSMgMyA9IGlh ayA9IDEvaSArIGEvawotKwl2cGVybQl2NCwgJGludmxvLCB2OSwgdjEJIyB2cHNodWZiCSV4bW0x LAkleG1tMTAsCSV4bW00CQkjIDQgPSAxL2oKLSsJIHZ4b3IJdjcsIHY3LCB2MjYJCSMgdnB4b3IJ CS5Ma19zNjMoJXJpcCksCSV4bW03LAkleG1tNwotKwl2cGVybQl2MywgJGludmxvLCB2OSwgdjMJ IyB2cHNodWZiCSV4bW0zLAkleG1tMTAsCSV4bW0zCQkjIDIgPSAxL2lhawotKwl2eG9yCXY0LCB2 NCwgdjIJCSMgdnB4b3IJCSV4bW0yLAkleG1tNCwJJXhtbTQJCSMgNCA9IGphayA9IDEvaiArIGEv awotKwl2cGVybQl2MiwgJGludmxvLCB2OSwgdjQJIyB2cHNodWZiCSV4bW00LAkleG1tMTAsCSV4 bW0yCQkjIDMgPSAxL2phawotKwl2eG9yCXYzLCB2MywgdjEJCSMgdnB4b3IJCSV4bW0xLAkleG1t MywJJXhtbTMJCSMgMiA9IGlvCi0rCXZ4b3IJdjIsIHYyLCB2MAkJIyB2cHhvcgkJJXhtbTAsCSV4 bW0yLAkleG1tMgkJIyAzID0gam8KLSsJdnBlcm0JdjQsIHYxNSwgdjksIHYzCQkjIHZwc2h1ZmIJ JXhtbTMsCSV4bW0xMywJJXhtbTQJCSMgNCA9IHNib3UKLSsJdnBlcm0JdjEsIHYxNCwgdjksIHYy CQkjIHZwc2h1ZmIJJXhtbTIsCSV4bW0xMiwJJXhtbTEJCSMgMCA9IHNiMXQKLSsJdnhvcgl2MSwg djEsIHY0CQkjIHZweG9yCQkleG1tNCwJJXhtbTEsCSV4bW0xCQkjIDAgPSBzYm94IG91dHB1dAot KwotKwkjIGFkZCBpbiBzbWVhcmVkIHN0dWZmCi0rCXZ4b3IJdjAsIHYxLCB2NwkJIyB2cHhvcgkJ JXhtbTcsCSV4bW0xLAkleG1tMAotKwl2eG9yCXY3LCB2MSwgdjcJCSMgdm1vdmRxYQkleG1tMCwJ JXhtbTcKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDAsMAotKwot KyMjCi0rIyMgIC5hZXNfc2NoZWR1bGVfdHJhbnNmb3JtCi0rIyMKLSsjIyAgTGluZWFyLXRyYW5z Zm9ybSAleG1tMCBhY2NvcmRpbmcgdG8gdGFibGVzIGF0ICglcjExKQotKyMjCi0rIyMgIFJlcXVp cmVzIHRoYXQgJXhtbTkgPSAweDBGMEYuLi4gYXMgaW4gcHJlaGVhdAotKyMjICBPdXRwdXQgaW4g JXhtbTAKLSsjIyAgQ2xvYmJlcnMgJXhtbTIKLSsjIwotKy5hbGlnbgk0Ci0rX3ZwYWVzX3NjaGVk dWxlX3RyYW5zZm9ybToKLSsJI3ZhbmQJdjEsIHYwLCB2OQkJIyB2cGFuZAkJJXhtbTksCSV4bW0w LAkleG1tMQotKwl2c3JiCXYyLCB2MCwgdjgJCSMgdnBzcmxiCVwkNCwJJXhtbTAsCSV4bW0wCi0r CQkJCQkjIHZtb3ZkcWEJKCVyMTEpLAkleG1tMiAJIyBsbwotKwl2cGVybQl2MCwgJGlwdGxvLCAk aXB0bG8sIHYwCSMgdnBzaHVmYgkleG1tMSwJJXhtbTIsCSV4bW0yCi0rCQkJCQkjIHZtb3ZkcWEJ MTYoJXIxMSksCSV4bW0xICMgaGkKLSsJdnBlcm0JdjIsICRpcHRoaSwgJGlwdGhpLCB2MgkjIHZw c2h1ZmIJJXhtbTAsCSV4bW0xLAkleG1tMAotKwl2eG9yCXYwLCB2MCwgdjIJCSMgdnB4b3IJCSV4 bW0yLAkleG1tMCwJJXhtbTAKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiwweDE0LDAs MCwwLDAsMAotKwotKyMjCi0rIyMgIC5hZXNfc2NoZWR1bGVfbWFuZ2xlCi0rIyMKLSsjIyAgTWFu Z2xlIHhtbTAgZnJvbSAoYmFzaXMtdHJhbnNmb3JtZWQpIHN0YW5kYXJkIHZlcnNpb24KLSsjIyAg dG8gb3VyIHZlcnNpb24uCi0rIyMKLSsjIyAgT24gZW5jcnlwdCwKLSsjIyAgICB4b3Igd2l0aCAw eDYzCi0rIyMgICAgbXVsdGlwbHkgYnkgY2lyY3VsYW50IDAsMSwxLDEKLSsjIyAgICBhcHBseSBz aGlmdHJvd3MgdHJhbnNmb3JtCi0rIyMKLSsjIyAgT24gZGVjcnlwdCwKLSsjIyAgICB4b3Igd2l0 aCAweDYzCi0rIyMgICAgbXVsdGlwbHkgYnkgImludmVyc2UgbWl4Y29sdW1ucyIgY2lyY3VsYW50 IEUsQixELDkKLSsjIyAgICBkZXNrZXcKLSsjIyAgICBhcHBseSBzaGlmdHJvd3MgdHJhbnNmb3Jt Ci0rIyMKLSsjIwotKyMjICBXcml0ZXMgb3V0IHRvICglcmR4KSwgYW5kIGluY3JlbWVudHMgb3Ig ZGVjcmVtZW50cyBpdAotKyMjICBLZWVwcyB0cmFjayBvZiByb3VuZCBudW1iZXIgbW9kIDQgaW4g JXI4Ci0rIyMgIFByZXNlcnZlcyB4bW0wCi0rIyMgIENsb2JiZXJzIHhtbTEteG1tNQotKyMjCi0r LmFsaWduCTQKLStfdnBhZXNfc2NoZWR1bGVfbWFuZ2xlOgotKwkjdm1yCXY0LCB2MAkJCSMgdm1v dmRxYQkleG1tMCwJJXhtbTQJIyBzYXZlIHhtbTAgZm9yIGxhdGVyCi0rCQkJCQkjIHZtb3ZkcWEJ LkxrX21jX2ZvcndhcmQoJXJpcCksJXhtbTUKLSsJYm5lCSRkaXIsIExzY2hlZHVsZV9tYW5nbGVf ZGVjCi0rCi0rCSMgZW5jcnlwdGluZwotKwl2eG9yCXY0LCB2MCwgdjI2CQkjIHZweG9yCS5Ma19z NjMoJXJpcCksCSV4bW0wLAkleG1tNAotKwlhZGRpCSRvdXQsICRvdXQsIDE2CQkjIGFkZAlcJDE2 LAklcmR4Ci0rCXZwZXJtCXY0LCB2NCwgdjQsIHYyNQkJIyB2cHNodWZiCSV4bW01LAkleG1tNCwJ JXhtbTQKLSsJdnBlcm0JdjEsIHY0LCB2NCwgdjI1CQkjIHZwc2h1ZmIJJXhtbTUsCSV4bW00LAkl eG1tMQotKwl2cGVybQl2MywgdjEsIHYxLCB2MjUJCSMgdnBzaHVmYgkleG1tNSwJJXhtbTEsCSV4 bW0zCi0rCXZ4b3IJdjQsIHY0LCB2MQkJIyB2cHhvcgkJJXhtbTEsCSV4bW00LAkleG1tNAotKwls dngJdjEsIHI4LCByMTAJCSMgdm1vdmRxYQkoJXI4LCVyMTApLAkleG1tMQotKwl2eG9yCXYzLCB2 MywgdjQJCSMgdnB4b3IJCSV4bW00LAkleG1tMywJJXhtbTMKLSsKLSsJdnBlcm0JdjMsIHYzLCB2 MywgdjEJCSMgdnBzaHVmYgkleG1tMSwJJXhtbTMsCSV4bW0zCi0rCWFkZGkJcjgsIHI4LCAtMTYJ CSMgYWRkCVwkLTE2LAklcjgKLSsJYW5kaS4JcjgsIHI4LCAweDMwCQkjIGFuZAlcJDB4MzAsCSVy OAotKwotKwkjc3R2eAl2MywgMCwgJG91dAkJIyB2bW92ZHF1CSV4bW0zLAkoJXJkeCkKLSsJdnBl cm0JdjEsIHYzLCB2MywgJG91dHBlcm0JIyByb3RhdGUgcmlnaHQvbGVmdAotKwl2c2VsCXYyLCAk b3V0aGVhZCwgdjEsICRvdXRtYXNrCi0rCXZtcgkkb3V0aGVhZCwgdjEKLSsJc3R2eAl2MiwgMCwg JG91dAotKwlibHIKLSsKLSsuYWxpZ24JNAotK0xzY2hlZHVsZV9tYW5nbGVfZGVjOgotKwkjIGlu dmVyc2UgbWl4IGNvbHVtbnMKLSsJCQkJCSMgbGVhCS5Ma19ka3NkKCVyaXApLCVyMTEKLSsJdnNy Ygl2MSwgdjAsIHY4CQkjIHZwc3JsYglcJDQsCSV4bW00LAkleG1tMQkjIDEgPSBoaQotKwkjYW5k CXY0LCB2MCwgdjkJCSMgdnBhbmQJCSV4bW05LAkleG1tNCwJJXhtbTQJIyA0ID0gbG8KLSsKLSsJ CQkJCSMgdm1vdmRxYQkweDAwKCVyMTEpLAkleG1tMgotKwl2cGVybQl2MiwgdjE2LCB2MTYsIHYw CSMgdnBzaHVmYgkleG1tNCwJJXhtbTIsCSV4bW0yCi0rCQkJCQkjIHZtb3ZkcWEJMHgxMCglcjEx KSwJJXhtbTMKLSsJdnBlcm0JdjMsIHYxNywgdjE3LCB2MQkjIHZwc2h1ZmIJJXhtbTEsCSV4bW0z LAkleG1tMwotKwl2eG9yCXYzLCB2MywgdjIJCSMgdnB4b3IJCSV4bW0yLAkleG1tMywJJXhtbTMK LSsJdnBlcm0JdjMsIHYzLCB2OSwgdjI1CQkjIHZwc2h1ZmIJJXhtbTUsCSV4bW0zLAkleG1tMwot KwotKwkJCQkJIyB2bW92ZHFhCTB4MjAoJXIxMSksCSV4bW0yCi0rCXZwZXJtCXYyLCB2MTgsIHYx OCwgdjAJIyB2cHNodWZiCSV4bW00LAkleG1tMiwJJXhtbTIKLSsJdnhvcgl2MiwgdjIsIHYzCQkj IHZweG9yCQkleG1tMywJJXhtbTIsCSV4bW0yCi0rCQkJCQkjIHZtb3ZkcWEJMHgzMCglcjExKSwJ JXhtbTMKLSsJdnBlcm0JdjMsIHYxOSwgdjE5LCB2MQkjIHZwc2h1ZmIJJXhtbTEsCSV4bW0zLAkl eG1tMwotKwl2eG9yCXYzLCB2MywgdjIJCSMgdnB4b3IJCSV4bW0yLAkleG1tMywJJXhtbTMKLSsJ dnBlcm0JdjMsIHYzLCB2OSwgdjI1CQkjIHZwc2h1ZmIJJXhtbTUsCSV4bW0zLAkleG1tMwotKwot KwkJCQkJIyB2bW92ZHFhCTB4NDAoJXIxMSksCSV4bW0yCi0rCXZwZXJtCXYyLCB2MjAsIHYyMCwg djAJIyB2cHNodWZiCSV4bW00LAkleG1tMiwJJXhtbTIKLSsJdnhvcgl2MiwgdjIsIHYzCQkjIHZw eG9yCQkleG1tMywJJXhtbTIsCSV4bW0yCi0rCQkJCQkjIHZtb3ZkcWEJMHg1MCglcjExKSwJJXht bTMKLSsJdnBlcm0JdjMsIHYyMSwgdjIxLCB2MQkjIHZwc2h1ZmIJJXhtbTEsCSV4bW0zLAkleG1t MwotKwl2eG9yCXYzLCB2MywgdjIJCSMgdnB4b3IJCSV4bW0yLAkleG1tMywJJXhtbTMKLSsKLSsJ CQkJCSMgdm1vdmRxYQkweDYwKCVyMTEpLAkleG1tMgotKwl2cGVybQl2MiwgdjIyLCB2MjIsIHYw CSMgdnBzaHVmYgkleG1tNCwJJXhtbTIsCSV4bW0yCi0rCXZwZXJtCXYzLCB2MywgdjksIHYyNQkJ IyB2cHNodWZiCSV4bW01LAkleG1tMywJJXhtbTMKLSsJCQkJCSMgdm1vdmRxYQkweDcwKCVyMTEp LAkleG1tNAotKwl2cGVybQl2NCwgdjIzLCB2MjMsIHYxCSMgdnBzaHVmYgkleG1tMSwJJXhtbTQs CSV4bW00Ci0rCWx2eAl2MSwgcjgsIHIxMAkJIyB2bW92ZHFhCSglcjgsJXIxMCksCSV4bW0xCi0r CXZ4b3IJdjIsIHYyLCB2MwkJIyB2cHhvcgkJJXhtbTMsCSV4bW0yLAkleG1tMgotKwl2eG9yCXYz LCB2NCwgdjIJCSMgdnB4b3IJCSV4bW0yLAkleG1tNCwJJXhtbTMKLSsKLSsJYWRkaQkkb3V0LCAk b3V0LCAtMTYJCSMgYWRkCVwkLTE2LAklcmR4Ci0rCi0rCXZwZXJtCXYzLCB2MywgdjMsIHYxCQkj IHZwc2h1ZmIJJXhtbTEsCSV4bW0zLAkleG1tMwotKwlhZGRpCXI4LCByOCwgLTE2CQkjIGFkZAlc JC0xNiwJJXI4Ci0rCWFuZGkuCXI4LCByOCwgMHgzMAkJIyBhbmQJXCQweDMwLAklcjgKLSsKLSsJ I3N0dngJdjMsIDAsICRvdXQJCSMgdm1vdmRxdQkleG1tMywJKCVyZHgpCi0rCXZwZXJtCXYxLCB2 MywgdjMsICRvdXRwZXJtCSMgcm90YXRlIHJpZ2h0L2xlZnQKLSsJdnNlbAl2MiwgJG91dGhlYWQs IHYxLCAkb3V0bWFzawotKwl2bXIJJG91dGhlYWQsIHYxCi0rCXN0dngJdjIsIDAsICRvdXQKLSsJ YmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDAsMAotKwotKy5nbG9ibAku dnBhZXNfc2V0X2VuY3J5cHRfa2V5Ci0rLmFsaWduCTUKLSsudnBhZXNfc2V0X2VuY3J5cHRfa2V5 OgotKwkkU1RVCSRzcCwtJEZSQU1FKCRzcCkKLSsJbGkJcjEwLGAxNSs2KiRTSVpFX1RgCi0rCWxp CXIxMSxgMzErNiokU0laRV9UYAotKwltZmxyCXIwCi0rCW1mc3ByCXI2LCAyNTYJCQkjIHNhdmUg dnJzYXZlCi0rCXN0dngJdjIwLHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCXN0dngJdjIx LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCXN0dngJdjIyLHIxMCwkc3AKLSsJYWRkaQly MTAscjEwLDMyCi0rCXN0dngJdjIzLHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCXN0dngJ djI0LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCXN0dngJdjI1LHIxMSwkc3AKLSsJYWRk aQlyMTEscjExLDMyCi0rCXN0dngJdjI2LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCXN0 dngJdjI3LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCXN0dngJdjI4LHIxMCwkc3AKLSsJ YWRkaQlyMTAscjEwLDMyCi0rCXN0dngJdjI5LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0r CXN0dngJdjMwLHIxMCwkc3AKLSsJc3R2eAl2MzEscjExLCRzcAotKwlzdHcJcjYsYCRGUkFNRS00 YCgkc3ApCSMgc2F2ZSB2cnNhdmUKLSsJbGkJcjcsIC0xCi0rCSRQVVNICXIwLCBgJEZSQU1FKyRM UlNBVkVgKCRzcCkKLSsJbXRzcHIJMjU2LCByNwkJCSMgcHJlc2VydmUgYWxsIEFsdGlWZWMgcmVn aXN0ZXJzCi0rCi0rCXNyd2kJcjksICRiaXRzLCA1CQkjIHNocglcJDUsJWVheAotKwlhZGRpCXI5 LCByOSwgNgkJIyBhZGQJXCQ1LCVlYXgKLSsJc3R3CXI5LCAyNDAoJG91dCkJCSMgbW92CSVlYXgs MjQwKCVyZHgpCSMgQUVTX0tFWS0+cm91bmRzID0gbmJpdHMvMzIrNTsKLSsKLSsJY21wbHcJJGRp ciwgJGJpdHMsICRiaXRzCSMgc2V0IGVuY3J5cHQgZGlyZWN0aW9uCi0rCWxpCXI4LCAweDMwCQkj IG1vdglcJDB4MzAsJXI4ZAotKwlibAlfdnBhZXNfc2NoZWR1bGVfY29yZQotKwotKwkkUE9QCXIw LCBgJEZSQU1FKyRMUlNBVkVgKCRzcCkKLSsJbGkJcjEwLGAxNSs2KiRTSVpFX1RgCi0rCWxpCXIx MSxgMzErNiokU0laRV9UYAotKwltdHNwcgkyNTYsIHI2CQkJIyByZXN0b3JlIHZyc2F2ZQotKwlt dGxyCXIwCi0rCXhvcglyMywgcjMsIHIzCi0rCWx2eAl2MjAscjEwLCRzcAotKwlhZGRpCXIxMCxy MTAsMzIKLSsJbHZ4CXYyMSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjIyLHIx MCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjMscjExLCRzcAotKwlhZGRpCXIxMSxy MTEsMzIKLSsJbHZ4CXYyNCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlsdngJdjI1LHIx MSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjYscjEwLCRzcAotKwlhZGRpCXIxMCxy MTAsMzIKLSsJbHZ4CXYyNyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjI4LHIx MCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjkscjExLCRzcAotKwlhZGRpCXIxMSxy MTEsMzIKLSsJbHZ4CXYzMCxyMTAsJHNwCi0rCWx2eAl2MzEscjExLCRzcAotKwlhZGRpCSRzcCwk c3AsJEZSQU1FCi0rCWJscgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgwNCwxLDB4ODAsMCwz LDAKLSsJLmxvbmcJMAotKy5zaXplCS52cGFlc19zZXRfZW5jcnlwdF9rZXksLi0udnBhZXNfc2V0 X2VuY3J5cHRfa2V5Ci0rCi0rLmdsb2JsCS52cGFlc19zZXRfZGVjcnlwdF9rZXkKLSsuYWxpZ24J NAotKy52cGFlc19zZXRfZGVjcnlwdF9rZXk6Ci0rCSRTVFUJJHNwLC0kRlJBTUUoJHNwKQotKwls aQlyMTAsYDE1KzYqJFNJWkVfVGAKLSsJbGkJcjExLGAzMSs2KiRTSVpFX1RgCi0rCW1mbHIJcjAK LSsJbWZzcHIJcjYsIDI1NgkJCSMgc2F2ZSB2cnNhdmUKLSsJc3R2eAl2MjAscjEwLCRzcAotKwlh ZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjEscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJ c3R2eAl2MjIscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjMscjExLCRzcAot KwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjQscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIK LSsJc3R2eAl2MjUscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjYscjEwLCRz cAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjcscjExLCRzcAotKwlhZGRpCXIxMSxyMTEs MzIKLSsJc3R2eAl2MjgscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjkscjEx LCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MzAscjEwLCRzcAotKwlzdHZ4CXYzMSxy MTEsJHNwCi0rCXN0dwlyNixgJEZSQU1FLTRgKCRzcCkJIyBzYXZlIHZyc2F2ZQotKwlsaQlyNywg LTEKLSsJJFBVU0gJcjAsIGAkRlJBTUUrJExSU0FWRWAoJHNwKQotKwltdHNwcgkyNTYsIHI3CQkJ IyBwcmVzZXJ2ZSBhbGwgQWx0aVZlYyByZWdpc3RlcnMKLSsKLSsJc3J3aQlyOSwgJGJpdHMsIDUJ CSMgc2hyCVwkNSwlZWF4Ci0rCWFkZGkJcjksIHI5LCA2CQkjIGFkZAlcJDUsJWVheAotKwlzdHcJ cjksIDI0MCgkb3V0KQkJIyBtb3YJJWVheCwyNDAoJXJkeCkJIyBBRVNfS0VZLT5yb3VuZHMgPSBu Yml0cy8zMis1OwotKwotKwlzbHdpCXI5LCByOSwgNAkJIyBzaGwJXCQ0LCVlYXgKLSsJYWRkCSRv dXQsICRvdXQsIHI5CQkjIGxlYQkoJXJkeCwlcmF4KSwlcmR4Ci0rCi0rCWNtcGx3aQkkZGlyLCAk Yml0cywgMAkJIyBzZXQgZGVjcnlwdCBkaXJlY3Rpb24KLSsJc3J3aQlyOCwgJGJpdHMsIDEJCSMg c2hyCVwkMSwlcjhkCi0rCWFuZGkuCXI4LCByOCwgMzIJCSMgYW5kCVwkMzIsJXI4ZAotKwl4b3Jp CXI4LCByOCwgMzIJCSMgeG9yCVwkMzIsJXI4ZAkjIG5iaXRzPT0xOTI/MDozMgotKwlibAlfdnBh ZXNfc2NoZWR1bGVfY29yZQotKwotKwkkUE9QCXIwLCAgYCRGUkFNRSskTFJTQVZFYCgkc3ApCi0r CWxpCXIxMCxgMTUrNiokU0laRV9UYAotKwlsaQlyMTEsYDMxKzYqJFNJWkVfVGAKLSsJbXRzcHIJ MjU2LCByNgkJCSMgcmVzdG9yZSB2cnNhdmUKLSsJbXRscglyMAotKwl4b3IJcjMsIHIzLCByMwot KwlsdngJdjIwLHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjEscjExLCRzcAot KwlhZGRpCXIxMSxyMTEsMzIKLSsJbHZ4CXYyMixyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgot KwlsdngJdjIzLHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjQscjEwLCRzcAot KwlhZGRpCXIxMCxyMTAsMzIKLSsJbHZ4CXYyNSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgot KwlsdngJdjI2LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjcscjExLCRzcAot KwlhZGRpCXIxMSxyMTEsMzIKLSsJbHZ4CXYyOCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgot KwlsdngJdjI5LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MzAscjEwLCRzcAot KwlsdngJdjMxLHIxMSwkc3AKLSsJYWRkaQkkc3AsJHNwLCRGUkFNRQotKwlibHIKLSsJLmxvbmcJ MAotKwkuYnl0ZQkwLDEyLDB4MDQsMSwweDgwLDAsMywwCi0rCS5sb25nCTAKLSsuc2l6ZQkudnBh ZXNfc2V0X2RlY3J5cHRfa2V5LC4tLnZwYWVzX3NldF9kZWNyeXB0X2tleQotK19fXwotK30KLSsK LStteSAkY29uc3RzPTE7Ci0rZm9yZWFjaCAgKHNwbGl0KCJcbiIsJGNvZGUpKSB7Ci0rCXMvXGAo W15cYF0qKVxgL2V2YWwgJDEvZ2VvOwotKwotKwkjIGNvbnN0YW50cyB0YWJsZSBlbmRpYW4tc3Bl Y2lmaWMgY29udmVyc2lvbgotKwlpZiAoJGNvbnN0cyAmJiBtL1wubG9uZ1xzKyguKylccysoXD9b YS16XSopJC9vKSB7Ci0rCSAgICBteSAkY29udj0kMjsKLSsJICAgIG15IEBieXRlcz0oKTsKLSsK LSsJICAgICMgY29udmVydCB0byBlbmRpYW4tYWdub3N0aWMgZm9ybWF0Ci0rCSAgICBmb3JlYWNo IChzcGxpdCgvLFxzKy8sJDEpKSB7Ci0rCQlteSAkbCA9IC9eMC8/b2N0OmludDsKLSsJCXB1c2gg QGJ5dGVzLCgkbD4+MjQpJjB4ZmYsKCRsPj4xNikmMHhmZiwoJGw+PjgpJjB4ZmYsJGwmMHhmZjsK LSsJICAgIH0KLSsKLSsJICAgICMgbGl0dGxlLWVuZGlhbiBjb252ZXJzaW9uCi0rCSAgICBpZiAo JGZsYXZvdXIgPX4gL2xlJC9vKSB7Ci0rCQlTV0lUQ0g6IGZvcigkY29udikgIHsKLSsJCSAgICAv XD9pbnYvICYmIGRvICAgeyBAYnl0ZXM9bWFwKCRfXjB4ZixAYnl0ZXMpOyBsYXN0OyB9OwotKwkJ ICAgIC9cP3Jldi8gJiYgZG8gICB7IEBieXRlcz1yZXZlcnNlKEBieXRlcyk7ICAgIGxhc3Q7IH07 IAotKwkJfQotKwkgICAgfQotKwotKwkgICAgI2VtaXQKLSsJICAgIHByaW50ICIuYnl0ZVx0Iixq b2luKCcsJyxtYXAgKHNwcmludGYoIjB4JTAyeCIsJF8pLEBieXRlcykpLCJcbiI7Ci0rCSAgICBu ZXh0OwotKwl9Ci0rCSRjb25zdHM9MCBpZiAobS9MY29uc3RzOi9vKTsJIyBlbmQgb2YgdGFibGUK LSsKLSsJIyBpbnN0cnVjdGlvbnMgcHJlZml4ZWQgd2l0aCAnPycgYXJlIGVuZGlhbi1zcGVjaWZp YyBhbmQgbmVlZAotKwkjIHRvIGJlIGFkanVzdGVkIGFjY29yZGluZ2x5Li4uCi0rCWlmICgkZmxh dm91ciA9fiAvbGUkL28pIHsJIyBsaXR0bGUtZW5kaWFuCi0rCSAgICBzL1w/bHZzci9sdnNsL28g b3IKLSsJICAgIHMvXD9sdnNsL2x2c3IvbyBvcgotKwkgICAgcy9cPyh2cGVybVxzK3ZbMC05XSss XHMqKSh2WzAtOV0rLFxzKikodlswLTldKyxccyopKHZbMC05XSspLyQxJDMkMiQ0L28gb3IKLSsJ ICAgIHMvXD8odnNsZG9pXHMrdlswLTldKyxccyopKHZbMC05XSssKVxzKih2WzAtOV0rLFxzKiko WzAtOV0rKS8kMSQzJDIgMTYtJDQvbyBvcgotKwkgICAgcy9cPyh2c3BsdHdccyt2WzAtOV0rLFxz KikodlswLTldKywpXHMqKFswLTldKS8kMSQyIDMtJDMvbzsKLSsJfSBlbHNlIHsJCQkjIGJpZy1l bmRpYW4KLSsJICAgIHMvXD8oW2Etel0rKS8kMS9vOwotKwl9Ci0rCi0rCXByaW50ICRfLCJcbiI7 Ci0rfQotKwotK2Nsb3NlIFNURE9VVDsKLWRpZmYgLS1naXQgYS9jcnlwdG8vYm4vYXNtL3BwYy1t b250LnBsIGIvY3J5cHRvL2JuL2FzbS9wcGMtbW9udC5wbAotaW5kZXggZjliNjk5Mi4uZGE2OWM2 YSAxMDA2NDQKLS0tLSBhL2NyeXB0by9ibi9hc20vcHBjLW1vbnQucGwKLSsrKyBiL2NyeXB0by9i bi9hc20vcHBjLW1vbnQucGwKLUBAIC0zMjUsNiArMzI1LDcgQEAgTGNvcHk6CQkJCTsgY29weSBv ciBpbi1wbGFjZSByZWZyZXNoCi0gCS5sb25nCTAKLSAJLmJ5dGUJMCwxMiw0LDAsMHg4MCwxMiw2 LDAKLSAJLmxvbmcJMAotKy5zaXplCS5ibl9tdWxfbW9udF9pbnQsLi0uYm5fbXVsX21vbnRfaW50 Ci0gCi0gLmFzY2l6ICAiTW9udGdvbWVyeSBNdWx0aXBsaWNhdGlvbiBmb3IgUFBDLCBDUllQVE9H QU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgotIF9fXwotZGlmZiAtLWdpdCBhL2NyeXB0by9i bi9hc20vcHBjLnBsIGIvY3J5cHRvL2JuL2FzbS9wcGMucGwKLWluZGV4IDEyNDljZTIuLjA0ZGYx ZmUgMTAwNjQ0Ci0tLS0gYS9jcnlwdG8vYm4vYXNtL3BwYy5wbAotKysrIGIvY3J5cHRvL2JuL2Fz bS9wcGMucGwKLUBAIC0zOTIsNiArMzkyLDcgQEAgJGRhdGE9PDxFT0Y7Ci0gCS5sb25nCTAKLSAJ LmJ5dGUJMCwxMiwweDE0LDAsMCwwLDIsMAotIAkubG9uZwkwCi0rLnNpemUJLmJuX3Nxcl9jb21i YTQsLi0uYm5fc3FyX2NvbWJhNAotIAotICMKLSAjCU5PVEU6CVRoZSBmb2xsb3dpbmcgbGFiZWwg bmFtZSBzaG91bGQgYmUgY2hhbmdlZCB0bwotQEAgLTgxOSw2ICs4MjAsNyBAQCAkZGF0YT08PEVP RjsKLSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMiwwCi0gCS5sb25nCTAKLSsu c2l6ZQkuYm5fc3FyX2NvbWJhOCwuLS5ibl9zcXJfY29tYmE4Ci0gCi0gIwotICMJTk9URToJVGhl IGZvbGxvd2luZyBsYWJlbCBuYW1lIHNob3VsZCBiZSBjaGFuZ2VkIHRvCi1AQCAtOTcyLDYgKzk3 NCw3IEBAICRkYXRhPTw8RU9GOwotIAkubG9uZwkwCi0gCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwz LDAKLSAJLmxvbmcJMAotKy5zaXplCS5ibl9tdWxfY29tYmE0LC4tLmJuX211bF9jb21iYTQKLSAK LSAjCi0gIwlOT1RFOglUaGUgZm9sbG93aW5nIGxhYmVsIG5hbWUgc2hvdWxkIGJlIGNoYW5nZWQg dG8KLUBAIC0xNTEwLDYgKzE1MTMsNyBAQCAkZGF0YT08PEVPRjsKLSAJLmxvbmcJMAotIAkuYnl0 ZQkwLDEyLDB4MTQsMCwwLDAsMywwCi0gCS5sb25nCTAKLSsuc2l6ZQkuYm5fbXVsX2NvbWJhOCwu LS5ibl9tdWxfY29tYmE4Ci0gCi0gIwotICMJTk9URToJVGhlIGZvbGxvd2luZyBsYWJlbCBuYW1l IHNob3VsZCBiZSBjaGFuZ2VkIHRvCi1AQCAtMTU2MCw2ICsxNTY0LDcgQEAgTHBwY2FzbV9zdWJf YWRpb3M6Ci0gCS5sb25nCTAKLSAJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDQsMAotIAkubG9uZwkw Ci0rLnNpemUJLmJuX3N1Yl93b3JkcywuLS5ibl9zdWJfd29yZHMKLSAKLSAjCi0gIwlOT1RFOglU aGUgZm9sbG93aW5nIGxhYmVsIG5hbWUgc2hvdWxkIGJlIGNoYW5nZWQgdG8KLUBAIC0xNjA1LDYg KzE2MTAsNyBAQCBMcHBjYXNtX2FkZF9hZGlvczoKLSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEyLDB4 MTQsMCwwLDAsNCwwCi0gCS5sb25nCTAKLSsuc2l6ZQkuYm5fYWRkX3dvcmRzLC4tLmJuX2FkZF93 b3JkcwotIAotICMKLSAjCU5PVEU6CVRoZSBmb2xsb3dpbmcgbGFiZWwgbmFtZSBzaG91bGQgYmUg Y2hhbmdlZCB0bwotQEAgLTE3MjAsNiArMTcyNiw3IEBAIExwcGNhc21fZGl2OToKLSAJLmxvbmcJ MAotIAkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMywwCi0gCS5sb25nCTAKLSsuc2l6ZQkuYm5fZGl2 X3dvcmRzLC4tLmJuX2Rpdl93b3JkcwotIAotICMKLSAjCU5PVEU6CVRoZSBmb2xsb3dpbmcgbGFi ZWwgbmFtZSBzaG91bGQgYmUgY2hhbmdlZCB0bwotQEAgLTE3NjEsNiArMTc2OCw3IEBAIExwcGNh c21fc3FyX2FkaW9zOgotIAkubG9uZwkwCi0gCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwzLDAKLSAJ LmxvbmcJMAotKy5zaXplCS5ibl9zcXJfd29yZHMsLi0uYm5fc3FyX3dvcmRzCi0gCi0gIwotICMJ Tk9URToJVGhlIGZvbGxvd2luZyBsYWJlbCBuYW1lIHNob3VsZCBiZSBjaGFuZ2VkIHRvCi1AQCAt MTg2Niw2ICsxODc0LDcgQEAgTHBwY2FzbV9td19PVkVSOgotIAkubG9uZwkwCi0gCS5ieXRlCTAs MTIsMHgxNCwwLDAsMCw0LDAKLSAJLmxvbmcJMAotKy5zaXplCWJuX211bF93b3JkcywuLWJuX211 bF93b3JkcwotIAotICMKLSAjCU5PVEU6CVRoZSBmb2xsb3dpbmcgbGFiZWwgbmFtZSBzaG91bGQg YmUgY2hhbmdlZCB0bwotQEAgLTE5OTEsNiArMjAwMCw3IEBAIExwcGNhc21fbWF3X2FkaW9zOgot IAkubG9uZwkwCi0gCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCw0LDAKLSAJLmxvbmcJMAotKy5zaXpl CS5ibl9tdWxfYWRkX3dvcmRzLC4tLmJuX211bF9hZGRfd29yZHMKLSAJLmFsaWduCTQKLSBFT0YK LSAkZGF0YSA9fiBzL1xgKFteXGBdKilcYC9ldmFsICQxL2dlbTsKLWRpZmYgLS1naXQgYS9jcnlw dG8vYm4vYXNtL3BwYzY0LW1vbnQucGwgYi9jcnlwdG8vYm4vYXNtL3BwYzY0LW1vbnQucGwKLWlu ZGV4IGExNGU3NjkuLjY4ZTM3MzMgMTAwNjQ0Ci0tLS0gYS9jcnlwdG8vYm4vYXNtL3BwYzY0LW1v bnQucGwKLSsrKyBiL2NyeXB0by9ibi9hc20vcHBjNjQtbW9udC5wbAotQEAgLTEsNyArMSw3IEBA Ci0gIyEvdXNyL2Jpbi9lbnYgcGVybAotIAotICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0jIFdyaXR0ZW4gYnkg QW5keSBQb2x5YWtvdiA8YXBwcm9AZnkuY2hhbG1lcnMuc2U+IGZvciB0aGUgT3BlblNTTAotKyMg V3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BvcGVuc3NsLm9yZz4gZm9yIHRoZSBPcGVu U1NMCi0gIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVu ZGVyIE9wZW5TU0wgYW5kCi0gIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVy ZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgotICMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5v cGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCi1AQCAtNjUsNiArNjUsMTQgQEAKLSAjIG90 aGVycyBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byBicmVhayBkZXBlbmRlbmNlIG9uIHVwcGVyIGhh bHZlcyBvZgotICMgR1BScyBieSBzdGlja2luZyB0byAzMi1iaXQgaW50ZWdlciBvcGVyYXRpb25z Li4uCi0gCi0rIyBEZWNlbWJlciAyMDEyCi0rCi0rIyBSZW1vdmUgYWJvdmUgbWVudGlvbmVkIGRl cGVuZGVuY2Ugb24gR1BScycgdXBwZXIgaGFsdmVzIGluIDMyLWJpdAotKyMgYnVpbGQuIE5vIHNp Z25hbCBtYXNraW5nIG92ZXJoZWFkLCBidXQgaW50ZWdlciBpbnN0cnVjdGlvbnMgYXJlCi0rIyAq bW9yZSogbnVtZXJvdXMuLi4gSXQncyBzdGlsbCAidW5pdmVyc2FsbHkiIGZhc3RlciB0aGFuIDMy LWJpdAotKyMgcHBjLW1vbnQucGwsIGJ1dCBpbXByb3ZlbWVudCBjb2VmZmljaWVudCBpcyBub3Qg YXMgaW1wcmVzc2l2ZQotKyMgZm9yIGxvbmdlciBrZXlzLi4uCi0rCi0gJGZsYXZvdXIgPSBzaGlm dDsKLSAKLSBpZiAoJGZsYXZvdXIgPX4gLzMyLykgewotQEAgLTExMCw2ICsxMTgsOSBAQCAkdHA9 InIxMCI7Ci0gJGo9InIxMSI7Ci0gJGk9InIxMiI7Ci0gIyBub24tdm9sYXRpbGUgcmVnaXN0ZXJz Ci0rJGMxPSJyMTkiOwotKyRuMT0icjIwIjsKLSskYTE9InIyMSI7Ci0gJG5hcF9kPSJyMjIiOwkj IGludGVybGVhdmVkIGFwIGFuZCBucCBpbiBkb3VibGUgZm9ybWF0Ci0gJGEwPSJyMjMiOwkjIGFw WzBdCi0gJHQwPSJyMjQiOwkjIHRlbXBvcmFyeSByZWdpc3RlcnMKLUBAIC0xODAsOCArMTkxLDgg QEAgJFQzYT0iZjMwIjsJJFQzYj0iZjMxIjsKLSAjCQkuCQkJCS4KLSAjCQkrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAjCQkuCQkJCS4KLS0jICAgLTEyKnNpemVfdAkrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLS0jCQl8IDEwIHNhdmVkIGdwciwgcjIyLXIzMQkJ fAotKyMgICAtMTMqc2l6ZV90CSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyMJ CXwgMTMgc2F2ZWQgZ3ByLCByMTktcjMxCQl8Ci0gIwkJLgkJCQkuCi0gIwkJLgkJCQkuCi0gIyAg IC0xMio4CSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotQEAgLTIxNSw2ICsyMjYs OSBAQCAkY29kZT08PF9fXzsKLSAJbXIJJGksJHNwCi0gCSRTVFVYCSRzcCwkc3AsJHRwCTsgYWxs b2NhCi0gCi0rCSRQVVNICXIxOSxgLTEyKjgtMTMqJFNJWkVfVGAoJGkpCi0rCSRQVVNICXIyMCxg LTEyKjgtMTIqJFNJWkVfVGAoJGkpCi0rCSRQVVNICXIyMSxgLTEyKjgtMTEqJFNJWkVfVGAoJGkp Ci0gCSRQVVNICXIyMixgLTEyKjgtMTAqJFNJWkVfVGAoJGkpCi0gCSRQVVNICXIyMyxgLTEyKjgt OSokU0laRV9UYCgkaSkKLSAJJFBVU0gJcjI0LGAtMTIqOC04KiRTSVpFX1RgKCRpKQotQEAgLTIz Nyw0MCArMjUxLDI2IEBAICRjb2RlPTw8X19fOwotIAlzdGZkCWYyOSxgLTMqOGAoJGkpCi0gCXN0 ZmQJZjMwLGAtMio4YCgkaSkKLSAJc3RmZAlmMzEsYC0xKjhgKCRpKQotLV9fXwotLSRjb2RlLj08 PF9fXyBpZiAoJFNJWkVfVD09OCk7Ci0tCWxkCSRhMCwwKCRhcCkJOyBwdWxsIGFwWzBdIHZhbHVl Ci0tCWxkCSRuMCwwKCRuMCkJOyBwdWxsIG4wWzBdIHZhbHVlCi0tCWxkCSR0MywwKCRicCkJOyBi cFswXQotLV9fXwotLSRjb2RlLj08PF9fXyBpZiAoJFNJWkVfVD09NCk7Ci0tCW1yCSR0MSwkbjAK LS0JbHd6CSRhMCwwKCRhcCkJOyBwdWxsIGFwWzAsMV0gdmFsdWUKLS0JbHd6CSR0MCw0KCRhcCkK LS0JbHd6CSRuMCwwKCR0MSkJOyBwdWxsIG4wWzAsMV0gdmFsdWUKLS0JbHd6CSR0MSw0KCR0MSkK LS0JbHd6CSR0MywwKCRicCkJOyBicFswLDFdCi0tCWx3egkkdDIsNCgkYnApCi0tCWluc3JkaQkk YTAsJHQwLDMyLDAKLS0JaW5zcmRpCSRuMCwkdDEsMzIsMAotLQlpbnNyZGkJJHQzLCR0MiwzMiww Ci0tX19fCi0tJGNvZGUuPTw8X19fOwotKwotIAlhZGRpCSR0cCwkc3AsYCRGUkFNRSskVFJBTlNG RVIrOCs2NGAKLSAJbGkJJGksLTY0Ci0gCWFkZAkkbmFwX2QsJHRwLCRudW0KLSAJYW5kCSRuYXBf ZCwkbmFwX2QsJGkJOyBhbGlnbiB0byA2NCBieXRlcwotLQwKLS0JbXVsbGQJJHQ3LCRhMCwkdDMJ OyBhcFswXSpicFswXQotIAk7IG5hcF9kIGlzIG9mZiBieSAxLCBiZWNhdXNlIGl0J3MgdXNlZCB3 aXRoIHN0ZmR1L2xmZHUKLSAJYWRkaQkkbmFwX2QsJG5hcF9kLC04Ci0gCXNyd2kJJGosJG51bSxg MysxYAk7IGNvdW50ZXIgcmVnaXN0ZXIsIG51bS8yCi0tCW11bGxkCSR0NywkdDcsJG4wCTsgdHBb MF0qbjAKLSAJYWRkaQkkaiwkaiwtMQotIAlhZGRpCSR0cCwkc3AsYCRGUkFNRSskVFJBTlNGRVIt OGAKLSAJbGkJJGNhcnJ5LDAKLSAJbXRjdHIJJGoKLStfX18KLSsMCi0rJGNvZGUuPTw8X19fIGlm ICgkU0laRV9UPT04KTsKLSsJbGQJJGEwLDAoJGFwKQkJOyBwdWxsIGFwWzBdIHZhbHVlCi0rCWxk CSR0MywwKCRicCkJCTsgYnBbMF0KLSsJbGQJJG4wLDAoJG4wKQkJOyBwdWxsIG4wWzBdIHZhbHVl Ci0gCi0rCW11bGxkCSR0NywkYTAsJHQzCQk7IGFwWzBdKmJwWzBdCi0gCTsgdHJhbnNmZXIgYnBb MF0gdG8gRlBVIGFzIDR4MTYtYml0IHZhbHVlcwotIAlleHRyZGkJJHQwLCR0MywxNiw0OAotIAll eHRyZGkJJHQxLCR0MywxNiwzMgotQEAgLTI4MCw2ICsyODAsOCBAQCAkY29kZS49PDxfX187Ci0g CXN0ZAkkdDEsYCRGUkFNRSs4YCgkc3ApCi0gCXN0ZAkkdDIsYCRGUkFNRSsxNmAoJHNwKQotIAlz dGQJJHQzLGAkRlJBTUUrMjRgKCRzcCkKLSsKLSsJbXVsbGQJJHQ3LCR0NywkbjAJCTsgdHBbMF0q bjAKLSAJOyB0cmFuc2ZlciAoYXBbMF0qYnBbMF0pKm4wIHRvIEZQVSBhcyA0eDE2LWJpdCB2YWx1 ZXMKLSAJZXh0cmRpCSR0NCwkdDcsMTYsNDgKLSAJZXh0cmRpCSR0NSwkdDcsMTYsMzIKLUBAIC0y ODksMjEgKzI5MSw2MSBAQCAkY29kZS49PDxfX187Ci0gCXN0ZAkkdDUsYCRGUkFNRSs0MGAoJHNw KQotIAlzdGQJJHQ2LGAkRlJBTUUrNDhgKCRzcCkKLSAJc3RkCSR0NyxgJEZSQU1FKzU2YCgkc3Ap Ci0tX19fCi0tJGNvZGUuPTw8X19fIGlmICgkU0laRV9UPT04KTsKLS0JbHd6CSR0MCw0KCRhcCkJ CTsgbG9hZCBhW2pdIGFzIDMyLWJpdCB3b3JkIHBhaXIKLS0JbHd6CSR0MSwwKCRhcCkKLS0JbHd6 CSR0MiwxMigkYXApCQk7IGxvYWQgYVtqKzFdIGFzIDMyLWJpdCB3b3JkIHBhaXIKLSsKLSsJZXh0 cmRpCSR0MCwkYTAsMzIsMzIJCTsgbHd6CSR0MCw0KCRhcCkKLSsJZXh0cmRpCSR0MSwkYTAsMzIs MAkJOyBsd3oJJHQxLDAoJGFwKQotKwlsd3oJJHQyLDEyKCRhcCkJCTsgbG9hZCBhWzFdIGFzIDMy LWJpdCB3b3JkIHBhaXIKLSAJbHd6CSR0Myw4KCRhcCkKLS0JbHd6CSR0NCw0KCRucCkJCTsgbG9h ZCBuW2pdIGFzIDMyLWJpdCB3b3JkIHBhaXIKLSsJbHd6CSR0NCw0KCRucCkJCTsgbG9hZCBuWzBd IGFzIDMyLWJpdCB3b3JkIHBhaXIKLSAJbHd6CSR0NSwwKCRucCkKLS0JbHd6CSR0NiwxMigkbnAp CQk7IGxvYWQgbltqKzFdIGFzIDMyLWJpdCB3b3JkIHBhaXIKLSsJbHd6CSR0NiwxMigkbnApCQk7 IGxvYWQgblsxXSBhcyAzMi1iaXQgd29yZCBwYWlyCi0gCWx3egkkdDcsOCgkbnApCi0gX19fCi0g JGNvZGUuPTw8X19fIGlmICgkU0laRV9UPT00KTsKLS0JbHd6CSR0MCwwKCRhcCkJCTsgbG9hZCBh W2ouLmorM10gYXMgMzItYml0IHdvcmQgcGFpcnMKLS0JbHd6CSR0MSw0KCRhcCkKLS0JbHd6CSR0 Miw4KCRhcCkKLSsJbHd6CSRhMCwwKCRhcCkJCTsgcHVsbCBhcFswLDFdIHZhbHVlCi0rCW1yCSRu MSwkbjAKLSsJbHd6CSRhMSw0KCRhcCkKLSsJbGkJJGMxLDAKLSsJbHd6CSR0MSwwKCRicCkJCTsg YnBbMCwxXQotKwlsd3oJJHQzLDQoJGJwKQotKwlsd3oJJG4wLDAoJG4xKQkJOyBwdWxsIG4wWzAs MV0gdmFsdWUKLSsJbHd6CSRuMSw0KCRuMSkKLSsKLSsJbXVsbHcJJHQ0LCRhMCwkdDEJCTsgbXVs bGQgYXBbMF0qYnBbMF0KLSsJbXVsaHd1CSR0NSwkYTAsJHQxCi0rCW11bGx3CSR0NiwkYTEsJHQx Ci0rCW11bGx3CSR0NywkYTAsJHQzCi0rCWFkZAkkdDUsJHQ1LCR0NgotKwlhZGQJJHQ1LCR0NSwk dDcKLSsJOyB0cmFuc2ZlciBicFswXSB0byBGUFUgYXMgNHgxNi1iaXQgdmFsdWVzCi0rCWV4dHJ3 aQkkdDAsJHQxLDE2LDE2Ci0rCWV4dHJ3aQkkdDEsJHQxLDE2LDAKLSsJZXh0cndpCSR0MiwkdDMs MTYsMTYKLSsJZXh0cndpCSR0MywkdDMsMTYsMAotKwlzdGQJJHQwLGAkRlJBTUUrMGAoJHNwKQk7 IHllcywgc3RkIGluIDMyLWJpdCBidWlsZAotKwlzdGQJJHQxLGAkRlJBTUUrOGAoJHNwKQotKwlz dGQJJHQyLGAkRlJBTUUrMTZgKCRzcCkKLSsJc3RkCSR0MyxgJEZSQU1FKzI0YCgkc3ApCi0rCi0r CW11bGx3CSR0MCwkdDQsJG4wCQk7IG11bGxkIHRwWzBdKm4wCi0rCW11bGh3dQkkdDEsJHQ0LCRu MAotKwltdWxsdwkkdDIsJHQ1LCRuMAotKwltdWxsdwkkdDMsJHQ0LCRuMQotKwlhZGQJJHQxLCR0 MSwkdDIKLSsJYWRkCSR0MSwkdDEsJHQzCi0rCTsgdHJhbnNmZXIgKGFwWzBdKmJwWzBdKSpuMCB0 byBGUFUgYXMgNHgxNi1iaXQgdmFsdWVzCi0rCWV4dHJ3aQkkdDQsJHQwLDE2LDE2Ci0rCWV4dHJ3 aQkkdDUsJHQwLDE2LDAKLSsJZXh0cndpCSR0NiwkdDEsMTYsMTYKLSsJZXh0cndpCSR0NywkdDEs MTYsMAotKwlzdGQJJHQ0LGAkRlJBTUUrMzJgKCRzcCkJOyB5ZXMsIHN0ZCBpbiAzMi1iaXQgYnVp bGQKLSsJc3RkCSR0NSxgJEZSQU1FKzQwYCgkc3ApCi0rCXN0ZAkkdDYsYCRGUkFNRSs0OGAoJHNw KQotKwlzdGQJJHQ3LGAkRlJBTUUrNTZgKCRzcCkKLSsKLSsJbXIJJHQwLCRhMAkJCTsgbHd6CSR0 MCwwKCRhcCkKLSsJbXIJJHQxLCRhMQkJCTsgbHd6CSR0MSw0KCRhcCkKLSsJbHd6CSR0Miw4KCRh cCkJCTsgbG9hZCBhW2ouLmorM10gYXMgMzItYml0IHdvcmQgcGFpcnMKLSAJbHd6CSR0MywxMigk YXApCi0gCWx3egkkdDQsMCgkbnApCQk7IGxvYWQgbltqLi5qKzNdIGFzIDMyLWJpdCB3b3JkIHBh aXJzCi0gCWx3egkkdDUsNCgkbnApCi1AQCAtMzE5LDcgKzM2MSw3IEBAICRjb2RlLj08PF9fXzsK LSAJbGZkCSRuYixgJEZSQU1FKzQwYCgkc3ApCi0gCWxmZAkkbmMsYCRGUkFNRSs0OGAoJHNwKQot IAlsZmQJJG5kLGAkRlJBTUUrNTZgKCRzcCkKLS0Jc3RkCSR0MCxgJEZSQU1FKzY0YCgkc3ApCi0r CXN0ZAkkdDAsYCRGUkFNRSs2NGAoJHNwKQk7IHllcywgc3RkIGV2ZW4gaW4gMzItYml0IGJ1aWxk Ci0gCXN0ZAkkdDEsYCRGUkFNRSs3MmAoJHNwKQotIAlzdGQJJHQyLGAkRlJBTUUrODBgKCRzcCkK LSAJc3RkCSR0MyxgJEZSQU1FKzg4YCgkc3ApCi1AQCAtNDQxLDcgKzQ4Myw3IEBAICRjb2RlLj08 PF9fXyBpZiAoJFNJWkVfVD09NCk7Ci0gCWx3egkkdDcsMTIoJG5wKQotIF9fXwotICRjb2RlLj08 PF9fXzsKLS0Jc3RkCSR0MCxgJEZSQU1FKzY0YCgkc3ApCi0rCXN0ZAkkdDAsYCRGUkFNRSs2NGAo JHNwKQk7IHllcywgc3RkIGV2ZW4gaW4gMzItYml0IGJ1aWxkCi0gCXN0ZAkkdDEsYCRGUkFNRSs3 MmAoJHNwKQotIAlzdGQJJHQyLGAkRlJBTUUrODBgKCRzcCkKLSAJc3RkCSR0MyxgJEZSQU1FKzg4 YCgkc3ApCi1AQCAtNDQ5LDYgKzQ5MSw5IEBAICRjb2RlLj08PF9fXzsKLSAJc3RkCSR0NSxgJEZS QU1FKzEwNGAoJHNwKQotIAlzdGQJJHQ2LGAkRlJBTUUrMTEyYCgkc3ApCi0gCXN0ZAkkdDcsYCRG UkFNRSsxMjBgKCRzcCkKLStfX18KLStpZiAoJFNJWkVfVD09OCBvciAkZmxhdm91ciA9fiAvb3N4 LykgewotKyRjb2RlLj08PF9fXzsKLSAJbGQJJHQwLGAkRlJBTUUrMGAoJHNwKQotIAlsZAkkdDEs YCRGUkFNRSs4YCgkc3ApCi0gCWxkCSR0MixgJEZSQU1FKzE2YCgkc3ApCi1AQCAtNDU3LDYgKzUw MiwyMCBAQCAkY29kZS49PDxfX187Ci0gCWxkCSR0NSxgJEZSQU1FKzQwYCgkc3ApCi0gCWxkCSR0 NixgJEZSQU1FKzQ4YCgkc3ApCi0gCWxkCSR0NyxgJEZSQU1FKzU2YCgkc3ApCi0rX19fCi0rfSBl bHNlIHsKLSskY29kZS49PDxfX187Ci0rCWx3egkkdDEsYCRGUkFNRSswYCgkc3ApCi0rCWx3egkk dDAsYCRGUkFNRSs0YCgkc3ApCi0rCWx3egkkdDMsYCRGUkFNRSs4YCgkc3ApCi0rCWx3egkkdDIs YCRGUkFNRSsxMmAoJHNwKQotKwlsd3oJJHQ1LGAkRlJBTUUrMTZgKCRzcCkKLSsJbHd6CSR0NCxg JEZSQU1FKzIwYCgkc3ApCi0rCWx3egkkdDcsYCRGUkFNRSsyNGAoJHNwKQotKwlsd3oJJHQ2LGAk RlJBTUUrMjhgKCRzcCkKLStfX18KLSt9Ci0rJGNvZGUuPTw8X19fOwotIAlsZmQJJEEwLGAkRlJB TUUrNjRgKCRzcCkKLSAJbGZkCSRBMSxgJEZSQU1FKzcyYCgkc3ApCi0gCWxmZAkkQTIsYCRGUkFN RSs4MGAoJHNwKQotQEAgLTQ4OCw3ICs1NDcsOSBAQCAkY29kZS49PDxfX187Ci0gCWZtYWRkCSRU MGIsJEEwLCRiYiwkZG90YgotIAlzdGZkCSRBMiwyNCgkbmFwX2QpCQk7IHNhdmUgYVtqKzFdIGlu IGRvdWJsZSBmb3JtYXQKLSAJc3RmZAkkQTMsMzIoJG5hcF9kKQotLQotK19fXwotK2lmICgkU0la RV9UPT04IG9yICRmbGF2b3VyID1+IC9vc3gvKSB7Ci0rJGNvZGUuPTw8X19fOwotIAlmbWFkZAkk VDFhLCRBMCwkYmMsJFQxYQotIAlmbWFkZAkkVDFiLCRBMCwkYmQsJFQxYgotIAlmbWFkZAkkVDJh LCRBMSwkYmMsJFQyYQotQEAgLTU2MSwxMSArNjIyLDEyMyBAQCAkY29kZS49PDxfX187Ci0gCXN0 ZmQJJFQzYixgJEZSQU1FKzU2YCgkc3ApCi0gCSBzdGQJJHQwLDgoJHRwKQkJOyB0cFtqLTFdCi0g CSBzdGR1CSR0NCwxNigkdHApCQk7IHRwW2pdCi0rX19fCi0rfSBlbHNlIHsKLSskY29kZS49PDxf X187Ci0rCWZtYWRkCSRUMWEsJEEwLCRiYywkVDFhCi0rCWZtYWRkCSRUMWIsJEEwLCRiZCwkVDFi Ci0rCSBhZGRjCSR0MCwkdDAsJGNhcnJ5Ci0rCSBhZGRlCSR0MSwkdDEsJGMxCi0rCSBzcndpCSRj YXJyeSwkdDAsMTYKLSsJZm1hZGQJJFQyYSwkQTEsJGJjLCRUMmEKLSsJZm1hZGQJJFQyYiwkQTEs JGJkLCRUMmIKLSsJc3RmZAkkTjAsNDAoJG5hcF9kKQkJOyBzYXZlIG5bal0gaW4gZG91YmxlIGZv cm1hdAotKwlzdGZkCSROMSw0OCgkbmFwX2QpCi0rCSBzcndpCSRjMSwkdDEsMTYKLSsJIGluc3J3 aQkkY2FycnksJHQxLDE2LDAKLSsJZm1hZGQJJFQzYSwkQTIsJGJjLCRUM2EKLSsJZm1hZGQJJFQz YiwkQTIsJGJkLCRUM2IKLSsJIGFkZGMJJHQyLCR0MiwkY2FycnkKLSsJIGFkZGUJJHQzLCR0Mywk YzEKLSsJIHNyd2kJJGNhcnJ5LCR0MiwxNgotKwlmbXVsCSRkb3RhLCRBMywkYmMKLSsJZm11bAkk ZG90YiwkQTMsJGJkCi0rCXN0ZmQJJE4yLDU2KCRuYXBfZCkJCTsgc2F2ZSBuW2orMV0gaW4gZG91 YmxlIGZvcm1hdAotKwlzdGZkdQkkTjMsNjQoJG5hcF9kKQotKwkgaW5zcndpCSR0MCwkdDIsMTYs MAkJOyAwLi4zMSBiaXRzCi0rCSBzcndpCSRjMSwkdDMsMTYKLSsJIGluc3J3aQkkY2FycnksJHQz LDE2LDAKLSsKLSsJZm1hZGQJJFQxYSwkTjEsJG5hLCRUMWEKLSsJZm1hZGQJJFQxYiwkTjEsJG5i LCRUMWIKLSsJIGx3egkkdDMsYCRGUkFNRSszMmAoJHNwKQk7IHBlcm11dGVkICR0MQotKwkgbHd6 CSR0MixgJEZSQU1FKzM2YCgkc3ApCTsgcGVybXV0ZWQgJHQwCi0rCSBhZGRjCSR0NCwkdDQsJGNh cnJ5Ci0rCSBhZGRlCSR0NSwkdDUsJGMxCi0rCSBzcndpCSRjYXJyeSwkdDQsMTYKLSsJZm1hZGQJ JFQyYSwkTjIsJG5hLCRUMmEKLSsJZm1hZGQJJFQyYiwkTjIsJG5iLCRUMmIKLSsJIHNyd2kJJGMx LCR0NSwxNgotKwkgaW5zcndpCSRjYXJyeSwkdDUsMTYsMAotKwlmbWFkZAkkVDNhLCROMywkbmEs JFQzYQotKwlmbWFkZAkkVDNiLCROMywkbmIsJFQzYgotKwkgYWRkYwkkdDYsJHQ2LCRjYXJyeQot KwkgYWRkZQkkdDcsJHQ3LCRjMQotKwkgc3J3aQkkY2FycnksJHQ2LDE2Ci0rCWZtYWRkCSRUMGEs JE4wLCRuYSwkVDBhCi0rCWZtYWRkCSRUMGIsJE4wLCRuYiwkVDBiCi0rCSBpbnNyd2kJJHQ0LCR0 NiwxNiwwCQk7IDMyLi42MyBiaXRzCi0rCSBzcndpCSRjMSwkdDcsMTYKLSsJIGluc3J3aQkkY2Fy cnksJHQ3LDE2LDAKLSsKLSsJZm1hZGQJJFQxYSwkTjAsJG5jLCRUMWEKLSsJZm1hZGQJJFQxYiwk TjAsJG5kLCRUMWIKLSsJIGx3egkkdDcsYCRGUkFNRSs0MGAoJHNwKQk7IHBlcm11dGVkICR0Mwot KwkgbHd6CSR0NixgJEZSQU1FKzQ0YCgkc3ApCTsgcGVybXV0ZWQgJHQyCi0rCSBhZGRjCSR0Miwk dDIsJGNhcnJ5Ci0rCSBhZGRlCSR0MywkdDMsJGMxCi0rCSBzcndpCSRjYXJyeSwkdDIsMTYKLSsJ Zm1hZGQJJFQyYSwkTjEsJG5jLCRUMmEKLSsJZm1hZGQJJFQyYiwkTjEsJG5kLCRUMmIKLSsJIHN0 dwkkdDAsMTIoJHRwKQkJOyB0cFtqLTFdCi0rCSBzdHcJJHQ0LDgoJHRwKQotKwkgc3J3aQkkYzEs JHQzLDE2Ci0rCSBpbnNyd2kJJGNhcnJ5LCR0MywxNiwwCi0rCWZtYWRkCSRUM2EsJE4yLCRuYywk VDNhCi0rCWZtYWRkCSRUM2IsJE4yLCRuZCwkVDNiCi0rCSBsd3oJJHQxLGAkRlJBTUUrNDhgKCRz cCkJOyBwZXJtdXRlZCAkdDUKLSsJIGx3egkkdDAsYCRGUkFNRSs1MmAoJHNwKQk7IHBlcm11dGVk ICR0NAotKwkgYWRkYwkkdDYsJHQ2LCRjYXJyeQotKwkgYWRkZQkkdDcsJHQ3LCRjMQotKwkgc3J3 aQkkY2FycnksJHQ2LDE2Ci0rCWZtYWRkCSRkb3RhLCROMywkbmMsJGRvdGEKLSsJZm1hZGQJJGRv dGIsJE4zLCRuZCwkZG90YgotKwkgaW5zcndpCSR0MiwkdDYsMTYsMAkJOyA2NC4uOTUgYml0cwot Kwkgc3J3aQkkYzEsJHQ3LDE2Ci0rCSBpbnNyd2kJJGNhcnJ5LCR0NywxNiwwCi0rCi0rCWZjdGlk CSRUMGEsJFQwYQotKwlmY3RpZAkkVDBiLCRUMGIKLSsJIGx3egkkdDUsYCRGUkFNRSs1NmAoJHNw KQk7IHBlcm11dGVkICR0NwotKwkgbHd6CSR0NCxgJEZSQU1FKzYwYCgkc3ApCTsgcGVybXV0ZWQg JHQ2Ci0rCSBhZGRjCSR0MCwkdDAsJGNhcnJ5Ci0rCSBhZGRlCSR0MSwkdDEsJGMxCi0rCSBzcndp CSRjYXJyeSwkdDAsMTYKLSsJZmN0aWQJJFQxYSwkVDFhCi0rCWZjdGlkCSRUMWIsJFQxYgotKwkg c3J3aQkkYzEsJHQxLDE2Ci0rCSBpbnNyd2kJJGNhcnJ5LCR0MSwxNiwwCi0rCWZjdGlkCSRUMmEs JFQyYQotKwlmY3RpZAkkVDJiLCRUMmIKLSsJIGFkZGMJJHQ0LCR0NCwkY2FycnkKLSsJIGFkZGUJ JHQ1LCR0NSwkYzEKLSsJIHNyd2kJJGNhcnJ5LCR0NCwxNgotKwlmY3RpZAkkVDNhLCRUM2EKLSsJ ZmN0aWQJJFQzYiwkVDNiCi0rCSBpbnNyd2kJJHQwLCR0NCwxNiwwCQk7IDk2Li4xMjcgYml0cwot Kwkgc3J3aQkkYzEsJHQ1LDE2Ci0rCSBpbnNyd2kJJGNhcnJ5LCR0NSwxNiwwCi0rCi0rCXN0ZmQJ JFQwYSxgJEZSQU1FKzBgKCRzcCkKLSsJc3RmZAkkVDBiLGAkRlJBTUUrOGAoJHNwKQotKwlzdGZk CSRUMWEsYCRGUkFNRSsxNmAoJHNwKQotKwlzdGZkCSRUMWIsYCRGUkFNRSsyNGAoJHNwKQotKwlz dGZkCSRUMmEsYCRGUkFNRSszMmAoJHNwKQotKwlzdGZkCSRUMmIsYCRGUkFNRSs0MGAoJHNwKQot KwlzdGZkCSRUM2EsYCRGUkFNRSs0OGAoJHNwKQotKwlzdGZkCSRUM2IsYCRGUkFNRSs1NmAoJHNw KQotKwkgc3R3CSR0MiwyMCgkdHApCQk7IHRwW2pdCi0rCSBzdHd1CSR0MCwxNigkdHApCi0rX19f Ci0rfQotKyRjb2RlLj08PF9fXzsKLSAJYmRuei0JTDFzdAotIAwKLSAJZmN0aWQJJGRvdGEsJGRv dGEKLSAJZmN0aWQJJGRvdGIsJGRvdGIKLS0KLStfX18KLStpZiAoJFNJWkVfVD09OCBvciAkZmxh dm91ciA9fiAvb3N4LykgewotKyRjb2RlLj08PF9fXzsKLSAJbGQJJHQwLGAkRlJBTUUrMGAoJHNw KQotIAlsZAkkdDEsYCRGUkFNRSs4YCgkc3ApCi0gCWxkCSR0MixgJEZSQU1FKzE2YCgkc3ApCi1A QCAtNjExLDMzICs3ODQsMTE3IEBAICRjb2RlLj08PF9fXzsKLSAJaW5zcmRpCSR0NiwkdDcsNDgs MAotIAlzcmRpCSRvdmYsJHQ3LDQ4Ci0gCXN0ZAkkdDYsOCgkdHApCQk7IHRwW251bS0xXQotK19f XwotK30gZWxzZSB7Ci0rJGNvZGUuPTw8X19fOwotKwlsd3oJJHQxLGAkRlJBTUUrMGAoJHNwKQot Kwlsd3oJJHQwLGAkRlJBTUUrNGAoJHNwKQotKwlsd3oJJHQzLGAkRlJBTUUrOGAoJHNwKQotKwls d3oJJHQyLGAkRlJBTUUrMTJgKCRzcCkKLSsJbHd6CSR0NSxgJEZSQU1FKzE2YCgkc3ApCi0rCWx3 egkkdDQsYCRGUkFNRSsyMGAoJHNwKQotKwlsd3oJJHQ3LGAkRlJBTUUrMjRgKCRzcCkKLSsJbHd6 CSR0NixgJEZSQU1FKzI4YCgkc3ApCi0rCXN0ZmQJJGRvdGEsYCRGUkFNRSs2NGAoJHNwKQotKwlz dGZkCSRkb3RiLGAkRlJBTUUrNzJgKCRzcCkKLSAKLSsJYWRkYwkkdDAsJHQwLCRjYXJyeQotKwlh ZGRlCSR0MSwkdDEsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0MCwxNgotKwlpbnNyd2kJJGNhcnJ5LCR0 MSwxNiwwCi0rCXNyd2kJJGMxLCR0MSwxNgotKwlhZGRjCSR0MiwkdDIsJGNhcnJ5Ci0rCWFkZGUJ JHQzLCR0MywkYzEKLSsJc3J3aQkkY2FycnksJHQyLDE2Ci0rCSBpbnNyd2kJJHQwLCR0MiwxNiww CQk7IDAuLjMxIGJpdHMKLSsJaW5zcndpCSRjYXJyeSwkdDMsMTYsMAotKwlzcndpCSRjMSwkdDMs MTYKLSsJYWRkYwkkdDQsJHQ0LCRjYXJyeQotKwlhZGRlCSR0NSwkdDUsJGMxCi0rCXNyd2kJJGNh cnJ5LCR0NCwxNgotKwlpbnNyd2kJJGNhcnJ5LCR0NSwxNiwwCi0rCXNyd2kJJGMxLCR0NSwxNgot KwlhZGRjCSR0NiwkdDYsJGNhcnJ5Ci0rCWFkZGUJJHQ3LCR0NywkYzEKLSsJc3J3aQkkY2Fycnks JHQ2LDE2Ci0rCSBpbnNyd2kJJHQ0LCR0NiwxNiwwCQk7IDMyLi42MyBiaXRzCi0rCWluc3J3aQkk Y2FycnksJHQ3LDE2LDAKLSsJc3J3aQkkYzEsJHQ3LDE2Ci0rCSBzdHcJJHQwLDEyKCR0cCkJCTsg dHBbai0xXQotKwkgc3R3CSR0NCw4KCR0cCkKLSsKLSsJbHd6CSR0MyxgJEZSQU1FKzMyYCgkc3Ap CTsgcGVybXV0ZWQgJHQxCi0rCWx3egkkdDIsYCRGUkFNRSszNmAoJHNwKQk7IHBlcm11dGVkICR0 MAotKwlsd3oJJHQ3LGAkRlJBTUUrNDBgKCRzcCkJOyBwZXJtdXRlZCAkdDMKLSsJbHd6CSR0Nixg JEZSQU1FKzQ0YCgkc3ApCTsgcGVybXV0ZWQgJHQyCi0rCWx3egkkdDEsYCRGUkFNRSs0OGAoJHNw KQk7IHBlcm11dGVkICR0NQotKwlsd3oJJHQwLGAkRlJBTUUrNTJgKCRzcCkJOyBwZXJtdXRlZCAk dDQKLSsJbHd6CSR0NSxgJEZSQU1FKzU2YCgkc3ApCTsgcGVybXV0ZWQgJHQ3Ci0rCWx3egkkdDQs YCRGUkFNRSs2MGAoJHNwKQk7IHBlcm11dGVkICR0NgotKwotKwlhZGRjCSR0MiwkdDIsJGNhcnJ5 Ci0rCWFkZGUJJHQzLCR0MywkYzEKLSsJc3J3aQkkY2FycnksJHQyLDE2Ci0rCWluc3J3aQkkY2Fy cnksJHQzLDE2LDAKLSsJc3J3aQkkYzEsJHQzLDE2Ci0rCWFkZGMJJHQ2LCR0NiwkY2FycnkKLSsJ YWRkZQkkdDcsJHQ3LCRjMQotKwlzcndpCSRjYXJyeSwkdDYsMTYKLSsJIGluc3J3aQkkdDIsJHQ2 LDE2LDAJCTsgNjQuLjk1IGJpdHMKLSsJaW5zcndpCSRjYXJyeSwkdDcsMTYsMAotKwlzcndpCSRj MSwkdDcsMTYKLSsJYWRkYwkkdDAsJHQwLCRjYXJyeQotKwlhZGRlCSR0MSwkdDEsJGMxCi0rCXNy d2kJJGNhcnJ5LCR0MCwxNgotKwlpbnNyd2kJJGNhcnJ5LCR0MSwxNiwwCi0rCXNyd2kJJGMxLCR0 MSwxNgotKwlhZGRjCSR0NCwkdDQsJGNhcnJ5Ci0rCWFkZGUJJHQ1LCR0NSwkYzEKLSsJc3J3aQkk Y2FycnksJHQ0LDE2Ci0rCSBpbnNyd2kJJHQwLCR0NCwxNiwwCQk7IDk2Li4xMjcgYml0cwotKwlp bnNyd2kJJGNhcnJ5LCR0NSwxNiwwCi0rCXNyd2kJJGMxLCR0NSwxNgotKwkgc3R3CSR0MiwyMCgk dHApCQk7IHRwW2pdCi0rCSBzdHd1CSR0MCwxNigkdHApCi0rCi0rCWx3egkkdDcsYCRGUkFNRSs2 NGAoJHNwKQotKwlsd3oJJHQ2LGAkRlJBTUUrNjhgKCRzcCkKLSsJbHd6CSR0NSxgJEZSQU1FKzcy YCgkc3ApCi0rCWx3egkkdDQsYCRGUkFNRSs3NmAoJHNwKQotKwotKwlhZGRjCSR0NiwkdDYsJGNh cnJ5Ci0rCWFkZGUJJHQ3LCR0NywkYzEKLSsJc3J3aQkkY2FycnksJHQ2LDE2Ci0rCWluc3J3aQkk Y2FycnksJHQ3LDE2LDAKLSsJc3J3aQkkYzEsJHQ3LDE2Ci0rCWFkZGMJJHQ0LCR0NCwkY2FycnkK LSsJYWRkZQkkdDUsJHQ1LCRjMQotKwotKwlpbnNyd2kJJHQ2LCR0NCwxNiwwCi0rCXNyd2kJJHQ0 LCR0NCwxNgotKwlpbnNyd2kJJHQ0LCR0NSwxNiwwCi0rCXNyd2kJJG92ZiwkdDUsMTYKLSsJc3R3 CSR0NiwxMigkdHApCQk7IHRwW251bS0xXQotKwlzdHcJJHQ0LDgoJHRwKQotK19fXwotK30KLSsk Y29kZS49PDxfX187Ci0gCXNsd2kJJHQ3LCRudW0sMgotIAlzdWJmCSRuYXBfZCwkdDcsJG5hcF9k CTsgcmV3aW5kIHBvaW50ZXIKLSAMCi0gCWxpCSRpLDgJCQk7IGk9MQotIC5hbGlnbgk1Ci0gTG91 dGVyOgotLV9fXwotLSRjb2RlLj08PF9fXyBpZiAoJFNJWkVfVD09OCk7Ci0tCWxkeAkkdDMsJGJw LCRpCTsgYnBbaV0KLS1fX18KLS0kY29kZS49PDxfX18gaWYgKCRTSVpFX1Q9PTQpOwotLQlhZGQJ JHQwLCRicCwkaQotLQlsd3oJJHQzLDAoJHQwKQkJOyBicFtpLGkrMV0KLS0JbHd6CSR0MCw0KCR0 MCkKLS0JaW5zcmRpCSR0MywkdDAsMzIsMAotLV9fXwotLSRjb2RlLj08PF9fXzsKLS0JbGQJJHQ2 LGAkRlJBTUUrJFRSQU5TRkVSKzhgKCRzcCkJOyB0cFswXQotLQltdWxsZAkkdDcsJGEwLCR0Mwk7 IGFwWzBdKmJwW2ldCi0tCi0gCWFkZGkJJHRwLCRzcCxgJEZSQU1FKyRUUkFOU0ZFUmAKLS0JYWRk CSR0NywkdDcsJHQ2CTsgYXBbMF0qYnBbaV0rdHBbMF0KLSAJbGkJJGNhcnJ5LDAKLS0JbXVsbGQJ JHQ3LCR0NywkbjAJOyB0cFswXSpuMAotIAltdGN0cgkkagotK19fXwotKyRjb2RlLj08PF9fXyBp ZiAoJFNJWkVfVD09OCk7Ci0rCWxkeAkkdDMsJGJwLCRpCQk7IGJwW2ldCi0gCi0rCWxkCSR0Nixg JEZSQU1FKyRUUkFOU0ZFUis4YCgkc3ApCTsgdHBbMF0KLSsJbXVsbGQJJHQ3LCRhMCwkdDMJCTsg YXBbMF0qYnBbaV0KLSsJYWRkCSR0NywkdDcsJHQ2CQk7IGFwWzBdKmJwW2ldK3RwWzBdCi0gCTsg dHJhbnNmZXIgYnBbaV0gdG8gRlBVIGFzIDR4MTYtYml0IHZhbHVlcwotIAlleHRyZGkJJHQwLCR0 MywxNiw0OAotIAlleHRyZGkJJHQxLCR0MywxNiwzMgotQEAgLTY0Nyw2ICs5MDQsOCBAQCAkY29k ZS49PDxfX187Ci0gCXN0ZAkkdDEsYCRGUkFNRSs4YCgkc3ApCi0gCXN0ZAkkdDIsYCRGUkFNRSsx NmAoJHNwKQotIAlzdGQJJHQzLGAkRlJBTUUrMjRgKCRzcCkKLSsKLSsJbXVsbGQJJHQ3LCR0Nywk bjAJCTsgdHBbMF0qbjAKLSAJOyB0cmFuc2ZlciAoYXBbMF0qYnBbaV0rdHBbMF0pKm4wIHRvIEZQ VSBhcyA0eDE2LWJpdCB2YWx1ZXMKLSAJZXh0cmRpCSR0NCwkdDcsMTYsNDgKLSAJZXh0cmRpCSR0 NSwkdDcsMTYsMzIKLUBAIC02NTYsNyArOTE1LDUwIEBAICRjb2RlLj08PF9fXzsKLSAJc3RkCSR0 NSxgJEZSQU1FKzQwYCgkc3ApCi0gCXN0ZAkkdDYsYCRGUkFNRSs0OGAoJHNwKQotIAlzdGQJJHQ3 LGAkRlJBTUUrNTZgKCRzcCkKLStfX18KLSskY29kZS49PDxfX18gaWYgKCRTSVpFX1Q9PTQpOwot KwlhZGQJJHQwLCRicCwkaQotKwlsaQkkYzEsMAotKwlsd3oJJHQxLDAoJHQwKQkJOyBicFtpLGkr MV0KLSsJbHd6CSR0Myw0KCR0MCkKLSsKLSsJbXVsbHcJJHQ0LCRhMCwkdDEJCTsgYXBbMF0qYnBb aV0KLSsJbHd6CSR0MCxgJEZSQU1FKyRUUkFOU0ZFUis4KzRgKCRzcCkJOyB0cFswXQotKwltdWxo d3UJJHQ1LCRhMCwkdDEKLSsJbHd6CSR0MixgJEZSQU1FKyRUUkFOU0ZFUis4YCgkc3ApCTsgdHBb MF0KLSsJbXVsbHcJJHQ2LCRhMSwkdDEKLSsJbXVsbHcJJHQ3LCRhMCwkdDMKLSsJYWRkCSR0NSwk dDUsJHQ2Ci0rCWFkZAkkdDUsJHQ1LCR0NwotKwlhZGRjCSR0NCwkdDQsJHQwCQk7IGFwWzBdKmJw W2ldK3RwWzBdCi0rCWFkZGUJJHQ1LCR0NSwkdDIKLSsJOyB0cmFuc2ZlciBicFtpXSB0byBGUFUg YXMgNHgxNi1iaXQgdmFsdWVzCi0rCWV4dHJ3aQkkdDAsJHQxLDE2LDE2Ci0rCWV4dHJ3aQkkdDEs JHQxLDE2LDAKLSsJZXh0cndpCSR0MiwkdDMsMTYsMTYKLSsJZXh0cndpCSR0MywkdDMsMTYsMAot KwlzdGQJJHQwLGAkRlJBTUUrMGAoJHNwKQk7IHllcywgc3RkIGluIDMyLWJpdCBidWlsZAotKwlz dGQJJHQxLGAkRlJBTUUrOGAoJHNwKQotKwlzdGQJJHQyLGAkRlJBTUUrMTZgKCRzcCkKLSsJc3Rk CSR0MyxgJEZSQU1FKzI0YCgkc3ApCi0gCi0rCW11bGx3CSR0MCwkdDQsJG4wCQk7IG11bGxkIHRw WzBdKm4wCi0rCW11bGh3dQkkdDEsJHQ0LCRuMAotKwltdWxsdwkkdDIsJHQ1LCRuMAotKwltdWxs dwkkdDMsJHQ0LCRuMQotKwlhZGQJJHQxLCR0MSwkdDIKLSsJYWRkCSR0MSwkdDEsJHQzCi0rCTsg dHJhbnNmZXIgKGFwWzBdKmJwW2ldK3RwWzBdKSpuMCB0byBGUFUgYXMgNHgxNi1iaXQgdmFsdWVz Ci0rCWV4dHJ3aQkkdDQsJHQwLDE2LDE2Ci0rCWV4dHJ3aQkkdDUsJHQwLDE2LDAKLSsJZXh0cndp CSR0NiwkdDEsMTYsMTYKLSsJZXh0cndpCSR0NywkdDEsMTYsMAotKwlzdGQJJHQ0LGAkRlJBTUUr MzJgKCRzcCkJOyB5ZXMsIHN0ZCBpbiAzMi1iaXQgYnVpbGQKLSsJc3RkCSR0NSxgJEZSQU1FKzQw YCgkc3ApCi0rCXN0ZAkkdDYsYCRGUkFNRSs0OGAoJHNwKQotKwlzdGQJJHQ3LGAkRlJBTUUrNTZg KCRzcCkKLStfX18KLSskY29kZS49PDxfX187Ci0gCWxmZAkkQTAsOCgkbmFwX2QpCQk7IGxvYWQg YVtqXSBpbiBkb3VibGUgZm9ybWF0Ci0gCWxmZAkkQTEsMTYoJG5hcF9kKQotIAlsZmQJJEEyLDI0 KCRuYXBfZCkJCTsgbG9hZCBhW2orMV0gaW4gZG91YmxlIGZvcm1hdAotQEAgLTc2OSw3ICsxMDcx LDkgQEAgTGlubmVyOgotIAlmbXVsCSRkb3RiLCRBMywkYmQKLSAJIGxmZAkkQTIsMjQoJG5hcF9k KQkJOyBsb2FkIGFbaisxXSBpbiBkb3VibGUgZm9ybWF0Ci0gCSBsZmQJJEEzLDMyKCRuYXBfZCkK LS0KLStfX18KLStpZiAoJFNJWkVfVD09OCBvciAkZmxhdm91ciA9fiAvb3N4LykgewotKyRjb2Rl Lj08PF9fXzsKLSAJZm1hZGQJJFQxYSwkTjEsJG5hLCRUMWEKLSAJZm1hZGQJJFQxYiwkTjEsJG5i LCRUMWIKLSAJIGxkCSR0MCxgJEZSQU1FKzBgKCRzcCkKLUBAIC04NTYsMTAgKzExNjAsMTMxIEBA ICRjb2RlLj08PF9fXzsKLSAJIGFkZHplCSRjYXJyeSwkY2FycnkKLSAJIHN0ZAkkdDMsLTE2KCR0 cCkJCTsgdHBbai0xXQotIAkgc3RkCSR0NSwtOCgkdHApCQk7IHRwW2pdCi0rX19fCi0rfSBlbHNl IHsKLSskY29kZS49PDxfX187Ci0rCWZtYWRkCSRUMWEsJE4xLCRuYSwkVDFhCi0rCWZtYWRkCSRU MWIsJE4xLCRuYiwkVDFiCi0rCSBsd3oJJHQxLGAkRlJBTUUrMGAoJHNwKQotKwkgbHd6CSR0MCxg JEZSQU1FKzRgKCRzcCkKLSsJZm1hZGQJJFQyYSwkTjIsJG5hLCRUMmEKLSsJZm1hZGQJJFQyYiwk TjIsJG5iLCRUMmIKLSsJIGx3egkkdDMsYCRGUkFNRSs4YCgkc3ApCi0rCSBsd3oJJHQyLGAkRlJB TUUrMTJgKCRzcCkKLSsJZm1hZGQJJFQzYSwkTjMsJG5hLCRUM2EKLSsJZm1hZGQJJFQzYiwkTjMs JG5iLCRUM2IKLSsJIGx3egkkdDUsYCRGUkFNRSsxNmAoJHNwKQotKwkgbHd6CSR0NCxgJEZSQU1F KzIwYCgkc3ApCi0rCSBhZGRjCSR0MCwkdDAsJGNhcnJ5Ci0rCSBhZGRlCSR0MSwkdDEsJGMxCi0r CSBzcndpCSRjYXJyeSwkdDAsMTYKLSsJZm1hZGQJJFQwYSwkTjAsJG5hLCRUMGEKLSsJZm1hZGQJ JFQwYiwkTjAsJG5iLCRUMGIKLSsJIGx3egkkdDcsYCRGUkFNRSsyNGAoJHNwKQotKwkgbHd6CSR0 NixgJEZSQU1FKzI4YCgkc3ApCi0rCSBzcndpCSRjMSwkdDEsMTYKLSsJIGluc3J3aQkkY2Fycnks JHQxLDE2LDAKLSsKLSsJZm1hZGQJJFQxYSwkTjAsJG5jLCRUMWEKLSsJZm1hZGQJJFQxYiwkTjAs JG5kLCRUMWIKLSsJIGFkZGMJJHQyLCR0MiwkY2FycnkKLSsJIGFkZGUJJHQzLCR0MywkYzEKLSsJ IHNyd2kJJGNhcnJ5LCR0MiwxNgotKwlmbWFkZAkkVDJhLCROMSwkbmMsJFQyYQotKwlmbWFkZAkk VDJiLCROMSwkbmQsJFQyYgotKwkgaW5zcndpCSR0MCwkdDIsMTYsMAkJOyAwLi4zMSBiaXRzCi0r CSBzcndpCSRjMSwkdDMsMTYKLSsJIGluc3J3aQkkY2FycnksJHQzLDE2LDAKLSsJZm1hZGQJJFQz YSwkTjIsJG5jLCRUM2EKLSsJZm1hZGQJJFQzYiwkTjIsJG5kLCRUM2IKLSsJIGx3egkkdDIsMTIo JHRwKQkJOyB0cFtqXQotKwkgbHd6CSR0Myw4KCR0cCkKLSsJIGFkZGMJJHQ0LCR0NCwkY2FycnkK LSsJIGFkZGUJJHQ1LCR0NSwkYzEKLSsJIHNyd2kJJGNhcnJ5LCR0NCwxNgotKwlmbWFkZAkkZG90 YSwkTjMsJG5jLCRkb3RhCi0rCWZtYWRkCSRkb3RiLCROMywkbmQsJGRvdGIKLSsJIHNyd2kJJGMx LCR0NSwxNgotKwkgaW5zcndpCSRjYXJyeSwkdDUsMTYsMAotKwotKwlmY3RpZAkkVDBhLCRUMGEK LSsJIGFkZGMJJHQ2LCR0NiwkY2FycnkKLSsJIGFkZGUJJHQ3LCR0NywkYzEKLSsJIHNyd2kJJGNh cnJ5LCR0NiwxNgotKwlmY3RpZAkkVDBiLCRUMGIKLSsJIGluc3J3aQkkdDQsJHQ2LDE2LDAJCTsg MzIuLjYzIGJpdHMKLSsJIHNyd2kJJGMxLCR0NywxNgotKwkgaW5zcndpCSRjYXJyeSwkdDcsMTYs MAotKwlmY3RpZAkkVDFhLCRUMWEKLSsJIGFkZGMJJHQwLCR0MCwkdDIKLSsJIGFkZGUJJHQ0LCR0 NCwkdDMKLSsJIGx3egkkdDMsYCRGUkFNRSszMmAoJHNwKQk7IHBlcm11dGVkICR0MQotKwkgbHd6 CSR0MixgJEZSQU1FKzM2YCgkc3ApCTsgcGVybXV0ZWQgJHQwCi0rCWZjdGlkCSRUMWIsJFQxYgot KwkgYWRkemUJJGNhcnJ5LCRjYXJyeQotKwkgYWRkemUJJGMxLCRjMQotKwkgc3R3CSR0MCw0KCR0 cCkJCTsgdHBbai0xXQotKwkgc3R3CSR0NCwwKCR0cCkKLSsJZmN0aWQJJFQyYSwkVDJhCi0rCSBh ZGRjCSR0MiwkdDIsJGNhcnJ5Ci0rCSBhZGRlCSR0MywkdDMsJGMxCi0rCSBzcndpCSRjYXJyeSwk dDIsMTYKLSsJIGx3egkkdDcsYCRGUkFNRSs0MGAoJHNwKQk7IHBlcm11dGVkICR0MwotKwkgbHd6 CSR0NixgJEZSQU1FKzQ0YCgkc3ApCTsgcGVybXV0ZWQgJHQyCi0rCWZjdGlkCSRUMmIsJFQyYgot Kwkgc3J3aQkkYzEsJHQzLDE2Ci0rCSBpbnNyd2kJJGNhcnJ5LCR0MywxNiwwCi0rCSBsd3oJJHQx LGAkRlJBTUUrNDhgKCRzcCkJOyBwZXJtdXRlZCAkdDUKLSsJIGx3egkkdDAsYCRGUkFNRSs1MmAo JHNwKQk7IHBlcm11dGVkICR0NAotKwlmY3RpZAkkVDNhLCRUM2EKLSsJIGFkZGMJJHQ2LCR0Niwk Y2FycnkKLSsJIGFkZGUJJHQ3LCR0NywkYzEKLSsJIHNyd2kJJGNhcnJ5LCR0NiwxNgotKwkgbHd6 CSR0NSxgJEZSQU1FKzU2YCgkc3ApCTsgcGVybXV0ZWQgJHQ3Ci0rCSBsd3oJJHQ0LGAkRlJBTUUr NjBgKCRzcCkJOyBwZXJtdXRlZCAkdDYKLSsJZmN0aWQJJFQzYiwkVDNiCi0rCi0rCSBpbnNyd2kJ JHQyLCR0NiwxNiwwCQk7IDY0Li45NSBiaXRzCi0rCWluc3J3aQkkY2FycnksJHQ3LDE2LDAKLSsJ c3J3aQkkYzEsJHQ3LDE2Ci0rCSBsd3oJJHQ2LDIwKCR0cCkKLSsJIGx3enUJJHQ3LDE2KCR0cCkK LSsJYWRkYwkkdDAsJHQwLCRjYXJyeQotKwkgc3RmZAkkVDBhLGAkRlJBTUUrMGAoJHNwKQotKwlh ZGRlCSR0MSwkdDEsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0MCwxNgotKwkgc3RmZAkkVDBiLGAkRlJB TUUrOGAoJHNwKQotKwlpbnNyd2kJJGNhcnJ5LCR0MSwxNiwwCi0rCXNyd2kJJGMxLCR0MSwxNgot KwlhZGRjCSR0NCwkdDQsJGNhcnJ5Ci0rCSBzdGZkCSRUMWEsYCRGUkFNRSsxNmAoJHNwKQotKwlh ZGRlCSR0NSwkdDUsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0NCwxNgotKwkgaW5zcndpCSR0MCwkdDQs MTYsMAkJOyA5Ni4uMTI3IGJpdHMKLSsJIHN0ZmQJJFQxYixgJEZSQU1FKzI0YCgkc3ApCi0rCWlu c3J3aQkkY2FycnksJHQ1LDE2LDAKLSsJc3J3aQkkYzEsJHQ1LDE2Ci0rCi0rCWFkZGMJJHQyLCR0 MiwkdDYKLSsJIHN0ZmQJJFQyYSxgJEZSQU1FKzMyYCgkc3ApCi0rCWFkZGUJJHQwLCR0MCwkdDcK LSsJIHN0ZmQJJFQyYixgJEZSQU1FKzQwYCgkc3ApCi0rCWFkZHplCSRjYXJyeSwkY2FycnkKLSsJ IHN0ZmQJJFQzYSxgJEZSQU1FKzQ4YCgkc3ApCi0rCWFkZHplCSRjMSwkYzEKLSsJIHN0ZmQJJFQz YixgJEZSQU1FKzU2YCgkc3ApCi0rCSBzdHcJJHQyLC00KCR0cCkJCTsgdHBbal0KLSsJIHN0dwkk dDAsLTgoJHRwKQotK19fXwotK30KLSskY29kZS49PDxfX187Ci0gCWJkbnotCUxpbm5lcgotIAwK LSAJZmN0aWQJJGRvdGEsJGRvdGEKLSAJZmN0aWQJJGRvdGIsJGRvdGIKLStfX18KLStpZiAoJFNJ WkVfVD09OCBvciAkZmxhdm91ciA9fiAvb3N4LykgewotKyRjb2RlLj08PF9fXzsKLSAJbGQJJHQw LGAkRlJBTUUrMGAoJHNwKQotIAlsZAkkdDEsYCRGUkFNRSs4YCgkc3ApCi0gCWxkCSR0MixgJEZS QU1FKzE2YCgkc3ApCi1AQCAtOTI2LDcgKzEzNTEsMTE2IEBAICRjb2RlLj08PF9fXzsKLSAJaW5z cmRpCSR0NiwkdDcsNDgsMAotIAlzcmRpCSRvdmYsJHQ3LDQ4Ci0gCXN0ZAkkdDYsMCgkdHApCQk7 IHRwW251bS0xXQotK19fXwotK30gZWxzZSB7Ci0rJGNvZGUuPTw8X19fOwotKwlsd3oJJHQxLGAk RlJBTUUrMGAoJHNwKQotKwlsd3oJJHQwLGAkRlJBTUUrNGAoJHNwKQotKwlsd3oJJHQzLGAkRlJB TUUrOGAoJHNwKQotKwlsd3oJJHQyLGAkRlJBTUUrMTJgKCRzcCkKLSsJbHd6CSR0NSxgJEZSQU1F KzE2YCgkc3ApCi0rCWx3egkkdDQsYCRGUkFNRSsyMGAoJHNwKQotKwlsd3oJJHQ3LGAkRlJBTUUr MjRgKCRzcCkKLSsJbHd6CSR0NixgJEZSQU1FKzI4YCgkc3ApCi0rCXN0ZmQJJGRvdGEsYCRGUkFN RSs2NGAoJHNwKQotKwlzdGZkCSRkb3RiLGAkRlJBTUUrNzJgKCRzcCkKLSAKLSsJYWRkYwkkdDAs JHQwLCRjYXJyeQotKwlhZGRlCSR0MSwkdDEsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0MCwxNgotKwlp bnNyd2kJJGNhcnJ5LCR0MSwxNiwwCi0rCXNyd2kJJGMxLCR0MSwxNgotKwlhZGRjCSR0MiwkdDIs JGNhcnJ5Ci0rCWFkZGUJJHQzLCR0MywkYzEKLSsJc3J3aQkkY2FycnksJHQyLDE2Ci0rCSBpbnNy d2kJJHQwLCR0MiwxNiwwCQk7IDAuLjMxIGJpdHMKLSsJIGx3egkkdDIsMTIoJHRwKQkJOyB0cFtq XQotKwlpbnNyd2kJJGNhcnJ5LCR0MywxNiwwCi0rCXNyd2kJJGMxLCR0MywxNgotKwkgbHd6CSR0 Myw4KCR0cCkKLSsJYWRkYwkkdDQsJHQ0LCRjYXJyeQotKwlhZGRlCSR0NSwkdDUsJGMxCi0rCXNy d2kJJGNhcnJ5LCR0NCwxNgotKwlpbnNyd2kJJGNhcnJ5LCR0NSwxNiwwCi0rCXNyd2kJJGMxLCR0 NSwxNgotKwlhZGRjCSR0NiwkdDYsJGNhcnJ5Ci0rCWFkZGUJJHQ3LCR0NywkYzEKLSsJc3J3aQkk Y2FycnksJHQ2LDE2Ci0rCSBpbnNyd2kJJHQ0LCR0NiwxNiwwCQk7IDMyLi42MyBiaXRzCi0rCWlu c3J3aQkkY2FycnksJHQ3LDE2LDAKLSsJc3J3aQkkYzEsJHQ3LDE2Ci0rCi0rCWFkZGMJJHQwLCR0 MCwkdDIKLSsJYWRkZQkkdDQsJHQ0LCR0MwotKwlhZGR6ZQkkY2FycnksJGNhcnJ5Ci0rCWFkZHpl CSRjMSwkYzEKLSsJIHN0dwkkdDAsNCgkdHApCQk7IHRwW2otMV0KLSsJIHN0dwkkdDQsMCgkdHAp Ci0rCi0rCWx3egkkdDMsYCRGUkFNRSszMmAoJHNwKQk7IHBlcm11dGVkICR0MQotKwlsd3oJJHQy LGAkRlJBTUUrMzZgKCRzcCkJOyBwZXJtdXRlZCAkdDAKLSsJbHd6CSR0NyxgJEZSQU1FKzQwYCgk c3ApCTsgcGVybXV0ZWQgJHQzCi0rCWx3egkkdDYsYCRGUkFNRSs0NGAoJHNwKQk7IHBlcm11dGVk ICR0MgotKwlsd3oJJHQxLGAkRlJBTUUrNDhgKCRzcCkJOyBwZXJtdXRlZCAkdDUKLSsJbHd6CSR0 MCxgJEZSQU1FKzUyYCgkc3ApCTsgcGVybXV0ZWQgJHQ0Ci0rCWx3egkkdDUsYCRGUkFNRSs1NmAo JHNwKQk7IHBlcm11dGVkICR0NwotKwlsd3oJJHQ0LGAkRlJBTUUrNjBgKCRzcCkJOyBwZXJtdXRl ZCAkdDYKLSsKLSsJYWRkYwkkdDIsJHQyLCRjYXJyeQotKwlhZGRlCSR0MywkdDMsJGMxCi0rCXNy d2kJJGNhcnJ5LCR0MiwxNgotKwlpbnNyd2kJJGNhcnJ5LCR0MywxNiwwCi0rCXNyd2kJJGMxLCR0 MywxNgotKwlhZGRjCSR0NiwkdDYsJGNhcnJ5Ci0rCWFkZGUJJHQ3LCR0NywkYzEKLSsJc3J3aQkk Y2FycnksJHQ2LDE2Ci0rCSBpbnNyd2kJJHQyLCR0NiwxNiwwCQk7IDY0Li45NSBiaXRzCi0rCSBs d3oJJHQ2LDIwKCR0cCkKLSsJaW5zcndpCSRjYXJyeSwkdDcsMTYsMAotKwlzcndpCSRjMSwkdDcs MTYKLSsJIGx3enUJJHQ3LDE2KCR0cCkKLSsJYWRkYwkkdDAsJHQwLCRjYXJyeQotKwlhZGRlCSR0 MSwkdDEsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0MCwxNgotKwlpbnNyd2kJJGNhcnJ5LCR0MSwxNiww Ci0rCXNyd2kJJGMxLCR0MSwxNgotKwlhZGRjCSR0NCwkdDQsJGNhcnJ5Ci0rCWFkZGUJJHQ1LCR0 NSwkYzEKLSsJc3J3aQkkY2FycnksJHQ0LDE2Ci0rCSBpbnNyd2kJJHQwLCR0NCwxNiwwCQk7IDk2 Li4xMjcgYml0cwotKwlpbnNyd2kJJGNhcnJ5LCR0NSwxNiwwCi0rCXNyd2kJJGMxLCR0NSwxNgot KwotKwlhZGRjCSR0MiwkdDIsJHQ2Ci0rCWFkZGUJJHQwLCR0MCwkdDcKLSsJIGx3egkkdDcsYCRG UkFNRSs2NGAoJHNwKQotKwkgbHd6CSR0NixgJEZSQU1FKzY4YCgkc3ApCi0rCWFkZHplCSRjYXJy eSwkY2FycnkKLSsJYWRkemUJJGMxLCRjMQotKwkgbHd6CSR0NSxgJEZSQU1FKzcyYCgkc3ApCi0r CSBsd3oJJHQ0LGAkRlJBTUUrNzZgKCRzcCkKLSsKLSsJYWRkYwkkdDYsJHQ2LCRjYXJyeQotKwlh ZGRlCSR0NywkdDcsJGMxCi0rCSBzdHcJJHQyLC00KCR0cCkJCTsgdHBbal0KLSsJIHN0dwkkdDAs LTgoJHRwKQotKwlhZGRjCSR0NiwkdDYsJG92ZgotKwlhZGR6ZQkkdDcsJHQ3Ci0rCXNyd2kJJGNh cnJ5LCR0NiwxNgotKwlpbnNyd2kJJGNhcnJ5LCR0NywxNiwwCi0rCXNyd2kJJGMxLCR0NywxNgot KwlhZGRjCSR0NCwkdDQsJGNhcnJ5Ci0rCWFkZGUJJHQ1LCR0NSwkYzEKLSsKLSsJaW5zcndpCSR0 NiwkdDQsMTYsMAotKwlzcndpCSR0NCwkdDQsMTYKLSsJaW5zcndpCSR0NCwkdDUsMTYsMAotKwlz cndpCSRvdmYsJHQ1LDE2Ci0rCXN0dwkkdDYsNCgkdHApCQk7IHRwW251bS0xXQotKwlzdHcJJHQ0 LDAoJHRwKQotK19fXwotK30KLSskY29kZS49PDxfX187Ci0gCXNsd2kJJHQ3LCRudW0sMgotIAlh ZGRpCSRpLCRpLDgKLSAJc3ViZgkkbmFwX2QsJHQ3LCRuYXBfZAk7IHJld2luZCBwb2ludGVyCi1A QCAtOTk0LDE0ICsxNTI4LDE0IEBAICRjb2RlLj08PF9fXyBpZiAoJFNJWkVfVD09NCk7Ci0gCW10 Y3RyCSRqCi0gCi0gLmFsaWduCTQKLS1Mc3ViOglsZAkkdDAsOCgkdHApCTsgbG9hZCB0cFtqLi5q KzNdIGluIDY0LWJpdCB3b3JkIG9yZGVyCi0tCWxkdQkkdDIsMTYoJHRwKQotK0xzdWI6CWx3egkk dDAsMTIoJHRwKQk7IGxvYWQgdHBbai4uaiszXSBpbiA2NC1iaXQgd29yZCBvcmRlcgotKwlsd3oJ JHQxLDgoJHRwKQotKwlsd3oJJHQyLDIwKCR0cCkKLSsJbHd6dQkkdDMsMTYoJHRwKQotIAlsd3oJ JHQ0LDQoJG5wKQk7IGxvYWQgbnBbai4uaiszXSBpbiAzMi1iaXQgd29yZCBvcmRlcgotIAlsd3oJ JHQ1LDgoJG5wKQotIAlsd3oJJHQ2LDEyKCRucCkKLSAJbHd6dQkkdDcsMTYoJG5wKQotLQlleHRy ZGkJJHQxLCR0MCwzMiwwCi0tCWV4dHJkaQkkdDMsJHQyLDMyLDAKLSAJc3ViZmUJJHQ0LCR0NCwk dDAJOyB0cFtqXS1ucFtqXQotIAkgc3R3CSR0MCw0KCRhcCkJOyBzYXZlIHRwW2ouLmorM10gaW4g MzItYml0IHdvcmQgb3JkZXIKLSAJc3ViZmUJJHQ1LCR0NSwkdDEJOyB0cFtqKzFdLW5wW2orMV0K LUBAIC0xMDUyLDYgKzE1ODYsOSBAQCBfX18KLSAkY29kZS49PDxfX187Ci0gCSRQT1AJJGksMCgk c3ApCi0gCWxpCXIzLDEJOyBzaWduYWwgImhhbmRsZWQiCi0rCSRQT1AJcjE5LGAtMTIqOC0xMyok U0laRV9UYCgkaSkKLSsJJFBPUAlyMjAsYC0xMio4LTEyKiRTSVpFX1RgKCRpKQotKwkkUE9QCXIy MSxgLTEyKjgtMTEqJFNJWkVfVGAoJGkpCi0gCSRQT1AJcjIyLGAtMTIqOC0xMCokU0laRV9UYCgk aSkKLSAJJFBPUAlyMjMsYC0xMio4LTkqJFNJWkVfVGAoJGkpCi0gCSRQT1AJcjI0LGAtMTIqOC04 KiRTSVpFX1RgKCRpKQotQEAgLTEwNzcsOCArMTYxNCw5IEBAICRjb2RlLj08PF9fXzsKLSAJbXIJ JHNwLCRpCi0gCWJscgotIAkubG9uZwkwCi0tCS5ieXRlCTAsMTIsNCwwLDB4OGMsMTAsNiwwCi0r CS5ieXRlCTAsMTIsNCwwLDB4OGMsMTMsNiwwCi0gCS5sb25nCTAKLSsuc2l6ZQkuJGZuYW1lLC4t LiRmbmFtZQotIAotIC5hc2NpeiAgIk1vbnRnb21lcnkgTXVsdGlwbGljYXRpb24gZm9yIFBQQzY0 LCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgotIF9fXwotZGlmZiAtLWdpdCBh L2NyeXB0by9ldnAvZV9hZXMuYyBiL2NyeXB0by9ldnAvZV9hZXMuYwotaW5kZXggMWJmYjVkOS4u NTExMzdmZCAxMDA2NDQKLS0tLSBhL2NyeXB0by9ldnAvZV9hZXMuYwotKysrIGIvY3J5cHRvL2V2 cC9lX2Flcy5jCi1AQCAtMTUzLDYgKzE1MywyMCBAQCB2b2lkIEFFU194dHNfZGVjcnlwdChjb25z dCBjaGFyICppbnAsY2hhciAqb3V0LHNpemVfdCBsZW4sCi0gCQkJY29uc3QgdW5zaWduZWQgY2hh ciBpdlsxNl0pOwotICNlbmRpZgotIAotKyNpZglkZWZpbmVkKE9QRU5TU0xfQ1BVSURfT0JKKSAm JiAoZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9B UkNIX1BQQykpCi0rIyBpbmNsdWRlICJwcGNfYXJjaC5oIgotKyMgaWZkZWYgVlBBRVNfQVNNCi0r IyAgZGVmaW5lIFZQQUVTX0NBUEFCTEUJKE9QRU5TU0xfcHBjY2FwX1AgJiBQUENfQUxUSVZFQykK LSsjIGVuZGlmCi0rIyBkZWZpbmUgSFdBRVNfQ0FQQUJMRQkoT1BFTlNTTF9wcGNjYXBfUCAmIFBQ Q19DUllQVE8yMDcpCi0rIyBkZWZpbmUgSFdBRVNfc2V0X2VuY3J5cHRfa2V5IGFlc19wOF9zZXRf ZW5jcnlwdF9rZXkKLSsjIGRlZmluZSBIV0FFU19zZXRfZGVjcnlwdF9rZXkgYWVzX3A4X3NldF9k ZWNyeXB0X2tleQotKyMgZGVmaW5lIEhXQUVTX2VuY3J5cHQgYWVzX3A4X2VuY3J5cHQKLSsjIGRl ZmluZSBIV0FFU19kZWNyeXB0IGFlc19wOF9kZWNyeXB0Ci0rIyBkZWZpbmUgSFdBRVNfY2JjX2Vu Y3J5cHQgYWVzX3A4X2NiY19lbmNyeXB0Ci0rIyBkZWZpbmUgSFdBRVNfY3RyMzJfZW5jcnlwdF9i bG9ja3MgYWVzX3A4X2N0cjMyX2VuY3J5cHRfYmxvY2tzCi0rI2VuZGlmCi0rCi0gI2lmCWRlZmlu ZWQoQUVTX0FTTSkgJiYgIWRlZmluZWQoSTM4Nl9PTkxZKSAmJgkoICBcCi0gCSgoZGVmaW5lZChf X2kzODYpCXx8IGRlZmluZWQoX19pMzg2X18pCXx8IFwKLSAJICBkZWZpbmVkKF9NX0lYODYpKSAm JiBkZWZpbmVkKE9QRU5TU0xfSUEzMl9TU0UyKSl8fCBcCi1kaWZmIC0tZ2l0IGEvY3J5cHRvL21v ZGVzL01ha2VmaWxlIGIvY3J5cHRvL21vZGVzL01ha2VmaWxlCi1pbmRleCBjODI1YjEyLi5lNjg0 ZTAyIDEwMDY0NAotLS0tIGEvY3J5cHRvL21vZGVzL01ha2VmaWxlCi0rKysgYi9jcnlwdG8vbW9k ZXMvTWFrZWZpbGUKLUBAIC01Niw2ICs1NiwxMCBAQCBnaGFzaC1hbHBoYS5zOglhc20vZ2hhc2gt YWxwaGEucGwKLSAJJChQRVJMKSAkPCB8ICQoQ0MpIC1FIC0gfCB0ZWUgJEAgPiAvZGV2L251bGwK LSBnaGFzaC1wYXJpc2MuczoJYXNtL2doYXNoLXBhcmlzYy5wbAotIAkkKFBFUkwpIGFzbS9naGFz aC1wYXJpc2MucGwgJChQRVJMQVNNX1NDSEVNRSkgJEAKLStnaGFzaHY4LWFybXguUzoJYXNtL2do YXNodjgtYXJteC5wbAotKwkkKFBFUkwpIGFzbS9naGFzaHY4LWFybXgucGwgJChQRVJMQVNNX1ND SEVNRSkgJEAKLStnaGFzaHA4LXBwYy5zOglhc20vZ2hhc2hwOC1wcGMucGwKLSsJJChQRVJMKSBh c20vZ2hhc2hwOC1wcGMucGwgJChQRVJMQVNNX1NDSEVNRSkgJEAKLSAKLSAjIEdOVSBtYWtlICJj YXRjaCBhbGwiCi0gZ2hhc2gtJS5TOglhc20vZ2hhc2gtJS5wbDsJJChQRVJMKSAkPCAkKFBFUkxB U01fU0NIRU1FKSAkQAotZGlmZiAtLWdpdCBhL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2hwOC1wcGMu cGwgYi9jcnlwdG8vbW9kZXMvYXNtL2doYXNocDgtcHBjLnBsCi1uZXcgZmlsZSBtb2RlIDEwMDc1 NQotaW5kZXggMDAwMDAwMC4uZTc2YTU4YwotLS0tIC9kZXYvbnVsbAotKysrIGIvY3J5cHRvL21v ZGVzL2FzbS9naGFzaHA4LXBwYy5wbAotQEAgLTAsMCArMSwyMzQgQEAKLSsjIS91c3IvYmluL2Vu diBwZXJsCi0rIwotKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8 YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0aGUgT3BlblNTTAotKyMgcHJvamVjdC4gVGhlIG1vZHVs ZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAotKyMgQ1JZUFRP R0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRo ZXIKLSsjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dh bXMvLgotKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLSsjCi0rIyBHSEFTSCBmb3IgZm9yIFBvd2VySVNBIHYyLjA3 LgotKyMKLSsjIEp1bHkgMjAxNAotKyMKLSsjIEFjY3VyYXRlIHBlcmZvcm1hbmNlIG1lYXN1cmVt ZW50cyBhcmUgcHJvYmxlbWF0aWMsIGJlY2F1c2UgaXQncwotKyMgYWx3YXlzIHZpcnR1YWxpemVk IHNldHVwIHdpdGggcG9zc2libHkgdGhyb3R0bGVkIHByb2Nlc3Nvci4KLSsjIFJlbGF0aXZlIGNv bXBhcmlzb24gaXMgdGhlcmVmb3JlIG1vcmUgaW5mb3JtYXRpdmUuIFRoaXMgaW5pdGlhbAotKyMg dmVyc2lvbiBpcyB+Mi4xeCBzbG93ZXIgdGhhbiBoYXJkd2FyZS1hc3Npc3RlZCBBRVMtMTI4LUNU UiwgfjEyeAotKyMgZmFzdGVyIHRoYW4gIjQtYml0IiBpbnRlZ2VyLW9ubHkgY29tcGlsZXItZ2Vu ZXJhdGVkIDY0LWJpdCBjb2RlLgotKyMgIkluaXRpYWwgdmVyc2lvbiIgbWVhbnMgdGhhdCB0aGVy ZSBpcyByb29tIGZvciBmdXRoZXIgaW1wcm92ZW1lbnQuCi0rCi0rJGZsYXZvdXI9c2hpZnQ7Ci0r JG91dHB1dCA9c2hpZnQ7Ci0rCi0raWYgKCRmbGF2b3VyID1+IC82NC8pIHsKLSsJJFNJWkVfVD04 OwotKwkkTFJTQVZFPTIqJFNJWkVfVDsKLSsJJFNUVT0ic3RkdSI7Ci0rCSRQT1A9ImxkIjsKLSsJ JFBVU0g9InN0ZCI7Ci0rfSBlbHNpZiAoJGZsYXZvdXIgPX4gLzMyLykgewotKwkkU0laRV9UPTQ7 Ci0rCSRMUlNBVkU9JFNJWkVfVDsKLSsJJFNUVT0ic3R3dSI7Ci0rCSRQT1A9Imx3eiI7Ci0rCSRQ VVNIPSJzdHciOwotK30gZWxzZSB7IGRpZSAibm9uc2Vuc2UgJGZsYXZvdXIiOyB9Ci0rCi0rJDAg PX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKLSsoICR4bGF0ZT0iJHtkaXJ9cHBj LXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlICkgb3IKLSsoICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVy bGFzbS9wcGMteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUpIG9yCi0rZGllICJjYW4ndCBsb2NhdGUg cHBjLXhsYXRlLnBsIjsKLSsKLStvcGVuIFNURE9VVCwifCAkXlggJHhsYXRlICRmbGF2b3VyICRv dXRwdXQiIHx8IGRpZSAiY2FuJ3QgY2FsbCAkeGxhdGU6ICQhIjsKLSsKLStteSAoJFhpcCwkSHRi bCwkaW5wLCRsZW4pPW1hcCgiciRfIiwoMy4uNikpOwkjIGFyZ3VtZW50IGJsb2NrCi0rCi0rbXkg KCRYbCwkWG0sJFhoLCRJTik9bWFwKCJ2JF8iLCgwLi4zKSk7Ci0rbXkgKCR6ZXJvLCR0MCwkdDEs JHQyLCR4QzIsJEgsJEhoLCRIbCwkbGVtYXNrKT1tYXAoInYkXyIsKDQuLjEyKSk7Ci0rbXkgJHZy c2F2ZT0icjEyIjsKLSsKLSskY29kZT08PF9fXzsKLSsubWFjaGluZQkiYW55IgotKwotKy50ZXh0 Ci0rCi0rLmdsb2JsCS5nY21faW5pdF9wOAotKy5hbGlnbgk1Ci0rLmdjbV9pbml0X3A4OgotKwls aXMJCXIwLDB4ZmZmMAotKwlsaQkJcjgsMHgxMAotKwltZnNwcgkJJHZyc2F2ZSwyNTYKLSsJbGkJ CXI5LDB4MjAKLSsJbXRzcHIJCTI1NixyMAotKwlsaQkJcjEwLDB4MzAKLSsJbHZ4X3UJCSRILDAs cjQJCQkjIGxvYWQgSAotKwotKwl2c3BsdGlzYgkkeEMyLC0xNgkJIyAweGYwCi0rCXZzcGx0aXNi CSR0MCwxCQkJIyBvbmUKLSsJdmFkZHVibQkJJHhDMiwkeEMyLCR4QzIJCSMgMHhlMAotKwl2eG9y CQkkemVybywkemVybywkemVybwotKwl2b3IJCSR4QzIsJHhDMiwkdDAJCSMgMHhlMQotKwl2c2xk b2kJCSR4QzIsJHhDMiwkemVybywxNQkjIDB4ZTEuLi4KLSsJdnNsZG9pCQkkdDEsJHplcm8sJHQw LDEJCSMgLi4uMQotKwl2YWRkdWJtCQkkeEMyLCR4QzIsJHhDMgkJIyAweGMyLi4uCi0rCXZzcGx0 aXNiCSR0Miw3Ci0rCXZvcgkJJHhDMiwkeEMyLCR0MQkJIyAweGMyLi4uLjAxCi0rCXZzcGx0YgkJ JHQxLCRILDAJCSMgbW9zdCBzaWduaWZpY2FudCBieXRlCi0rCXZzbAkJJEgsJEgsJHQwCQkjIEg8 PD0xCi0rCXZzcmFiCQkkdDEsJHQxLCR0MgkJIyBicm9hZGNhc3QgY2FycnkgYml0Ci0rCXZhbmQJ CSR0MSwkdDEsJHhDMgotKwl2eG9yCQkkSCwkSCwkdDEJCSMgdHdpc3RlZCBICi0rCi0rCXZzbGRv aQkJJEgsJEgsJEgsOAkJIyB0d2lzdCBldmVuIG1vcmUgLi4uCi0rCXZzbGRvaQkJJHhDMiwkemVy bywkeEMyLDgJIyAweGMyLjAKLSsJdnNsZG9pCQkkSGwsJHplcm8sJEgsOAkJIyAuLi4gYW5kIHNw bGl0Ci0rCXZzbGRvaQkJJEhoLCRILCR6ZXJvLDgKLSsKLSsJc3R2eF91CQkkeEMyLDAscjMJCSMg c2F2ZSBwcmUtY29tcHV0ZWQgdGFibGUKLSsJc3R2eF91CQkkSGwscjgscjMKLSsJc3R2eF91CQkk SCwgcjkscjMKLSsJc3R2eF91CQkkSGgscjEwLHIzCi0rCi0rCW10c3ByCQkyNTYsJHZyc2F2ZQot KwlibHIKLSsJLmxvbmcJCTAKLSsJLmJ5dGUJCTAsMTIsMHgxNCwwLDAsMCwyLDAKLSsJLmxvbmcJ CTAKLSsuc2l6ZQkuZ2NtX2luaXRfcDgsLi0uZ2NtX2luaXRfcDgKLSsKLSsuZ2xvYmwJLmdjbV9n bXVsdF9wOAotKy5hbGlnbgk1Ci0rLmdjbV9nbXVsdF9wODoKLSsJbGlzCQlyMCwweGZmZjgKLSsJ bGkJCXI4LDB4MTAKLSsJbWZzcHIJCSR2cnNhdmUsMjU2Ci0rCWxpCQlyOSwweDIwCi0rCW10c3By CQkyNTYscjAKLSsJbGkJCXIxMCwweDMwCi0rCWx2eF91CQkkSU4sMCwkWGlwCQkjIGxvYWQgWGkK LSsKLSsJbHZ4X3UJCSRIbCxyOCwkSHRibAkJIyBsb2FkIHByZS1jb21wdXRlZCB0YWJsZQotKwkg bGU/bHZzbAkkbGVtYXNrLHIwLHIwCi0rCWx2eF91CQkkSCwgcjksJEh0YmwKLSsJIGxlP3ZzcGx0 aXNiCSR0MCwweDA3Ci0rCWx2eF91CQkkSGgscjEwLCRIdGJsCi0rCSBsZT92eG9yCSRsZW1hc2ss JGxlbWFzaywkdDAKLSsJbHZ4X3UJCSR4QzIsMCwkSHRibAotKwkgbGU/dnBlcm0JJElOLCRJTiwk SU4sJGxlbWFzawotKwl2eG9yCQkkemVybywkemVybywkemVybwotKwotKwl2cG1zdW1kCQkkWGws JElOLCRIbAkJIyBILmxv77+9WGkubG8KLSsJdnBtc3VtZAkJJFhtLCRJTiwkSAkJIyBILmhp77+9 WGkubG8rSC5sb++/vVhpLmhpCi0rCXZwbXN1bWQJCSRYaCwkSU4sJEhoCQkjIEguaGnvv71YaS5o aQotKwotKwl2cG1zdW1kCQkkdDIsJFhsLCR4QzIJCSMgMXN0IHBoYXNlCi0rCi0rCXZzbGRvaQkJ JHQwLCRYbSwkemVybyw4Ci0rCXZzbGRvaQkJJHQxLCR6ZXJvLCRYbSw4Ci0rCXZ4b3IJCSRYbCwk WGwsJHQwCi0rCXZ4b3IJCSRYaCwkWGgsJHQxCi0rCi0rCXZzbGRvaQkJJFhsLCRYbCwkWGwsOAot Kwl2eG9yCQkkWGwsJFhsLCR0MgotKwotKwl2c2xkb2kJCSR0MSwkWGwsJFhsLDgJCSMgMm5kIHBo YXNlCi0rCXZwbXN1bWQJCSRYbCwkWGwsJHhDMgotKwl2eG9yCQkkdDEsJHQxLCRYaAotKwl2eG9y CQkkWGwsJFhsLCR0MQotKwotKwlsZT92cGVybQkkWGwsJFhsLCRYbCwkbGVtYXNrCi0rCXN0dnhf dQkJJFhsLDAsJFhpcAkJIyB3cml0ZSBvdXQgWGkKLSsKLSsJbXRzcHIJCTI1NiwkdnJzYXZlCi0r CWJscgotKwkubG9uZwkJMAotKwkuYnl0ZQkJMCwxMiwweDE0LDAsMCwwLDIsMAotKwkubG9uZwkJ MAotKy5zaXplCS5nY21fZ211bHRfcDgsLi0uZ2NtX2dtdWx0X3A4Ci0rCi0rLmdsb2JsCS5nY21f Z2hhc2hfcDgKLSsuYWxpZ24JNQotKy5nY21fZ2hhc2hfcDg6Ci0rCWxpcwkJcjAsMHhmZmY4Ci0r CWxpCQlyOCwweDEwCi0rCW1mc3ByCQkkdnJzYXZlLDI1NgotKwlsaQkJcjksMHgyMAotKwltdHNw cgkJMjU2LHIwCi0rCWxpCQlyMTAsMHgzMAotKwlsdnhfdQkJJFhsLDAsJFhpcAkJIyBsb2FkIFhp Ci0rCi0rCWx2eF91CQkkSGwscjgsJEh0YmwJCSMgbG9hZCBwcmUtY29tcHV0ZWQgdGFibGUKLSsJ IGxlP2x2c2wJJGxlbWFzayxyMCxyMAotKwlsdnhfdQkJJEgsIHI5LCRIdGJsCi0rCSBsZT92c3Bs dGlzYgkkdDAsMHgwNwotKwlsdnhfdQkJJEhoLHIxMCwkSHRibAotKwkgbGU/dnhvcgkkbGVtYXNr LCRsZW1hc2ssJHQwCi0rCWx2eF91CQkkeEMyLDAsJEh0YmwKLSsJIGxlP3ZwZXJtCSRYbCwkWGws JFhsLCRsZW1hc2sKLSsJdnhvcgkJJHplcm8sJHplcm8sJHplcm8KLSsKLSsJbHZ4X3UJCSRJTiww LCRpbnAKLSsJYWRkaQkJJGlucCwkaW5wLDE2Ci0rCXN1YmkJCSRsZW4sJGxlbiwxNgotKwkgbGU/ dnBlcm0JJElOLCRJTiwkSU4sJGxlbWFzawotKwl2eG9yCQkkSU4sJElOLCRYbAotKwliCQlMb29w Ci0rCi0rLmFsaWduCTUKLStMb29wOgotKwkgc3ViaWMJCSRsZW4sJGxlbiwxNgotKwl2cG1zdW1k CQkkWGwsJElOLCRIbAkJIyBILmxv77+9WGkubG8KLSsJIHN1YmZlLgkJcjAscjAscjAJCSMgYm9y cm93Py0xOjAKLSsJdnBtc3VtZAkJJFhtLCRJTiwkSAkJIyBILmhp77+9WGkubG8rSC5sb++/vVhp LmhpCi0rCSBhbmQJCXIwLHIwLCRsZW4KLSsJdnBtc3VtZAkJJFhoLCRJTiwkSGgJCSMgSC5oae+/ vVhpLmhpCi0rCSBhZGQJCSRpbnAsJGlucCxyMAotKwotKwl2cG1zdW1kCQkkdDIsJFhsLCR4QzIJ CSMgMXN0IHBoYXNlCi0rCi0rCXZzbGRvaQkJJHQwLCRYbSwkemVybyw4Ci0rCXZzbGRvaQkJJHQx LCR6ZXJvLCRYbSw4Ci0rCXZ4b3IJCSRYbCwkWGwsJHQwCi0rCXZ4b3IJCSRYaCwkWGgsJHQxCi0r Ci0rCXZzbGRvaQkJJFhsLCRYbCwkWGwsOAotKwl2eG9yCQkkWGwsJFhsLCR0MgotKwkgbHZ4X3UJ CSRJTiwwLCRpbnAKLSsJIGFkZGkJCSRpbnAsJGlucCwxNgotKwotKwl2c2xkb2kJCSR0MSwkWGws JFhsLDgJCSMgMm5kIHBoYXNlCi0rCXZwbXN1bWQJCSRYbCwkWGwsJHhDMgotKwkgbGU/dnBlcm0J JElOLCRJTiwkSU4sJGxlbWFzawotKwl2eG9yCQkkdDEsJHQxLCRYaAotKwl2eG9yCQkkSU4sJElO LCR0MQotKwl2eG9yCQkkSU4sJElOLCRYbAotKwliZXEJCUxvb3AJCQkjIGRpZCAkbGVuLT0xNiBi b3Jyb3c/Ci0rCi0rCXZ4b3IJCSRYbCwkWGwsJHQxCi0rCWxlP3ZwZXJtCSRYbCwkWGwsJFhsLCRs ZW1hc2sKLSsJc3R2eF91CQkkWGwsMCwkWGlwCQkjIHdyaXRlIG91dCBYaQotKwotKwltdHNwcgkJ MjU2LCR2cnNhdmUKLSsJYmxyCi0rCS5sb25nCQkwCi0rCS5ieXRlCQkwLDEyLDB4MTQsMCwwLDAs NCwwCi0rCS5sb25nCQkwCi0rLnNpemUJLmdjbV9naGFzaF9wOCwuLS5nY21fZ2hhc2hfcDgKLSsK LSsuYXNjaXogICJHSEFTSCBmb3IgUG93ZXJJU0EgMi4wNywgQ1JZUFRPR0FNUyBieSA8YXBwcm9c QG9wZW5zc2wub3JnPiIKLSsuYWxpZ24gIDIKLStfX18KLSsKLStmb3JlYWNoIChzcGxpdCgiXG4i LCRjb2RlKSkgewotKwlpZiAoJGZsYXZvdXIgPX4gL2xlJC9vKSB7CSMgbGl0dGxlLWVuZGlhbgot KwkgICAgcy9sZVw/Ly9vCQlvcgotKwkgICAgcy9iZVw/LyNiZSMvbzsKLSsJfSBlbHNlIHsKLSsJ ICAgIHMvbGVcPy8jbGUjL28Jb3IKLSsJICAgIHMvYmVcPy8vbzsKLSsJfQotKwlwcmludCAkXywi XG4iOwotK30KLSsKLStjbG9zZSBTVERPVVQ7ICMgZW5mb3JjZSBmbHVzaAotZGlmZiAtLWdpdCBh L2NyeXB0by9tb2Rlcy9nY20xMjguYyBiL2NyeXB0by9tb2Rlcy9nY20xMjguYwotaW5kZXggMGU2 ZmY4Yi4uNmY4ZTdlZSAxMDA2NDQKLS0tLSBhL2NyeXB0by9tb2Rlcy9nY20xMjguYwotKysrIGIv Y3J5cHRvL21vZGVzL2djbTEyOC5jCi1AQCAtNjcxLDYgKzY3MSwyMSBAQCB2b2lkIGdjbV9naGFz aF80Yml0X3g4Nih1NjQgWGlbMl0sY29uc3QgdTEyOCBIdGFibGVbMTZdLGNvbnN0IHU4ICppbnAs c2l6ZV90IGxlbgotIHZvaWQgZ2NtX2dtdWx0X25lb24odTY0IFhpWzJdLGNvbnN0IHUxMjggSHRh YmxlWzE2XSk7Ci0gdm9pZCBnY21fZ2hhc2hfbmVvbih1NjQgWGlbMl0sY29uc3QgdTEyOCBIdGFi bGVbMTZdLGNvbnN0IHU4ICppbnAsc2l6ZV90IGxlbik7Ci0gIyAgZW5kaWYKLSsjIGVsaWYgZGVm aW5lZChfX3NwYXJjX18pIHx8IGRlZmluZWQoX19zcGFyYykKLSsjICBpbmNsdWRlICJzcGFyY19h cmNoLmgiCi0rIyAgZGVmaW5lIEdIQVNIX0FTTV9TUEFSQwotKyMgIGRlZmluZSBHQ01fRlVOQ1JF Rl80QklUCi0rZXh0ZXJuIHVuc2lnbmVkIGludCBPUEVOU1NMX3NwYXJjdjljYXBfUFtdOwotK3Zv aWQgZ2NtX2luaXRfdmlzMyh1MTI4IEh0YWJsZVsxNl0sY29uc3QgdTY0IFhpWzJdKTsKLSt2b2lk IGdjbV9nbXVsdF92aXMzKHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJsZVsxNl0pOwotK3ZvaWQg Z2NtX2doYXNoX3ZpczModTY0IFhpWzJdLGNvbnN0IHUxMjggSHRhYmxlWzE2XSxjb25zdCB1OCAq aW5wLHNpemVfdCBsZW4pOwotKyNlbGlmIGRlZmluZWQoT1BFTlNTTF9DUFVJRF9PQkopICYmIChk ZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX0FSQ0hf UFBDKSkKLSsjICBpbmNsdWRlICJwcGNfYXJjaC5oIgotKyMgIGRlZmluZSBHSEFTSF9BU01fUFBD Ci0rIyAgZGVmaW5lIEdDTV9GVU5DUkVGXzRCSVQKLSt2b2lkIGdjbV9pbml0X3A4KHUxMjggSHRh YmxlWzE2XSxjb25zdCB1NjQgWGlbMl0pOwotK3ZvaWQgZ2NtX2dtdWx0X3A4KHU2NCBYaVsyXSxj b25zdCB1MTI4IEh0YWJsZVsxNl0pOwotK3ZvaWQgZ2NtX2doYXNoX3A4KHU2NCBYaVsyXSxjb25z dCB1MTI4IEh0YWJsZVsxNl0sY29uc3QgdTggKmlucCxzaXplX3QgbGVuKTsKLSAjIGVuZGlmCi0g I2VuZGlmCi0gCi1AQCAtNzQ3LDYgKzc2MiwxNiBAQCB2b2lkIENSWVBUT19nY20xMjhfaW5pdChH Q00xMjhfQ09OVEVYVCAqY3R4LHZvaWQgKmtleSxibG9jazEyOF9mIGJsb2NrKQotIAkJY3R4LT5n bXVsdCA9IGdjbV9nbXVsdF80Yml0OwotIAkJY3R4LT5naGFzaCA9IGdjbV9naGFzaF80Yml0Owot IAl9Ci0rIyBlbGlmCWRlZmluZWQoR0hBU0hfQVNNX1BQQykKLSsJaWYgKE9QRU5TU0xfcHBjY2Fw X1AgJiBQUENfQ1JZUFRPMjA3KSB7Ci0rCQlnY21faW5pdF9wOChjdHgtPkh0YWJsZSxjdHgtPkgu dSk7Ci0rCQljdHgtPmdtdWx0ID0gZ2NtX2dtdWx0X3A4OwotKwkJY3R4LT5naGFzaCA9IGdjbV9n aGFzaF9wODsKLSsJfSBlbHNlIHsKLSsJCWdjbV9pbml0XzRiaXQoY3R4LT5IdGFibGUsY3R4LT5I LnUpOwotKwkJY3R4LT5nbXVsdCA9IGdjbV9nbXVsdF80Yml0OwotKwkJY3R4LT5naGFzaCA9IGdj bV9naGFzaF80Yml0OwotKwl9Ci0gIyBlbHNlCi0gCWdjbV9pbml0XzRiaXQoY3R4LT5IdGFibGUs Y3R4LT5ILnUpOwotICMgZW5kaWYKLWRpZmYgLS1naXQgYS9jcnlwdG8vcGVybGFzbS9wcGMteGxh dGUucGwgYi9jcnlwdG8vcGVybGFzbS9wcGMteGxhdGUucGwKLWluZGV4IGEzZWRkOTguLmY4OWU4 MTQgMTAwNzU1Ci0tLS0gYS9jcnlwdG8vcGVybGFzbS9wcGMteGxhdGUucGwKLSsrKyBiL2NyeXB0 by9wZXJsYXNtL3BwYy14bGF0ZS5wbAotQEAgLTI3LDcgKzI3LDggQEAgbXkgJGdsb2JsID0gc3Vi IHsKLSAJL29zeC8JCSYmIGRvIHsgJG5hbWUgPSAiXyRuYW1lIjsKLSAJCQkJbGFzdDsKLSAJCQkg ICAgICB9OwotLQkvbGludXguKjMyLwkmJiBkbyB7CSRyZXQgLj0gIi5nbG9ibAkkbmFtZVxuIjsK LSsJL2xpbnV4LiooMzJ8NjRsZSkvCi0rCQkJJiYgZG8gewkkcmV0IC49ICIuZ2xvYmwJJG5hbWVc biI7Ci0gCQkJCSRyZXQgLj0gIi50eXBlCSRuYW1lLFxAZnVuY3Rpb24iOwotIAkJCQlsYXN0Owot IAkJCSAgICAgIH07Ci1AQCAtMzcsNyArMzgsNiBAQCBteSAkZ2xvYmwgPSBzdWIgewotIAkJCQkk cmV0IC49ICIuYWxpZ24JM1xuIjsKLSAJCQkJJHJldCAuPSAiJG5hbWU6XG4iOwotIAkJCQkkcmV0 IC49ICIucXVhZAkuJG5hbWUsLlRPQy5cQHRvY2Jhc2UsMFxuIjsKLS0JCQkJJHJldCAuPSAiLnNp emUJJG5hbWUsMjRcbiI7Ci0gCQkJCSRyZXQgLj0gIi5wcmV2aW91c1xuIjsKLSAKLSAJCQkJJG5h bWUgPSAiLiRuYW1lIjsKLUBAIC01MCw3ICs1MCw5IEBAIG15ICRnbG9ibCA9IHN1YiB7Ci0gICAg ICRyZXQ7Ci0gfTsKLSBteSAkdGV4dCA9IHN1YiB7Ci0tICAgICgkZmxhdm91ciA9fiAvYWl4Lykg PyAiLmNzZWN0IiA6ICIudGV4dCI7Ci0rICAgIG15ICRyZXQgPSAoJGZsYXZvdXIgPX4gL2FpeC8p ID8gIi5jc2VjdFx0LnRleHRbUFJdLDciIDogIi50ZXh0IjsKLSsgICAgJHJldCA9ICIuYWJpdmVy c2lvbgkyXG4iLiRyZXQJaWYgKCRmbGF2b3VyID1+IC9saW51eC4qNjRsZS8pOwotKyAgICAkcmV0 OwotIH07Ci0gbXkgJG1hY2hpbmUgPSBzdWIgewotICAgICBteSAkanVuayA9IHNoaWZ0OwotQEAg LTYyLDkgKzY0LDEyIEBAIG15ICRtYWNoaW5lID0gc3ViIHsKLSAgICAgIi5tYWNoaW5lCSRhcmNo IjsKLSB9OwotIG15ICRzaXplID0gc3ViIHsKLS0gICAgaWYgKCRmbGF2b3VyID1+IC9saW51eC4q MzIvKQotKyAgICBpZiAoJGZsYXZvdXIgPX4gL2xpbnV4LykKLSAgICAgewlzaGlmdDsKLS0JIi5z aXplCSIgLiBqb2luKCIsIixAXyk7Ci0rCW15ICRuYW1lID0gc2hpZnQ7ICRuYW1lID1+IHN8Xltc LlxfXXx8OwotKwlteSAkcmV0ICA9ICIuc2l6ZQkkbmFtZSwuLSIuKCRmbGF2b3VyPX4vNjQkLz8i LiI6IiIpLiRuYW1lOwotKwkkcmV0IC49ICJcbi5zaXplCS4kbmFtZSwuLS4kbmFtZSIgaWYgKCRm bGF2b3VyPX4vNjQkLyk7Ci0rCSRyZXQ7Ci0gICAgIH0KLSAgICAgZWxzZQotICAgICB7CSIiOwl9 Ci1AQCAtNzcsNiArODIsMjUgQEAgbXkgJGFzY2l6ID0gc3ViIHsKLSAgICAgZWxzZQotICAgICB7 CSIiOwl9Ci0gfTsKLStteSAkcXVhZCA9IHN1YiB7Ci0rICAgIHNoaWZ0OwotKyAgICBteSBAcmV0 OwotKyAgICBteSAoJGhpLCRsbyk7Ci0rICAgIGZvciAoQF8pIHsKLSsJaWYgKC9eMHgoWzAtOWEt Zl0qPykoWzAtOWEtZl17MSw4fSkkL2lvKQotKwl7ICAkaGk9JDE/IjB4JDEiOiIwIjsgJGxvPSIw eCQyIjsgIH0KLSsJZWxzaWYgKC9eKFswLTldKykkL28pCi0rCXsgICRoaT0kMT4+MzI7ICRsbz0k MSYweGZmZmZmZmZmOyAgfSAjIGVycm9yLXByb25lIHdpdGggMzItYml0IHBlcmwKLSsJZWxzZQot Kwl7ICAkaGk9dW5kZWY7ICRsbz0kXzsgfQotKwotKwlpZiAoZGVmaW5lZCgkaGkpKQotKwl7ICBw dXNoKEByZXQsJGZsYXZvdXI9fi9sZSQvbz8iLmxvbmdcdCRsbywkaGkiOiIubG9uZ1x0JGhpLCRs byIpOyAgfQotKwllbHNlCi0rCXsgIHB1c2goQHJldCwiLnF1YWQJJGxvIik7ICB9Ci0rICAgIH0K LSsgICAgam9pbigiXG4iLEByZXQpOwotK307Ci0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICMgc2ltcGxpZmllZCBt bmVtb25pY3Mgbm90IGhhbmRsZWQgYnkgYXQgbGVhc3Qgb25lIGFzc2VtYmxlcgotQEAgLTEyMiw2 ICsxNDYsNDYgQEAgbXkgJGV4dHJkaSA9IHN1YiB7Ci0gICAgICRiID0gKCRiKyRuKSY2MzsgJG4g PSA2NC0kbjsKLSAgICAgIglybGRpY2wJJHJhLCRycywkYiwkbiI7Ci0gfTsKLStteSAkdm1yID0g c3ViIHsKLSsgICAgbXkgKCRmLCR2eCwkdnkpID0gQF87Ci0rICAgICIJdm9yCSR2eCwkdnksJHZ5 IjsKLSt9OwotKwotKyMgUG93ZXJJU0EgMi4wNiBzdHVmZgotK3N1YiB2c3htZW1fb3AgewotKyAg ICBteSAoJGYsICR2cnQsICRyYSwgJHJiLCAkb3ApID0gQF87Ci0rICAgICIJLmxvbmcJIi5zcHJp bnRmICIweCVYIiwoMzE8PDI2KXwoJHZydDw8MjEpfCgkcmE8PDE2KXwoJHJiPDwxMSl8KCRvcCoy KzEpOwotK30KLSsjIG1hZGUtdXAgdW5hbGlnbmVkIG1lbW9yeSByZWZlcmVuY2UgQWx0aVZlYy9W TVggaW5zdHJ1Y3Rpb25zCi0rbXkgJGx2eF91CT0gc3ViIHsJdnN4bWVtX29wKEBfLCA4NDQpOyB9 OwkjIGx4dmQyeAotK215ICRzdHZ4X3UJPSBzdWIgewl2c3htZW1fb3AoQF8sIDk3Mik7IH07CSMg c3R4dmQyeAotK215ICRsdmR4X3UJPSBzdWIgewl2c3htZW1fb3AoQF8sIDU4OCk7IH07CSMgbHhz ZHgKLStteSAkc3R2ZHhfdQk9IHN1YiB7CXZzeG1lbV9vcChAXywgNzE2KTsgfTsJIyBzdHhzZHgK LStteSAkbHZ4XzR3CT0gc3ViIHsgdnN4bWVtX29wKEBfLCA3ODApOyB9OwkjIGx4dnc0eAotK215 ICRzdHZ4XzR3CT0gc3ViIHsgdnN4bWVtX29wKEBfLCA5MDgpOyB9OwkjIHN0eHZ3NHgKLSsKLSsj IFBvd2VySVNBIDIuMDcgc3R1ZmYKLStzdWIgdmNyeXB0b19vcCB7Ci0rICAgIG15ICgkZiwgJHZy dCwgJHZyYSwgJHZyYiwgJG9wKSA9IEBfOwotKyAgICAiCS5sb25nCSIuc3ByaW50ZiAiMHglWCIs KDQ8PDI2KXwoJHZydDw8MjEpfCgkdnJhPDwxNil8KCR2cmI8PDExKXwkb3A7Ci0rfQotK215ICR2 Y2lwaGVyCT0gc3ViIHsgdmNyeXB0b19vcChAXywgMTI4OCk7IH07Ci0rbXkgJHZjaXBoZXJsYXN0 CT0gc3ViIHsgdmNyeXB0b19vcChAXywgMTI4OSk7IH07Ci0rbXkgJHZuY2lwaGVyCT0gc3ViIHsg dmNyeXB0b19vcChAXywgMTM1Mik7IH07Ci0rbXkgJHZuY2lwaGVybGFzdD0gc3ViIHsgdmNyeXB0 b19vcChAXywgMTM1Myk7IH07Ci0rbXkgJHZzYm94CT0gc3ViIHsgdmNyeXB0b19vcChAXywgMCwg MTQ4MCk7IH07Ci0rbXkgJHZzaGFzaWdtYWQJPSBzdWIgeyBteSAoJHN0LCRzaXgpPXNwbGljZShA XywtMik7IHZjcnlwdG9fb3AoQF8sICRzdDw8NHwkc2l4LCAxNzMwKTsgfTsKLStteSAkdnNoYXNp Z21hdwk9IHN1YiB7IG15ICgkc3QsJHNpeCk9c3BsaWNlKEBfLC0yKTsgdmNyeXB0b19vcChAXywg JHN0PDw0fCRzaXgsIDE2NjYpOyB9OwotK215ICR2cG1zdW1iCT0gc3ViIHsgdmNyeXB0b19vcChA XywgMTAzMik7IH07Ci0rbXkgJHZwbXN1bWQJPSBzdWIgeyB2Y3J5cHRvX29wKEBfLCAxMjI0KTsg fTsKLStteSAkdnBtc3ViaAk9IHN1YiB7IHZjcnlwdG9fb3AoQF8sIDEwOTYpOyB9OwotK215ICR2 cG1zdW13CT0gc3ViIHsgdmNyeXB0b19vcChAXywgMTE2MCk7IH07Ci0rbXkgJHZhZGR1ZG0JPSBz dWIgeyB2Y3J5cHRvX29wKEBfLCAxOTIpOyAgfTsKLSsKLStteSAkbXRzbGUJPSBzdWIgewotKyAg ICBteSAoJGYsICRhcmcpID0gQF87Ci0rICAgICIJLmxvbmcJIi5zcHJpbnRmICIweCVYIiwoMzE8 PDI2KXwoJGFyZzw8MjEpfCgxNDcqMik7Ci0rfTsKLSAKLSB3aGlsZSgkbGluZT08PikgewotIAot QEAgLTEzOCw3ICsyMDIsMTAgQEAgd2hpbGUoJGxpbmU9PD4pIHsKLSAgICAgewotIAkkbGluZSA9 fiBzfCheW1wuXHddKylcOlxzKnx8OwotIAlteSAkbGFiZWwgPSAkMTsKLS0JcHJpbnRmICIlczoi LCgkR0xPQkFMU3skbGFiZWx9IG9yICRsYWJlbCkgaWYgKCRsYWJlbCk7Ci0rCWlmICgkbGFiZWwp IHsKLSsJICAgIHByaW50ZiAiJXM6IiwoJEdMT0JBTFN7JGxhYmVsfSBvciAkbGFiZWwpOwotKwkg ICAgcHJpbnRmICJcbi5sb2NhbGVudHJ5XHQkR0xPQkFMU3skbGFiZWx9LDAiCWlmICgkR0xPQkFM U3skbGFiZWx9ICYmICRmbGF2b3VyID1+IC9saW51eC4qNjRsZS8pOwotKwl9Ci0gICAgIH0KLSAK LSAgICAgewotQEAgLTE0Nyw3ICsyMTQsNyBAQCB3aGlsZSgkbGluZT08PikgewotIAlteSAkbW5l bW9uaWMgPSAkMjsKLSAJbXkgJGYgPSAkMzsKLSAJbXkgJG9wY29kZSA9IGV2YWwoIlwkJG1uZW1v bmljIik7Ci0tCSRsaW5lID1+IHN8XGJjP1tyZl0oWzAtOV0rKVxifCQxfGcgaWYgKCRjIG5lICIu IiBhbmQgJGZsYXZvdXIgIX4gL29zeC8pOwotKwkkbGluZSA9fiBzL1xiKGM/W3JmXXx2fHZzKShb MC05XSspXGIvJDIvZyBpZiAoJGMgbmUgIi4iIGFuZCAkZmxhdm91ciAhfiAvb3N4Lyk7Ci0gCWlm IChyZWYoJG9wY29kZSkgZXEgJ0NPREUnKSB7ICRsaW5lID0gJiRvcGNvZGUoJGYsc3BsaXQoJywn LCRsaW5lKSk7IH0KLSAJZWxzaWYgKCRtbmVtb25pYykgICAgICAgICAgIHsgJGxpbmUgPSAkYy4k bW5lbW9uaWMuJGYuIlx0Ii4kbGluZTsgfQotICAgICB9Ci1kaWZmIC0tZ2l0IGEvY3J5cHRvL3Bw Y19hcmNoLmggYi9jcnlwdG8vcHBjX2FyY2guaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjExOTJlZGYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2NyeXB0by9wcGNfYXJjaC5o Ci1AQCAtMCwwICsxLDEwIEBACi0rI2lmbmRlZiBfX1BQQ19BUkNIX0hfXwotKyNkZWZpbmUgX19Q UENfQVJDSF9IX18KLSsKLStleHRlcm4gdW5zaWduZWQgaW50IE9QRU5TU0xfcHBjY2FwX1A7Ci0r Ci0rI2RlZmluZSBQUENfRlBVNjQJKDE8PDApCi0rI2RlZmluZSBQUENfQUxUSVZFQwkoMTw8MSkK LSsjZGVmaW5lIFBQQ19DUllQVE8yMDcJKDE8PDIpCi0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEv Y3J5cHRvL3BwY2NhcC5jIGIvY3J5cHRvL3BwY2NhcC5jCi1pbmRleCBmNzFiYTY2Li4xM2MyY2E1 IDEwMDY0NAotLS0tIGEvY3J5cHRvL3BwY2NhcC5jCi0rKysgYi9jcnlwdG8vcHBjY2FwLmMKLUBA IC00LDEzICs0LDE1IEBACi0gI2luY2x1ZGUgPHNldGptcC5oPgotICNpbmNsdWRlIDxzaWduYWwu aD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2lmIGRlZmluZWQoX19saW51eCkgfHwgZGVmaW5l ZChfQUlYKQotKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxj cnlwdG8uaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotIAotLSNkZWZpbmUgUFBDX0ZQVTY0 CSgxPDwwKQotLSNkZWZpbmUgUFBDX0FMVElWRUMJKDE8PDEpCi0rI2luY2x1ZGUgInBwY19hcmNo LmgiCi0gCi0tc3RhdGljIGludCBPUEVOU1NMX3BwY2NhcF9QID0gMDsKLSt1bnNpZ25lZCBpbnQg T1BFTlNTTF9wcGNjYXBfUCA9IDA7Ci0gCi0gc3RhdGljIHNpZ3NldF90IGFsbF9tYXNrZWQ7Ci0g Ci1AQCAtMjIsNyArMjQsNyBAQCBpbnQgYm5fbXVsX21vbnQoQk5fVUxPTkcgKnJwLCBjb25zdCBC Tl9VTE9ORyAqYXAsIGNvbnN0IEJOX1VMT05HICpicCwgY29uc3QgQk5fVQotIAotIAlpZiAoc2l6 ZW9mKHNpemVfdCk9PTQpCi0gCQl7Ci0tI2lmIChkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5l ZChfX01BQ0hfXykpCi0rI2lmIDEgfHwgKGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKF9f TUFDSF9fKSkKLSAJCWlmIChudW0+PTggJiYgKG51bSYzKT09MCAmJiAoT1BFTlNTTF9wcGNjYXBf UCZQUENfRlBVNjQpKQotIAkJCXJldHVybiBibl9tdWxfbW9udF9mcHU2NChycCxhcCxicCxucCxu MCxudW0pOwotICNlbHNlCi1AQCAtNTAsMTEgKzUyLDI4IEBAIGludCBibl9tdWxfbW9udChCTl9V TE9ORyAqcnAsIGNvbnN0IEJOX1VMT05HICphcCwgY29uc3QgQk5fVUxPTkcgKmJwLCBjb25zdCBC Tl9VCi0gCX0KLSAjZW5kaWYKLSAKLSt2b2lkIHNoYTI1Nl9ibG9ja19wOCh2b2lkICpjdHgsY29u c3Qgdm9pZCAqaW5wLHNpemVfdCBsZW4pOwotK3ZvaWQgc2hhMjU2X2Jsb2NrX3BwYyh2b2lkICpj dHgsY29uc3Qgdm9pZCAqaW5wLHNpemVfdCBsZW4pOwotK3ZvaWQgc2hhMjU2X2Jsb2NrX2RhdGFf b3JkZXIodm9pZCAqY3R4LGNvbnN0IHZvaWQgKmlucCxzaXplX3QgbGVuKQotKwl7Ci0rCU9QRU5T U0xfcHBjY2FwX1AmUFBDX0NSWVBUTzIwNz8Jc2hhMjU2X2Jsb2NrX3A4KGN0eCxpbnAsbGVuKToK LSsJCQkJCXNoYTI1Nl9ibG9ja19wcGMoY3R4LGlucCxsZW4pOwotKwl9Ci0rCi0rdm9pZCBzaGE1 MTJfYmxvY2tfcDgodm9pZCAqY3R4LGNvbnN0IHZvaWQgKmlucCxzaXplX3QgbGVuKTsKLSt2b2lk IHNoYTUxMl9ibG9ja19wcGModm9pZCAqY3R4LGNvbnN0IHZvaWQgKmlucCxzaXplX3QgbGVuKTsK LSt2b2lkIHNoYTUxMl9ibG9ja19kYXRhX29yZGVyKHZvaWQgKmN0eCxjb25zdCB2b2lkICppbnAs c2l6ZV90IGxlbikKLSsJewotKwlPUEVOU1NMX3BwY2NhcF9QJlBQQ19DUllQVE8yMDc/CXNoYTUx Ml9ibG9ja19wOChjdHgsaW5wLGxlbik6Ci0rCQkJCQlzaGE1MTJfYmxvY2tfcHBjKGN0eCxpbnAs bGVuKTsKLSsJfQotKwotIHN0YXRpYyBzaWdqbXBfYnVmIGlsbF9qbXA7Ci0gc3RhdGljIHZvaWQg aWxsX2hhbmRsZXIgKGludCBzaWcpIHsgc2lnbG9uZ2ptcChpbGxfam1wLHNpZyk7IH0KLSAKLSB2 b2lkIE9QRU5TU0xfcHBjNjRfcHJvYmUodm9pZCk7Ci0gdm9pZCBPUEVOU1NMX2FsdGl2ZWNfcHJv YmUodm9pZCk7Ci0rdm9pZCBPUEVOU1NMX2NyeXB0bzIwN19wcm9iZSh2b2lkKTsKLSAKLSB2b2lk IE9QRU5TU0xfY3B1aWRfc2V0dXAodm9pZCkKLSAJewotQEAgLTg1LDEyICsxMDQsMTQgQEAgdm9p ZCBPUEVOU1NMX2NwdWlkX3NldHVwKHZvaWQpCi0gCU9QRU5TU0xfcHBjY2FwX1AgPSAwOwotIAot ICNpZiBkZWZpbmVkKF9BSVgpCi0tCWlmIChzaXplb2Yoc2l6ZV90KT09NAotKwlpZiAoc2l6ZW9m KHNpemVfdCk9PTQpCi0rCQl7Ci0rCQlzdHJ1Y3QgdXRzbmFtZSB1dHM7Ci0gIyBpZiBkZWZpbmVk KF9TQ19BSVhfS0VSTkVMX0JJVE1PREUpCi0tCSAgICAmJiBzeXNjb25mKF9TQ19BSVhfS0VSTkVM X0JJVE1PREUpIT02NAotKwkJaWYgKHN5c2NvbmYoX1NDX0FJWF9LRVJORUxfQklUTU9ERSkhPTY0 KQlyZXR1cm47Ci0gIyBlbmRpZgotLQkgICApCi0tCQlyZXR1cm47Ci0rCQlpZiAodW5hbWUoJnV0 cykhPTAgfHwgYXRvaSh1dHMudmVyc2lvbik8NikJcmV0dXJuOwotKwkJfQotICNlbmRpZgotIAot IAltZW1zZXQoJmlsbF9hY3QsMCxzaXplb2YoaWxsX2FjdCkpOwotQEAgLTEwMiw2ICsxMjMsMTAg QEAgdm9pZCBPUEVOU1NMX2NwdWlkX3NldHVwKHZvaWQpCi0gCi0gCWlmIChzaXplb2Yoc2l6ZV90 KT09NCkKLSAJCXsKLSsjaWZkZWYgX19saW51eAotKwkJc3RydWN0IHV0c25hbWUgdXRzOwotKwkJ aWYgKHVuYW1lKCZ1dHMpPT0wICYmIHN0cmNtcCh1dHMubWFjaGluZSwicHBjNjQiKT09MCkKLSsj ZW5kaWYKLSAJCWlmIChzaWdzZXRqbXAoaWxsX2ptcCwxKSA9PSAwKQotIAkJCXsKLSAJCQlPUEVO U1NMX3BwYzY0X3Byb2JlKCk7Ci1AQCAtMTE5LDYgKzE0NCwxMSBAQCB2b2lkIE9QRU5TU0xfY3B1 aWRfc2V0dXAodm9pZCkKLSAJCXsKLSAJCU9QRU5TU0xfYWx0aXZlY19wcm9iZSgpOwotIAkJT1BF TlNTTF9wcGNjYXBfUCB8PSBQUENfQUxUSVZFQzsKLSsJCWlmIChzaWdzZXRqbXAoaWxsX2ptcCwx KSA9PSAwKQotKwkJCXsKLSsJCQlPUEVOU1NMX2NyeXB0bzIwN19wcm9iZSgpOwotKwkJCU9QRU5T U0xfcHBjY2FwX1AgfD0gUFBDX0NSWVBUTzIwNzsKLSsJCQl9Ci0gCQl9Ci0gCi0gCXNpZ2FjdGlv biAoU0lHSUxMLCZpbGxfb2FjdCxOVUxMKTsKLWRpZmYgLS1naXQgYS9jcnlwdG8vcHBjY3B1aWQu cGwgYi9jcnlwdG8vcHBjY3B1aWQucGwKLWluZGV4IDRiYTczNmEuLjU2Y2M4NTEgMTAwNzU1Ci0t LS0gYS9jcnlwdG8vcHBjY3B1aWQucGwKLSsrKyBiL2NyeXB0by9wcGNjcHVpZC5wbAotQEAgLTMx LDYgKzMxLDcgQEAgJGNvZGU9PDxfX187Ci0gCWJscgotIAkubG9uZwkwCi0gCS5ieXRlCTAsMTIs MHgxNCwwLDAsMCwwLDAKLSsuc2l6ZQkuT1BFTlNTTF9wcGM2NF9wcm9iZSwuLS5PUEVOU1NMX3Bw YzY0X3Byb2JlCi0gCi0gLmdsb2JsCS5PUEVOU1NMX2FsdGl2ZWNfcHJvYmUKLSAuYWxpZ24JNAot QEAgLTM5LDYgKzQwLDE3IEBAICRjb2RlPTw8X19fOwotIAlibHIKLSAJLmxvbmcJMAotIAkuYnl0 ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0rLnNpemUJLk9QRU5TU0xfYWx0aXZlY19wcm9iZSwuLS4u T1BFTlNTTF9hbHRpdmVjX3Byb2JlCi0rCi0rLmdsb2JsCS5PUEVOU1NMX2NyeXB0bzIwN19wcm9i ZQotKy5hbGlnbgk0Ci0rLk9QRU5TU0xfY3J5cHRvMjA3X3Byb2JlOgotKwlsdnhfdQl2MCwwLHIx Ci0rCXZjaXBoZXIJdjAsdjAsdjAKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiwweDE0 LDAsMCwwLDAsMAotKy5zaXplCS5PUEVOU1NMX2NyeXB0bzIwN19wcm9iZSwuLS5PUEVOU1NMX2Ny eXB0bzIwN19wcm9iZQotIAotIC5nbG9ibAkuT1BFTlNTTF93aXBlX2NwdQotIC5hbGlnbgk0Ci1A QCAtNzEsNiArODMsNyBAQCAkY29kZT08PF9fXzsKLSAJYmxyCi0gCS5sb25nCTAKLSAJLmJ5dGUJ MCwxMiwweDE0LDAsMCwwLDAsMAotKy5zaXplCS5PUEVOU1NMX3dpcGVfY3B1LC4tLk9QRU5TU0xf d2lwZV9jcHUKLSAKLSAuZ2xvYmwJLk9QRU5TU0xfYXRvbWljX2FkZAotIC5hbGlnbgk0Ci1AQCAt ODQsNiArOTcsNyBAQCBMYWRkOglsd2FyeAlyNSwwLHIzCi0gCS5sb25nCTAKLSAJLmJ5dGUJMCwx MiwweDE0LDAsMCwwLDIsMAotIAkubG9uZwkwCi0rLnNpemUJLk9QRU5TU0xfYXRvbWljX2FkZCwu LS5PUEVOU1NMX2F0b21pY19hZGQKLSAKLSAuZ2xvYmwJLk9QRU5TU0xfcmR0c2MKLSAuYWxpZ24J NAotQEAgLTkzLDYgKzEwNyw3IEBAIExhZGQ6CWx3YXJ4CXI1LDAscjMKLSAJYmxyCi0gCS5sb25n CTAKLSAJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDAsMAotKy5zaXplCS5PUEVOU1NMX3JkdHNjLC4t Lk9QRU5TU0xfcmR0c2MKLSAKLSAuZ2xvYmwJLk9QRU5TU0xfY2xlYW5zZQotIC5hbGlnbgk0Ci1A QCAtMTI1LDcgKzE0MCw5OSBAQCBMYWxpZ25lZDoKLSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEyLDB4 MTQsMCwwLDAsMiwwCi0gCS5sb25nCTAKLSsuc2l6ZQkuT1BFTlNTTF9jbGVhbnNlLC4tLk9QRU5T U0xfY2xlYW5zZQotK19fXwotK3sKLStteSAoJG91dCwkY250LCRtYXgpPSgicjMiLCJyNCIsInI1 Iik7Ci0rbXkgKCR0aWNrLCRsYXN0dGljayk9KCJyNiIsInI3Iik7Ci0rbXkgKCRkaWZmLCRsYXN0 ZGlmZik9KCJyOCIsInI5Iik7Ci0rCi0rJGNvZGUuPTw8X19fOwotKy5nbG9ibAkuT1BFTlNTTF9p bnN0cnVtZW50X2J1cwotKy5hbGlnbgk0Ci0rLk9QRU5TU0xfaW5zdHJ1bWVudF9idXM6Ci0rCW10 Y3RyCSRjbnQKLSsKLSsJbWZ0YgkkbGFzdHRpY2sJCSMgY29sbGVjdCAxc3QgdGljawotKwlsaQkk ZGlmZiwwCi0rCi0rCWRjYmYJMCwkb3V0CQkJIyBmbHVzaCBjYWNoZSBsaW5lCi0rCWx3YXJ4CSR0 aWNrLDAsJG91dAkJIyBsb2FkIGFuZCBsb2NrCi0rCWFkZAkkdGljaywkdGljaywkZGlmZgotKwlz dHdjeC4JJHRpY2ssMCwkb3V0Ci0rCXN0d3gJJHRpY2ssMCwkb3V0Ci0rCi0rTG9vcDoJbWZ0Ygkk dGljawotKwlzdWIJJGRpZmYsJHRpY2ssJGxhc3R0aWNrCi0rCW1yCSRsYXN0dGljaywkdGljawot KwlkY2JmCTAsJG91dAkJCSMgZmx1c2ggY2FjaGUgbGluZQotKwlsd2FyeAkkdGljaywwLCRvdXQJ CSMgbG9hZCBhbmQgbG9jawotKwlhZGQJJHRpY2ssJHRpY2ssJGRpZmYKLSsJc3R3Y3guCSR0aWNr LDAsJG91dAotKwlzdHd4CSR0aWNrLDAsJG91dAotKwlhZGRpCSRvdXQsJG91dCw0CQkjICsrJG91 dAotKwliZG56CUxvb3AKLSsKLSsJbXIJcjMsJGNudAotKwlibHIKLSsJLmxvbmcJMAotKwkuYnl0 ZQkwLDEyLDB4MTQsMCwwLDAsMiwwCi0rCS5sb25nCTAKLSsuc2l6ZQkuT1BFTlNTTF9pbnN0cnVt ZW50X2J1cywuLS5PUEVOU1NMX2luc3RydW1lbnRfYnVzCi0rCi0rLmdsb2JsCS5PUEVOU1NMX2lu c3RydW1lbnRfYnVzMgotKy5hbGlnbgk0Ci0rLk9QRU5TU0xfaW5zdHJ1bWVudF9idXMyOgotKwlt cglyMCwkY250Ci0rCXNsd2kJJGNudCwkY250LDIKLSsKLSsJbWZ0YgkkbGFzdHRpY2sJCSMgY29s bGVjdCAxc3QgdGljawotKwlsaQkkZGlmZiwwCi0rCi0rCWRjYmYJMCwkb3V0CQkJIyBmbHVzaCBj YWNoZSBsaW5lCi0rCWx3YXJ4CSR0aWNrLDAsJG91dAkJIyBsb2FkIGFuZCBsb2NrCi0rCWFkZAkk dGljaywkdGljaywkZGlmZgotKwlzdHdjeC4JJHRpY2ssMCwkb3V0Ci0rCXN0d3gJJHRpY2ssMCwk b3V0Ci0rCi0rCW1mdGIJJHRpY2sJCQkjIGNvbGxlY3QgMXN0IGRpZmYKLSsJc3ViCSRkaWZmLCR0 aWNrLCRsYXN0dGljawotKwltcgkkbGFzdHRpY2ssJHRpY2sKLSsJbXIJJGxhc3RkaWZmLCRkaWZm Ci0rTG9vcDI6Ci0rCWRjYmYJMCwkb3V0CQkJIyBmbHVzaCBjYWNoZSBsaW5lCi0rCWx3YXJ4CSR0 aWNrLDAsJG91dAkJIyBsb2FkIGFuZCBsb2NrCi0rCWFkZAkkdGljaywkdGljaywkZGlmZgotKwlz dHdjeC4JJHRpY2ssMCwkb3V0Ci0rCXN0d3gJJHRpY2ssMCwkb3V0Ci0rCi0rCWFkZGljLgkkbWF4 LCRtYXgsLTEKLSsJYmVxCUxkb25lMgotKwotKwltZnRiCSR0aWNrCi0rCXN1YgkkZGlmZiwkdGlj aywkbGFzdHRpY2sKLSsJbXIJJGxhc3R0aWNrLCR0aWNrCi0rCWNtcGx3CTcsJGRpZmYsJGxhc3Rk aWZmCi0rCW1yCSRsYXN0ZGlmZiwkZGlmZgotKwotKwltZmNyCSR0aWNrCQkJIyBwdWxsIGNyCi0r CW5vdAkkdGljaywkdGljawkJIyBmbGlwIGJpdHMKLSsJcmx3aW5tCSR0aWNrLCR0aWNrLDEsMjks MjkJIyBpc29sYXRlIGZsaXBwZWQgZXEgYml0IGFuZCBzY2FsZQotKwotKwlzdWIuCSRjbnQsJGNu dCwkdGljawkJIyBjb25kaXRpb25hbCAtLSRjbnQKLSsJYWRkCSRvdXQsJG91dCwkdGljawkJIyBj b25kaXRpb25hbCArKyRvdXQKLSsJYm5lCUxvb3AyCi0rCi0rTGRvbmUyOgotKwlzcndpCSRjbnQs JGNudCwyCi0rCXN1YglyMyxyMCwkY250Ci0rCWJscgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIs MHgxNCwwLDAsMCwzLDAKLSsJLmxvbmcJMAotKy5zaXplCS5PUEVOU1NMX2luc3RydW1lbnRfYnVz MiwuLS5PUEVOU1NMX2luc3RydW1lbnRfYnVzMgotIF9fXwotK30KLSAKLSAkY29kZSA9fiBzL1xg KFteXGBdKilcYC9ldmFsICQxL2dlbTsKLSBwcmludCAkY29kZTsKLWRpZmYgLS1naXQgYS9jcnlw dG8vc2hhL01ha2VmaWxlIGIvY3J5cHRvL3NoYS9NYWtlZmlsZQotaW5kZXggNmQxOTFkMy4uNThj NjcwNSAxMDA2NDQKLS0tLSBhL2NyeXB0by9zaGEvTWFrZWZpbGUKLSsrKyBiL2NyeXB0by9zaGEv TWFrZWZpbGUKLUBAIC03Myw2ICs3Myw4IEBAIHNoYTUxMi1zcGFyY3Y5LnM6YXNtL3NoYTUxMi1z cGFyY3Y5LnBsOwkkKFBFUkwpIGFzbS9zaGE1MTItc3BhcmN2OS5wbCAkQCAkKENGTEFHCi0gc2hh MS1wcGMuczoJYXNtL3NoYTEtcHBjLnBsOwkkKFBFUkwpIGFzbS9zaGExLXBwYy5wbCAkKFBFUkxB U01fU0NIRU1FKSAkQAotIHNoYTI1Ni1wcGMuczoJYXNtL3NoYTUxMi1wcGMucGw7CSQoUEVSTCkg YXNtL3NoYTUxMi1wcGMucGwgJChQRVJMQVNNX1NDSEVNRSkgJEAKLSBzaGE1MTItcHBjLnM6CWFz bS9zaGE1MTItcHBjLnBsOwkkKFBFUkwpIGFzbS9zaGE1MTItcHBjLnBsICQoUEVSTEFTTV9TQ0hF TUUpICRACi0rc2hhMjU2cDgtcHBjLnM6CWFzbS9zaGE1MTJwOC1wcGMucGw7CSQoUEVSTCkgYXNt L3NoYTUxMnA4LXBwYy5wbCAkKFBFUkxBU01fU0NIRU1FKSAkQAotK3NoYTUxMnA4LXBwYy5zOglh c20vc2hhNTEycDgtcHBjLnBsOwkkKFBFUkwpIGFzbS9zaGE1MTJwOC1wcGMucGwgJChQRVJMQVNN X1NDSEVNRSkgJEAKLSAKLSBzaGExLXBhcmlzYy5zOglhc20vc2hhMS1wYXJpc2MucGw7CSQoUEVS TCkgYXNtL3NoYTEtcGFyaXNjLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACi0gc2hhMjU2LXBhcmlz Yy5zOmFzbS9zaGE1MTItcGFyaXNjLnBsOwkkKFBFUkwpIGFzbS9zaGE1MTItcGFyaXNjLnBsICQo UEVSTEFTTV9TQ0hFTUUpICRACi1kaWZmIC0tZ2l0IGEvY3J5cHRvL3NoYS9hc20vc2hhMS1wcGMu cGwgYi9jcnlwdG8vc2hhL2FzbS9zaGExLXBwYy5wbAotaW5kZXggMjE0MGRkMi4uZGY1OTg5NiAx MDA3NTUKLS0tLSBhL2NyeXB0by9zaGEvYXNtL3NoYTEtcHBjLnBsCi0rKysgYi9jcnlwdG8vc2hh L2FzbS9zaGExLXBwYy5wbAotQEAgLTksOCArOSw3IEBACi0gCi0gIyBJIGxldCBoYXJkd2FyZSBo YW5kbGUgdW5hbGlnbmVkIGlucHV0KCopLCBleGNlcHQgb24gcGFnZSBib3VuZGFyaWVzCi0gIyAo c2VlIGJlbG93IGZvciBkZXRhaWxzKS4gT3RoZXJ3aXNlIHN0cmFpZ2h0Zm9yd2FyZCBpbXBsZW1l bnRhdGlvbgotLSMgd2l0aCBYIHZlY3RvciBpbiByZWdpc3RlciBiYW5rLiBUaGUgbW9kdWxlIGlz IGJpZy1lbmRpYW4gW3doaWNoIGlzCi0tIyBub3QgYmlnIGRlYWwgYXMgdGhlcmUncmUgbm8gbGl0 dGxlLWVuZGlhbiB0YXJnZXRzIGxlZnQgYXJvdW5kXS4KLSsjIHdpdGggWCB2ZWN0b3IgaW4gcmVn aXN0ZXIgYmFuay4KLSAjCi0gIyAoKikgdGhpcyBtZWFucyB0aGF0IHRoaXMgbW9kdWxlIGlzIGlu YXBwcm9wcmlhdGUgZm9yIFBQQzQwMz8gRG9lcwotICMgICAgIGFueWJvZHkga25vdyBpZiBwcmUt UE9XRVIzIGNhbiBzdXN0YWluIHVuYWxpZ25lZCBsb2FkPwotQEAgLTM4LDYgKzM3LDEwIEBAIGlm ICgkZmxhdm91ciA9fiAvNjQvKSB7Ci0gCSRQVVNICT0ic3R3IjsKLSB9IGVsc2UgeyBkaWUgIm5v bnNlbnNlICRmbGF2b3VyIjsgfQotIAotKyMgRGVmaW5lIGVuZGlhbmVzcyBiYXNlZCBvbiBmbGF2 b3VyCi0rIyBpLmUuOiBsaW51eDY0bGUKLSskTElUVExFX0VORElBTiA9ICgkZmxhdm91cj1+L2xl JC8pID8gJFNJWkVfVCA6IDA7Ci0rCi0gJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRp cj0kMTsKLSAoICR4bGF0ZT0iJHtkaXJ9cHBjLXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlICkgb3IK LSAoICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS9wcGMteGxhdGUucGwiIGFuZCAtZiAkeGxh dGUpIG9yCi1AQCAtNjgsMTQgKzcxLDI4IEBAICRUICA9InIxMiI7Ci0gQFg9KCJyMTYiLCJyMTci LCJyMTgiLCJyMTkiLCJyMjAiLCJyMjEiLCJyMjIiLCJyMjMiLAotICAgICAicjI0IiwicjI1Iiwi cjI2IiwicjI3IiwicjI4IiwicjI5IiwicjMwIiwicjMxIik7Ci0gCi0rc3ViIGxvYWRiZSB7Ci0r bXkgKCRkc3QsICRzcmMsICR0ZW1wX3JlZykgPSBAXzsKLSskY29kZS49PDxfX18gaWYgKCEkTElU VExFX0VORElBTik7Ci0rCWx3egkkZHN0LCRzcmMKLStfX18KLSskY29kZS49PDxfX18gaWYgKCRM SVRUTEVfRU5ESUFOKTsKLSsJbHd6CSR0ZW1wX3JlZywkc3JjCi0rCXJvdGx3aQkkZHN0LCR0ZW1w X3JlZyw4Ci0rCXJsd2ltaQkkZHN0LCR0ZW1wX3JlZywyNCwwLDcKLSsJcmx3aW1pCSRkc3QsJHRl bXBfcmVnLDI0LDE2LDIzCi0rX19fCi0rfQotKwotIHN1YiBCT0RZXzAwXzE5IHsKLSBteSAoJGks JGEsJGIsJGMsJGQsJGUsJGYpPUBfOwotIG15ICRqPSRpKzE7Ci0tJGNvZGUuPTw8X19fIGlmICgk aT09MCk7Ci0tCWx3eglAWFskaV0sYCRpKjRgKCRpbnApCi0tX19fCi0rCi0rCSMgU2luY2UgdGhl IGxhc3QgdmFsdWUgb2YgJGYgaXMgZGlzY2FyZGVkLCB3ZSBjYW4gdXNlCi0rCSMgaXQgYXMgYSB0 ZW1wIHJlZyB0byBzd2FwIGJ5dGUtb3JkZXIgd2hlbiBuZWVkZWQuCi0rCWxvYWRiZSgiQFhbJGld IiwiYCRpKjRgKCRpbnApIiwkZikgaWYgKCRpPT0wKTsKLSsJbG9hZGJlKCJAWFskal0iLCJgJGoq NGAoJGlucCkiLCRmKSBpZiAoJGk8MTUpOwotICRjb2RlLj08PF9fXyBpZiAoJGk8MTUpOwotLQls d3oJQFhbJGpdLGAkaio0YCgkaW5wKQotIAlhZGQJJGYsJEssJGUKLSAJcm90bHdpCSRlLCRhLDUK LSAJYWRkCSRmLCRmLEBYWyRpXQotQEAgLTEwOCwzMSArMTI1LDMxIEBAIG15ICgkaSwkYSwkYiwk YywkZCwkZSwkZik9QF87Ci0gbXkgJGo9JGkrMTsKLSAkY29kZS49PDxfX18gaWYgKCRpPDc5KTsK LSAJYWRkCSRmLCRLLCRlCi0rCXhvcgkkdDAsJGIsJGQKLSAJcm90bHdpCSRlLCRhLDUKLSAJeG9y CUBYWyRqJTE2XSxAWFskaiUxNl0sQFhbKCRqKzIpJTE2XQotIAlhZGQJJGYsJGYsQFhbJGklMTZd Ci0tCXhvcgkkdDAsJGIsJGMKLSsJeG9yCSR0MCwkdDAsJGMKLSAJeG9yCUBYWyRqJTE2XSxAWFsk aiUxNl0sQFhbKCRqKzgpJTE2XQotLQlhZGQJJGYsJGYsJGUKLSsJYWRkCSRmLCRmLCR0MAotIAly b3Rsd2kJJGIsJGIsMzAKLS0JeG9yCSR0MCwkdDAsJGQKLSAJeG9yCUBYWyRqJTE2XSxAWFskaiUx Nl0sQFhbKCRqKzEzKSUxNl0KLS0JYWRkCSRmLCRmLCR0MAotKwlhZGQJJGYsJGYsJGUKLSAJcm90 bHdpCUBYWyRqJTE2XSxAWFskaiUxNl0sMQotIF9fXwotICRjb2RlLj08PF9fXyBpZiAoJGk9PTc5 KTsKLSAJYWRkCSRmLCRLLCRlCi0rCXhvcgkkdDAsJGIsJGQKLSAJcm90bHdpCSRlLCRhLDUKLSAJ bHd6CXIxNiwwKCRjdHgpCi0gCWFkZAkkZiwkZixAWFskaSUxNl0KLS0JeG9yCSR0MCwkYiwkYwot Kwl4b3IJJHQwLCR0MCwkYwotIAlsd3oJcjE3LDQoJGN0eCkKLS0JYWRkCSRmLCRmLCRlCi0rCWFk ZAkkZiwkZiwkdDAKLSAJcm90bHdpCSRiLCRiLDMwCi0gCWx3eglyMTgsOCgkY3R4KQotLQl4b3IJ JHQwLCR0MCwkZAotIAlsd3oJcjE5LDEyKCRjdHgpCi0tCWFkZAkkZiwkZiwkdDAKLSsJYWRkCSRm LCRmLCRlCi0gCWx3eglyMjAsMTYoJGN0eCkKLSBfX18KLSB9Ci1AQCAtMzE2LDYgKzMzMyw3IEBA ICRjb2RlLj08PF9fXzsKLSAJYmxyCi0gCS5sb25nCTAKLSAJLmJ5dGUJMCwxMiwweDE0LDAsMCww LDAsMAotKy5zaXplCS5zaGExX2Jsb2NrX2RhdGFfb3JkZXIsLi0uc2hhMV9ibG9ja19kYXRhX29y ZGVyCi0gX19fCi0gJGNvZGUuPTw8X19fOwotIC5hc2NpegkiU0hBMSBibG9jayB0cmFuc2Zvcm0g Zm9yIFBQQywgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQGZ5LmNoYWxtZXJzLnNlPiIKLWRpZmYgLS1n aXQgYS9jcnlwdG8vc2hhL2FzbS9zaGE1MTItcHBjLnBsIGIvY3J5cHRvL3NoYS9hc20vc2hhNTEy LXBwYy5wbAotaW5kZXggNmI0NGE2OC4uNzM0ZjNjMSAxMDA3NTUKLS0tLSBhL2NyeXB0by9zaGEv YXNtL3NoYTUxMi1wcGMucGwKLSsrKyBiL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1wcGMucGwKLUBA IC0xLDcgKzEsNyBAQAotICMhL3Vzci9iaW4vZW52IHBlcmwKLSAKLSAjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t IyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhl IE9wZW5TU0wKLSsjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+ IGZvciB0aGUgT3BlblNTTAotICMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVh bCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAotICMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBl bmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKLSAjIGRldGFpbHMgc2Vl IGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgotQEAgLTksOCArOSw3 IEBACi0gCi0gIyBJIGxldCBoYXJkd2FyZSBoYW5kbGUgdW5hbGlnbmVkIGlucHV0LCBleGNlcHQg b24gcGFnZSBib3VuZGFyaWVzCi0gIyAoc2VlIGJlbG93IGZvciBkZXRhaWxzKS4gT3RoZXJ3aXNl IHN0cmFpZ2h0Zm9yd2FyZCBpbXBsZW1lbnRhdGlvbgotLSMgd2l0aCBYIHZlY3RvciBpbiByZWdp c3RlciBiYW5rLiBUaGUgbW9kdWxlIGlzIGJpZy1lbmRpYW4gW3doaWNoIGlzCi0tIyBub3QgYmln IGRlYWwgYXMgdGhlcmUncmUgbm8gbGl0dGxlLWVuZGlhbiB0YXJnZXRzIGxlZnQgYXJvdW5kXS4K LSsjIHdpdGggWCB2ZWN0b3IgaW4gcmVnaXN0ZXIgYmFuay4KLSAKLSAjCQkJc2hhMjU2CQl8CXNo YTUxMgotICMgCQkJLW02NAktbTMyCXwJLW02NAktbTMyCi1AQCAtNTYsNiArNTUsOCBAQCBpZiAo JGZsYXZvdXIgPX4gLzY0LykgewotIAkkUFVTSD0ic3R3IjsKLSB9IGVsc2UgeyBkaWUgIm5vbnNl bnNlICRmbGF2b3VyIjsgfQotIAotKyRMSVRUTEVfRU5ESUFOID0gKCRmbGF2b3VyPX4vbGUkLykg PyAkU0laRV9UIDogMDsKLSsKLSAkMCA9fiBtLyguKltcL1xcXSlbXlwvXFxdKyQvOyAkZGlyPSQx OwotICggJHhsYXRlPSIke2Rpcn1wcGMteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUgKSBvcgotICgg JHhsYXRlPSIke2Rpcn0uLi8uLi9wZXJsYXNtL3BwYy14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSkg b3IKLUBAIC02NCw3ICs2NSw3IEBAIGRpZSAiY2FuJ3QgbG9jYXRlIHBwYy14bGF0ZS5wbCI7Ci0g b3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAkZmxhdm91ciAkb3V0cHV0IiB8fCBkaWUgImNhbid0 IGNhbGwgJHhsYXRlOiAkISI7Ci0gCi0gaWYgKCRvdXRwdXQgPX4gLzUxMi8pIHsKLS0JJGZ1bmM9 InNoYTUxMl9ibG9ja19kYXRhX29yZGVyIjsKLSsJJGZ1bmM9InNoYTUxMl9ibG9ja19wcGMiOwot IAkkU1o9ODsKLSAJQFNpZ21hMD0oMjgsMzQsMzkpOwotIAlAU2lnbWExPSgxNCwxOCw0MSk7Ci1A QCAtNzYsNyArNzcsNyBAQCBpZiAoJG91dHB1dCA9fiAvNTEyLykgewotIAkkUk9SPSJyb3RyZGki OwotIAkkU0hSPSJzcmRpIjsKLSB9IGVsc2UgewotLQkkZnVuYz0ic2hhMjU2X2Jsb2NrX2RhdGFf b3JkZXIiOwotKwkkZnVuYz0ic2hhMjU2X2Jsb2NrX3BwYyI7Ci0gCSRTWj00OwotIAlAU2lnbWEw PSggMiwxMywyMik7Ci0gCUBTaWdtYTE9KCA2LDExLDI1KTsKLUBAIC0xMTAsNyArMTExLDcgQEAg JEIgID0icjkiOwotICRDICA9InIxMCI7Ci0gJEQgID0icjExIjsKLSAkRSAgPSJyMTIiOwotLSRG ICA9InIxMyI7CSRGPSJyMiIgaWYgKCRTSVpFX1Q9PTgpOyMgcmVhc3NpZ25lZCB0byBleGVtcHQg VExTIHBvaW50ZXIKLSskRiAgPSR0MTsJJHQxID0gInIwIjsJIyBzdGF5IGF3YXkgZnJvbSAicjEz IjsKLSAkRyAgPSJyMTQiOwotICRIICA9InIxNSI7Ci0gCi1AQCAtMTE4LDI0ICsxMTksMjMgQEAg JEggID0icjE1IjsKLSBAWD0oInIxNiIsInIxNyIsInIxOCIsInIxOSIsInIyMCIsInIyMSIsInIy MiIsInIyMyIsCi0gICAgICJyMjQiLCJyMjUiLCJyMjYiLCJyMjciLCJyMjgiLCJyMjkiLCJyMzAi LCJyMzEiKTsKLSAKLS0kaW5wPSJyMzEiOwkjIHJlYXNzaWduZWQgJGlucCEgYWxpYXNlcyB3aXRo IEBYWzE1XQotKyRpbnA9InIzMSIgaWYoJFNaPT00IHx8ICRTSVpFX1Q9PTgpOwkjIHJlYXNzaWdu ZWQgJGlucCEgYWxpYXNlcyB3aXRoIEBYWzE1XQotIAotIHN1YiBST1VORF8wMF8xNSB7Ci0gbXkg KCRpLCRhLCRiLCRjLCRkLCRlLCRmLCRnLCRoKT1AXzsKLSAkY29kZS49PDxfX187Ci0tCSRMRAkk VCxgJGkqJFNaYCgkVGJsKQotIAkkUk9SCSRhMCwkZSwkU2lnbWExWzBdCi0gCSRST1IJJGExLCRl LCRTaWdtYTFbMV0KLSAJYW5kCSR0MCwkZiwkZQotLQlhbmRjCSR0MSwkZywkZQotLQlhZGQJJFQs JFQsJGgKLSAJeG9yCSRhMCwkYTAsJGExCi0rCWFkZAkkaCwkaCwkdDEKLSsJYW5kYwkkdDEsJGcs JGUKLSAJJFJPUgkkYTEsJGExLGAkU2lnbWExWzJdLSRTaWdtYTFbMV1gCi0gCW9yCSR0MCwkdDAs JHQxCQk7IENoKGUsZixnKQotLQlhZGQJJFQsJFQsQFhbJGldCi0rCWFkZAkkaCwkaCxAWFskaSUx Nl0KLSAJeG9yCSRhMCwkYTAsJGExCQk7IFNpZ21hMShlKQotLQlhZGQJJFQsJFQsJHQwCi0tCWFk ZAkkVCwkVCwkYTAKLSsJYWRkCSRoLCRoLCR0MAotKwlhZGQJJGgsJGgsJGEwCi0gCi0gCSRST1IJ JGEwLCRhLCRTaWdtYTBbMF0KLSAJJFJPUgkkYTEsJGEsJFNpZ21hMFsxXQotQEAgLTE0Niw5ICsx NDYsMTQgQEAgJGNvZGUuPTw8X19fOwotIAl4b3IJJHQwLCR0MCwkdDEKLSAJYW5kCSR0MSwkYiwk YwotIAl4b3IJJGEwLCRhMCwkYTEJCTsgU2lnbWEwKGEpCi0tCWFkZAkkZCwkZCwkVAotKwlhZGQJ JGQsJGQsJGgKLSAJeG9yCSR0MCwkdDAsJHQxCQk7IE1haihhLGIsYykKLS0JYWRkCSRoLCRULCRh MAotK19fXwotKyRjb2RlLj08PF9fXyBpZiAoJGk8MTUpOwotKwkkTEQJJHQxLGAoJGkrMSkqJFNa YCgkVGJsKQotK19fXwotKyRjb2RlLj08PF9fXzsKLSsJYWRkCSRoLCRoLCRhMAotIAlhZGQJJGgs JGgsJHQwCi0gCi0gX19fCi1AQCAtMTY5LDEwICsxNzQsMTEgQEAgJGNvZGUuPTw8X19fOwotIAlh ZGQJQFhbJGldLEBYWyRpXSxAWFsoJGkrOSklMTZdCi0gCXhvcgkkYTAsJGEwLCRhMQkJOyBzaWdt YTAoWFsoaSsxKSYweDBmXSkKLSAJeG9yCSR0MCwkdDAsJHQxCQk7IHNpZ21hMShYWyhpKzE0KSYw eDBmXSkKLSsJJExECSR0MSxgJGkqJFNaYCgkVGJsKQotIAlhZGQJQFhbJGldLEBYWyRpXSwkYTAK LSAJYWRkCUBYWyRpXSxAWFskaV0sJHQwCi0gX19fCi0tJlJPVU5EXzAwXzE1KCRpLCRhLCRiLCRj LCRkLCRlLCRmLCRnLCRoKTsKLSsmUk9VTkRfMDBfMTUoJGkrMTYsJGEsJGIsJGMsJGQsJGUsJGYs JGcsJGgpOwotIH0KLSAKLSAkY29kZT08PF9fXzsKLUBAIC0xODgsOCArMTk0LDYgQEAgJGZ1bmM6 Ci0gCi0gCSRQVVNICSRjdHgsYCRGUkFNRS0kU0laRV9UKjIyYCgkc3ApCi0gCi0tCSRQVVNICSR0 b2MsYCRGUkFNRS0kU0laRV9UKjIwYCgkc3ApCi0tCSRQVVNICXIxMyxgJEZSQU1FLSRTSVpFX1Qq MTlgKCRzcCkKLSAJJFBVU0gJcjE0LGAkRlJBTUUtJFNJWkVfVCoxOGAoJHNwKQotIAkkUFVTSAly MTUsYCRGUkFNRS0kU0laRV9UKjE3YCgkc3ApCi0gCSRQVVNICXIxNixgJEZSQU1FLSRTSVpFX1Qq MTZgKCRzcCkKLUBAIC0yMDksNyArMjEzLDEwIEBAICRmdW5jOgotIAkkUFVTSAlyMzAsYCRGUkFN RS0kU0laRV9UKjJgKCRzcCkKLSAJJFBVU0gJcjMxLGAkRlJBTUUtJFNJWkVfVCoxYCgkc3ApCi0g CSRQVVNICXIwLGAkRlJBTUUrJExSU0FWRWAoJHNwKQotK19fXwotIAotK2lmICgkU1o9PTQgfHwg JFNJWkVfVD09OCkgewotKyRjb2RlLj08PF9fXzsKLSAJJExECSRBLGAwKiRTWmAoJGN0eCkKLSAJ bXIJJGlucCxyNAkJCQk7IGluY2FybmF0ZSAkaW5wCi0gCSRMRAkkQixgMSokU1pgKCRjdHgpCi1A QCAtMjE5LDcgKzIyNiwxNiBAQCAkZnVuYzoKLSAJJExECSRGLGA1KiRTWmAoJGN0eCkKLSAJJExE CSRHLGA2KiRTWmAoJGN0eCkKLSAJJExECSRILGA3KiRTWmAoJGN0eCkKLStfX18KLSt9IGVsc2Ug ewotKyAgZm9yICgkaT0xNjskaTwzMjskaSsrKSB7Ci0rICAgICRjb2RlLj08PF9fXzsKLSsJbHd6 CXIkaSxgJExJVFRMRV9FTkRJQU5eKDQqKCRpLTE2KSlgKCRjdHgpCi0rX19fCi0rICB9Ci0rfQot IAotKyRjb2RlLj08PF9fXzsKLSAJYmwJTFBJQ21ldXAKLSBMUElDZWR1cDoKLSAJYW5kaS4JcjAs JGlucCwzCi1AQCAtMjU1LDYgKzI3MSw5IEBAIEx1bmFsaWduZWQ6Ci0gTGNyb3NzX3BhZ2U6Ci0g CWxpCSR0MSxgMTYqJFNaLzRgCi0gCW10Y3RyCSR0MQotK19fXwotK2lmICgkU1o9PTQgfHwgJFNJ WkVfVD09OCkgewotKyRjb2RlLj08PF9fXzsKLSAJYWRkaQlyMjAsJHNwLCRMT0NBTFMJCQk7IGFs aWduZWQgc3BvdCBiZWxvdyB0aGUgZnJhbWUKLSBMbWVtY3B5OgotIAlsYnoJcjE2LDAoJGlucCkK LUBAIC0yNjgsNyArMjg3LDI2IEBAIExtZW1jcHk6Ci0gCXN0YglyMTksMyhyMjApCi0gCWFkZGkJ cjIwLHIyMCw0Ci0gCWJkbnoJTG1lbWNweQotK19fXwotK30gZWxzZSB7Ci0rJGNvZGUuPTw8X19f OwotKwlhZGRpCXIxMiwkc3AsJExPQ0FMUwkJCTsgYWxpZ25lZCBzcG90IGJlbG93IHRoZSBmcmFt ZQotK0xtZW1jcHk6Ci0rCWxieglyOCwwKCRpbnApCi0rCWxieglyOSwxKCRpbnApCi0rCWxiegly MTAsMigkaW5wKQotKwlsYnoJcjExLDMoJGlucCkKLSsJYWRkaQkkaW5wLCRpbnAsNAotKwlzdGIJ cjgsMChyMTIpCi0rCXN0YglyOSwxKHIxMikKLSsJc3RiCXIxMCwyKHIxMikKLSsJc3RiCXIxMSwz KHIxMikKLSsJYWRkaQlyMTIscjEyLDQKLSsJYmRueglMbWVtY3B5Ci0rX19fCi0rfQotIAotKyRj b2RlLj08PF9fXzsKLSAJJFBVU0gJJGlucCxgJEZSQU1FLSRTSVpFX1QqMjZgKCRzcCkJOyBzYXZl IHJlYWwgaW5wCi0gCWFkZGkJJHQxLCRzcCxgJExPQ0FMUysxNiokU1pgCTsgZmljdGl0aW91cyBl bmQgcG9pbnRlcgotIAlhZGRpCSRpbnAsJHNwLCRMT0NBTFMJCTsgZmljdGl0aW91cyBpbnAgcG9p bnRlcgotQEAgLTI4Myw4ICszMjEsNiBAQCBMbWVtY3B5OgotIAotIExkb25lOgotIAkkUE9QCXIw LGAkRlJBTUUrJExSU0FWRWAoJHNwKQotLQkkUE9QCSR0b2MsYCRGUkFNRS0kU0laRV9UKjIwYCgk c3ApCi0tCSRQT1AJcjEzLGAkRlJBTUUtJFNJWkVfVCoxOWAoJHNwKQotIAkkUE9QCXIxNCxgJEZS QU1FLSRTSVpFX1QqMThgKCRzcCkKLSAJJFBPUAlyMTUsYCRGUkFNRS0kU0laRV9UKjE3YCgkc3Ap Ci0gCSRQT1AJcjE2LGAkRlJBTUUtJFNJWkVfVCoxNmAoJHNwKQotQEAgLTMwOSwyNyArMzQ1LDQ4 IEBAIExkb25lOgotIAkubG9uZwkwCi0gCS5ieXRlCTAsMTIsNCwxLDB4ODAsMTgsMywwCi0gCS5s b25nCTAKLStfX18KLSAKLStpZiAoJFNaPT00IHx8ICRTSVpFX1Q9PTgpIHsKLSskY29kZS49PDxf X187Ci0gLmFsaWduCTQKLSBMc2hhMl9ibG9ja19wcml2YXRlOgotKwkkTEQJJHQxLDAoJFRibCkK LSBfX18KLSBmb3IoJGk9MDskaTwxNjskaSsrKSB7Ci0tJGNvZGUuPTw8X19fIGlmICgkU1o9PTQp OwotKyRjb2RlLj08PF9fXyBpZiAoJFNaPT00ICYmICEkTElUVExFX0VORElBTik7Ci0gCWx3eglA WFskaV0sYCRpKiRTWmAoJGlucCkKLSBfX18KLSskY29kZS49PDxfX18gaWYgKCRTWj09NCAmJiAk TElUVExFX0VORElBTik7Ci0rCWx3egkkYTAsYCRpKiRTWmAoJGlucCkKLSsJcm90bHdpCUBYWyRp XSwkYTAsOAotKwlybHdpbWkJQFhbJGldLCRhMCwyNCwwLDcKLSsJcmx3aW1pCUBYWyRpXSwkYTAs MjQsMTYsMjMKLStfX18KLSAjIDY0LWJpdCBsb2FkcyBhcmUgc3BsaXQgdG8gMngzMi1iaXQgb25l cywgYXMgQ1BVIGNhbid0IGhhbmRsZQotICMgdW5hbGlnbmVkIDY0LWJpdCBsb2Fkcywgb25seSAz Mi1iaXQgb25lcy4uLgotLSRjb2RlLj08PF9fXyBpZiAoJFNaPT04KTsKLSskY29kZS49PDxfX18g aWYgKCRTWj09OCAmJiAhJExJVFRMRV9FTkRJQU4pOwotIAlsd3oJJHQwLGAkaSokU1pgKCRpbnAp Ci0gCWx3eglAWFskaV0sYCRpKiRTWis0YCgkaW5wKQotIAlpbnNyZGkJQFhbJGldLCR0MCwzMiww Ci0gX19fCi0rJGNvZGUuPTw8X19fIGlmICgkU1o9PTggJiYgJExJVFRMRV9FTkRJQU4pOwotKwls d3oJJGEwLGAkaSokU1pgKCRpbnApCi0rCSBsd3oJJGExLGAkaSokU1orNGAoJGlucCkKLSsJcm90 bHdpCSR0MCwkYTAsOAotKwkgcm90bHdpCUBYWyRpXSwkYTEsOAotKwlybHdpbWkJJHQwLCRhMCwy NCwwLDcKLSsJIHJsd2ltaQlAWFskaV0sJGExLDI0LDAsNwotKwlybHdpbWkJJHQwLCRhMCwyNCwx NiwyMwotKwkgcmx3aW1pCUBYWyRpXSwkYTEsMjQsMTYsMjMKLSsJaW5zcmRpCUBYWyRpXSwkdDAs MzIsMAotK19fXwotIAkmUk9VTkRfMDBfMTUoJGksQFYpOwotIAl1bnNoaWZ0KEBWLHBvcChAVikp OwotIH0KLSAkY29kZS49PDxfX187Ci0tCWxpCSRULGAkcm91bmRzLzE2LTFgCi0tCW10Y3RyCSRU Ci0rCWxpCSR0MCxgJHJvdW5kcy8xNi0xYAotKwltdGN0cgkkdDAKLSAuYWxpZ24JNAotIExyb3Vu ZHM6Ci0gCWFkZGkJJFRibCwkVGJsLGAxNiokU1pgCi1AQCAtMzc3LDcgKzQzNCwyODIgQEAgJGNv ZGUuPTw8X19fOwotIAlibHIKLSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCww Ci0rLnNpemUJJGZ1bmMsLi0kZnVuYwotK19fXwotK30gZWxzZSB7Ci0rIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0rIyBTSEE1MTIgZm9yIFBQQzMyLCBYIHZlY3RvciBpcyBvZmYtbG9hZGVkIHRvIHN0YWNrLi4u Ci0rIwotKyMJCQl8CXNoYTUxMgotKyMJCQl8CS1tMzIKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIFBQQzc0eDAsZ2NjLTQuMC4xCXwJKzQ4JQot KyMgUE9XRVI2LGdjYy00LjQuNgl8CSsxMjQlKCopCi0rIyBQT1dFUjcsZ2NjLTQuNC42CXwJKzc5 JSgqKQotKyMgZTMwMCxnY2MtNC4xLjAJfAkrMTY3JQotKyMKLSsjICgqKQl+MS8zIG9mIC1tNjQg cmVzdWx0IFthbmQgfjIwJSBiZXR0ZXIgdGhhbiAtbTMyIGNvZGUgZ2VuZXJhdGVkCi0rIwlieSB4 bGMtMTIuMV0KLSsKLStteSAkWE9GRj0kTE9DQUxTOwotKwotK215IEBWPW1hcCgiciRfIiwoMTYu LjMxKSk7CSMgQS4uSAotKwotK215ICgkczAsJHMxLCR0MCwkdDEsJHQyLCR0MywkYTAsJGExLCRh MiwkYTMpPW1hcCgiciRfIiwoMCw1LDYsOC4uMTIsMTQsMTUpKTsKLStteSAoJHgwLCR4MSk9KCJy MyIsInI0Iik7CSMgemFwcyAkY3R4IGFuZCAkaW5wCi0rCi0rc3ViIFJPVU5EXzAwXzE1X3BwYzMy IHsKLStteSAoJGksCSRhaGksJGFsbywkYmhpLCRibG8sJGNoaSwkY2xvLCRkaGksJGRsbywKLSsJ JGVoaSwkZWxvLCRmaGksJGZsbywkZ2hpLCRnbG8sJGhoaSwkaGxvKT1AXzsKLSsKLSskY29kZS49 PDxfX187Ci0rCWx3egkkdDIsYCRTWiooJGklMTYpKygkTElUVExFX0VORElBTl40KWAoJFRibCkK LSsJIHhvcgkkYTAsJGZsbywkZ2xvCi0rCWx3egkkdDMsYCRTWiooJGklMTYpKygkTElUVExFX0VO RElBTl4wKWAoJFRibCkKLSsJIHhvcgkkYTEsJGZoaSwkZ2hpCi0rCWFkZGMJJGhsbywkaGxvLCR0 MAkJCTsgaCs9eFtpXQotKwlzdHcJJHQwLGAkWE9GRiswKyRTWiooJGklMTYpYCgkc3ApCTsgc2F2 ZSB4W2ldCi0rCi0rCXNyd2kJJHMwLCRlbG8sJFNpZ21hMVswXQotKwlzcndpCSRzMSwkZWhpLCRT aWdtYTFbMF0KLSsJIGFuZAkkYTAsJGEwLCRlbG8KLSsJYWRkZQkkaGhpLCRoaGksJHQxCi0rCSBh bmQJJGExLCRhMSwkZWhpCi0rCXN0dwkkdDEsYCRYT0ZGKzQrJFNaKigkaSUxNilgKCRzcCkKLSsJ c3J3aQkkdDAsJGVsbywkU2lnbWExWzFdCi0rCXNyd2kJJHQxLCRlaGksJFNpZ21hMVsxXQotKwkg YWRkYwkkaGxvLCRobG8sJHQyCQkJOyBoKz1LNTEyW2ldCi0rCWluc3J3aQkkczAsJGVoaSwkU2ln bWExWzBdLDAKLSsJaW5zcndpCSRzMSwkZWxvLCRTaWdtYTFbMF0sMAotKwkgeG9yCSRhMCwkYTAs JGdsbwkJCTsgQ2goZSxmLGcpCi0rCSBhZGRlCSRoaGksJGhoaSwkdDMKLSsJIHhvcgkkYTEsJGEx LCRnaGkKLSsJaW5zcndpCSR0MCwkZWhpLCRTaWdtYTFbMV0sMAotKwlpbnNyd2kJJHQxLCRlbG8s JFNpZ21hMVsxXSwwCi0rCSBhZGRjCSRobG8sJGhsbywkYTAJCQk7IGgrPUNoKGUsZixnKQotKwlz cndpCSR0MiwkZWhpLCRTaWdtYTFbMl0tMzIKLSsJc3J3aQkkdDMsJGVsbywkU2lnbWExWzJdLTMy Ci0rCXhvcgkkczAsJHMwLCR0MAotKwl4b3IJJHMxLCRzMSwkdDEKLSsJaW5zcndpCSR0MiwkZWxv LCRTaWdtYTFbMl0tMzIsMAotKwlpbnNyd2kJJHQzLCRlaGksJFNpZ21hMVsyXS0zMiwwCi0rCSB4 b3IJJGEwLCRhbG8sJGJsbwkJCTsgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAotKwkgYWRkZQkkaGhp LCRoaGksJGExCi0rCSB4b3IJJGExLCRhaGksJGJoaQotKwl4b3IJJHMwLCRzMCwkdDIJCQk7IFNp Z21hMShlKQotKwl4b3IJJHMxLCRzMSwkdDMKLSsKLSsJc3J3aQkkdDAsJGFsbywkU2lnbWEwWzBd Ci0rCSBhbmQJJGEyLCRhMiwkYTAKLSsJIGFkZGMJJGhsbywkaGxvLCRzMAkJCTsgaCs9U2lnbWEx KGUpCi0rCSBhbmQJJGEzLCRhMywkYTEKLSsJc3J3aQkkdDEsJGFoaSwkU2lnbWEwWzBdCi0rCXNy d2kJJHMwLCRhaGksJFNpZ21hMFsxXS0zMgotKwkgYWRkZQkkaGhpLCRoaGksJHMxCi0rCXNyd2kJ JHMxLCRhbG8sJFNpZ21hMFsxXS0zMgotKwlpbnNyd2kJJHQwLCRhaGksJFNpZ21hMFswXSwwCi0r CWluc3J3aQkkdDEsJGFsbywkU2lnbWEwWzBdLDAKLSsJIHhvcgkkYTIsJGEyLCRibG8JCQk7IE1h aihhLGIsYykKLSsJIGFkZGMJJGRsbywkZGxvLCRobG8JCQk7IGQrPWgKLSsJIHhvcgkkYTMsJGEz LCRiaGkKLSsJaW5zcndpCSRzMCwkYWxvLCRTaWdtYTBbMV0tMzIsMAotKwlpbnNyd2kJJHMxLCRh aGksJFNpZ21hMFsxXS0zMiwwCi0rCSBhZGRlCSRkaGksJGRoaSwkaGhpCi0rCXNyd2kJJHQyLCRh aGksJFNpZ21hMFsyXS0zMgotKwlzcndpCSR0MywkYWxvLCRTaWdtYTBbMl0tMzIKLSsJeG9yCSRz MCwkczAsJHQwCi0rCSBhZGRjCSRobG8sJGhsbywkYTIJCQk7IGgrPU1haihhLGIsYykKLSsJeG9y CSRzMSwkczEsJHQxCi0rCWluc3J3aQkkdDIsJGFsbywkU2lnbWEwWzJdLTMyLDAKLSsJaW5zcndp CSR0MywkYWhpLCRTaWdtYTBbMl0tMzIsMAotKwkgYWRkZQkkaGhpLCRoaGksJGEzCi0rX19fCi0r JGNvZGUuPTw8X19fIGlmICgkaT49MTUpOwotKwlsd3oJJHQwLGAkWE9GRiswKyRTWiooKCRpKzIp JTE2KWAoJHNwKQotKwlsd3oJJHQxLGAkWE9GRis0KyRTWiooKCRpKzIpJTE2KWAoJHNwKQotK19f XwotKyRjb2RlLj08PF9fXyBpZiAoJGk8MTUgJiYgISRMSVRUTEVfRU5ESUFOKTsKLSsJbHd6CSR0 MSxgJFNaKigkaSsxKSswYCgkaW5wKQotKwlsd3oJJHQwLGAkU1oqKCRpKzEpKzRgKCRpbnApCi0g X19fCi0rJGNvZGUuPTw8X19fIGlmICgkaTwxNSAmJiAkTElUVExFX0VORElBTik7Ci0rCWx3egkk YTIsYCRTWiooJGkrMSkrMGAoJGlucCkKLSsJIGx3egkkYTMsYCRTWiooJGkrMSkrNGAoJGlucCkK LSsJcm90bHdpCSR0MSwkYTIsOAotKwkgcm90bHdpCSR0MCwkYTMsOAotKwlybHdpbWkJJHQxLCRh MiwyNCwwLDcKLSsJIHJsd2ltaQkkdDAsJGEzLDI0LDAsNwotKwlybHdpbWkJJHQxLCRhMiwyNCwx NiwyMwotKwkgcmx3aW1pCSR0MCwkYTMsMjQsMTYsMjMKLStfX18KLSskY29kZS49PDxfX187Ci0r CXhvcgkkczAsJHMwLCR0MgkJCTsgU2lnbWEwKGEpCi0rCXhvcgkkczEsJHMxLCR0MwotKwlhZGRj CSRobG8sJGhsbywkczAJCQk7IGgrPVNpZ21hMChhKQotKwlhZGRlCSRoaGksJGhoaSwkczEKLStf X18KLSskY29kZS49PDxfX18gaWYgKCRpPT0xNSk7Ci0rCWx3egkkeDAsYCRYT0ZGKzArJFNaKigo JGkrMSklMTYpYCgkc3ApCi0rCWx3egkkeDEsYCRYT0ZGKzQrJFNaKigoJGkrMSklMTYpYCgkc3Ap Ci0rX19fCi0rfQotK3N1YiBST1VORF8xNl94eF9wcGMzMiB7Ci0rbXkgKCRpLAkkYWhpLCRhbG8s JGJoaSwkYmxvLCRjaGksJGNsbywkZGhpLCRkbG8sCi0rCSRlaGksJGVsbywkZmhpLCRmbG8sJGdo aSwkZ2xvLCRoaGksJGhsbyk9QF87Ci0rCi0rJGNvZGUuPTw8X19fOwotKwlzcndpCSRzMCwkdDAs JHNpZ21hMFswXQotKwlzcndpCSRzMSwkdDEsJHNpZ21hMFswXQotKwlzcndpCSR0MiwkdDAsJHNp Z21hMFsxXQotKwlzcndpCSR0MywkdDEsJHNpZ21hMFsxXQotKwlpbnNyd2kJJHMwLCR0MSwkc2ln bWEwWzBdLDAKLSsJaW5zcndpCSRzMSwkdDAsJHNpZ21hMFswXSwwCi0rCXNyd2kJJGEwLCR0MCwk c2lnbWEwWzJdCi0rCWluc3J3aQkkdDIsJHQxLCRzaWdtYTBbMV0sMAotKwlpbnNyd2kJJHQzLCR0 MCwkc2lnbWEwWzFdLDAKLSsJaW5zcndpCSRhMCwkdDEsJHNpZ21hMFsyXSwwCi0rCXhvcgkkczAs JHMwLCR0MgotKwkgbHd6CSR0MixgJFhPRkYrMCskU1oqKCgkaSsxNCklMTYpYCgkc3ApCi0rCXNy d2kJJGExLCR0MSwkc2lnbWEwWzJdCi0rCXhvcgkkczEsJHMxLCR0MwotKwkgbHd6CSR0MyxgJFhP RkYrNCskU1oqKCgkaSsxNCklMTYpYCgkc3ApCi0rCXhvcgkkYTAsJGEwLCRzMAotKwkgc3J3aQkk czAsJHQyLCRzaWdtYTFbMF0KLSsJeG9yCSRhMSwkYTEsJHMxCi0rCSBzcndpCSRzMSwkdDMsJHNp Z21hMVswXQotKwlhZGRjCSR4MCwkeDAsJGEwCQkJOyB4W2ldKz1zaWdtYTAoeFtpKzFdKQotKwkg c3J3aQkkYTAsJHQzLCRzaWdtYTFbMV0tMzIKLSsJaW5zcndpCSRzMCwkdDMsJHNpZ21hMVswXSww Ci0rCWluc3J3aQkkczEsJHQyLCRzaWdtYTFbMF0sMAotKwlhZGRlCSR4MSwkeDEsJGExCi0rCSBz cndpCSRhMSwkdDIsJHNpZ21hMVsxXS0zMgotKwotKwlpbnNyd2kJJGEwLCR0Miwkc2lnbWExWzFd LTMyLDAKLSsJc3J3aQkkdDIsJHQyLCRzaWdtYTFbMl0KLSsJaW5zcndpCSRhMSwkdDMsJHNpZ21h MVsxXS0zMiwwCi0rCWluc3J3aQkkdDIsJHQzLCRzaWdtYTFbMl0sMAotKwl4b3IJJHMwLCRzMCwk YTAKLSsJIGx3egkkYTAsYCRYT0ZGKzArJFNaKigoJGkrOSklMTYpYCgkc3ApCi0rCXNyd2kJJHQz LCR0Mywkc2lnbWExWzJdCi0rCXhvcgkkczEsJHMxLCRhMQotKwkgbHd6CSRhMSxgJFhPRkYrNCsk U1oqKCgkaSs5KSUxNilgKCRzcCkKLSsJeG9yCSRzMCwkczAsJHQyCi0rCSBhZGRjCSR4MCwkeDAs JGEwCQkJOyB4W2ldKz14W2krOV0KLSsJeG9yCSRzMSwkczEsJHQzCi0rCSBhZGRlCSR4MSwkeDEs JGExCi0rCWFkZGMJJHgwLCR4MCwkczAJCQk7IHhbaV0rPXNpZ21hMSh4W2krMTRdKQotKwlhZGRl CSR4MSwkeDEsJHMxCi0rX19fCi0rCSgkdDAsJHQxLCR4MCwkeDEpID0gKCR4MCwkeDEsJHQwLCR0 MSk7Ci0rCSZST1VORF8wMF8xNV9wcGMzMihAXyk7Ci0rfQotKwotKyRjb2RlLj08PF9fXzsKLSsu YWxpZ24JNAotK0xzaGEyX2Jsb2NrX3ByaXZhdGU6Ci0rX19fCi0rJGNvZGUuPTw8X19fIGlmICgh JExJVFRMRV9FTkRJQU4pOwotKwlsd3oJJHQxLDAoJGlucCkKLSsJeG9yCSRhMixAVlszXSxAVls1 XQkJOyBCXkMsIG1hZ2ljIHNlZWQKLSsJbHd6CSR0MCw0KCRpbnApCi0rCXhvcgkkYTMsQFZbMl0s QFZbNF0KLStfX18KLSskY29kZS49PDxfX18gaWYgKCRMSVRUTEVfRU5ESUFOKTsKLSsJbHd6CSRh MSwwKCRpbnApCi0rCXhvcgkkYTIsQFZbM10sQFZbNV0JCTsgQl5DLCBtYWdpYyBzZWVkCi0rCWx3 egkkYTAsNCgkaW5wKQotKwl4b3IJJGEzLEBWWzJdLEBWWzRdCi0rCXJvdGx3aQkkdDEsJGExLDgK LSsJIHJvdGx3aQkkdDAsJGEwLDgKLSsJcmx3aW1pCSR0MSwkYTEsMjQsMCw3Ci0rCSBybHdpbWkJ JHQwLCRhMCwyNCwwLDcKLSsJcmx3aW1pCSR0MSwkYTEsMjQsMTYsMjMKLSsJIHJsd2ltaQkkdDAs JGEwLDI0LDE2LDIzCi0rX19fCi0rZm9yKCRpPTA7JGk8MTY7JGkrKykgewotKwkmUk9VTkRfMDBf MTVfcHBjMzIoJGksQFYpOwotKwl1bnNoaWZ0KEBWLHBvcChAVikpOwl1bnNoaWZ0KEBWLHBvcChA VikpOwotKwkoJGEwLCRhMSwkYTIsJGEzKSA9ICgkYTIsJGEzLCRhMCwkYTEpOwotK30KLSskY29k ZS49PDxfX187Ci0rCWxpCSRhMCxgJHJvdW5kcy8xNi0xYAotKwltdGN0cgkkYTAKLSsuYWxpZ24J NAotK0xyb3VuZHM6Ci0rCWFkZGkJJFRibCwkVGJsLGAxNiokU1pgCi0rX19fCi0rZm9yKDskaTwz MjskaSsrKSB7Ci0rCSZST1VORF8xNl94eF9wcGMzMigkaSxAVik7Ci0rCXVuc2hpZnQoQFYscG9w KEBWKSk7CXVuc2hpZnQoQFYscG9wKEBWKSk7Ci0rCSgkYTAsJGExLCRhMiwkYTMpID0gKCRhMiwk YTMsJGEwLCRhMSk7Ci0rfQotKyRjb2RlLj08PF9fXzsKLSsJYmRuei0JTHJvdW5kcwotKwotKwkk UE9QCSRjdHgsYCRGUkFNRS0kU0laRV9UKjIyYCgkc3ApCi0rCSRQT1AJJGlucCxgJEZSQU1FLSRT SVpFX1QqMjNgKCRzcCkJOyBpbnAgcG9pbnRlcgotKwkkUE9QCSRudW0sYCRGUkFNRS0kU0laRV9U KjI0YCgkc3ApCTsgZW5kIHBvaW50ZXIKLSsJc3ViaQkkVGJsLCRUYmwsYCgkcm91bmRzLTE2KSok U1pgCTsgcmV3aW5kIFRibAotKwotKwlsd3oJJHQwLGAkTElUVExFX0VORElBTl4wYCgkY3R4KQot Kwlsd3oJJHQxLGAkTElUVExFX0VORElBTl40YCgkY3R4KQotKwlsd3oJJHQyLGAkTElUVExFX0VO RElBTl44YCgkY3R4KQotKwlsd3oJJHQzLGAkTElUVExFX0VORElBTl4xMmAoJGN0eCkKLSsJbHd6 CSRhMCxgJExJVFRMRV9FTkRJQU5eMTZgKCRjdHgpCi0rCWx3egkkYTEsYCRMSVRUTEVfRU5ESUFO XjIwYCgkY3R4KQotKwlsd3oJJGEyLGAkTElUVExFX0VORElBTl4yNGAoJGN0eCkKLSsJYWRkYwlA VlsxXSxAVlsxXSwkdDEKLSsJbHd6CSRhMyxgJExJVFRMRV9FTkRJQU5eMjhgKCRjdHgpCi0rCWFk ZGUJQFZbMF0sQFZbMF0sJHQwCi0rCWx3egkkdDAsYCRMSVRUTEVfRU5ESUFOXjMyYCgkY3R4KQot KwlhZGRjCUBWWzNdLEBWWzNdLCR0MwotKwlsd3oJJHQxLGAkTElUVExFX0VORElBTl4zNmAoJGN0 eCkKLSsJYWRkZQlAVlsyXSxAVlsyXSwkdDIKLSsJbHd6CSR0MixgJExJVFRMRV9FTkRJQU5eNDBg KCRjdHgpCi0rCWFkZGMJQFZbNV0sQFZbNV0sJGExCi0rCWx3egkkdDMsYCRMSVRUTEVfRU5ESUFO XjQ0YCgkY3R4KQotKwlhZGRlCUBWWzRdLEBWWzRdLCRhMAotKwlsd3oJJGEwLGAkTElUVExFX0VO RElBTl40OGAoJGN0eCkKLSsJYWRkYwlAVls3XSxAVls3XSwkYTMKLSsJbHd6CSRhMSxgJExJVFRM RV9FTkRJQU5eNTJgKCRjdHgpCi0rCWFkZGUJQFZbNl0sQFZbNl0sJGEyCi0rCWx3egkkYTIsYCRM SVRUTEVfRU5ESUFOXjU2YCgkY3R4KQotKwlhZGRjCUBWWzldLEBWWzldLCR0MQotKwlsd3oJJGEz LGAkTElUVExFX0VORElBTl42MGAoJGN0eCkKLSsJYWRkZQlAVls4XSxAVls4XSwkdDAKLSsJc3R3 CUBWWzBdLGAkTElUVExFX0VORElBTl4wYCgkY3R4KQotKwlzdHcJQFZbMV0sYCRMSVRUTEVfRU5E SUFOXjRgKCRjdHgpCi0rCWFkZGMJQFZbMTFdLEBWWzExXSwkdDMKLSsJc3R3CUBWWzJdLGAkTElU VExFX0VORElBTl44YCgkY3R4KQotKwlzdHcJQFZbM10sYCRMSVRUTEVfRU5ESUFOXjEyYCgkY3R4 KQotKwlhZGRlCUBWWzEwXSxAVlsxMF0sJHQyCi0rCXN0dwlAVls0XSxgJExJVFRMRV9FTkRJQU5e MTZgKCRjdHgpCi0rCXN0dwlAVls1XSxgJExJVFRMRV9FTkRJQU5eMjBgKCRjdHgpCi0rCWFkZGMJ QFZbMTNdLEBWWzEzXSwkYTEKLSsJc3R3CUBWWzZdLGAkTElUVExFX0VORElBTl4yNGAoJGN0eCkK LSsJc3R3CUBWWzddLGAkTElUVExFX0VORElBTl4yOGAoJGN0eCkKLSsJYWRkZQlAVlsxMl0sQFZb MTJdLCRhMAotKwlzdHcJQFZbOF0sYCRMSVRUTEVfRU5ESUFOXjMyYCgkY3R4KQotKwlzdHcJQFZb OV0sYCRMSVRUTEVfRU5ESUFOXjM2YCgkY3R4KQotKwlhZGRjCUBWWzE1XSxAVlsxNV0sJGEzCi0r CXN0dwlAVlsxMF0sYCRMSVRUTEVfRU5ESUFOXjQwYCgkY3R4KQotKwlzdHcJQFZbMTFdLGAkTElU VExFX0VORElBTl40NGAoJGN0eCkKLSsJYWRkZQlAVlsxNF0sQFZbMTRdLCRhMgotKwlzdHcJQFZb MTJdLGAkTElUVExFX0VORElBTl40OGAoJGN0eCkKLSsJc3R3CUBWWzEzXSxgJExJVFRMRV9FTkRJ QU5eNTJgKCRjdHgpCi0rCXN0dwlAVlsxNF0sYCRMSVRUTEVfRU5ESUFOXjU2YCgkY3R4KQotKwlz dHcJQFZbMTVdLGAkTElUVExFX0VORElBTl42MGAoJGN0eCkKLSsKLSsJYWRkaQkkaW5wLCRpbnAs YDE2KiRTWmAJCTsgYWR2YW5jZSBpbnAKLSsJJFBVU0gJJGlucCxgJEZSQU1FLSRTSVpFX1QqMjNg KCRzcCkKLSsJJFVDTVAJJGlucCwkbnVtCi0rCWJuZQlMc2hhMl9ibG9ja19wcml2YXRlCi0rCWJs cgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKLSsuc2l6ZQkkZnVuYywu LSRmdW5jCi0rX19fCi0rfQotIAotICMgVWdseSBoYWNrIGhlcmUsIGJlY2F1c2UgUFBDIGFzc2Vt YmxlciBzeW50YXggc2VlbSB0byB2YXJ5IHRvbwotICMgbXVjaCBmcm9tIHBsYXRmb3JtcyB0byBw bGF0Zm9ybS4uLgotQEAgLTM5NSw0NiArNzI3LDQ2IEBAIExQSUNtZXVwOgotIAkuc3BhY2UJYDY0 LTkqNGAKLSBfX18KLSAkY29kZS49PDxfX18gaWYgKCRTWj09OCk7Ci0tCS5sb25nCTB4NDI4YTJm OTgsMHhkNzI4YWUyMiwweDcxMzc0NDkxLDB4MjNlZjY1Y2QKLS0JLmxvbmcJMHhiNWMwZmJjZiww eGVjNGQzYjJmLDB4ZTliNWRiYTUsMHg4MTg5ZGJiYwotLQkubG9uZwkweDM5NTZjMjViLDB4ZjM0 OGI1MzgsMHg1OWYxMTFmMSwweGI2MDVkMDE5Ci0tCS5sb25nCTB4OTIzZjgyYTQsMHhhZjE5NGY5 YiwweGFiMWM1ZWQ1LDB4ZGE2ZDgxMTgKLS0JLmxvbmcJMHhkODA3YWE5OCwweGEzMDMwMjQyLDB4 MTI4MzViMDEsMHg0NTcwNmZiZQotLQkubG9uZwkweDI0MzE4NWJlLDB4NGVlNGIyOGMsMHg1NTBj N2RjMywweGQ1ZmZiNGUyCi0tCS5sb25nCTB4NzJiZTVkNzQsMHhmMjdiODk2ZiwweDgwZGViMWZl LDB4M2IxNjk2YjEKLS0JLmxvbmcJMHg5YmRjMDZhNywweDI1YzcxMjM1LDB4YzE5YmYxNzQsMHhj ZjY5MjY5NAotLQkubG9uZwkweGU0OWI2OWMxLDB4OWVmMTRhZDIsMHhlZmJlNDc4NiwweDM4NGYy NWUzCi0tCS5sb25nCTB4MGZjMTlkYzYsMHg4YjhjZDViNSwweDI0MGNhMWNjLDB4NzdhYzljNjUK LS0JLmxvbmcJMHgyZGU5MmM2ZiwweDU5MmIwMjc1LDB4NGE3NDg0YWEsMHg2ZWE2ZTQ4MwotLQku bG9uZwkweDVjYjBhOWRjLDB4YmQ0MWZiZDQsMHg3NmY5ODhkYSwweDgzMTE1M2I1Ci0tCS5sb25n CTB4OTgzZTUxNTIsMHhlZTY2ZGZhYiwweGE4MzFjNjZkLDB4MmRiNDMyMTAKLS0JLmxvbmcJMHhi MDAzMjdjOCwweDk4ZmIyMTNmLDB4YmY1OTdmYzcsMHhiZWVmMGVlNAotLQkubG9uZwkweGM2ZTAw YmYzLDB4M2RhODhmYzIsMHhkNWE3OTE0NywweDkzMGFhNzI1Ci0tCS5sb25nCTB4MDZjYTYzNTEs MHhlMDAzODI2ZiwweDE0MjkyOTY3LDB4MGEwZTZlNzAKLS0JLmxvbmcJMHgyN2I3MGE4NSwweDQ2 ZDIyZmZjLDB4MmUxYjIxMzgsMHg1YzI2YzkyNgotLQkubG9uZwkweDRkMmM2ZGZjLDB4NWFjNDJh ZWQsMHg1MzM4MGQxMywweDlkOTViM2RmCi0tCS5sb25nCTB4NjUwYTczNTQsMHg4YmFmNjNkZSww eDc2NmEwYWJiLDB4M2M3N2IyYTgKLS0JLmxvbmcJMHg4MWMyYzkyZSwweDQ3ZWRhZWU2LDB4OTI3 MjJjODUsMHgxNDgyMzUzYgotLQkubG9uZwkweGEyYmZlOGExLDB4NGNmMTAzNjQsMHhhODFhNjY0 YiwweGJjNDIzMDAxCi0tCS5sb25nCTB4YzI0YjhiNzAsMHhkMGY4OTc5MSwweGM3NmM1MWEzLDB4 MDY1NGJlMzAKLS0JLmxvbmcJMHhkMTkyZTgxOSwweGQ2ZWY1MjE4LDB4ZDY5OTA2MjQsMHg1NTY1 YTkxMAotLQkubG9uZwkweGY0MGUzNTg1LDB4NTc3MTIwMmEsMHgxMDZhYTA3MCwweDMyYmJkMWI4 Ci0tCS5sb25nCTB4MTlhNGMxMTYsMHhiOGQyZDBjOCwweDFlMzc2YzA4LDB4NTE0MWFiNTMKLS0J LmxvbmcJMHgyNzQ4Nzc0YywweGRmOGVlYjk5LDB4MzRiMGJjYjUsMHhlMTliNDhhOAotLQkubG9u ZwkweDM5MWMwY2IzLDB4YzVjOTVhNjMsMHg0ZWQ4YWE0YSwweGUzNDE4YWNiCi0tCS5sb25nCTB4 NWI5Y2NhNGYsMHg3NzYzZTM3MywweDY4MmU2ZmYzLDB4ZDZiMmI4YTMKLS0JLmxvbmcJMHg3NDhm ODJlZSwweDVkZWZiMmZjLDB4NzhhNTYzNmYsMHg0MzE3MmY2MAotLQkubG9uZwkweDg0Yzg3ODE0 LDB4YTFmMGFiNzIsMHg4Y2M3MDIwOCwweDFhNjQzOWVjCi0tCS5sb25nCTB4OTBiZWZmZmEsMHgy MzYzMWUyOCwweGE0NTA2Y2ViLDB4ZGU4MmJkZTkKLS0JLmxvbmcJMHhiZWY5YTNmNywweGIyYzY3 OTE1LDB4YzY3MTc4ZjIsMHhlMzcyNTMyYgotLQkubG9uZwkweGNhMjczZWNlLDB4ZWEyNjYxOWMs MHhkMTg2YjhjNywweDIxYzBjMjA3Ci0tCS5sb25nCTB4ZWFkYTdkZDYsMHhjZGUwZWIxZSwweGY1 N2Q0ZjdmLDB4ZWU2ZWQxNzgKLS0JLmxvbmcJMHgwNmYwNjdhYSwweDcyMTc2ZmJhLDB4MGE2Mzdk YzUsMHhhMmM4OThhNgotLQkubG9uZwkweDExM2Y5ODA0LDB4YmVmOTBkYWUsMHgxYjcxMGIzNSww eDEzMWM0NzFiCi0tCS5sb25nCTB4MjhkYjc3ZjUsMHgyMzA0N2Q4NCwweDMyY2FhYjdiLDB4NDBj NzI0OTMKLS0JLmxvbmcJMHgzYzllYmUwYSwweDE1YzliZWJjLDB4NDMxZDY3YzQsMHg5YzEwMGQ0 YwotLQkubG9uZwkweDRjYzVkNGJlLDB4Y2IzZTQyYjYsMHg1OTdmMjk5YywweGZjNjU3ZTJhCi0t CS5sb25nCTB4NWZjYjZmYWIsMHgzYWQ2ZmFlYywweDZjNDQxOThjLDB4NGE0NzU4MTcKLSsJLnF1 YWQJMHg0MjhhMmY5OGQ3MjhhZTIyLDB4NzEzNzQ0OTEyM2VmNjVjZAotKwkucXVhZAkweGI1YzBm YmNmZWM0ZDNiMmYsMHhlOWI1ZGJhNTgxODlkYmJjCi0rCS5xdWFkCTB4Mzk1NmMyNWJmMzQ4YjUz OCwweDU5ZjExMWYxYjYwNWQwMTkKLSsJLnF1YWQJMHg5MjNmODJhNGFmMTk0ZjliLDB4YWIxYzVl ZDVkYTZkODExOAotKwkucXVhZAkweGQ4MDdhYTk4YTMwMzAyNDIsMHgxMjgzNWIwMTQ1NzA2ZmJl Ci0rCS5xdWFkCTB4MjQzMTg1YmU0ZWU0YjI4YywweDU1MGM3ZGMzZDVmZmI0ZTIKLSsJLnF1YWQJ MHg3MmJlNWQ3NGYyN2I4OTZmLDB4ODBkZWIxZmUzYjE2OTZiMQotKwkucXVhZAkweDliZGMwNmE3 MjVjNzEyMzUsMHhjMTliZjE3NGNmNjkyNjk0Ci0rCS5xdWFkCTB4ZTQ5YjY5YzE5ZWYxNGFkMiww eGVmYmU0Nzg2Mzg0ZjI1ZTMKLSsJLnF1YWQJMHgwZmMxOWRjNjhiOGNkNWI1LDB4MjQwY2ExY2M3 N2FjOWM2NQotKwkucXVhZAkweDJkZTkyYzZmNTkyYjAyNzUsMHg0YTc0ODRhYTZlYTZlNDgzCi0r CS5xdWFkCTB4NWNiMGE5ZGNiZDQxZmJkNCwweDc2Zjk4OGRhODMxMTUzYjUKLSsJLnF1YWQJMHg5 ODNlNTE1MmVlNjZkZmFiLDB4YTgzMWM2NmQyZGI0MzIxMAotKwkucXVhZAkweGIwMDMyN2M4OThm YjIxM2YsMHhiZjU5N2ZjN2JlZWYwZWU0Ci0rCS5xdWFkCTB4YzZlMDBiZjMzZGE4OGZjMiwweGQ1 YTc5MTQ3OTMwYWE3MjUKLSsJLnF1YWQJMHgwNmNhNjM1MWUwMDM4MjZmLDB4MTQyOTI5NjcwYTBl NmU3MAotKwkucXVhZAkweDI3YjcwYTg1NDZkMjJmZmMsMHgyZTFiMjEzODVjMjZjOTI2Ci0rCS5x dWFkCTB4NGQyYzZkZmM1YWM0MmFlZCwweDUzMzgwZDEzOWQ5NWIzZGYKLSsJLnF1YWQJMHg2NTBh NzM1NDhiYWY2M2RlLDB4NzY2YTBhYmIzYzc3YjJhOAotKwkucXVhZAkweDgxYzJjOTJlNDdlZGFl ZTYsMHg5MjcyMmM4NTE0ODIzNTNiCi0rCS5xdWFkCTB4YTJiZmU4YTE0Y2YxMDM2NCwweGE4MWE2 NjRiYmM0MjMwMDEKLSsJLnF1YWQJMHhjMjRiOGI3MGQwZjg5NzkxLDB4Yzc2YzUxYTMwNjU0YmUz MAotKwkucXVhZAkweGQxOTJlODE5ZDZlZjUyMTgsMHhkNjk5MDYyNDU1NjVhOTEwCi0rCS5xdWFk CTB4ZjQwZTM1ODU1NzcxMjAyYSwweDEwNmFhMDcwMzJiYmQxYjgKLSsJLnF1YWQJMHgxOWE0YzEx NmI4ZDJkMGM4LDB4MWUzNzZjMDg1MTQxYWI1MwotKwkucXVhZAkweDI3NDg3NzRjZGY4ZWViOTks MHgzNGIwYmNiNWUxOWI0OGE4Ci0rCS5xdWFkCTB4MzkxYzBjYjNjNWM5NWE2MywweDRlZDhhYTRh ZTM0MThhY2IKLSsJLnF1YWQJMHg1YjljY2E0Zjc3NjNlMzczLDB4NjgyZTZmZjNkNmIyYjhhMwot KwkucXVhZAkweDc0OGY4MmVlNWRlZmIyZmMsMHg3OGE1NjM2ZjQzMTcyZjYwCi0rCS5xdWFkCTB4 ODRjODc4MTRhMWYwYWI3MiwweDhjYzcwMjA4MWE2NDM5ZWMKLSsJLnF1YWQJMHg5MGJlZmZmYTIz NjMxZTI4LDB4YTQ1MDZjZWJkZTgyYmRlOQotKwkucXVhZAkweGJlZjlhM2Y3YjJjNjc5MTUsMHhj NjcxNzhmMmUzNzI1MzJiCi0rCS5xdWFkCTB4Y2EyNzNlY2VlYTI2NjE5YywweGQxODZiOGM3MjFj MGMyMDcKLSsJLnF1YWQJMHhlYWRhN2RkNmNkZTBlYjFlLDB4ZjU3ZDRmN2ZlZTZlZDE3OAotKwku cXVhZAkweDA2ZjA2N2FhNzIxNzZmYmEsMHgwYTYzN2RjNWEyYzg5OGE2Ci0rCS5xdWFkCTB4MTEz Zjk4MDRiZWY5MGRhZSwweDFiNzEwYjM1MTMxYzQ3MWIKLSsJLnF1YWQJMHgyOGRiNzdmNTIzMDQ3 ZDg0LDB4MzJjYWFiN2I0MGM3MjQ5MwotKwkucXVhZAkweDNjOWViZTBhMTVjOWJlYmMsMHg0MzFk NjdjNDljMTAwZDRjCi0rCS5xdWFkCTB4NGNjNWQ0YmVjYjNlNDJiNiwweDU5N2YyOTljZmM2NTdl MmEKLSsJLnF1YWQJMHg1ZmNiNmZhYjNhZDZmYWVjLDB4NmM0NDE5OGM0YTQ3NTgxNwotIF9fXwot ICRjb2RlLj08PF9fXyBpZiAoJFNaPT00KTsKLSAJLmxvbmcJMHg0MjhhMmY5OCwweDcxMzc0NDkx LDB4YjVjMGZiY2YsMHhlOWI1ZGJhNQotZGlmZiAtLWdpdCBhL2NyeXB0by9zaGEvYXNtL3NoYTUx MnA4LXBwYy5wbCBiL2NyeXB0by9zaGEvYXNtL3NoYTUxMnA4LXBwYy5wbAotbmV3IGZpbGUgbW9k ZSAxMDA3NTUKLWluZGV4IDAwMDAwMDAuLmEzMTZiMzEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2Ny eXB0by9zaGEvYXNtL3NoYTUxMnA4LXBwYy5wbAotQEAgLTAsMCArMSw0MjMgQEAKLSsjIS91c3Iv YmluL2VudiBwZXJsCi0rCi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlh a292IDxhcHByb0BvcGVuc3NsLm9yZz4gZm9yIHRoZSBPcGVuU1NMCi0rIyBwcm9qZWN0LiBUaGUg bW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCi0rIyBD UllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3Ig ZnVydGhlcgotKyMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5 cHRvZ2Ftcy8uCi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotKwotKyMgU0hBMjU2LzUxMiBmb3IgUG93ZXJJU0Eg djIuMDcuCi0rIwotKyMgQWNjdXJhdGUgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnRzIGFyZSBwcm9i bGVtYXRpYywgYmVjYXVzZSBpdCdzCi0rIyBhbHdheXMgdmlydHVhbGl6ZWQgc2V0dXAgd2l0aCBw b3NzaWJseSB0aHJvdHRsZWQgcHJvY2Vzc29yLgotKyMgUmVsYXRpdmUgY29tcGFyaXNvbiBpcyB0 aGVyZWZvcmUgbW9yZSBpbmZvcm1hdGl2ZS4gVGhpcyBtb2R1bGUgaXMKLSsjIH42MCUgZmFzdGVy IHRoYW4gaW50ZWdlci1vbmx5IHNoYTUxMi1wcGMucGwuIFRvIGFuY2hvciB0byBzb21ldGhpbmcK LSsjIGVsc2UsIFNIQTI1NiBpcyAyNCUgc2xvd2VyIHRoYW4gc2hhMS1wcGMucGwgYW5kIDIuNXgg c2xvd2VyIHRoYW4KLSsjIGhhcmR3YXJlLWFzc2lzdGVkIGFlcy0xMjgtY2JjIGVuY3J5cHQuIFNI QTUxMiBpcyAyMCUgZmFzdGVyIHRoYW4KLSsjIHNoYTEtcHBjLnBsIGFuZCAxLjZ4IHNsb3dlciB0 aGFuIGFlcy0xMjgtY2JjLiBBbm90aGVyIGludGVyZXN0aW5nCi0rIyByZXN1bHQgaXMgZGVncmVl IG9mIGNvbXB1dGF0aW9uYWwgcmVzb3VyY2VzJyB1dGlsaXphdGlvbi4gUE9XRVI4IGlzCi0rIyAi bWFzc2l2ZWx5IG11bHRpLXRocmVhZGVkIGNoaXAiIGFuZCBkaWZmZXJlbmNlIGJldHdlZW4gc2lu Z2xlLSBhbmQKLSsjIG1heGltdW0gbXVsdGktcHJvY2VzcyBiZW5jaG1hcmsgcmVzdWx0cyB0ZWxs cyB0aGF0IHV0bGl6YXRpb24gaXMKLSsjIHdob29waW5nIDk0JS4gRm9yIHNoYTUxMi1wcGMucGwg d2UgZ2V0IFtub3QgdW5pbXByZXNzaXZlXSA4NCUgYW5kCi0rIyBmb3Igc2hhMS1wcGMucGwgLSA3 MyUuIDEwMCUgbWVhbnMgdGhhdCBtdWx0aS1wcm9jZXNzIHJlc3VsdCBlcXVhbHMKLSsjIHRvIHNp bmdsZS1wcm9jZXNzIG9uZSwgZ2l2ZW4gdGhhdCBhbGwgdGhyZWFkcyBlbmQgdXAgb24gdGhlIHNh bWUKLSsjIHBoeXNpY2FsIGNvcmUuCi0rCi0rJGZsYXZvdXI9c2hpZnQ7Ci0rJG91dHB1dCA9c2hp ZnQ7Ci0rCi0raWYgKCRmbGF2b3VyID1+IC82NC8pIHsKLSsJJFNJWkVfVD04OwotKwkkTFJTQVZF PTIqJFNJWkVfVDsKLSsJJFNUVT0ic3RkdSI7Ci0rCSRQT1A9ImxkIjsKLSsJJFBVU0g9InN0ZCI7 Ci0rfSBlbHNpZiAoJGZsYXZvdXIgPX4gLzMyLykgewotKwkkU0laRV9UPTQ7Ci0rCSRMUlNBVkU9 JFNJWkVfVDsKLSsJJFNUVT0ic3R3dSI7Ci0rCSRQT1A9Imx3eiI7Ci0rCSRQVVNIPSJzdHciOwot K30gZWxzZSB7IGRpZSAibm9uc2Vuc2UgJGZsYXZvdXIiOyB9Ci0rCi0rJExFTkRJQU49KCRmbGF2 b3VyPX4vbGUvKTsKLSsKLSskMCA9fiBtLyguKltcL1xcXSlbXlwvXFxdKyQvOyAkZGlyPSQxOwot KyggJHhsYXRlPSIke2Rpcn1wcGMteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUgKSBvcgotKyggJHhs YXRlPSIke2Rpcn0uLi8uLi9wZXJsYXNtL3BwYy14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSkgb3IK LStkaWUgImNhbid0IGxvY2F0ZSBwcGMteGxhdGUucGwiOwotKwotK29wZW4gU1RET1VULCJ8ICRe WCAkeGxhdGUgJGZsYXZvdXIgJG91dHB1dCIgfHwgZGllICJjYW4ndCBjYWxsICR4bGF0ZTogJCEi OwotKwotK2lmICgkb3V0cHV0ID1+IC81MTIvKSB7Ci0rCSRiaXRzPTUxMjsKLSsJJFNaPTg7Ci0r CSRzej0iZCI7Ci0rCSRyb3VuZHM9ODA7Ci0rfSBlbHNlIHsKLSsJJGJpdHM9MjU2OwotKwkkU1o9 NDsKLSsJJHN6PSJ3IjsKLSsJJHJvdW5kcz02NDsKLSt9Ci0rCi0rJGZ1bmM9InNoYSR7Yml0c31f YmxvY2tfcDgiOwotKyRGUkFNRT04KiRTSVpFX1Q7Ci0rCi0rJHNwID0icjEiOwotKyR0b2M9InIy IjsKLSskY3R4PSJyMyI7Ci0rJGlucD0icjQiOwotKyRudW09InI1IjsKLSskVGJsPSJyNiI7Ci0r JGlkeD0icjciOwotKyRscnNhdmU9InI4IjsKLSskb2ZmbG9hZD0icjExIjsKLSskdnJzYXZlPSJy MTIiOwotKygkeDAwLCR4MTAsJHgyMCwkeDMwLCR4NDAsJHg1MCwkeDYwLCR4NzApPW1hcCgiciRf IiwoMCwxMCwyNi4uMzEpKTsKLSsKLStAVj0oJEEsJEIsJEMsJEQsJEUsJEYsJEcsJEgpPW1hcCgi diRfIiwoMC4uNykpOwotK0BYPW1hcCgidiRfIiwoOC4uMjMpKTsKLSsoJEtpLCRGdW5jLCRTMCwk UzEsJHMwLCRzMSwkbGVtYXNrKT1tYXAoInYkXyIsKDI0Li4zMSkpOwotKwotK3N1YiBST1VORCB7 Ci0rbXkgKCRpLCRhLCRiLCRjLCRkLCRlLCRmLCRnLCRoKT1AXzsKLStteSAkaj0oJGkrMSklMTY7 Ci0rCi0rJGNvZGUuPTw8X19fCQlpZiAoJGk8MTUgJiYgKCRpJSgxNi8kU1opKT09KDE2LyRTWi0x KSk7Ci0rCWx2eF91CQlAWFskaSsxXSwwLCRpbnAJCTsgbG9hZCBYW2ldIGluIGFkdmFuY2UKLSsJ YWRkaQkJJGlucCwkaW5wLDE2Ci0rX19fCi0rJGNvZGUuPTw8X19fCQlpZiAoJGk8MTYgJiYgKCRp JSgxNi8kU1opKSk7Ci0rCXZzbGRvaQkJQFhbJGldLEBYWyRpLTFdLEBYWyRpLTFdLCRTWgotK19f XwotKyRjb2RlLj08PF9fXwkJaWYgKCRMRU5ESUFOICYmICRpPDE2ICYmICgkaSUoMTYvJFNaKSk9 PTApOwotKwl2cGVybQkJQFhbJGldLEBYWyRpXSxAWFskaV0sJGxlbWFzawotK19fXwotKyRjb2Rl Lj08PF9fXzsKLSsJYCJ2c2hhc2lnbWEke3N6fQkkczAsQFhbKCRqKzEpJTE2XSwwLDAiCQlpZiAo JGk+PTE1KWAKLSsJdnNlbAkJJEZ1bmMsJGcsJGYsJGUJCTsgQ2goZSxmLGcpCi0rCXZzaGFzaWdt YSR7c3p9CSRTMSwkZSwxLDE1CQk7IFNpZ21hMShlKQotKwl2YWRkdSR7c3p9bQkkaCwkaCxAWFsk aSUxNl0JCTsgaCs9WFtpXQotKwl2c2hhc2lnbWEke3N6fQkkUzAsJGEsMSwwCQk7IFNpZ21hMChh KQotKwlgInZzaGFzaWdtYSR7c3p9CSRzMSxAWFsoJGorMTQpJTE2XSwwLDE1IglpZiAoJGk+PTE1 KWAKLSsJdmFkZHUke3N6fW0JJGgsJGgsJEZ1bmMJCTsgaCs9Q2goZSxmLGcpCi0rCXZ4b3IJCSRG dW5jLCRhLCRiCi0rCWAidmFkZHUke3N6fW0JCUBYWyRqXSxAWFskal0sQFhbKCRqKzkpJTE2XSIJ aWYgKCRpPj0xNSlgCi0rCXZhZGR1JHtzen1tCSRoLCRoLCRTMQkJOyBoKz1TaWdtYTEoZSkKLSsJ dnNlbAkJJEZ1bmMsJGIsJGMsJEZ1bmMJOyBNYWooYSxiLGMpCi0rCXZhZGR1JHtzen1tCSRnLCRn LCRLaQkJOyBmdXR1cmUgaCs9S1tpXQotKwl2YWRkdSR7c3p9bQkkZCwkZCwkaAkJOyBkKz1oCi0r CXZhZGR1JHtzen1tCSRTMCwkUzAsJEZ1bmMJCTsgU2lnbWEwKGEpK01haihhLGIsYykKLSsJYCJ2 YWRkdSR7c3p9bQkJQFhbJGpdLEBYWyRqXSwkczAiCQlpZiAoJGk+PTE1KWAKLSsJbHZ4CQkkS2ks JGlkeCwkVGJsCQk7IGxvYWQgbmV4dCBLW2ldCi0rCWFkZGkJCSRpZHgsJGlkeCwxNgotKwl2YWRk dSR7c3p9bQkkaCwkaCwkUzAJCTsgaCs9U2lnbWEwKGEpK01haihhLGIsYykKLSsJYCJ2YWRkdSR7 c3p9bQkJQFhbJGpdLEBYWyRqXSwkczEiCQlpZiAoJGk+PTE1KWAKLStfX18KLSt9Ci0rCi0rJGNv ZGU9PDxfX187Ci0rLm1hY2hpbmUJImFueSIKLSsudGV4dAotKwotKy5nbG9ibAkkZnVuYwotKy5h bGlnbgk2Ci0rJGZ1bmM6Ci0rCSRTVFUJCSRzcCwtYCgkRlJBTUUrMjEqMTYrNiokU0laRV9UKWAo JHNwKQotKwltZmxyCQkkbHJzYXZlCi0rCWxpCQlyMTAsYCRGUkFNRSs4KjE2KzE1YAotKwlsaQkJ cjExLGAkRlJBTUUrOCoxNiszMWAKLSsJc3R2eAkJdjIwLHIxMCwkc3AJCSMgQUJJIHNheXMgc28K LSsJYWRkaQkJcjEwLHIxMCwzMgotKwltZnNwcgkJJHZyc2F2ZSwyNTYKLSsJc3R2eAkJdjIxLHIx MSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQl2MjIscjEwLCRzcAotKwlhZGRpCQly MTAscjEwLDMyCi0rCXN0dngJCXYyMyxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2 eAkJdjI0LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlzdHZ4CQl2MjUscjExLCRzcAot KwlhZGRpCQlyMTEscjExLDMyCi0rCXN0dngJCXYyNixyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAs MzIKLSsJc3R2eAkJdjI3LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQl2Mjgs cjEwLCRzcAotKwlhZGRpCQlyMTAscjEwLDMyCi0rCXN0dngJCXYyOSxyMTEsJHNwCi0rCWFkZGkJ CXIxMSxyMTEsMzIKLSsJc3R2eAkJdjMwLHIxMCwkc3AKLSsJc3R2eAkJdjMxLHIxMSwkc3AKLSsJ bGkJCXIxMSwtMQotKwlzdHcJCSR2cnNhdmUsYCRGUkFNRSsyMSoxNi00YCgkc3ApCSMgc2F2ZSB2 cnNhdmUKLSsJbGkJCSR4MTAsMHgxMAotKwkkUFVTSAkJcjI2LGAkRlJBTUUrMjEqMTYrMCokU0la RV9UYCgkc3ApCi0rCWxpCQkkeDIwLDB4MjAKLSsJJFBVU0gJCXIyNyxgJEZSQU1FKzIxKjE2KzEq JFNJWkVfVGAoJHNwKQotKwlsaQkJJHgzMCwweDMwCi0rCSRQVVNICQlyMjgsYCRGUkFNRSsyMSox NisyKiRTSVpFX1RgKCRzcCkKLSsJbGkJCSR4NDAsMHg0MAotKwkkUFVTSAkJcjI5LGAkRlJBTUUr MjEqMTYrMyokU0laRV9UYCgkc3ApCi0rCWxpCQkkeDUwLDB4NTAKLSsJJFBVU0gJCXIzMCxgJEZS QU1FKzIxKjE2KzQqJFNJWkVfVGAoJHNwKQotKwlsaQkJJHg2MCwweDYwCi0rCSRQVVNICQlyMzEs YCRGUkFNRSsyMSoxNis1KiRTSVpFX1RgKCRzcCkKLSsJbGkJCSR4NzAsMHg3MAotKwkkUFVTSAkJ JGxyc2F2ZSxgJEZSQU1FKzIxKjE2KzYqJFNJWkVfVCskTFJTQVZFYCgkc3ApCi0rCW10c3ByCQky NTYscjExCi0rCi0rCWJsCQlMUElDbWV1cAotKwlhZGRpCQkkb2ZmbG9hZCwkc3AsJEZSQU1FKzE1 Ci0rX19fCi0rJGNvZGUuPTw8X19fCQlpZiAoJExFTkRJQU4pOwotKwlsaQkJJGlkeCw4Ci0rCWx2 c2wJCSRsZW1hc2ssMCwkaWR4Ci0rCXZzcGx0aXNiCSRLaSwweDBmCi0rCXZ4b3IJCSRsZW1hc2ss JGxlbWFzaywkS2kKLStfX18KLSskY29kZS49PDxfX18JCWlmICgkU1o9PTQpOwotKwlsdnhfNHcJ CSRBLCR4MDAsJGN0eAotKwlsdnhfNHcJCSRFLCR4MTAsJGN0eAotKwl2c2xkb2kJCSRCLCRBLCRB LDQJCSMgdW5wYWNrCi0rCXZzbGRvaQkJJEMsJEEsJEEsOAotKwl2c2xkb2kJCSRELCRBLCRBLDEy Ci0rCXZzbGRvaQkJJEYsJEUsJEUsNAotKwl2c2xkb2kJCSRHLCRFLCRFLDgKLSsJdnNsZG9pCQkk SCwkRSwkRSwxMgotK19fXwotKyRjb2RlLj08PF9fXwkJaWYgKCRTWj09OCk7Ci0rCWx2eF91CQkk QSwkeDAwLCRjdHgKLSsJbHZ4X3UJCSRDLCR4MTAsJGN0eAotKwlsdnhfdQkJJEUsJHgyMCwkY3R4 Ci0rCXZzbGRvaQkJJEIsJEEsJEEsOAkJIyB1bnBhY2sKLSsJbHZ4X3UJCSRHLCR4MzAsJGN0eAot Kwl2c2xkb2kJCSRELCRDLCRDLDgKLSsJdnNsZG9pCQkkRiwkRSwkRSw4Ci0rCXZzbGRvaQkJJEgs JEcsJEcsOAotK19fXwotKyRjb2RlLj08PF9fXzsKLSsJbGkJCXIwLGAoJHJvdW5kcy0xNikvMTZg CSMgaW5uZXIgbG9vcCBjb3VudGVyCi0rCWIJCUxvb3AKLSsuYWxpZ24JNQotK0xvb3A6Ci0rCWx2 eAkJJEtpLCR4MDAsJFRibAotKwlsaQkJJGlkeCwxNgotKwlsdnhfdQkJQFhbMF0sMCwkaW5wCi0r CWFkZGkJCSRpbnAsJGlucCwxNgotKwlzdHZ4CQkkQSwkeDAwLCRvZmZsb2FkCSMgb2ZmbG9hZCAk QS0kSAotKwlzdHZ4CQkkQiwkeDEwLCRvZmZsb2FkCi0rCXN0dngJCSRDLCR4MjAsJG9mZmxvYWQK LSsJc3R2eAkJJEQsJHgzMCwkb2ZmbG9hZAotKwlzdHZ4CQkkRSwkeDQwLCRvZmZsb2FkCi0rCXN0 dngJCSRGLCR4NTAsJG9mZmxvYWQKLSsJc3R2eAkJJEcsJHg2MCwkb2ZmbG9hZAotKwlzdHZ4CQkk SCwkeDcwLCRvZmZsb2FkCi0rCXZhZGR1JHtzen1tCSRILCRILCRLaQkJIyBoK0tbaV0KLSsJbHZ4 CQkkS2ksJGlkeCwkVGJsCi0rCWFkZGkJCSRpZHgsJGlkeCwxNgotK19fXwotK2ZvciAoJGk9MDsk aTwxNjskaSsrKQl7ICZST1VORCgkaSxAVik7IHVuc2hpZnQoQFYscG9wKEBWKSk7IH0KLSskY29k ZS49PDxfX187Ci0rCW10Y3RyCQlyMAotKwliCQlMMTZfeHgKLSsuYWxpZ24JNQotK0wxNl94eDoK LStfX18KLStmb3IgKDskaTwzMjskaSsrKQl7ICZST1VORCgkaSxAVik7IHVuc2hpZnQoQFYscG9w KEBWKSk7IH0KLSskY29kZS49PDxfX187Ci0rCWJkbnoJCUwxNl94eAotKwotKwlsdngJCUBYWzJd LCR4MDAsJG9mZmxvYWQKLSsJc3ViaWMuCQkkbnVtLCRudW0sMQotKwlsdngJCUBYWzNdLCR4MTAs JG9mZmxvYWQKLSsJdmFkZHUke3N6fW0JJEEsJEEsQFhbMl0KLSsJbHZ4CQlAWFs0XSwkeDIwLCRv ZmZsb2FkCi0rCXZhZGR1JHtzen1tCSRCLCRCLEBYWzNdCi0rCWx2eAkJQFhbNV0sJHgzMCwkb2Zm bG9hZAotKwl2YWRkdSR7c3p9bQkkQywkQyxAWFs0XQotKwlsdngJCUBYWzZdLCR4NDAsJG9mZmxv YWQKLSsJdmFkZHUke3N6fW0JJEQsJEQsQFhbNV0KLSsJbHZ4CQlAWFs3XSwkeDUwLCRvZmZsb2Fk Ci0rCXZhZGR1JHtzen1tCSRFLCRFLEBYWzZdCi0rCWx2eAkJQFhbOF0sJHg2MCwkb2ZmbG9hZAot Kwl2YWRkdSR7c3p9bQkkRiwkRixAWFs3XQotKwlsdngJCUBYWzldLCR4NzAsJG9mZmxvYWQKLSsJ dmFkZHUke3N6fW0JJEcsJEcsQFhbOF0KLSsJdmFkZHUke3N6fW0JJEgsJEgsQFhbOV0KLSsJYm5l CQlMb29wCi0rX19fCi0rJGNvZGUuPTw8X19fCQlpZiAoJFNaPT00KTsKLSsJbHZ4CQlAWFswXSwk aWR4LCRUYmwKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCXZwZXJtCQkkQSwkQSwkQiwkS2kJCSMg cGFjayB0aGUgYW5zd2VyCi0rCWx2eAkJQFhbMV0sJGlkeCwkVGJsCi0rCXZwZXJtCQkkRSwkRSwk RiwkS2kKLSsJdnBlcm0JCSRBLCRBLCRDLEBYWzBdCi0rCXZwZXJtCQkkRSwkRSwkRyxAWFswXQot Kwl2cGVybQkJJEEsJEEsJEQsQFhbMV0KLSsJdnBlcm0JCSRFLCRFLCRILEBYWzFdCi0rCXN0dnhf NHcJCSRBLCR4MDAsJGN0eAotKwlzdHZ4XzR3CQkkRSwkeDEwLCRjdHgKLStfX18KLSskY29kZS49 PDxfX18JCWlmICgkU1o9PTgpOwotKwl2cGVybQkJJEEsJEEsJEIsJEtpCQkjIHBhY2sgdGhlIGFu c3dlcgotKwl2cGVybQkJJEMsJEMsJEQsJEtpCi0rCXZwZXJtCQkkRSwkRSwkRiwkS2kKLSsJdnBl cm0JCSRHLCRHLCRILCRLaQotKwlzdHZ4X3UJCSRBLCR4MDAsJGN0eAotKwlzdHZ4X3UJCSRDLCR4 MTAsJGN0eAotKwlzdHZ4X3UJCSRFLCR4MjAsJGN0eAotKwlzdHZ4X3UJCSRHLCR4MzAsJGN0eAot K19fXwotKyRjb2RlLj08PF9fXzsKLSsJbGkJCXIxMCxgJEZSQU1FKzgqMTYrMTVgCi0rCW10bHIJ CSRscnNhdmUKLSsJbGkJCXIxMSxgJEZSQU1FKzgqMTYrMzFgCi0rCW10c3ByCQkyNTYsJHZyc2F2 ZQotKwlsdngJCXYyMCxyMTAsJHNwCQkjIEFCSSBzYXlzIHNvCi0rCWFkZGkJCXIxMCxyMTAsMzIK LSsJbHZ4CQl2MjEscjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0rCWx2eAkJdjIyLHIxMCwk c3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlsdngJCXYyMyxyMTEsJHNwCi0rCWFkZGkJCXIxMSxy MTEsMzIKLSsJbHZ4CQl2MjQscjEwLCRzcAotKwlhZGRpCQlyMTAscjEwLDMyCi0rCWx2eAkJdjI1 LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlsdngJCXYyNixyMTAsJHNwCi0rCWFkZGkJ CXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjcscjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0rCWx2 eAkJdjI4LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlsdngJCXYyOSxyMTEsJHNwCi0r CWFkZGkJCXIxMSxyMTEsMzIKLSsJbHZ4CQl2MzAscjEwLCRzcAotKwlsdngJCXYzMSxyMTEsJHNw Ci0rCSRQT1AJCXIyNixgJEZSQU1FKzIxKjE2KzAqJFNJWkVfVGAoJHNwKQotKwkkUE9QCQlyMjcs YCRGUkFNRSsyMSoxNisxKiRTSVpFX1RgKCRzcCkKLSsJJFBPUAkJcjI4LGAkRlJBTUUrMjEqMTYr MiokU0laRV9UYCgkc3ApCi0rCSRQT1AJCXIyOSxgJEZSQU1FKzIxKjE2KzMqJFNJWkVfVGAoJHNw KQotKwkkUE9QCQlyMzAsYCRGUkFNRSsyMSoxNis0KiRTSVpFX1RgKCRzcCkKLSsJJFBPUAkJcjMx LGAkRlJBTUUrMjEqMTYrNSokU0laRV9UYCgkc3ApCi0rCWFkZGkJCSRzcCwkc3AsYCRGUkFNRSsy MSoxNis2KiRTSVpFX1RgCi0rCWJscgotKwkubG9uZwkJMAotKwkuYnl0ZQkJMCwxMiw0LDEsMHg4 MCw2LDMsMAotKwkubG9uZwkJMAotKy5zaXplCSRmdW5jLC4tJGZ1bmMKLStfX18KLSsKLSsjIFVn bHkgaGFjayBoZXJlLCBiZWNhdXNlIFBQQyBhc3NlbWJsZXIgc3ludGF4IHNlZW0gdG8gdmFyeSB0 b28KLSsjIG11Y2ggZnJvbSBwbGF0Zm9ybXMgdG8gcGxhdGZvcm0uLi4KLSskY29kZS49PDxfX187 Ci0rLmFsaWduCTYKLStMUElDbWV1cDoKLSsJbWZscglyMAotKwliY2wJMjAsMzEsXCQrNAotKwlt ZmxyCSRUYmwJOyB2dnZ2dnYgImRpc3RhbmNlIiBiZXR3ZWVuIC4gYW5kIDFzdCBkYXRhIGVudHJ5 Ci0rCWFkZGkJJFRibCwkVGJsLGA2NC04YAotKwltdGxyCXIwCi0rCWJscgotKwkubG9uZwkwCi0r CS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKLSsJLnNwYWNlCWA2NC05KjRgCi0rX19fCi0rCi0r aWYgKCRTWj09OCkgewotKyAgICBsb2NhbCAqdGFibGUgPSBzdWIgewotKwlmb3JlYWNoKEBfKSB7 ICRjb2RlLj0iLnF1YWQJJF8sJF9cbiI7IH0KLSsgICAgfTsKLSsgICAgdGFibGUoCi0rCSIweDQy OGEyZjk4ZDcyOGFlMjIiLCIweDcxMzc0NDkxMjNlZjY1Y2QiLAotKwkiMHhiNWMwZmJjZmVjNGQz YjJmIiwiMHhlOWI1ZGJhNTgxODlkYmJjIiwKLSsJIjB4Mzk1NmMyNWJmMzQ4YjUzOCIsIjB4NTlm MTExZjFiNjA1ZDAxOSIsCi0rCSIweDkyM2Y4MmE0YWYxOTRmOWIiLCIweGFiMWM1ZWQ1ZGE2ZDgx MTgiLAotKwkiMHhkODA3YWE5OGEzMDMwMjQyIiwiMHgxMjgzNWIwMTQ1NzA2ZmJlIiwKLSsJIjB4 MjQzMTg1YmU0ZWU0YjI4YyIsIjB4NTUwYzdkYzNkNWZmYjRlMiIsCi0rCSIweDcyYmU1ZDc0ZjI3 Yjg5NmYiLCIweDgwZGViMWZlM2IxNjk2YjEiLAotKwkiMHg5YmRjMDZhNzI1YzcxMjM1IiwiMHhj MTliZjE3NGNmNjkyNjk0IiwKLSsJIjB4ZTQ5YjY5YzE5ZWYxNGFkMiIsIjB4ZWZiZTQ3ODYzODRm MjVlMyIsCi0rCSIweDBmYzE5ZGM2OGI4Y2Q1YjUiLCIweDI0MGNhMWNjNzdhYzljNjUiLAotKwki MHgyZGU5MmM2ZjU5MmIwMjc1IiwiMHg0YTc0ODRhYTZlYTZlNDgzIiwKLSsJIjB4NWNiMGE5ZGNi ZDQxZmJkNCIsIjB4NzZmOTg4ZGE4MzExNTNiNSIsCi0rCSIweDk4M2U1MTUyZWU2NmRmYWIiLCIw eGE4MzFjNjZkMmRiNDMyMTAiLAotKwkiMHhiMDAzMjdjODk4ZmIyMTNmIiwiMHhiZjU5N2ZjN2Jl ZWYwZWU0IiwKLSsJIjB4YzZlMDBiZjMzZGE4OGZjMiIsIjB4ZDVhNzkxNDc5MzBhYTcyNSIsCi0r CSIweDA2Y2E2MzUxZTAwMzgyNmYiLCIweDE0MjkyOTY3MGEwZTZlNzAiLAotKwkiMHgyN2I3MGE4 NTQ2ZDIyZmZjIiwiMHgyZTFiMjEzODVjMjZjOTI2IiwKLSsJIjB4NGQyYzZkZmM1YWM0MmFlZCIs IjB4NTMzODBkMTM5ZDk1YjNkZiIsCi0rCSIweDY1MGE3MzU0OGJhZjYzZGUiLCIweDc2NmEwYWJi M2M3N2IyYTgiLAotKwkiMHg4MWMyYzkyZTQ3ZWRhZWU2IiwiMHg5MjcyMmM4NTE0ODIzNTNiIiwK LSsJIjB4YTJiZmU4YTE0Y2YxMDM2NCIsIjB4YTgxYTY2NGJiYzQyMzAwMSIsCi0rCSIweGMyNGI4 YjcwZDBmODk3OTEiLCIweGM3NmM1MWEzMDY1NGJlMzAiLAotKwkiMHhkMTkyZTgxOWQ2ZWY1MjE4 IiwiMHhkNjk5MDYyNDU1NjVhOTEwIiwKLSsJIjB4ZjQwZTM1ODU1NzcxMjAyYSIsIjB4MTA2YWEw NzAzMmJiZDFiOCIsCi0rCSIweDE5YTRjMTE2YjhkMmQwYzgiLCIweDFlMzc2YzA4NTE0MWFiNTMi LAotKwkiMHgyNzQ4Nzc0Y2RmOGVlYjk5IiwiMHgzNGIwYmNiNWUxOWI0OGE4IiwKLSsJIjB4Mzkx YzBjYjNjNWM5NWE2MyIsIjB4NGVkOGFhNGFlMzQxOGFjYiIsCi0rCSIweDViOWNjYTRmNzc2M2Uz NzMiLCIweDY4MmU2ZmYzZDZiMmI4YTMiLAotKwkiMHg3NDhmODJlZTVkZWZiMmZjIiwiMHg3OGE1 NjM2ZjQzMTcyZjYwIiwKLSsJIjB4ODRjODc4MTRhMWYwYWI3MiIsIjB4OGNjNzAyMDgxYTY0Mzll YyIsCi0rCSIweDkwYmVmZmZhMjM2MzFlMjgiLCIweGE0NTA2Y2ViZGU4MmJkZTkiLAotKwkiMHhi ZWY5YTNmN2IyYzY3OTE1IiwiMHhjNjcxNzhmMmUzNzI1MzJiIiwKLSsJIjB4Y2EyNzNlY2VlYTI2 NjE5YyIsIjB4ZDE4NmI4YzcyMWMwYzIwNyIsCi0rCSIweGVhZGE3ZGQ2Y2RlMGViMWUiLCIweGY1 N2Q0ZjdmZWU2ZWQxNzgiLAotKwkiMHgwNmYwNjdhYTcyMTc2ZmJhIiwiMHgwYTYzN2RjNWEyYzg5 OGE2IiwKLSsJIjB4MTEzZjk4MDRiZWY5MGRhZSIsIjB4MWI3MTBiMzUxMzFjNDcxYiIsCi0rCSIw eDI4ZGI3N2Y1MjMwNDdkODQiLCIweDMyY2FhYjdiNDBjNzI0OTMiLAotKwkiMHgzYzllYmUwYTE1 YzliZWJjIiwiMHg0MzFkNjdjNDljMTAwZDRjIiwKLSsJIjB4NGNjNWQ0YmVjYjNlNDJiNiIsIjB4 NTk3ZjI5OWNmYzY1N2UyYSIsCi0rCSIweDVmY2I2ZmFiM2FkNmZhZWMiLCIweDZjNDQxOThjNGE0 NzU4MTciLCIwIik7Ci0rJGNvZGUuPTw8X19fCWlmICghJExFTkRJQU4pOwotKy5xdWFkCTB4MDAw MTAyMDMwNDA1MDYwNywweDEwMTExMjEzMTQxNTE2MTcKLStfX18KLSskY29kZS49PDxfX18JaWYg KCRMRU5ESUFOKTsJIyBxdWFkLXN3YXBwZWQKLSsucXVhZAkweDEwMTExMjEzMTQxNTE2MTcsMHgw MDAxMDIwMzA0MDUwNjA3Ci0rX19fCi0rfSBlbHNlIHsKLSsgICAgbG9jYWwgKnRhYmxlID0gc3Vi IHsKLSsJZm9yZWFjaChAXykgeyAkY29kZS49Ii5sb25nCSRfLCRfLCRfLCRfXG4iOyB9Ci0rICAg IH07Ci0rICAgIHRhYmxlKAotKwkiMHg0MjhhMmY5OCIsIjB4NzEzNzQ0OTEiLCIweGI1YzBmYmNm IiwiMHhlOWI1ZGJhNSIsCi0rCSIweDM5NTZjMjViIiwiMHg1OWYxMTFmMSIsIjB4OTIzZjgyYTQi LCIweGFiMWM1ZWQ1IiwKLSsJIjB4ZDgwN2FhOTgiLCIweDEyODM1YjAxIiwiMHgyNDMxODViZSIs IjB4NTUwYzdkYzMiLAotKwkiMHg3MmJlNWQ3NCIsIjB4ODBkZWIxZmUiLCIweDliZGMwNmE3Iiwi MHhjMTliZjE3NCIsCi0rCSIweGU0OWI2OWMxIiwiMHhlZmJlNDc4NiIsIjB4MGZjMTlkYzYiLCIw eDI0MGNhMWNjIiwKLSsJIjB4MmRlOTJjNmYiLCIweDRhNzQ4NGFhIiwiMHg1Y2IwYTlkYyIsIjB4 NzZmOTg4ZGEiLAotKwkiMHg5ODNlNTE1MiIsIjB4YTgzMWM2NmQiLCIweGIwMDMyN2M4IiwiMHhi ZjU5N2ZjNyIsCi0rCSIweGM2ZTAwYmYzIiwiMHhkNWE3OTE0NyIsIjB4MDZjYTYzNTEiLCIweDE0 MjkyOTY3IiwKLSsJIjB4MjdiNzBhODUiLCIweDJlMWIyMTM4IiwiMHg0ZDJjNmRmYyIsIjB4NTMz ODBkMTMiLAotKwkiMHg2NTBhNzM1NCIsIjB4NzY2YTBhYmIiLCIweDgxYzJjOTJlIiwiMHg5Mjcy MmM4NSIsCi0rCSIweGEyYmZlOGExIiwiMHhhODFhNjY0YiIsIjB4YzI0YjhiNzAiLCIweGM3NmM1 MWEzIiwKLSsJIjB4ZDE5MmU4MTkiLCIweGQ2OTkwNjI0IiwiMHhmNDBlMzU4NSIsIjB4MTA2YWEw NzAiLAotKwkiMHgxOWE0YzExNiIsIjB4MWUzNzZjMDgiLCIweDI3NDg3NzRjIiwiMHgzNGIwYmNi NSIsCi0rCSIweDM5MWMwY2IzIiwiMHg0ZWQ4YWE0YSIsIjB4NWI5Y2NhNGYiLCIweDY4MmU2ZmYz IiwKLSsJIjB4NzQ4ZjgyZWUiLCIweDc4YTU2MzZmIiwiMHg4NGM4NzgxNCIsIjB4OGNjNzAyMDgi LAotKwkiMHg5MGJlZmZmYSIsIjB4YTQ1MDZjZWIiLCIweGJlZjlhM2Y3IiwiMHhjNjcxNzhmMiIs IjAiKTsKLSskY29kZS49PDxfX18JaWYgKCEkTEVORElBTik7Ci0rLmxvbmcJMHgwMDAxMDIwMyww eDEwMTExMjEzLDB4MTAxMTEyMTMsMHgxMDExMTIxMwotKy5sb25nCTB4MDAwMTAyMDMsMHgwNDA1 MDYwNywweDEwMTExMjEzLDB4MTAxMTEyMTMKLSsubG9uZwkweDAwMDEwMjAzLDB4MDQwNTA2MDcs MHgwODA5MGEwYiwweDEwMTExMjEzCi0rX19fCi0rJGNvZGUuPTw8X19fCWlmICgkTEVORElBTik7 CSMgd29yZC1zd2FwcGVkCi0rLmxvbmcJMHgxMDExMTIxMywweDEwMTExMjEzLDB4MTAxMTEyMTMs MHgwMDAxMDIwMwotKy5sb25nCTB4MTAxMTEyMTMsMHgxMDExMTIxMywweDA0MDUwNjA3LDB4MDAw MTAyMDMKLSsubG9uZwkweDEwMTExMjEzLDB4MDgwOTBhMGIsMHgwNDA1MDYwNywweDAwMDEwMjAz Ci0rX19fCi0rfQotKyRjb2RlLj08PF9fXzsKLSsuYXNjaXoJIlNIQSR7Yml0c30gZm9yIFBvd2Vy SVNBIDIuMDcsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCi0rLmFsaWduCTIK LStfX18KLSsKLSskY29kZSA9fiBzL1xgKFteXGBdKilcYC9ldmFsICQxL2dlbTsKLStwcmludCAk Y29kZTsKLStjbG9zZSBTVERPVVQ7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMWUtcnBtYnVp bGQucGF0Y2ggYi9vcGVuc3NsLTEuMC4xZS1ycG1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMTRiMmJhOS4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4xZS1ycG1i dWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1kaWZmIC11cCBvcGVu c3NsLTEuMC4xZS9Db25maWd1cmUucnBtYnVpbGQgb3BlbnNzbC0xLjAuMWUvQ29uZmlndXJlCi0t LS0gb3BlbnNzbC0xLjAuMWUvQ29uZmlndXJlLnJwbWJ1aWxkCTIwMTQtMDgtMTMgMTk6MTk6NTMu MjExMDA1NTk4ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWUvQ29uZmlndXJlCTIwMTQtMDgtMTMg MTk6Mjk6MjEuNzA0MDk5Mjg1ICswMjAwCi1AQCAtMzQ1LDI0ICszNDUsMjQgQEAgbXkgJXRhYmxl PSgKLSAjIyMjCi0gIyAqLWdlbmVyaWMqIGlzIGVuZGlhbi1uZXV0cmFsIHRhcmdldCwgYnV0IC4v Y29uZmlnIGlzIGZyZWUgdG8KLSAjIHRocm93IGluIC1EW0JMXV9FTkRJQU4sIHdoaWNoZXZlciBh cHByb3ByaWF0ZS4uLgotLSJsaW51eC1nZW5lcmljMzIiLCJnY2M6LURURVJNSU8gLU8zIC1mb21p dC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NI QVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmxp bnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAot LSJsaW51eC1wcGMiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVO VFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5S T0xMOiR7cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwk KFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1nZW5lcmljMzIiLCJnY2M6 LURURVJNSU8gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJl bHJvIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBC Rl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzpcJChSUE1fT1BUX0ZMQUdT KTouc28uXCQoU0hMSUJfU09OQU1FVkVSKSIsCi0rImxpbnV4LXBwYyIsCSJnY2M6LURCX0VORElB TiAtRFRFUk1JTyAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXos cmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJP TEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9P UFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKLSAjIEl0J3MgYmVsaWV2ZWQgdGhh dCBtYWpvcml0eSBvZiBBUk0gdG9vbGNoYWlucyBwcmVkZWZpbmUgYXBwcm9wcmlhdGUgLW1hcmNo LgotICMgSWYgeW91IGNvbXBpbGVyIGRvZXMgbm90LCBkbyBjb21wbGVtZW50IGNvbmZpZyBjb21t YW5kIGxpbmUgd2l0aCBvbmUhCi0tImxpbnV4LWFybXY0IiwJImdjYzotRFRFUk1JTyAtTzMgLVdh bGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lO VCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElD Ojouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWFybXY0IiwJ ImdjYzotRFRFUk1JTyAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2ws LXoscmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5S T0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9P UFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKLSAjIyMjIElBLTMyIHRhcmdldHMu Li4KLSAibGludXgtaWEzMi1pY2MiLAkiaWNjOi1ETF9FTkRJQU4gLURURVJNSU8gLU8yIC1ub19j cHBydDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2dj Y19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LUtQSUM6Oi5zby5cJChT SExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLS0ibGludXgtZWxmIiwJImdjYzotRExfRU5E SUFOIC1EVEVSTUlPIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5U OjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZf YXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hM SUJfTUlOT1IpIiwKLSsibGludXgtZWxmIiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPIC1XYWxs IFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOkJOX0xM T05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjps aW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZF UikiLAotICJsaW51eC1hb3V0IiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPIC1PMyAtZm9taXQt ZnJhbWUtcG9pbnRlciAtbWFyY2g9aTQ4NiAtV2FsbDo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4 ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06YS5vdXQiLAotICMjIyMKLS0i bGludXgtZ2VuZXJpYzY0IiwiZ2NjOi1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjot bGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VO Uk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNI TElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotLSJsaW51eC1wcGM2NCIsCSJnY2M6LW02NCAt REJfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZP VVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBj NjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJ Ql9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAotLSJsaW51eC1wcGM2NGxlIiwiZ2NjOi1t NjQgLURMX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhU WV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDok cHBjNjRfYXNtOmxpbnV4NjRsZTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQo U0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OiIsCi0tImxpbnV4LWlhNjQiLAkiZ2NjOi1E TF9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9V Ul9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1VOUk9MTCBERVNfSU5UOiR7aWE2NF9hc219OmRsZmNu OmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUiki LAotKyJsaW51eC1nZW5lcmljNjQiLCJnY2M6LURURVJNSU8gLVdhbGwgXCQoUlBNX09QVF9GTEFH Uyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJvIC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBS QzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxm Y246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05B TUVWRVIpIiwKLSsibGludXgtcHBjNjQiLAkiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAt V2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpT SVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9M TDoke3BwYzY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NCBcJChS UE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKTo6OjY0IiwKLSsibGludXgtcHBj NjRsZSIsImdjYzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gLVdhbGwgXCQoUlBNX09QVF9GTEFH Uyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJvIC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBS QzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4 NjRsZTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NCBcJChSUE1fT1BUX0ZMQUdTKTouc28u XCQoU0hMSUJfU09OQU1FVkVSKTo6OjY0IiwKLSsibGludXgtaWE2NCIsCSJnY2M6LURMX0VORElB TiAtRFRFUk1JTyAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXos cmVscm8gLWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfVU5ST0xMIERFU19J TlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxBR1Mp Oi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKLSAibGludXgtaWE2NC1lY2MiLCJlY2M6LURMX0VO RElBTiAtRFRFUk1JTyAtTzIgLVdhbGwgLW5vX2NwcHJ0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lY VFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51 eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSAi bGludXgtaWE2NC1pY2MiLCJpY2M6LURMX0VORElBTiAtRFRFUk1JTyAtTzIgLVdhbGwgLW5vX2Nw cHJ0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVT X1JJU0MxIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28u XCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0tImxpbnV4LXg4Nl82NCIsCSJnY2M6 LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJ WFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9h c219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1Ip LlwkKFNITElCX01JTk9SKTo6OjY0IiwKLS0ibGludXg2NC1zMzkweCIsCSJnY2M6LW02NCAtREJf RU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJf QklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3MzOTB4X2Fz bX06NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5c JChTSExJQl9NSU5PUik6Ojo2NCIsCi0rImxpbnV4LXg4Nl82NCIsCSJnY2M6LW02NCAtRExfRU5E SUFOIC1EVEVSTUlPIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwt eixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VO Uk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NCBcJChS UE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKTo6OjY0IiwKLSsibGludXg2NC1z MzkweCIsCSJnY2M6LW02NCAtREJfRU5ESUFOIC1EVEVSTUlPIC1XYWxsIFwkKFJQTV9PUFRfRkxB R1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcg UkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3MzOTB4X2FzbX06NjQ6ZGxm Y246bGludXgtc2hhcmVkOi1mUElDOi1tNjQgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElC X1NPTkFNRVZFUik6Ojo2NCIsCi0gIyMjIyBTbyBjYWxsZWQgImhpZ2hncHJzIiB0YXJnZXQgZm9y IHovQXJjaGl0ZWN0dXJlIENQVXMKLSAjICJIaWdoZ3BycyIgaXMga2VybmVsIGZlYXR1cmUgZmly c3QgaW1wbGVtZW50ZWQgaW4gTGludXggMi42LjMyLCBzZWUKLSAjIC9wcm9jL2NwdWluZm8uIFRo ZSBpZGVhIGlzIHRvIHByZXNlcnZlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBvZgotQEAgLTM3Niwx NiArMzc2LDE3IEBAIG15ICV0YWJsZT0oCi0gIyBsZGNvbmZpZyBhbmQgcnVuLXRpbWUgbGlua2Vy IHRvIGF1dG9kaXNjb3Zlci4gVW5mb3J0dW5hdGVseSBpdAotICMgZG9lc24ndCB3b3JrIGp1c3Qg eWV0LCBiZWNhdXNlIG9mIGNvdXBsZSBvZiBidWdzIGluIGdsaWJjCi0gIyBzeXNkZXBzL3MzOTAv ZGwtcHJvY2luZm8uYyBhZmZlY3RpbmcgbGRjb25maWcgYW5kIGxkLnNvLjEuLi4KLS0ibGludXgz Mi1zMzkweCIsCSJnY2M6LW0zMSAtV2EsLW16YXJjaCAtREJfRU5ESUFOIC1EVEVSTUlPIC1PMyAt V2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNf SU5UIERFU19VTlJPTEw6Ii5ldmFse215ICRhc209JHMzOTB4X2FzbTskYXNtPX5zL2JuXC1zMzkw eFwuby9ibl9hc20uby87JGFzbX0uIjozMTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW0zMTou c28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9oaWdoZ3BycyIsCi0rImxpbnV4 MzItczM5MHgiLAkiZ2NjOi1tMzEgLVdhLC1temFyY2ggLURCX0VORElBTiAtRFRFUk1JTyAtV2Fs bCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpCTl9M TE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiIuZXZhbHtteSAkYXNt PSRzMzkweF9hc207JGFzbT1+cy9iblwtczM5MHhcLm8vYm5fYXNtLm8vOyRhc219LiI6MzE6ZGxm Y246bGludXgtc2hhcmVkOi1mUElDOi1tMzEgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElC X1NPTkFNRVZFUik6OjovaGlnaGdwcnMiLAotICMjIyMgU1BBUkMgTGludXggc2V0dXBzCi0gIyBS YXkgTWlsbGVyIDxyYXkubWlsbGVyQGNvbXB1dGluZy1zZXJ2aWNlcy5veGZvcmQuYWMudWs+IGhh cyBwYXRpZW50bHkKLSAjIGFzc2lzdGVkIHdpdGggZGVidWdnaW5nIG9mIGZvbGxvd2luZyB0d28g Y29uZmlncy4KLS0ibGludXgtc3BhcmN2OCIsImdjYzotbXY4IC1EQl9FTkRJQU4gLURURVJNSU8g LU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6 LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFy Y3Y4X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwk KFNITElCX01JTk9SKSIsCi0rImxpbnV4LXNwYXJjdjgiLCJnY2M6LURCX0VORElBTiAtRFRFUk1J TyAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1XbCwt eixyZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BU Ujoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFH Uyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAotICMgaXQncyBhIHJlYWwgbWVzcyB3aXRoIC1t Y3B1PXVsdHJhc3BhcmMgb3B0aW9uIHVuZGVyIExpbnV4LCBidXQKLSAjIC1XYSwtQXY4cGx1cyBz aG91bGQgZG8gdGhlIHRyaWNrIG5vIG1hdHRlciB3aGF0LgotLSJsaW51eC1zcGFyY3Y5IiwiZ2Nj Oi1tMzIgLW1jcHU9dWx0cmFzcGFyYyAtREJfRU5ESUFOIC1EVEVSTUlPIC1PMyAtZm9taXQtZnJh bWUtcG9pbnRlciAtV2FsbCAtV2EsLUF2OHBsdXMgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOlVM VFJBU1BBUkM6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9Q VFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tMzI6LnNvLlwkKFNI TElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1zcGFyY3Y5IiwiZ2NjOi1EQl9F TkRJQU4gLURURVJNSU8gLVdhbGwgXCQoUlBNX09QVF9GTEFHUykgLURCTl9ESVYyVzo6LURfUkVF TlRSQU5UOlVMVFJBU1BBUkM6LVdsLC16LHJlbHJvIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0 X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJl ZDotZlBJQzpcJChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKSIsCi0gIyBH Q0MgMy4xIGlzIGEgcmVxdWlyZW1lbnQKLS0ibGludXg2NC1zcGFyY3Y5IiwiZ2NjOi1tNjQgLW1j cHU9dWx0cmFzcGFyYyAtREJfRU5ESUFOIC1EVEVSTUlPIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRl ciAtV2FsbDo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBS QzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjoke3Nw YXJjdjlfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFK T1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKLSsibGludXg2NC1zcGFyY3Y5IiwiZ2NjOi1EQl9F TkRJQU4gLURURVJNSU8gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDpVTFRS QVNQQVJDOi1XbCwteixyZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNf SU5UIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRs ZmNuOmxpbnV4LXNoYXJlZDotZlBJQzpcJChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09O QU1FVkVSKTo6OjY0IiwKLSsibGludXgtYWFyY2g2NCIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlP IC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9C SVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25v X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChT SExJQl9TT05BTUVWRVIpOjo6NjQiLAotICMjIyMgQWxwaGEgTGludXggd2l0aCBHTlUgQyBhbmQg Q29tcGFxIEMgc2V0dXBzCi0gIyBTcGVjaWFsIG5vdGVzOgotICMgLSBsaW51eC1hbHBoYStid3gt Z2NjIGlzIG1lbnQgdG8gYmUgdXNlZCBmcm9tIC4vY29uZmlnIG9ubHkuIElmIHlvdQotQEAgLTM5 OSw4ICs0MDAsOCBAQCBteSAldGFibGU9KAotICMKLSAjCQkJCQk8YXBwcm9AZnkuY2hhbG1lcnMu c2U+Ci0gIwotLSJsaW51eC1hbHBoYS1nY2MiLCJnY2M6LU8zIC1ETF9FTkRJQU4gLURURVJNSU86 Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklT QzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28u XCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0tImxpbnV4LWFscGhhK2J3eC1nY2Mi LCJnY2M6LU8zIC1ETF9FTkRJQU4gLURURVJNSU86Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9G T1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2Fs cGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwk KFNITElCX01JTk9SKSIsCi0rImxpbnV4LWFscGhhLWdjYyIsImdjYzotRExfRU5ESUFOIC1EVEVS TUlPIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAt bGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7 YWxwaGFfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNv LlwkKFNITElCX1NPTkFNRVZFUikiLAotKyJsaW51eC1hbHBoYStid3gtZ2NjIiwiZ2NjOi1ETF9F TkRJQU4gLURURVJNSU8gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVds LC16LHJlbHJvIC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVT X1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzpc JChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKSIsCi0gImxpbnV4LWFscGhh LWNjYyIsImNjYzotZmFzdCAtcmVhZG9ubHlfc3RyaW5ncyAtRExfRU5ESUFOIC1EVEVSTUlPOjot RF9SRUVOVFJBTlQ6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19Q VFIgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219IiwKLSAibGludXgtYWxwaGErYnd4 LWNjYyIsImNjYzotZmFzdCAtcmVhZG9ubHlfc3RyaW5ncyAtRExfRU5ESUFOIC1EVEVSTUlPOjot RF9SRUVOVFJBTlQ6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNf SU5UIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219IiwKLSAKLUBAIC0x Njc1LDcgKzE2NzYsNyBAQCB3aGlsZSAoPElOPikKLSAJZWxzaWYgKCRzaGFyZWRfZXh0ZW5zaW9u IG5lICIiICYmICRzaGFyZWRfZXh0ZW5zaW9uID1+IC9eXC5zKFtvbF0pXC5bXlwuXSpcLlteXC5d KiQvKQotIAkJewotIAkJbXkgJHNvdG1wID0gJDE7Ci0tCQlzL15TSEFSRURfTElCU19MSU5LX0VY VFM9LiovU0hBUkVEX0xJQlNfTElOS19FWFRTPS5zJHNvdG1wLlwkKFNITElCX01BSk9SKSAucyRz b3RtcC87Ci0rCQlzL15TSEFSRURfTElCU19MSU5LX0VYVFM9LiovU0hBUkVEX0xJQlNfTElOS19F WFRTPS5zJHNvdG1wLlwkKFNITElCX1NPTkFNRVZFUikgLnMkc290bXAvOwotIAkJfQotIAllbHNp ZiAoJHNoYXJlZF9leHRlbnNpb24gbmUgIiIgJiYgJHNoYXJlZF9leHRlbnNpb24gPX4gL15cLlte XC5dKlwuW15cLl0qXC5keWxpYiQvKQotIAkJewotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvTWFr ZWZpbGUub3JnLnJwbWJ1aWxkIG9wZW5zc2wtMS4wLjFlL01ha2VmaWxlLm9yZwotLS0tIG9wZW5z c2wtMS4wLjFlL01ha2VmaWxlLm9yZy5ycG1idWlsZAkyMDEzLTAyLTExIDE2OjI2OjA0LjAwMDAw MDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL01ha2VmaWxlLm9yZwkyMDE0LTA4LTEzIDE5 OjE5OjUzLjIxODAwNTc1OSArMDIwMAotQEAgLTEwLDYgKzEwLDcgQEAgU0hMSUJfVkVSU0lPTl9I SVNUT1JZPQotIFNITElCX01BSk9SPQotIFNITElCX01JTk9SPQotIFNITElCX0VYVD0KLStTSExJ Ql9TT05BTUVWRVI9MTAKLSBQTEFURk9STT1kaXN0Ci0gT1BUSU9OUz0KLSBDT05GSUdVUkVfQVJH Uz0KLUBAIC0zMzMsMTAgKzMzNCw5IEBAIGNsZWFuLXNoYXJlZDoKLSBsaW5rLXNoYXJlZDoKLSAJ QCBzZXQgLWU7IGZvciBpIGluICQoU0hMSUJESVJTKTsgZG8gXAotIAkJJChNQUtFKSAtZiAkKEhF UkUpL01ha2VmaWxlLnNoYXJlZCAtZSAkKEJVSUxERU5WKSBcCi0tCQkJTElCTkFNRT0kJGkgTElC VkVSU0lPTj0kKFNITElCX01BSk9SKS4kKFNITElCX01JTk9SKSBcCi0rCQkJTElCTkFNRT0kJGkg TElCVkVSU0lPTj0kKFNITElCX1NPTkFNRVZFUikgXAotIAkJCUxJQkNPTVBBVFZFUlNJT05TPSI7 JChTSExJQl9WRVJTSU9OX0hJU1RPUlkpIiBcCi0gCQkJc3ltbGluay4kKFNITElCX1RBUkdFVCk7 IFwKLS0JCWxpYnM9IiQkbGlicyAtbCQkaSI7IFwKLSAJZG9uZQotIAotIGJ1aWxkLXNoYXJlZDog ZG9fJChTSExJQl9UQVJHRVQpIGxpbmstc2hhcmVkCi1AQCAtMzQ3LDcgKzM0Nyw3IEBAIGRvXyQo U0hMSUJfVEFSR0VUKToKLSAJCQlsaWJzPSIkKExJQktSQjUpICQkbGlicyI7IFwKLSAJCWZpOyBc Ci0gCQkkKENMRUFSRU5WKSAmJiAkKE1BS0UpIC1mIE1ha2VmaWxlLnNoYXJlZCAtZSAkKEJVSUxE RU5WKSBcCi0tCQkJTElCTkFNRT0kJGkgTElCVkVSU0lPTj0kKFNITElCX01BSk9SKS4kKFNITElC X01JTk9SKSBcCi0rCQkJTElCTkFNRT0kJGkgTElCVkVSU0lPTj0kKFNITElCX1NPTkFNRVZFUikg XAotIAkJCUxJQkNPTVBBVFZFUlNJT05TPSI7JChTSExJQl9WRVJTSU9OX0hJU1RPUlkpIiBcCi0g CQkJTElCREVQUz0iJCRsaWJzICQoRVhfTElCUykiIFwKLSAJCQlsaW5rX2EuJChTSExJQl9UQVJH RVQpOyBcCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMWUtc2VjdXJlLWdldGVudi5wYXRjaCBi L29wZW5zc2wtMS4wLjFlLXNlY3VyZS1nZXRlbnYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGViODAzNGQuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMWUtc2VjdXJlLWdl dGVudi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NCArMCwwIEBACi1kaWZmIC11cCBvcGVu c3NsLTEuMC4xZS9jcnlwdG8vY29uZi9jb25mX2FwaS5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0x LjAuMWUvY3J5cHRvL2NvbmYvY29uZl9hcGkuYwotLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9j b25mL2NvbmZfYXBpLmMuc2VjdXJlLWdldGVudgkyMDEzLTAyLTExIDE2OjI2OjA0LjAwMDAwMDAw MCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9jb25mL2NvbmZfYXBpLmMJMjAxMy0w Mi0xOSAxMzowMjowMi41MzExODgxMjQgKzAxMDAKLUBAIC02Myw2ICs2Myw4IEBACi0gIyBkZWZp bmUgTkRFQlVHCi0gI2VuZGlmCi0gCi0rLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KLSsjZGVmaW5l IF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4K LSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1AQCAtMTQyLDcgKzE0NCw3IEBAIGNoYXIgKl9DT05GX2dl dF9zdHJpbmcoY29uc3QgQ09ORiAqY29uZiwKLSAJCQlpZiAodiAhPSBOVUxMKSByZXR1cm4odi0+ dmFsdWUpOwotIAkJCWlmIChzdHJjbXAoc2VjdGlvbiwiRU5WIikgPT0gMCkKLSAJCQkJewotLQkJ CQlwPWdldGVudihuYW1lKTsKLSsJCQkJcD1zZWN1cmVfZ2V0ZW52KG5hbWUpOwotIAkJCQlpZiAo cCAhPSBOVUxMKSByZXR1cm4ocCk7Ci0gCQkJCX0KLSAJCQl9Ci1AQCAtMTU1LDcgKzE1Nyw3IEBA IGNoYXIgKl9DT05GX2dldF9zdHJpbmcoY29uc3QgQ09ORiAqY29uZiwKLSAJCQlyZXR1cm4oTlVM TCk7Ci0gCQl9Ci0gCWVsc2UKLS0JCXJldHVybihnZXRlbnYobmFtZSkpOwotKwkJcmV0dXJuIChz ZWN1cmVfZ2V0ZW52KG5hbWUpKTsKLSAJfQotIAotICNpZiAwIC8qIFRoZXJlJ3Mgbm8gd2F5IHRv IHByb3ZpZGUgZXJyb3IgY2hlY2tpbmcgd2l0aCB0aGlzIGZ1bmN0aW9uLCBzbwotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWUvY3J5cHRvL2NvbmYvY29uZl9tb2QuYy5zZWN1cmUtZ2V0ZW52IG9wZW5z c2wtMS4wLjFlL2NyeXB0by9jb25mL2NvbmZfbW9kLmMKLS0tLSBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vY29uZi9jb25mX21vZC5jLnNlY3VyZS1nZXRlbnYJMjAxMy0wMi0xMSAxNjoyNjowNC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vY29uZi9jb25mX21vZC5jCTIw MTMtMDItMTkgMTM6MDI6MDIuNTMxMTg4MTI0ICswMTAwCi1AQCAtNTYsNiArNTYsOCBAQAotICAq Ci0gICovCi0gCi0rLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KLSsjZGVmaW5lIF9HTlVfU09VUkNF Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPG9w ZW5zc2wvY3J5cHRvLmg+Ci1AQCAtNTQ4LDggKzU1MCw4IEBAIGNoYXIgKkNPTkZfZ2V0MV9kZWZh dWx0X2NvbmZpZ19maWxlKHZvaWQKLSAJY2hhciAqZmlsZTsKLSAJaW50IGxlbjsKLSAKLS0JZmls ZSA9IGdldGVudigiT1BFTlNTTF9DT05GIik7Ci0tCWlmIChmaWxlKSAKLSsJZmlsZSA9IHNlY3Vy ZV9nZXRlbnYoIk9QRU5TU0xfQ09ORiIpOwotKwlpZiAoZmlsZSkKLSAJCXJldHVybiBCVUZfc3Ry ZHVwKGZpbGUpOwotIAotIAlsZW4gPSBzdHJsZW4oWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2FyZWEo KSk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZW5naW5lL2VuZ19saXN0LmMuc2Vj dXJlLWdldGVudiBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vZW5naW5lL2VuZ19saXN0LmMKLS0tLSBv cGVuc3NsLTEuMC4xZS9jcnlwdG8vZW5naW5lL2VuZ19saXN0LmMuc2VjdXJlLWdldGVudgkyMDEz LTAyLTExIDE2OjI2OjA0LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0 by9lbmdpbmUvZW5nX2xpc3QuYwkyMDEzLTAyLTE5IDEzOjAyOjAyLjUzNjE4ODIzMyArMDEwMAot QEAgLTYxLDYgKzYxLDggQEAKLSAgKiBTVU4gTUlDUk9TWVNURU1TLCBJTkMuLCBhbmQgY29udHJp YnV0ZWQgdG8gdGhlIE9wZW5TU0wgcHJvamVjdC4KLSAgKi8KLSAKLSsvKiBmb3Igc2VjdXJlX2dl dGVudiAqLwotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjaW5jbHVkZSAiZW5nX2ludC5oIgotIAot IC8qIFRoZSBsaW5rZWQtbGlzdCBvZiBwb2ludGVycyB0byBlbmdpbmUgdHlwZXMuIGVuZ2luZV9s aXN0X2hlYWQKLUBAIC0zOTksOSArNDAxLDkgQEAgRU5HSU5FICpFTkdJTkVfYnlfaWQoY29uc3Qg Y2hhciAqaWQpCi0gCWlmIChzdHJjbXAoaWQsICJkeW5hbWljIikpCi0gCQl7Ci0gI2lmZGVmIE9Q RU5TU0xfU1lTX1ZNUwotLQkJaWYoKGxvYWRfZGlyID0gZ2V0ZW52KCJPUEVOU1NMX0VOR0lORVMi KSkgPT0gMCkgbG9hZF9kaXIgPSAiU1NMUk9PVDpbRU5HSU5FU10iOwotKwkJaWYoT1BFTlNTTF9p c3NldHVnaWQoKSB8fCAobG9hZF9kaXIgPSBnZXRlbnYoIk9QRU5TU0xfRU5HSU5FUyIpKSA9PSAw KSBsb2FkX2RpciA9ICJTU0xST09UOltFTkdJTkVTXSI7Ci0gI2Vsc2UKLS0JCWlmKChsb2FkX2Rp ciA9IGdldGVudigiT1BFTlNTTF9FTkdJTkVTIikpID09IDApIGxvYWRfZGlyID0gRU5HSU5FU0RJ UjsKLSsJCWlmKChsb2FkX2RpciA9IHNlY3VyZV9nZXRlbnYoIk9QRU5TU0xfRU5HSU5FUyIpKSA9 PSAwKSBsb2FkX2RpciA9IEVOR0lORVNESVI7Ci0gI2VuZGlmCi0gCQlpdGVyYXRvciA9IEVOR0lO RV9ieV9pZCgiZHluYW1pYyIpOwotIAkJaWYoIWl0ZXJhdG9yIHx8ICFFTkdJTkVfY3RybF9jbWRf c3RyaW5nKGl0ZXJhdG9yLCAiSUQiLCBpZCwgMCkgfHwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFl L2NyeXB0by9tZDUvbWQ1X2Rnc3QuYy5zZWN1cmUtZ2V0ZW52IG9wZW5zc2wtMS4wLjFlL2NyeXB0 by9tZDUvbWQ1X2Rnc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9tZDUvbWQ1X2Rnc3Qu Yy5zZWN1cmUtZ2V0ZW52CTIwMTMtMDItMTkgMTM6MDI6MDIuNDkyMTg3Mjc1ICswMTAwCi0rKysg b3BlbnNzbC0xLjAuMWUvY3J5cHRvL21kNS9tZDVfZGdzdC5jCTIwMTMtMDItMTkgMTM6MDI6MDIu NTM3MTg4MjU0ICswMTAwCi1AQCAtNTYsNiArNTYsOCBAQAotICAqIFtpbmNsdWRpbmcgdGhlIEdO VSBQdWJsaWMgTGljZW5jZS5dCi0gICovCi0gCi0rLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KLSsj ZGVmaW5lIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgIm1kNV9s b2NsLmgiCi0gI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbHYuaD4KLUBAIC03NCw3ICs3Niw3IEBA IGNvbnN0IGNoYXIgTUQ1X3ZlcnNpb25bXT0iTUQ1IiBPUEVOU1NMX1YKLSBpbnQgTUQ1X0luaXQo TUQ1X0NUWCAqYykKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0gCXsKLS0JaWYgKEZJUFNfbW9kZSgp ICYmIGdldGVudigiT1BFTlNTTF9GSVBTX05PTl9BUFBST1ZFRF9NRDVfQUxMT1ciKSA9PSBOVUxM KQotKwlpZiAoRklQU19tb2RlKCkgJiYgc2VjdXJlX2dldGVudigiT1BFTlNTTF9GSVBTX05PTl9B UFBST1ZFRF9NRDVfQUxMT1ciKSA9PSBOVUxMKQotIAkJT3BlblNTTERpZShfX0ZJTEVfXywgX19M SU5FX18sIFwKLSAgICAgICAgICAgICAgICAgIkRpZ2VzdCBNRDUgZm9yYmlkZGVuIGluIEZJUFMg bW9kZSEiKTsKLSAJcmV0dXJuIHByaXZhdGVfTUQ1X0luaXQoYyk7Ci1kaWZmIC11cCBvcGVuc3Ns LTEuMC4xZS9jcnlwdG8vb19pbml0LmMuc2VjdXJlLWdldGVudiBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vb19pbml0LmMKLS0tLSBvcGVuc3NsLTEuMC4xZS9jcnlwdG8vb19pbml0LmMuc2VjdXJlLWdl dGVudgkyMDEzLTAyLTE5IDEzOjAyOjAyLjQyODE4NTg4MiArMDEwMAotKysrIG9wZW5zc2wtMS4w LjFlL2NyeXB0by9vX2luaXQuYwkyMDEzLTAyLTE5IDEzOjAyOjAyLjUzODE4ODI3NiArMDEwMAot QEAgLTUyLDYgKzUyLDggQEAKLSAgKgotICAqLwotIAotKy8qIGZvciBzZWN1cmVfZ2V0ZW52ICov Ci0rI2RlZmluZSBfR05VX1NPVVJDRQotICNpbmNsdWRlIDxlX29zLmg+Ci0gI2luY2x1ZGUgPG9w ZW5zc2wvZXJyLmg+Ci0gI2lmZGVmIE9QRU5TU0xfRklQUwotQEAgLTcxLDcgKzczLDcgQEAgc3Rh dGljIHZvaWQgaW5pdF9maXBzX21vZGUodm9pZCkKLSAJY2hhciBidWZbMl0gPSAiMCI7Ci0gCWlu dCBmZDsKLSAJCi0tCWlmIChnZXRlbnYoIk9QRU5TU0xfRk9SQ0VfRklQU19NT0RFIikgIT0gTlVM TCkKLSsJaWYgKHNlY3VyZV9nZXRlbnYoIk9QRU5TU0xfRk9SQ0VfRklQU19NT0RFIikgIT0gTlVM TCkKLSAJCXsKLSAJCWJ1ZlswXSA9ICcxJzsKLSAJCX0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFl L2NyeXB0by9yYW5kL3JhbmRmaWxlLmMuc2VjdXJlLWdldGVudiBvcGVuc3NsLTEuMC4xZS9jcnlw dG8vcmFuZC9yYW5kZmlsZS5jCi0tLS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRvL3JhbmQvcmFuZGZp bGUuYy5zZWN1cmUtZ2V0ZW52CTIwMTMtMDItMTEgMTY6MjY6MDQuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL3JhbmQvcmFuZGZpbGUuYwkyMDEzLTAyLTE5IDEzOjAz OjA2Ljk3MTU5MTA1MiArMDEwMAotQEAgLTYwLDYgKzYwLDggQEAKLSAjaWYgIWRlZmluZWQoT1BF TlNTTF9TWVNfVlhXT1JLUykKLSAjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNTAwCi0gI2VuZGlmCi0r LyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0gCi0gI2luY2x1 ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1AQCAtMjc3LDggKzI3OSw3IEBAIGNv bnN0IGNoYXIgKlJBTkRfZmlsZV9uYW1lKGNoYXIgKmJ1Ziwgc2kKLSAJc3RydWN0IHN0YXQgc2I7 Ci0gI2VuZGlmCi0gCi0tCWlmIChPUEVOU1NMX2lzc2V0dWdpZCgpID09IDApCi0tCQlzPWdldGVu digiUkFOREZJTEUiKTsKLSsJcz1zZWN1cmVfZ2V0ZW52KCJSQU5ERklMRSIpOwotIAlpZiAocyAh PSBOVUxMICYmICpzICYmIHN0cmxlbihzKSArIDEgPCBzaXplKQotIAkJewotIAkJaWYgKEJVRl9z dHJsY3B5KGJ1ZixzLHNpemUpID49IHNpemUpCi1AQCAtMjg2LDggKzI4Nyw3IEBAIGNvbnN0IGNo YXIgKlJBTkRfZmlsZV9uYW1lKGNoYXIgKmJ1Ziwgc2kKLSAJCX0KLSAJZWxzZQotIAkJewotLQkJ aWYgKE9QRU5TU0xfaXNzZXR1Z2lkKCkgPT0gMCkKLS0JCQlzPWdldGVudigiSE9NRSIpOwotKwkJ cz1zZWN1cmVfZ2V0ZW52KCJIT01FIik7Ci0gI2lmZGVmIERFRkFVTFRfSE9NRQotIAkJaWYgKHMg PT0gTlVMTCkKLSAJCQl7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8veDUwOS9ieV9k aXIuYy5zZWN1cmUtZ2V0ZW52IG9wZW5zc2wtMS4wLjFlL2NyeXB0by94NTA5L2J5X2Rpci5jCi0t LS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRvL3g1MDkvYnlfZGlyLmMuc2VjdXJlLWdldGVudgkyMDEz LTAyLTExIDE2OjI2OjA0LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0 by94NTA5L2J5X2Rpci5jCTIwMTMtMDItMTkgMTM6MDI6MDIuNTM5MTg4Mjk4ICswMTAwCi1AQCAt NTYsNiArNTYsOCBAQAotICAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5jZS5dCi0g ICovCi0gCi0rLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0g I2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8ZXJybm8u aD4KLUBAIC0xMzUsNyArMTM3LDcgQEAgc3RhdGljIGludCBkaXJfY3RybChYNTA5X0xPT0tVUCAq Y3R4LCBpbgotIAljYXNlIFg1MDlfTF9BRERfRElSOgotIAkJaWYgKGFyZ2wgPT0gWDUwOV9GSUxF VFlQRV9ERUZBVUxUKQotIAkJCXsKLS0JCQlkaXI9KGNoYXIgKilnZXRlbnYoWDUwOV9nZXRfZGVm YXVsdF9jZXJ0X2Rpcl9lbnYoKSk7Ci0rCQkJZGlyPShjaGFyICopc2VjdXJlX2dldGVudihYNTA5 X2dldF9kZWZhdWx0X2NlcnRfZGlyX2VudigpKTsKLSAJCQlpZiAoZGlyKQotIAkJCQlyZXQ9YWRk X2NlcnRfZGlyKGxkLGRpcixYNTA5X0ZJTEVUWVBFX1BFTSk7Ci0gCQkJZWxzZQotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWUvY3J5cHRvL3g1MDkvYnlfZmlsZS5jLnNlY3VyZS1nZXRlbnYgb3BlbnNz bC0xLjAuMWUvY3J5cHRvL3g1MDkvYnlfZmlsZS5jCi0tLS0gb3BlbnNzbC0xLjAuMWUvY3J5cHRv L3g1MDkvYnlfZmlsZS5jLnNlY3VyZS1nZXRlbnYJMjAxMy0wMi0xOSAxMzowMjowMi4yMzYxODE3 MDEgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xZS9jcnlwdG8veDUwOS9ieV9maWxlLmMJMjAxMy0w Mi0xOSAxMzowMjowMi41NTQxODg2MjQgKzAxMDAKLUBAIC01Niw2ICs1Niw4IEBACi0gICogW2lu Y2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSAgKi8KLSAKLSsvKiBmb3Igc2VjdXJl X2dldGVudiAqLwotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAj aW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotQEAgLTEwMCw3ICsxMDIsNyBA QCBzdGF0aWMgaW50IGJ5X2ZpbGVfY3RybChYNTA5X0xPT0tVUCAqY3R4Ci0gCWNhc2UgWDUwOV9M X0ZJTEVfTE9BRDoKLSAJCWlmIChhcmdsID09IFg1MDlfRklMRVRZUEVfREVGQVVMVCkKLSAJCQl7 Ci0tCQkJZmlsZSA9IChjaGFyICopZ2V0ZW52KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlX2Vu digpKTsKLSsJCQlmaWxlID0gKGNoYXIgKilzZWN1cmVfZ2V0ZW52KFg1MDlfZ2V0X2RlZmF1bHRf Y2VydF9maWxlX2VudigpKTsKLSAJCQlpZiAoZmlsZSkKLSAJCQkJb2sgPSAoWDUwOV9sb2FkX2Nl cnRfY3JsX2ZpbGUoY3R4LGZpbGUsCi0gCQkJCQkgICAgICBYNTA5X0ZJTEVUWVBFX1BFTSkgIT0g MCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xZS9jcnlwdG8veDUwOS94NTA5X3ZmeS5jLnNlY3Vy ZS1nZXRlbnYgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL3g1MDkveDUwOV92ZnkuYwotLS0tIG9wZW5z c2wtMS4wLjFlL2NyeXB0by94NTA5L3g1MDlfdmZ5LmMuc2VjdXJlLWdldGVudgkyMDEzLTAyLTEx IDE2OjI2OjA0LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFlL2NyeXB0by94NTA5 L3g1MDlfdmZ5LmMJMjAxMy0wMi0xOSAxMzowMjowMi41NTYxODg2NjggKzAxMDAKLUBAIC01Niw2 ICs1Niw4IEBACi0gICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSAgKi8K LSAKLSsvKiBmb3Igc2VjdXJlX2dldGVudiAqLwotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjaW5j bHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxlcnJuby5oPgot QEAgLTQ4MSw3ICs0ODMsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2NoYWluX2V4dGVuc2lvbnMoWDUw OV9TCi0gCQkJISEoY3R4LT5wYXJhbS0+ZmxhZ3MgJiBYNTA5X1ZfRkxBR19BTExPV19QUk9YWV9D RVJUUyk7Ci0gCQkvKiBBIGhhY2sgdG8ga2VlcCBwZW9wbGUgd2hvIGRvbid0IHdhbnQgdG8gbW9k aWZ5IHRoZWlyCi0gCQkgICBzb2Z0d2FyZSBoYXBweSAqLwotLQkJaWYgKGdldGVudigiT1BFTlNT TF9BTExPV19QUk9YWV9DRVJUUyIpKQotKwkJaWYgKHNlY3VyZV9nZXRlbnYoIk9QRU5TU0xfQUxM T1dfUFJPWFlfQ0VSVFMiKSkKLSAJCQlhbGxvd19wcm94eV9jZXJ0cyA9IDE7Ci0gCQlwdXJwb3Nl ID0gY3R4LT5wYXJhbS0+cHVycG9zZTsKLSAJCX0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFlL2Vu Z2luZXMvY2Nnb3N0L2dvc3RfY3RsLmMuc2VjdXJlLWdldGVudiBvcGVuc3NsLTEuMC4xZS9lbmdp bmVzL2NjZ29zdC9nb3N0X2N0bC5jCi0tLS0gb3BlbnNzbC0xLjAuMWUvZW5naW5lcy9jY2dvc3Qv Z29zdF9jdGwuYy5zZWN1cmUtZ2V0ZW52CTIwMTMtMDItMTEgMTY6MjY6MDQuMDAwMDAwMDAwICsw MTAwCi0rKysgb3BlbnNzbC0xLjAuMWUvZW5naW5lcy9jY2dvc3QvZ29zdF9jdGwuYwkyMDEzLTAy LTE5IDEzOjAyOjAyLjU1NzE4ODY5MCArMDEwMAotQEAgLTYsNiArNiw4IEBACi0gICogICAgICAg IEltcGxlbWVudGF0aW9uIG9mIGNvbnRyb2wgY29tbWFuZHMgZm9yIEdPU1QgZW5naW5lICAgICAg ICAgICoKLSAgKiAgICAgICAgICAgIE9wZW5TU0wgMC45LjkgbGlicmFyaWVzIHJlcXVpcmVkICAg ICAgICAgICAgICAgICAgICAgICAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAgICAgICAgICAgIAotKy8q IGZvciBzZWN1cmVfZ2V0ZW52ICovCi0rI2RlZmluZSBfR05VX1NPVVJDRQotICNpbmNsdWRlIDxz dGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRv Lmg+Ci1AQCAtNjUsNyArNjcsNyBAQCBjb25zdCBjaGFyICpnZXRfZ29zdF9lbmdpbmVfcGFyYW0o aW50IHBhCi0gCQl7Ci0gCQlyZXR1cm4gZ29zdF9wYXJhbXNbcGFyYW1dOwotIAkJfQotLQl0bXAg PSBnZXRlbnYoZ29zdF9lbnZuYW1lc1twYXJhbV0pOwotKwl0bXAgPSBzZWN1cmVfZ2V0ZW52KGdv c3RfZW52bmFtZXNbcGFyYW1dKTsKLSAJaWYgKHRtcCkgCi0gCQl7Ci0gCQlpZiAoZ29zdF9wYXJh bXNbcGFyYW1dKSBPUEVOU1NMX2ZyZWUoZ29zdF9wYXJhbXNbcGFyYW1dKTsKLUBAIC03OSw3ICs4 MSw3IEBAIGludCBnb3N0X3NldF9kZWZhdWx0X3BhcmFtKGludCBwYXJhbSwgY28KLSAJewotIAlj b25zdCBjaGFyICp0bXA7Ci0gCWlmIChwYXJhbSA8MCB8fCBwYXJhbSA+R09TVF9QQVJBTV9NQVgp IHJldHVybiAwOwotLQl0bXAgPSBnZXRlbnYoZ29zdF9lbnZuYW1lc1twYXJhbV0pOwotKwl0bXAg PSBzZWN1cmVfZ2V0ZW52KGdvc3RfZW52bmFtZXNbcGFyYW1dKTsKLSAJLyogaWYgdGhlcmUgaXMg dmFsdWUgaW4gdGhlIGVudmlyb25tZW50LCB1c2UgaXQsIGVsc2UgLXBhc3NlZCBzdHJpbmcgKiAq LwotIAlpZiAoIXRtcCkgdG1wPXZhbHVlOwotIAlpZiAoZ29zdF9wYXJhbXNbcGFyYW1dKSBPUEVO U1NMX2ZyZWUoZ29zdF9wYXJhbXNbcGFyYW1dKTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4x ZS12ZXJzaW9uLnBhdGNoIGIvb3BlbnNzbC0xLjAuMWUtdmVyc2lvbi5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZTczZjJjOS4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4x ZS12ZXJzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWUvY3J5cHRvL2N2ZXJzaW9uLmMudmVyc2lvbiBvcGVuc3NsLTEuMC4xZS9j cnlwdG8vY3ZlcnNpb24uYwotLS0tIG9wZW5zc2wtMS4wLjFlL2NyeXB0by9jdmVyc2lvbi5jLnZl cnNpb24JMjAxMy0wMi0xMSAxNjowMjo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEu MC4xZS9jcnlwdG8vY3ZlcnNpb24uYwkyMDEzLTA3LTI2IDEyOjI4OjEyLjczOTE2MTkyNSArMDIw MAotQEAgLTYyLDcgKzYyLDcgQEAKLSAjaW5jbHVkZSAiYnVpbGRpbmYuaCIKLSAjZW5kaWYKLSAK LS1jb25zdCBjaGFyICpTU0xlYXlfdmVyc2lvbihpbnQgdCkKLStjb25zdCBjaGFyICpfY3VycmVu dF9TU0xlYXlfdmVyc2lvbihpbnQgdCkKLSAJewotIAlpZiAodCA9PSBTU0xFQVlfVkVSU0lPTikK LSAJCXJldHVybiBPUEVOU1NMX1ZFUlNJT05fVEVYVDsKLUBAIC0xMTAsOCArMTEwLDI1IEBAIGNv bnN0IGNoYXIgKlNTTGVheV92ZXJzaW9uKGludCB0KQotIAlyZXR1cm4oIm5vdCBhdmFpbGFibGUi KTsKLSAJfQotIAotLXVuc2lnbmVkIGxvbmcgU1NMZWF5KHZvaWQpCi0rY29uc3QgY2hhciAqX29y aWdpbmFsX1NTTGVheV92ZXJzaW9uKGludCB0KQotKwl7Ci0rCWlmICh0ID09IFNTTEVBWV9WRVJT SU9OKQotKwkJcmV0dXJuICJPcGVuU1NMIDEuMC4wLWZpcHMgMjkgTWFyIDIwMTAiOwotKwllbHNl Ci0rCQlyZXR1cm4gX2N1cnJlbnRfU1NMZWF5X3ZlcnNpb24odCk7Ci0rCX0KLSsKLSt1bnNpZ25l ZCBsb25nIF9vcmlnaW5hbF9TU0xlYXkodm9pZCkKLSsJewotKwlyZXR1cm4oMHgxMDAwMDAwMyk7 Ci0rCX0KLSsKLSt1bnNpZ25lZCBsb25nIF9jdXJyZW50X1NTTGVheSh2b2lkKQotIAl7Ci0gCXJl dHVybihTU0xFQVlfVkVSU0lPTl9OVU1CRVIpOwotIAl9Ci0gCi0rX19hc21fXygiLnN5bXZlciBf b3JpZ2luYWxfU1NMZWF5LFNTTGVheUAiKTsKLStfX2FzbV9fKCIuc3ltdmVyIF9vcmlnaW5hbF9T U0xlYXlfdmVyc2lvbixTU0xlYXlfdmVyc2lvbkAiKTsKLStfX2FzbV9fKCIuc3ltdmVyIF9jdXJy ZW50X1NTTGVheSxTU0xlYXlAQE9QRU5TU0xfMS4wLjEiKTsKLStfX2FzbV9fKCIuc3ltdmVyIF9j dXJyZW50X1NTTGVheV92ZXJzaW9uLFNTTGVheV92ZXJzaW9uQEBPUEVOU1NMXzEuMC4xIik7Ci1k aWZmIC11cCBvcGVuc3NsLTEuMC4xZS9NYWtlZmlsZS5zaGFyZWQudmVyc2lvbiBvcGVuc3NsLTEu MC4xZS9NYWtlZmlsZS5zaGFyZWQKLS0tLSBvcGVuc3NsLTEuMC4xZS9NYWtlZmlsZS5zaGFyZWQu dmVyc2lvbgkyMDEzLTA3LTI2IDEyOjIzOjQzLjYxNTU0NTYwMyArMDIwMAotKysrIG9wZW5zc2wt MS4wLjFlL01ha2VmaWxlLnNoYXJlZAkyMDEzLTA3LTI2IDEyOjIzOjQzLjcwMTU0NzM5OCArMDIw MAotQEAgLTE1MSw3ICsxNTEsNyBAQCBET19HTlVfU089JChDQUxDX1ZFUlNJT05TKTsgXAotIAlT SExJQl9TVUZGSVg9OyBcCi0gCUFMTFNZTVNGTEFHUz0nLVdsLC0td2hvbGUtYXJjaGl2ZSc7IFwK LSAJTk9BTExTWU1TRkxBR1M9Jy1XbCwtLW5vLXdob2xlLWFyY2hpdmUnOyBcCi0tCVNIQVJFREZM QUdTPSIkKENGTEFHUykgJChTSEFSRURfTERGTEFHUykgLXNoYXJlZCAtV2wsLUJzeW1ib2xpYyAt V2wsLXNvbmFtZT0kJFNITElCJCRTSExJQl9TT1ZFUiQkU0hMSUJfU1VGRklYIgotKwlTSEFSRURG TEFHUz0iJChDRkxBR1MpICQoU0hBUkVEX0xERkxBR1MpIC1zaGFyZWQgLVdsLC1Cc3ltYm9saWMg LVdsLC0tZGVmYXVsdC1zeW12ZXIsLS12ZXJzaW9uLXNjcmlwdD12ZXJzaW9uLm1hcCAtV2wsLXNv bmFtZT0kJFNITElCJCRTSExJQl9TT1ZFUiQkU0hMSUJfU1VGRklYIgotIAotIERPX0dOVV9BUFA9 TERGTEFHUz0iJChDRkxBR1MpIgotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvdmVyc2lvbi5t YXAudmVyc2lvbiBvcGVuc3NsLTEuMC4xZS92ZXJzaW9uLm1hcAotLS0tIG9wZW5zc2wtMS4wLjFl L3ZlcnNpb24ubWFwLnZlcnNpb24JMjAxMy0wNy0yNiAxMjoyMzo0My43MDE1NDczOTggKzAyMDAK LSsrKyBvcGVuc3NsLTEuMC4xZS92ZXJzaW9uLm1hcAkyMDEzLTA3LTI2IDEyOjI5OjEwLjY5ODM3 MTQ3MiArMDIwMAotQEAgLTAsMCArMSw4IEBACi0rT1BFTlNTTF8xLjAuMSB7Ci0rICAgIGdsb2Jh bDoKLSsJICAgIFNTTGVheTsKLSsJICAgIFNTTGVheV92ZXJzaW9uOwotKyAgICBsb2NhbDoKLSsJ ICAgIF9vcmlnaW5hbCo7Ci0rCSAgICBfY3VycmVudCo7Ci0rfTsKCmRpZmYgLS1naXQgYS9vcGVu c3NsLTEuMC4xZS13ZWFrLWNpcGhlcnMucGF0Y2ggYi9vcGVuc3NsLTEuMC4xZS13ZWFrLWNpcGhl cnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2NTczNDUuLjAwMDAwMDAK LS0tIGEvb3BlbnNzbC0xLjAuMWUtd2Vhay1jaXBoZXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTIgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWUvc3NsL3NzbC5oLndlYWstY2lw aGVycyBvcGVuc3NsLTEuMC4xZS9zc2wvc3NsLmgKLS0tLSBvcGVuc3NsLTEuMC4xZS9zc2wvc3Ns Lmgud2Vhay1jaXBoZXJzCTIwMTMtMTItMTggMTU6NTA6NDAuODgxNjIwMzE0ICswMTAwCi0rKysg b3BlbnNzbC0xLjAuMWUvc3NsL3NzbC5oCTIwMTMtMTItMTggMTQ6MjU6MjUuNTk2NTY2NzA0ICsw MTAwCi1AQCAtMzMxLDcgKzMzMSw3IEBAIGV4dGVybiAiQyIgewotIC8qIFRoZSBmb2xsb3dpbmcg Y2lwaGVyIGxpc3QgaXMgdXNlZCBieSBkZWZhdWx0LgotICAqIEl0IGFsc28gaXMgc3Vic3RpdHV0 ZWQgd2hlbiBhbiBhcHBsaWNhdGlvbi1kZWZpbmVkIGNpcGhlciBsaXN0IHN0cmluZwotICAqIHN0 YXJ0cyB3aXRoICdERUZBVUxUJy4gKi8KLS0jZGVmaW5lIFNTTF9ERUZBVUxUX0NJUEhFUl9MSVNU CSJBTEw6IWFOVUxMOiFlTlVMTDohU1NMdjIiCi0rI2RlZmluZSBTU0xfREVGQVVMVF9DSVBIRVJf TElTVAkiQUxMOiFhTlVMTDohZU5VTEw6IVNTTHYyOiFFWFBPUlQ6IVJDMjohREVTIgotIC8qIEFz IG9mIE9wZW5TU0wgMS4wLjAsIHNzbF9jcmVhdGVfY2lwaGVyX2xpc3QoKSBpbiBzc2wvc3NsX2Np cGguYyBhbHdheXMKLSAgKiBzdGFydHMgd2l0aCBhIHJlYXNvbmFibGUgb3JkZXIsIGFuZCBhbGwg d2UgaGF2ZSB0byBkbyBmb3IgREVGQVVMVCBpcwotICAqIHRocm93aW5nIG91dCBhbm9ueW1vdXMg YW5kIHVuZW5jcnlwdGVkIGNpcGhlcnN1aXRlcyEKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4x aC1kaXNhYmxlLXNzbHYydjMucGF0Y2ggYi9vcGVuc3NsLTEuMC4xaC1kaXNhYmxlLXNzbHYydjMu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYWZkYTAuLjAwMDAwMDAKLS0t IGEvb3BlbnNzbC0xLjAuMWgtZGlzYWJsZS1zc2x2MnYzLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTMgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWgvc3NsL3NzbF9saWIuYy52MnYz IG9wZW5zc2wtMS4wLjFoL3NzbC9zc2xfbGliLmMKLS0tLSBvcGVuc3NsLTEuMC4xaC9zc2wvc3Ns X2xpYi5jLnYydjMJMjAxNC0wNi0xMSAxNjowMjo1Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVu c3NsLTEuMC4xaC9zc2wvc3NsX2xpYi5jCTIwMTQtMDYtMzAgMTQ6MTg6MDQuMjkwMjQ4MDgwICsw MjAwCi1AQCAtMTg3NSw2ICsxODc1LDkgQEAgU1NMX0NUWCAqU1NMX0NUWF9uZXcoY29uc3QgU1NM X01FVEhPRCAqbQotIAkgKi8KLSAJcmV0LT5vcHRpb25zIHw9IFNTTF9PUF9MRUdBQ1lfU0VSVkVS X0NPTk5FQ1Q7Ci0gCi0rCS8qIERpc2FibGUgU1NMdjIgYW5kIFNTTHYzIGJ5IGRlZmF1bHQgKGFm ZmVjdHMgdGhlIFNTTHYyM19tZXRob2QoKSBvbmx5KSAqLwotKwlyZXQtPm9wdGlvbnMgfD0gU1NM X09QX05PX1NTTHYyIHwgU1NMX09QX05PX1NTTHYzOwotKwotIAlyZXR1cm4ocmV0KTsKLSBlcnI6 Ci0gCVNTTGVycihTU0xfRl9TU0xfQ1RYX05FVyxFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CgpkaWZm IC0tZ2l0IGEvb3BlbnNzbC0xLjAuMWgtaXB2Ni1hcHBzLnBhdGNoIGIvb3BlbnNzbC0xLjAuMWgt aXB2Ni1hcHBzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjZiNTQzLi4w MDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjFoLWlwdjYtYXBwcy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDUyOSArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaC9hcHBzL3NfYXBwcy5o LmlwdjYtYXBwcyBvcGVuc3NsLTEuMC4xaC9hcHBzL3NfYXBwcy5oCi0tLS0gb3BlbnNzbC0xLjAu MWgvYXBwcy9zX2FwcHMuaC5pcHY2LWFwcHMJMjAxNC0wNi0wNSAxNDozMzozOC41MTU2Njg3NTAg KzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaC9hcHBzL3NfYXBwcy5oCTIwMTQtMDYtMDUgMTQ6MzM6 MzguNTQwNjY5MzM1ICswMjAwCi1AQCAtMTQ4LDcgKzE0OCw3IEBAIHR5cGVkZWYgZmRfbWFzayBm ZF9zZXQ7Ci0gI2RlZmluZSBQT1JUX1NUUiAgICAgICAgIjQ0MzMiCi0gI2RlZmluZSBQUk9UT0NP TCAgICAgICAgInRjcCIKLSAKLS1pbnQgZG9fc2VydmVyKGludCBwb3J0LCBpbnQgdHlwZSwgaW50 ICpyZXQsIGludCAoKmNiKSAoY2hhciAqaG9zdG5hbWUsIGludCBzLCB1bnNpZ25lZCBjaGFyICpj b250ZXh0KSwgdW5zaWduZWQgY2hhciAqY29udGV4dCk7Ci0raW50IGRvX3NlcnZlcihjaGFyICpw b3J0LCBpbnQgdHlwZSwgaW50ICpyZXQsIGludCAoKmNiKSAoY2hhciAqaG9zdG5hbWUsIGludCBz LCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KSwgdW5zaWduZWQgY2hhciAqY29udGV4dCk7Ci0gI2lm ZGVmIEhFQURFUl9YNTA5X0gKLSBpbnQgTVNfQ0FMTEJBQ0sgdmVyaWZ5X2NhbGxiYWNrKGludCBv aywgWDUwOV9TVE9SRV9DVFggKmN0eCk7Ci0gI2VuZGlmCi1AQCAtMTU2LDEwICsxNTYsOSBAQCBp bnQgTVNfQ0FMTEJBQ0sgdmVyaWZ5X2NhbGxiYWNrKGludCBvaywKLSBpbnQgc2V0X2NlcnRfc3R1 ZmYoU1NMX0NUWCAqY3R4LCBjaGFyICpjZXJ0X2ZpbGUsIGNoYXIgKmtleV9maWxlKTsKLSBpbnQg c2V0X2NlcnRfa2V5X3N0dWZmKFNTTF9DVFggKmN0eCwgWDUwOSAqY2VydCwgRVZQX1BLRVkgKmtl eSk7Ci0gI2VuZGlmCi0taW50IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAqc2VydmVyLCBp bnQgcG9ydCwgaW50IHR5cGUpOwotK2ludCBpbml0X2NsaWVudChpbnQgKnNvY2ssIGNoYXIgKnNl cnZlciwgY2hhciAqcG9ydCwgaW50IHR5cGUpOwotIGludCBzaG91bGRfcmV0cnkoaW50IGkpOwot LWludCBleHRyYWN0X3BvcnQoY2hhciAqc3RyLCBzaG9ydCAqcG9ydF9wdHIpOwotLWludCBleHRy YWN0X2hvc3RfcG9ydChjaGFyICpzdHIsY2hhciAqKmhvc3RfcHRyLHVuc2lnbmVkIGNoYXIgKmlw LHNob3J0ICpwKTsKLStpbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLGNoYXIgKipob3N0 X3B0cixjaGFyICoqcG9ydF9wdHIpOwotIAotIGxvbmcgTVNfQ0FMTEJBQ0sgYmlvX2R1bXBfY2Fs bGJhY2soQklPICpiaW8sIGludCBjbWQsIGNvbnN0IGNoYXIgKmFyZ3AsCi0gCQkJCSAgIGludCBh cmdpLCBsb25nIGFyZ2wsIGxvbmcgcmV0KTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFoL2FwcHMv c19jbGllbnQuYy5pcHY2LWFwcHMgb3BlbnNzbC0xLjAuMWgvYXBwcy9zX2NsaWVudC5jCi0tLS0g b3BlbnNzbC0xLjAuMWgvYXBwcy9zX2NsaWVudC5jLmlwdjYtYXBwcwkyMDE0LTA2LTA1IDE0OjMz OjM4LjUzMzY2OTE3MSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFoL2FwcHMvc19jbGllbnQuYwky MDE0LTA2LTA1IDE0OjMzOjM4LjU0MDY2OTMzNSArMDIwMAotQEAgLTU2Nyw3ICs1NjcsNyBAQCBp bnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWludCBjYnVmX2xlbixjYnVmX29mZjsK LSAJaW50IHNidWZfbGVuLHNidWZfb2ZmOwotIAlmZF9zZXQgcmVhZGZkcyx3cml0ZWZkczsKLS0J c2hvcnQgcG9ydD1QT1JUOwotKwljaGFyICpwb3J0X3N0ciA9IFBPUlRfU1RSOwotIAlpbnQgZnVs bF9sb2c9MTsKLSAJY2hhciAqaG9zdD1TU0xfSE9TVF9OQU1FOwotIAljaGFyICpjZXJ0X2ZpbGU9 TlVMTCwqa2V5X2ZpbGU9TlVMTDsKLUBAIC02NjgsMTMgKzY2OCwxMiBAQCBpbnQgTUFJTihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCi0gCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi1wb3J0IikgPT0g MCkKLSAJCQl7Ci0gCQkJaWYgKC0tYXJnYyA8IDEpIGdvdG8gYmFkOwotLQkJCXBvcnQ9YXRvaSgq KCsrYXJndikpOwotLQkJCWlmIChwb3J0ID09IDApIGdvdG8gYmFkOwotKwkJCXBvcnRfc3RyPSAq KCsrYXJndik7Ci0gCQkJfQotIAkJZWxzZSBpZiAoc3RyY21wKCphcmd2LCItY29ubmVjdCIpID09 IDApCi0gCQkJewotIAkJCWlmICgtLWFyZ2MgPCAxKSBnb3RvIGJhZDsKLS0JCQlpZiAoIWV4dHJh Y3RfaG9zdF9wb3J0KCooKythcmd2KSwmaG9zdCxOVUxMLCZwb3J0KSkKLSsJCQlpZiAoIWV4dHJh Y3RfaG9zdF9wb3J0KCooKythcmd2KSwmaG9zdCwmcG9ydF9zdHIpKQotIAkJCQlnb3RvIGJhZDsK LSAJCQl9Ci0gCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi12ZXJpZnkiKSA9PSAwKQotQEAgLTEy NjcsNyArMTI2Niw3IEBAIGJhZDoKLSAKLSByZV9zdGFydDoKLSAKLS0JaWYgKGluaXRfY2xpZW50 KCZzLGhvc3QscG9ydCxzb2NrZXRfdHlwZSkgPT0gMCkKLSsJaWYgKGluaXRfY2xpZW50KCZzLGhv c3QscG9ydF9zdHIsc29ja2V0X3R5cGUpID09IDApCi0gCQl7Ci0gCQlCSU9fcHJpbnRmKGJpb19l cnIsImNvbm5lY3Q6ZXJybm89JWRcbiIsZ2V0X2xhc3Rfc29ja2V0X2Vycm9yKCkpOwotIAkJU0hV VERPV04ocyk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaC9hcHBzL3Nfc2VydmVyLmMuaXB2Ni1h cHBzIG9wZW5zc2wtMS4wLjFoL2FwcHMvc19zZXJ2ZXIuYwotLS0tIG9wZW5zc2wtMS4wLjFoL2Fw cHMvc19zZXJ2ZXIuYy5pcHY2LWFwcHMJMjAxNC0wNi0wNSAxNDozMzozOC41MzM2NjkxNzEgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMC4xaC9hcHBzL3Nfc2VydmVyLmMJMjAxNC0wNi0wNSAxNDozMzoz OC41NDE2NjkzNTggKzAyMDAKLUBAIC05MzMsNyArOTMzLDcgQEAgaW50IE1BSU4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKLSAJewotIAlYNTA5X1ZFUklGWV9QQVJBTSAqdnBtID0gTlVMTDsKLSAJ aW50IGJhZGFyZyA9IDA7Ci0tCXNob3J0IHBvcnQ9UE9SVDsKLSsJY2hhciAqcG9ydF9zdHIgPSBQ T1JUX1NUUjsKLSAJY2hhciAqQ0FwYXRoPU5VTEwsKkNBZmlsZT1OVUxMOwotIAl1bnNpZ25lZCBj aGFyICpjb250ZXh0ID0gTlVMTDsKLSAJY2hhciAqZGhmaWxlID0gTlVMTDsKLUBAIC0xMDA0LDgg KzEwMDQsNyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkJCSAoc3RyY21w KCphcmd2LCItYWNjZXB0IikgPT0gMCkpCi0gCQkJewotIAkJCWlmICgtLWFyZ2MgPCAxKSBnb3Rv IGJhZDsKLS0JCQlpZiAoIWV4dHJhY3RfcG9ydCgqKCsrYXJndiksJnBvcnQpKQotLQkJCQlnb3Rv IGJhZDsKLSsJCQlwb3J0X3N0cj0gKigrK2FyZ3YpOwotIAkJCX0KLSAJCWVsc2UgaWYJKHN0cmNt cCgqYXJndiwiLXZlcmlmeSIpID09IDApCi0gCQkJewotQEAgLTE4OTIsOSArMTg5MSw5IEBAIGJh ZDoKLSAJQklPX3ByaW50ZihiaW9fc19vdXQsIkFDQ0VQVFxuIik7Ci0gCSh2b2lkKUJJT19mbHVz aChiaW9fc19vdXQpOwotIAlpZiAod3d3KQotLQkJZG9fc2VydmVyKHBvcnQsc29ja2V0X3R5cGUs JmFjY2VwdF9zb2NrZXQsd3d3X2JvZHksIGNvbnRleHQpOwotKwkJZG9fc2VydmVyKHBvcnRfc3Ry LHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0LHd3d19ib2R5LCBjb250ZXh0KTsKLSAJZWxzZQot LQkJZG9fc2VydmVyKHBvcnQsc29ja2V0X3R5cGUsJmFjY2VwdF9zb2NrZXQsc3ZfYm9keSwgY29u dGV4dCk7Ci0rCQlkb19zZXJ2ZXIocG9ydF9zdHIsc29ja2V0X3R5cGUsJmFjY2VwdF9zb2NrZXQs c3ZfYm9keSwgY29udGV4dCk7Ci0gCXByaW50X3N0YXRzKGJpb19zX291dCxjdHgpOwotIAlyZXQ9 MDsKLSBlbmQ6Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaC9hcHBzL3Nfc29ja2V0LmMuaXB2Ni1h cHBzIG9wZW5zc2wtMS4wLjFoL2FwcHMvc19zb2NrZXQuYwotLS0tIG9wZW5zc2wtMS4wLjFoL2Fw cHMvc19zb2NrZXQuYy5pcHY2LWFwcHMJMjAxNC0wNi0wNSAxMTo0NDozMy4wMDAwMDAwMDAgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMC4xaC9hcHBzL3Nfc29ja2V0LmMJMjAxNC0wNi0wNSAxNDozOTo1 My4yMjY0NDIxOTUgKzAyMDAKLUBAIC0xMDIsOSArMTAyLDcgQEAgc3RhdGljIHN0cnVjdCBob3N0 ZW50ICpHZXRIb3N0QnlOYW1lKGNoYQotIHN0YXRpYyB2b2lkIHNzbF9zb2NrX2NsZWFudXAodm9p ZCk7Ci0gI2VuZGlmCi0gc3RhdGljIGludCBzc2xfc29ja19pbml0KHZvaWQpOwotLXN0YXRpYyBp bnQgaW5pdF9jbGllbnRfaXAoaW50ICpzb2NrLHVuc2lnbmVkIGNoYXIgaXBbNF0sIGludCBwb3J0 LCBpbnQgdHlwZSk7Ci0tc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGludCBwb3J0 LCBpbnQgdHlwZSk7Ci0tc3RhdGljIGludCBpbml0X3NlcnZlcl9sb25nKGludCAqc29jaywgaW50 IHBvcnQsY2hhciAqaXAsIGludCB0eXBlKTsKLStzdGF0aWMgaW50IGluaXRfc2VydmVyKGludCAq c29jaywgY2hhciAqcG9ydCwgaW50IHR5cGUpOwotIHN0YXRpYyBpbnQgZG9fYWNjZXB0KGludCBh Y2Nfc29jaywgaW50ICpzb2NrLCBjaGFyICoqaG9zdCk7Ci0gc3RhdGljIGludCBob3N0X2lwKGNo YXIgKnN0ciwgdW5zaWduZWQgY2hhciBpcFs0XSk7Ci0gCi1AQCAtMjM0LDU3ICsyMzIsNzEgQEAg c3RhdGljIGludCBzc2xfc29ja19pbml0KHZvaWQpCi0gCXJldHVybigxKTsKLSAJfQotIAotLWlu dCBpbml0X2NsaWVudChpbnQgKnNvY2ssIGNoYXIgKmhvc3QsIGludCBwb3J0LCBpbnQgdHlwZSkK LStpbnQgaW5pdF9jbGllbnQoaW50ICpzb2NrLCBjaGFyICpob3N0LCBjaGFyICpwb3J0LCBpbnQg dHlwZSkKLSAJewotLQl1bnNpZ25lZCBjaGFyIGlwWzRdOwotLQotLQltZW1zZXQoaXAsICdcMCcs IHNpemVvZiBpcCk7Ci0tCWlmICghaG9zdF9pcChob3N0LCYoaXBbMF0pKSkKLS0JCXJldHVybiAw OwotLQlyZXR1cm4gaW5pdF9jbGllbnRfaXAoc29jayxpcCxwb3J0LHR5cGUpOwotLQl9Ci0tCi0t c3RhdGljIGludCBpbml0X2NsaWVudF9pcChpbnQgKnNvY2ssIHVuc2lnbmVkIGNoYXIgaXBbNF0s IGludCBwb3J0LCBpbnQgdHlwZSkKLS0JewotLQl1bnNpZ25lZCBsb25nIGFkZHI7Ci0tCXN0cnVj dCBzb2NrYWRkcl9pbiB0aGVtOwotLQlpbnQgcyxpOwotKwlzdHJ1Y3QgYWRkcmluZm8gKnJlcywg KnJlczAsIGhpbnRzOwotKwljaGFyICogZmFpbGVkX2NhbGwgPSBOVUxMOwotKwlpbnQgczsKLSsJ aW50IGU7Ci0gCi0gCWlmICghc3NsX3NvY2tfaW5pdCgpKSByZXR1cm4oMCk7Ci0gCi0tCW1lbXNl dCgoY2hhciAqKSZ0aGVtLDAsc2l6ZW9mKHRoZW0pKTsKLS0JdGhlbS5zaW5fZmFtaWx5PUFGX0lO RVQ7Ci0tCXRoZW0uc2luX3BvcnQ9aHRvbnMoKHVuc2lnbmVkIHNob3J0KXBvcnQpOwotLQlhZGRy PSh1bnNpZ25lZCBsb25nKQotLQkJKCh1bnNpZ25lZCBsb25nKWlwWzBdPDwyNEwpfAotLQkJKCh1 bnNpZ25lZCBsb25nKWlwWzFdPDwxNkwpfAotLQkJKCh1bnNpZ25lZCBsb25nKWlwWzJdPDwgOEwp fAotLQkJKCh1bnNpZ25lZCBsb25nKWlwWzNdKTsKLS0JdGhlbS5zaW5fYWRkci5zX2FkZHI9aHRv bmwoYWRkcik7Ci0tCi0tCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQotLQkJcz1zb2NrZXQoQUZf SU5FVCxTT0NLX1NUUkVBTSxTT0NLRVRfUFJPVE9DT0wpOwotLQllbHNlIC8qICggdHlwZSA9PSBT T0NLX0RHUkFNKSAqLwotLQkJcz1zb2NrZXQoQUZfSU5FVCxTT0NLX0RHUkFNLElQUFJPVE9fVURQ KTsKLS0JCQkKLS0JaWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpIHsgcGVycm9yKCJzb2NrZXQiKTsg cmV0dXJuKDApOyB9Ci0rCW1lbXNldCgmaGludHMsICdcMCcsIHNpemVvZihoaW50cykpOwotKwlo aW50cy5haV9zb2NrdHlwZSA9IHR5cGU7Ci0rCWhpbnRzLmFpX2ZsYWdzID0gQUlfQUREUkNPTkZJ RzsKLSsKLSsJZSA9IGdldGFkZHJpbmZvKGhvc3QsIHBvcnQsICZoaW50cywgJnJlcyk7Ci0rCWlm IChlKQotKwl7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgImdldGFkZHJpbmZvOiAlc1xuIiwgZ2FpX3N0 cmVycm9yKGUpKTsKLSsJCWlmIChlID09IEVBSV9TWVNURU0pCi0rCQkJcGVycm9yKCJnZXRhZGRy aW5mbyIpOwotKwkJcmV0dXJuICgwKTsKLSsJCX0KLSAKLSsJcmVzMCA9IHJlczsKLSsJd2hpbGUg KHJlcykKLSsJCXsKLSsJCXMgPSBzb2NrZXQocmVzLT5haV9mYW1pbHksIHJlcy0+YWlfc29ja3R5 cGUsIHJlcy0+YWlfcHJvdG9jb2wpOwotKwkJaWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpCi0rCQkJ ewotKwkJCWZhaWxlZF9jYWxsID0gInNvY2tldCI7Ci0rCQkJZ290byBuZXh0cmVzOwotKwkJCX0K LSAjaWYgZGVmaW5lZChTT19LRUVQQUxJVkUpICYmICFkZWZpbmVkKE9QRU5TU0xfU1lTX01QRSkK LSAJaWYgKHR5cGUgPT0gU09DS19TVFJFQU0pCi0gCQl7Ci0tCQlpPTA7Ci0tCQlpPXNldHNvY2tv cHQocyxTT0xfU09DS0VULFNPX0tFRVBBTElWRSwoY2hhciAqKSZpLHNpemVvZihpKSk7Ci0tCQlp ZiAoaSA8IDApIHsgY2xvc2Vzb2NrZXQocyk7IHBlcnJvcigia2VlcGFsaXZlIik7IHJldHVybigw KTsgfQotKwkJCWludCBpPTA7Ci0rCQkJaT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tFVCxTT19LRUVQ QUxJVkUsCi0rCQkJCShjaGFyICopJmksc2l6ZW9mKGkpKTsKLSsJCQlpZiAoaSA8IDApIHsKLSsJ CQkJZmFpbGVkX2NhbGwgPSAia2VlcGFsaXZlIjsKLSsJCQkJZ290byBuZXh0cmVzOwotKwkJCQl9 Ci0gCQl9Ci0gI2VuZGlmCi0tCi0tCWlmIChjb25uZWN0KHMsKHN0cnVjdCBzb2NrYWRkciAqKSZ0 aGVtLHNpemVvZih0aGVtKSkgPT0gLTEpCi0tCQl7IGNsb3Nlc29ja2V0KHMpOyBwZXJyb3IoImNv bm5lY3QiKTsgcmV0dXJuKDApOyB9Ci0rCQlpZiAoY29ubmVjdChzLChzdHJ1Y3Qgc29ja2FkZHIg KilyZXMtPmFpX2FkZHIsCi0rCQkJcmVzLT5haV9hZGRybGVuKSA9PSAwKQotKwkJCXsKLSsJCQlm cmVlYWRkcmluZm8ocmVzMCk7Ci0gCSpzb2NrPXM7Ci0gCXJldHVybigxKTsKLSAJfQotIAotLWlu dCBkb19zZXJ2ZXIoaW50IHBvcnQsIGludCB0eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpKGNoYXIg Kmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNoYXIg KmNvbnRleHQpCi0rCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOwotK25leHRyZXM6Ci0rCQlpZiAo cyAhPSBJTlZBTElEX1NPQ0tFVCkKLSsJCQljbG9zZShzKTsKLSsJCXJlcyA9IHJlcy0+YWlfbmV4 dDsKLSsJCX0KLSsJZnJlZWFkZHJpbmZvKHJlczApOwotKwljbG9zZXNvY2tldChzKTsKLSsKLSsJ cGVycm9yKGZhaWxlZF9jYWxsKTsKLSsJcmV0dXJuKDApOwotKwl9Ci0rCi0raW50IGRvX3NlcnZl cihjaGFyICpwb3J0LCBpbnQgdHlwZSwgaW50ICpyZXQsIGludCAoKmNiKShjaGFyICpob3N0bmFt ZSwgaW50IHMsIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0 KQotIAl7Ci0gCWludCBzb2NrOwotIAljaGFyICpuYW1lID0gTlVMTDsKLUBAIC0zMjIsMzMgKzMz NCw1MCBAQCBpbnQgZG9fc2VydmVyKGludCBwb3J0LCBpbnQgdHlwZSwgaW50ICpyCi0gCQl9Ci0g CX0KLSAKLS1zdGF0aWMgaW50IGluaXRfc2VydmVyX2xvbmcoaW50ICpzb2NrLCBpbnQgcG9ydCwg Y2hhciAqaXAsIGludCB0eXBlKQotK3N0YXRpYyBpbnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2NrLCBj aGFyICpwb3J0LCBpbnQgdHlwZSkKLSAJewotLQlpbnQgcmV0PTA7Ci0tCXN0cnVjdCBzb2NrYWRk cl9pbiBzZXJ2ZXI7Ci0tCWludCBzPSAtMTsKLSsJc3RydWN0IGFkZHJpbmZvICpyZXMsICpyZXMw ID0gTlVMTCwgaGludHM7Ci0rCWNoYXIgKiBmYWlsZWRfY2FsbCA9IE5VTEw7Ci0rCWludCBzID0g SU5WQUxJRF9TT0NLRVQ7Ci0rCWludCBlOwotIAotIAlpZiAoIXNzbF9zb2NrX2luaXQoKSkgcmV0 dXJuKDApOwotIAotLQltZW1zZXQoKGNoYXIgKikmc2VydmVyLDAsc2l6ZW9mKHNlcnZlcikpOwot LQlzZXJ2ZXIuc2luX2ZhbWlseT1BRl9JTkVUOwotLQlzZXJ2ZXIuc2luX3BvcnQ9aHRvbnMoKHVu c2lnbmVkIHNob3J0KXBvcnQpOwotLQlpZiAoaXAgPT0gTlVMTCkKLS0JCXNlcnZlci5zaW5fYWRk ci5zX2FkZHI9SU5BRERSX0FOWTsKLS0JZWxzZQotLS8qIEFkZGVkIGZvciBUM0UsIGFkZHJlc3Mt b2YgZmFpbHMgb24gYml0IGZpZWxkIChiZWNrbWFuQGFjbC5sYW5sLmdvdikgKi8KLS0jaWZuZGVm IEJJVF9GSUVMRF9MSU1JVFMKLS0JCW1lbWNweSgmc2VydmVyLnNpbl9hZGRyLnNfYWRkcixpcCw0 KTsKLS0jZWxzZQotLQkJbWVtY3B5KCZzZXJ2ZXIuc2luX2FkZHIsaXAsNCk7Ci0tI2VuZGlmCi0r CW1lbXNldCgmaGludHMsICdcMCcsIHNpemVvZihoaW50cykpOwotKwloaW50cy5haV9mYW1pbHkg PSBBRl9JTkVUNjsKLSt0cnlpcHY0OgotKwloaW50cy5haV9zb2NrdHlwZSA9IHR5cGU7Ci0rCWhp bnRzLmFpX2ZsYWdzID0gQUlfUEFTU0lWRTsKLSAJCi0tCQlpZiAodHlwZSA9PSBTT0NLX1NUUkVB TSkKLS0JCQlzPXNvY2tldChBRl9JTkVULFNPQ0tfU1RSRUFNLFNPQ0tFVF9QUk9UT0NPTCk7Ci0t CQllbHNlIC8qIHR5cGUgPT0gU09DS19ER1JBTSAqLwotLQkJCXM9c29ja2V0KEFGX0lORVQsIFNP Q0tfREdSQU0sSVBQUk9UT19VRFApOwotKwllID0gZ2V0YWRkcmluZm8oTlVMTCwgcG9ydCwgJmhp bnRzLCAmcmVzKTsKLSsJaWYgKGUpCi0rCQl7Ci0rCQlpZiAoaGludHMuYWlfZmFtaWx5ID09IEFG X0lORVQpCi0rCQkJewotKwkJCWZwcmludGYoc3RkZXJyLCAiZ2V0YWRkcmluZm86ICVzXG4iLCBn YWlfc3RyZXJyb3IoZSkpOwotKwkJCWlmIChlID09IEVBSV9TWVNURU0pCi0rCQkJCXBlcnJvcigi Z2V0YWRkcmluZm8iKTsKLSsJCQlyZXR1cm4gKDApOwotKwkJCX0KLSsJCQllbHNlCi0rCQkJCXJl cyA9IE5VTEw7Ci0rCQl9Ci0gCi0tCWlmIChzID09IElOVkFMSURfU09DS0VUKSBnb3RvIGVycjsK LSsJcmVzMCA9IHJlczsKLSsJd2hpbGUgKHJlcykKLSsJCXsKLSsJCXMgPSBzb2NrZXQocmVzLT5h aV9mYW1pbHksIHJlcy0+YWlfc29ja3R5cGUsIHJlcy0+YWlfcHJvdG9jb2wpOwotKwkJaWYgKHMg PT0gSU5WQUxJRF9TT0NLRVQpCi0rCQkJewotKwkJCWZhaWxlZF9jYWxsID0gInNvY2tldCI7Ci0r CQkJZ290byBuZXh0cmVzOwotKwkJCX0KLSsJCWlmIChoaW50cy5haV9mYW1pbHkgPT0gQUZfSU5F VDYpCi0rCQkJewotKwkJCWludCBqID0gMDsKLSsJCQlzZXRzb2Nrb3B0KHMsIElQUFJPVE9fSVBW NiwgSVBWNl9WNk9OTFksCi0rCQkJCSAgICh2b2lkICopICZqLCBzaXplb2Ygaik7Ci0rCQkJfQot ICNpZiBkZWZpbmVkIFNPTF9TT0NLRVQgJiYgZGVmaW5lZCBTT19SRVVTRUFERFIKLSAJCXsKLSAJ CWludCBqID0gMTsKLUBAIC0zNTYsMzUgKzM4NSw0OSBAQCBzdGF0aWMgaW50IGluaXRfc2VydmVy X2xvbmcoaW50ICpzb2NrLCBpCi0gCQkJICAgKHZvaWQgKikgJmosIHNpemVvZiBqKTsKLSAJCX0K LSAjZW5kaWYKLS0JaWYgKGJpbmQocywoc3RydWN0IHNvY2thZGRyICopJnNlcnZlcixzaXplb2Yo c2VydmVyKSkgPT0gLTEpCi0rCi0rCQlpZiAoYmluZChzLChzdHJ1Y3Qgc29ja2FkZHIgKilyZXMt PmFpX2FkZHIsIHJlcy0+YWlfYWRkcmxlbikgPT0gLTEpCi0gCQl7Ci0tI2lmbmRlZiBPUEVOU1NM X1NZU19XSU5ET1dTCi0tCQlwZXJyb3IoImJpbmQiKTsKLS0jZW5kaWYKLS0JCWdvdG8gZXJyOwot KwkJCWZhaWxlZF9jYWxsID0gImJpbmQiOwotKwkJCWdvdG8gbmV4dHJlczsKLSAJCX0KLS0JLyog TWFrZSBpdCAxMjggZm9yIGxpbnV4ICovCi0tCWlmICh0eXBlPT1TT0NLX1NUUkVBTSAmJiBsaXN0 ZW4ocywxMjgpID09IC0xKSBnb3RvIGVycjsKLS0JKnNvY2s9czsKLS0JcmV0PTE7Ci0tZXJyOgot LQlpZiAoKHJldCA9PSAwKSAmJiAocyAhPSAtMSkpCi0rCQlpZiAodHlwZT09U09DS19TVFJFQU0g JiYgbGlzdGVuKHMsMTI4KSA9PSAtMSkKLSAJCXsKLS0JCVNIVVRET1dOKHMpOwotKwkJCWZhaWxl ZF9jYWxsID0gImxpc3RlbiI7Ci0rCQkJZ290byBuZXh0cmVzOwotIAkJfQotLQlyZXR1cm4ocmV0 KTsKLSsKLSsJCSpzb2NrPXM7Ci0rCQlyZXR1cm4oMSk7Ci0rCi0rbmV4dHJlczoKLSsJCWlmIChz ICE9IElOVkFMSURfU09DS0VUKQotKwkJCWNsb3NlKHMpOwotKwkJcmVzID0gcmVzLT5haV9uZXh0 OwotIAl9Ci0rCWlmIChyZXMwKQotKwkJZnJlZWFkZHJpbmZvKHJlczApOwotIAotLXN0YXRpYyBp bnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2NrLCBpbnQgcG9ydCwgaW50IHR5cGUpCi0rCWlmIChzID09 IElOVkFMSURfU09DS0VUKQotIAl7Ci0tCXJldHVybihpbml0X3NlcnZlcl9sb25nKHNvY2ssIHBv cnQsIE5VTEwsIHR5cGUpKTsKLSsJCWlmIChoaW50cy5haV9mYW1pbHkgPT0gQUZfSU5FVDYpCi0r CQl7Ci0rCQkJaGludHMuYWlfZmFtaWx5ID0gQUZfSU5FVDsKLSsJCQlnb3RvIHRyeWlwdjQ7Ci0r CQl9Ci0rCQlwZXJyb3IoInNvY2tldCIpOwotKwkJcmV0dXJuKDApOwotKwl9Ci0rCi0rCXBlcnJv cihmYWlsZWRfY2FsbCk7Ci0rCXJldHVybigwKTsKLSAJfQotIAotIHN0YXRpYyBpbnQgZG9fYWNj ZXB0KGludCBhY2Nfc29jaywgaW50ICpzb2NrLCBjaGFyICoqaG9zdCkKLSAJewotKwlzdGF0aWMg c3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgZnJvbTsKLSsJY2hhciBidWZmZXJbTklfTUFYSE9TVF07 Ci0gCWludCByZXQ7Ci0tCXN0cnVjdCBob3N0ZW50ICpoMSwqaDI7Ci0tCXN0YXRpYyBzdHJ1Y3Qg c29ja2FkZHJfaW4gZnJvbTsKLSAJaW50IGxlbjsKLSAvKglzdHJ1Y3QgbGluZ2VyIGxpbmc7ICov Ci0gCi1AQCAtNDI0LDE0NSArNDY3LDY2IEBAIHJlZG9pdDoKLSAJbGluZy5sX29ub2ZmPTE7Ci0g CWxpbmcubF9saW5nZXI9MDsKLSAJaT1zZXRzb2Nrb3B0KHJldCxTT0xfU09DS0VULFNPX0xJTkdF UiwoY2hhciAqKSZsaW5nLHNpemVvZihsaW5nKSk7Ci0tCWlmIChpIDwgMCkgeyBwZXJyb3IoImxp bmdlciIpOyByZXR1cm4oMCk7IH0KLSsJaWYgKGkgPCAwKSB7IGNsb3Nlc29ja2V0KHJldCk7IHBl cnJvcigibGluZ2VyIik7IHJldHVybigwKTsgfQotIAlpPTA7Ci0gCWk9c2V0c29ja29wdChyZXQs U09MX1NPQ0tFVCxTT19LRUVQQUxJVkUsKGNoYXIgKikmaSxzaXplb2YoaSkpOwotLQlpZiAoaSA8 IDApIHsgcGVycm9yKCJrZWVwYWxpdmUiKTsgcmV0dXJuKDApOyB9Ci0rCWlmIChpIDwgMCkgeyBj bG9zZXNvY2tldChyZXQpOyBwZXJyb3IoImtlZXBhbGl2ZSIpOyByZXR1cm4oMCk7IH0KLSAqLwot IAotIAlpZiAoaG9zdCA9PSBOVUxMKSBnb3RvIGVuZDsKLS0jaWZuZGVmIEJJVF9GSUVMRF9MSU1J VFMKLS0JLyogSSBzaG91bGQgdXNlIFdTQUFzeW5jR2V0SG9zdEJ5TmFtZSgpIHVuZGVyIHdpbmRv d3MgKi8KLS0JaDE9Z2V0aG9zdGJ5YWRkcigoY2hhciAqKSZmcm9tLnNpbl9hZGRyLnNfYWRkciwK LS0JCXNpemVvZihmcm9tLnNpbl9hZGRyLnNfYWRkciksQUZfSU5FVCk7Ci0tI2Vsc2UKLS0JaDE9 Z2V0aG9zdGJ5YWRkcigoY2hhciAqKSZmcm9tLnNpbl9hZGRyLAotLQkJc2l6ZW9mKHN0cnVjdCBp bl9hZGRyKSxBRl9JTkVUKTsKLS0jZW5kaWYKLS0JaWYgKGgxID09IE5VTEwpCi0rCi0rCWlmIChn ZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopJmZyb20sIHNpemVvZihmcm9tKSwKLSsJCWJ1 ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCi0rCQlOVUxMLCAwLCAwKSkKLSAJCXsKLS0JCUJJT19wcmlu dGYoYmlvX2VyciwiYmFkIGdldGhvc3RieWFkZHJcbiIpOwotKwkJQklPX3ByaW50ZihiaW9fZXJy LCJnZXRuYW1laW5mbyBmYWlsZWRcbiIpOwotIAkJKmhvc3Q9TlVMTDsKLSAJCS8qIHJldHVybigw KTsgKi8KLSAJCX0KLSAJZWxzZQotIAkJewotLQkJaWYgKCgqaG9zdD0oY2hhciAqKU9QRU5TU0xf bWFsbG9jKHN0cmxlbihoMS0+aF9uYW1lKSsxKSkgPT0gTlVMTCkKLSsJCWlmICgoKmhvc3Q9KGNo YXIgKilPUEVOU1NMX21hbGxvYyhzdHJsZW4oYnVmZmVyKSsxKSkgPT0gTlVMTCkKLSAJCQl7Ci0g CQkJcGVycm9yKCJPUEVOU1NMX21hbGxvYyIpOwotIAkJCWNsb3Nlc29ja2V0KHJldCk7Ci0gCQkJ cmV0dXJuKDApOwotIAkJCX0KLS0JCUJVRl9zdHJsY3B5KCpob3N0LGgxLT5oX25hbWUsc3RybGVu KGgxLT5oX25hbWUpKzEpOwotLQotLQkJaDI9R2V0SG9zdEJ5TmFtZSgqaG9zdCk7Ci0tCQlpZiAo aDIgPT0gTlVMTCkKLS0JCQl7Ci0tCQkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRob3N0YnluYW1l IGZhaWx1cmVcbiIpOwotLQkJCWNsb3Nlc29ja2V0KHJldCk7Ci0tCQkJcmV0dXJuKDApOwotLQkJ CX0KLS0JCWlmIChoMi0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKQotLQkJCXsKLS0JCQlCSU9fcHJp bnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUgYWRkciBpcyBub3QgQUZfSU5FVFxuIik7Ci0tCQkJ Y2xvc2Vzb2NrZXQocmV0KTsKLS0JCQlyZXR1cm4oMCk7Ci0tCQkJfQotKwkJc3RyY3B5KCpob3N0 LCBidWZmZXIpOwotIAkJfQotIGVuZDoKLSAJKnNvY2s9cmV0OwotIAlyZXR1cm4oMSk7Ci0gCX0K LSAKLS1pbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLCBjaGFyICoqaG9zdF9wdHIsIHVu c2lnbmVkIGNoYXIgKmlwLAotLQkgICAgIHNob3J0ICpwb3J0X3B0cikKLStpbnQgZXh0cmFjdF9o b3N0X3BvcnQoY2hhciAqc3RyLCBjaGFyICoqaG9zdF9wdHIsIAotKwkgICAgIGNoYXIgKipwb3J0 X3B0cikKLSAJewotLQljaGFyICpoLCpwOwotKwljaGFyICpoLCpwLCp4OwotIAotLQloPXN0cjsK LS0JcD1zdHJjaHIoc3RyLCc6Jyk7Ci0rCXg9aD1zdHI7Ci0rCWlmICgqaCA9PSAnWycpCi0rCQl7 Ci0rCQloKys7Ci0rCQlwPXN0cmNocihoLCddJyk7Ci0gCWlmIChwID09IE5VTEwpCi0gCQl7Ci0t CQlCSU9fcHJpbnRmKGJpb19lcnIsIm5vIHBvcnQgZGVmaW5lZFxuIik7Ci0rCQkJQklPX3ByaW50 ZihiaW9fZXJyLCJubyBlbmRpbmcgYnJhY2tldCBmb3IgSVB2NiBhZGRyZXNzXG4iKTsKLSAJCXJl dHVybigwKTsKLSAJCX0KLSAJKihwKyspPSdcMCc7Ci0tCi0tCWlmICgoaXAgIT0gTlVMTCkgJiYg IWhvc3RfaXAoc3RyLGlwKSkKLS0JCWdvdG8gZXJyOwotLQlpZiAoaG9zdF9wdHIgIT0gTlVMTCkg Kmhvc3RfcHRyPWg7Ci0tCi0tCWlmICghZXh0cmFjdF9wb3J0KHAscG9ydF9wdHIpKQotLQkJZ290 byBlcnI7Ci0tCXJldHVybigxKTsKLS1lcnI6Ci0tCXJldHVybigwKTsKLSsJCXggPSBwOwotIAl9 Ci0tCi0tc3RhdGljIGludCBob3N0X2lwKGNoYXIgKnN0ciwgdW5zaWduZWQgY2hhciBpcFs0XSkK LS0JewotLQl1bnNpZ25lZCBpbnQgaW5bNF07IAotLQlpbnQgaTsKLS0KLS0JaWYgKHNzY2FuZihz dHIsIiV1LiV1LiV1LiV1IiwmKGluWzBdKSwmKGluWzFdKSwmKGluWzJdKSwmKGluWzNdKSkgPT0g NCkKLS0JCXsKLS0JCWZvciAoaT0wOyBpPDQ7IGkrKykKLS0JCQlpZiAoaW5baV0gPiAyNTUpCi0t CQkJCXsKLS0JCQkJQklPX3ByaW50ZihiaW9fZXJyLCJpbnZhbGlkIElQIGFkZHJlc3NcbiIpOwot LQkJCQlnb3RvIGVycjsKLS0JCQkJfQotLQkJaXBbMF09aW5bMF07Ci0tCQlpcFsxXT1pblsxXTsK LS0JCWlwWzJdPWluWzJdOwotLQkJaXBbM109aW5bM107Ci0tCQl9Ci0tCWVsc2UKLS0JCXsgLyog ZG8gYSBnZXRob3N0YnluYW1lICovCi0tCQlzdHJ1Y3QgaG9zdGVudCAqaGU7Ci0tCi0tCQlpZiAo IXNzbF9zb2NrX2luaXQoKSkgcmV0dXJuKDApOwotLQotLQkJaGU9R2V0SG9zdEJ5TmFtZShzdHIp OwotLQkJaWYgKGhlID09IE5VTEwpCi0tCQkJewotLQkJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0 aG9zdGJ5bmFtZSBmYWlsdXJlXG4iKTsKLS0JCQlnb3RvIGVycjsKLS0JCQl9Ci0tCQkvKiBjYXN0 IHRvIHNob3J0IGJlY2F1c2Ugb2Ygd2luMTYgd2luc29jayBkZWZpbml0aW9uICovCi0tCQlpZiAo KHNob3J0KWhlLT5oX2FkZHJ0eXBlICE9IEFGX0lORVQpCi0rCXA9c3RyY2hyKHgsJzonKTsKLSsJ aWYgKHAgPT0gTlVMTCkKLSAJCQl7Ci0tCQkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRob3N0Ynlu YW1lIGFkZHIgaXMgbm90IEFGX0lORVRcbiIpOwotLQkJCXJldHVybigwKTsKLS0JCQl9Ci0tCQlp cFswXT1oZS0+aF9hZGRyX2xpc3RbMF1bMF07Ci0tCQlpcFsxXT1oZS0+aF9hZGRyX2xpc3RbMF1b MV07Ci0tCQlpcFsyXT1oZS0+aF9hZGRyX2xpc3RbMF1bMl07Ci0tCQlpcFszXT1oZS0+aF9hZGRy X2xpc3RbMF1bM107Ci0tCQl9Ci0tCXJldHVybigxKTsKLS1lcnI6Ci0rCQlCSU9fcHJpbnRmKGJp b19lcnIsIm5vIHBvcnQgZGVmaW5lZFxuIik7Ci0gCXJldHVybigwKTsKLSAJfQotKwkqKHArKyk9 J1wwJzsKLSAKLS1pbnQgZXh0cmFjdF9wb3J0KGNoYXIgKnN0ciwgc2hvcnQgKnBvcnRfcHRyKQot LQl7Ci0tCWludCBpOwotLQlzdHJ1Y3Qgc2VydmVudCAqczsKLSsJaWYgKGhvc3RfcHRyICE9IE5V TEwpICpob3N0X3B0cj1oOwotKwlpZiAocG9ydF9wdHIgIT0gTlVMTCkgKnBvcnRfcHRyPXA7Ci0g Ci0tCWk9YXRvaShzdHIpOwotLQlpZiAoaSAhPSAwKQotLQkJKnBvcnRfcHRyPSh1bnNpZ25lZCBz aG9ydClpOwotLQllbHNlCi0tCQl7Ci0tCQlzPWdldHNlcnZieW5hbWUoc3RyLCJ0Y3AiKTsKLS0J CWlmIChzID09IE5VTEwpCi0tCQkJewotLQkJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0c2VydmJ5 bmFtZSBmYWlsdXJlIGZvciAlc1xuIixzdHIpOwotLQkJCXJldHVybigwKTsKLS0JCQl9Ci0tCQkq cG9ydF9wdHI9bnRvaHMoKHVuc2lnbmVkIHNob3J0KXMtPnNfcG9ydCk7Ci0tCQl9Ci0gCXJldHVy bigxKTsKLSAJfQotIAoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjFoLXN5c3RlbS1jaXBoZXJs aXN0LnBhdGNoIGIvb3BlbnNzbC0xLjAuMWgtc3lzdGVtLWNpcGhlcmxpc3QucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YzUxMDYuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0x LjAuMWgtc3lzdGVtLWNpcGhlcmxpc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODkgKzAs MCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWgvQ29uZmlndXJlLnN5c3RlbSBvcGVuc3NsLTEu MC4xaC9Db25maWd1cmUKLS0tLSBvcGVuc3NsLTEuMC4xaC9Db25maWd1cmUuc3lzdGVtCTIwMTQt MDYtMDUgMTQ6NDc6MzcuNTA5MzEyODc1ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWgvQ29uZmln dXJlCTIwMTQtMDYtMTEgMTQ6MDU6MjguNTYwMzU5MDY5ICswMjAwCi1AQCAtMTAsNyArMTAsNyBA QCB1c2Ugc3RyaWN0OwotIAotICMgc2VlIElOU1RBTEwgZm9yIGluc3RydWN0aW9ucy4KLSAKLS1t eSAkdXNhZ2U9IlVzYWdlOiBDb25maWd1cmUgW25vLTxjaXBoZXI+IC4uLl0gW2VuYWJsZS08Y2lw aGVyPiAuLi5dIFtleHBlcmltZW50YWwtPGNpcGhlcj4gLi4uXSBbLUR4eHhdIFstbHh4eF0gWy1M eHh4XSBbLWZ4eHhdIFstS3h4eF0gW25vLWh3LXh4eHxuby1od10gW1tuby1ddGhyZWFkc10gW1tu by1dc2hhcmVkXSBbW25vLV16bGlifHpsaWItZHluYW1pY10gW25vLWFzbV0gW25vLWRzb10gW25v LWtyYjVdIFtzY3RwXSBbMzg2XSBbLS1wcmVmaXg9RElSXSBbLS1vcGVuc3NsZGlyPU9QRU5TU0xE SVJdIFstLXdpdGgteHh4Wz12dnZdXSBbLS10ZXN0LXNhbml0eV0gb3MvY29tcGlsZXJbOmZsYWdz XVxuIjsKLStteSAkdXNhZ2U9IlVzYWdlOiBDb25maWd1cmUgW25vLTxjaXBoZXI+IC4uLl0gW2Vu YWJsZS08Y2lwaGVyPiAuLi5dIFtleHBlcmltZW50YWwtPGNpcGhlcj4gLi4uXSBbLUR4eHhdIFst bHh4eF0gWy1MeHh4XSBbLWZ4eHhdIFstS3h4eF0gW25vLWh3LXh4eHxuby1od10gW1tuby1ddGhy ZWFkc10gW1tuby1dc2hhcmVkXSBbW25vLV16bGlifHpsaWItZHluYW1pY10gW25vLWFzbV0gW25v LWRzb10gW25vLWtyYjVdIFtzY3RwXSBbMzg2XSBbLS1wcmVmaXg9RElSXSBbLS1vcGVuc3NsZGly PU9QRU5TU0xESVJdIFstLXN5c3RlbS1jaXBoZXJzLWZpbGU9U1lTVEVNQ0lQSEVSRklMRV0gWy0t d2l0aC14eHhbPXZ2dl1dIFstLXRlc3Qtc2FuaXR5XSBvcy9jb21waWxlcls6ZmxhZ3NdXG4iOwot IAotICMgT3B0aW9uczoKLSAjCi1AQCAtMzUsNiArMzUsOSBAQCBteSAkdXNhZ2U9IlVzYWdlOiBD b25maWd1cmUgW25vLTxjaXBoZXI+Ci0gIyAtLXdpdGgta3JiNS1mbGF2b3IgIERlY2xhcmUgd2hh dCBmbGF2b3Igb2YgS2VyYmVyb3MgNSBpcyB1c2VkLiAgQ3VycmVudGx5Ci0gIwkJc3VwcG9ydGVk IHZhbHVlcyBhcmUgIk1JVCIgYW5kICJIZWltZGFsIi4gIEEgdmFsdWUgaXMgcmVxdWlyZWQuCi0g IwotKyMgLS1zeXN0ZW0tY2lwaGVycy1maWxlICBBIGZpbGUgdG8gcmVhZCBjaXBoZXIgc3RyaW5n IGZyb20gd2hlbiB0aGUgUFJPRklMRT1TWVNURU0KLSsjCQljaXBoZXIgaXMgc3BlY2lmaWVkIChk ZWZhdWx0KS4KLSsjCi0gIyAtLXRlc3Qtc2FuaXR5IE1ha2UgYSBudW1iZXIgb2Ygc2FuaXR5IGNo ZWNrcyBvbiB0aGUgZGF0YSBpbiB0aGlzIGZpbGUuCi0gIyAgICAgICAgICAgICAgIFRoaXMgaXMg YSBkZWJ1Z2dpbmcgdG9vbCBmb3IgT3BlblNTTCBkZXZlbG9wZXJzLgotICMKLUBAIC02NjMsNiAr NjY2LDcgQEAgbXkgJHByZWZpeD0iIjsKLSBteSAkbGliZGlyPSIiOwotIG15ICRvcGVuc3NsZGly PSIiOwotIG15ICRlbmdpbmVzZGlyPSIiOwotK215ICRzeXN0ZW1fY2lwaGVyc19maWxlPSIiOwot IG15ICRleGVfZXh0PSIiOwotIG15ICRpbnN0YWxsX3ByZWZpeD0gIiRFTlZ7J0lOU1RBTExfUFJF RklYJ30iOwotIG15ICRjcm9zc19jb21waWxlX3ByZWZpeD0iIjsKLUBAIC04OTUsNiArODk5LDEw IEBAIFBST0NFU1NfQVJHUzoKLSAJCQkJewotIAkJCQkkZW5naW5lc2Rpcj0kMTsKLSAJCQkJfQot KwkJCWVsc2lmICgvXi0tc3lzdGVtLWNpcGhlcnMtZmlsZT0oLiopJC8pCi0rCQkJCXsKLSsJCQkJ JHN5c3RlbV9jaXBoZXJzX2ZpbGU9JDE7Ci0rCQkJCX0KLSAJCQllbHNpZiAoL14tLWluc3RhbGwu cHJlZml4PSguKikkLykKLSAJCQkJewotIAkJCQkkaW5zdGFsbF9wcmVmaXg9JDE7Ci1AQCAtMTA1 Myw2ICsxMDYxLDcgQEAgcHJpbnQgIkNvbmZpZ3VyaW5nIGZvciAkdGFyZ2V0XG4iOwotIAotICZ1 c2FnZSBpZiAoIWRlZmluZWQoJHRhYmxleyR0YXJnZXR9KSk7Ci0gCi0rY2hvcCAkc3lzdGVtX2Np cGhlcnNfZmlsZSBpZiAkc3lzdGVtX2NpcGhlcnNfZmlsZSA9fiAvXC8kLzsKLSAKLSBmb3JlYWNo IChzb3J0IChrZXlzICVkaXNhYmxlZCkpCi0gCXsKLUBAIC0xNjA3LDYgKzE2MTYsNyBAQCB3aGls ZSAoPElOPikKLSAJcy9eSU5TVEFMTFRPUD0uKiQvSU5TVEFMTFRPUD0kcHJlZml4LzsKLSAJcy9e TVVMVElMSUI9LiokL01VTFRJTElCPSRtdWx0aWxpYi87Ci0gCXMvXk9QRU5TU0xESVI9LiokL09Q RU5TU0xESVI9JG9wZW5zc2xkaXIvOwotKwlzL15TWVNURU1fQ0lQSEVSU19GSUxFPS4qJC9TWVNU RU1fQ0lQSEVSU19GSUxFPSRzeXN0ZW1fY2lwaGVyc19maWxlLzsKLSAJcy9eTElCRElSPS4qJC9M SUJESVI9JGxpYmRpci87Ci0gCXMvXklOU1RBTExfUFJFRklYPS4qJC9JTlNUQUxMX1BSRUZJWD0k aW5zdGFsbF9wcmVmaXgvOwotIAlzL15QTEFURk9STT0uKiQvUExBVEZPUk09JHRhcmdldC87Ci1A QCAtMTgxMiw2ICsxODIyLDE0IEBAIHdoaWxlICg8SU4+KQotIAkJJGZvbyA9fiBzL1xcL1xcXFwv ZzsKLSAJCXByaW50IE9VVCAiI2RlZmluZSBFTkdJTkVTRElSIFwiJGZvb1wiXG4iOwotIAkJfQot KwllbHNpZgkoL14jKChkZWZpbmUpfCh1bmRlZikpXHMrU1lTVEVNX0NJUEhFUlNfRklMRS8pCi0r CQl7Ci0rCQlteSAkZm9vID0gIiRzeXN0ZW1fY2lwaGVyc19maWxlIjsKLSsJCWlmICgkZm9vIG5l ICcnKSB7Ci0rCQkJJGZvbyA9fiBzL1xcL1xcXFwvZzsKLSsJCQlwcmludCBPVVQgIiNkZWZpbmUg U1lTVEVNX0NJUEhFUlNfRklMRSBcIiRmb29cIlxuIjsKLSsJCX0KLSsJCX0KLSAJZWxzaWYJKC9e IygoZGVmaW5lKXwodW5kZWYpKVxzK09QRU5TU0xfRVhQT1JUX1ZBUl9BU19GVU5DVElPTi8pCi0g CQl7IHByaW50ZiBPVVQgIiN1bmRlZiBPUEVOU1NMX0VYUE9SVF9WQVJfQVNfRlVOQ1RJT05cbiIK LSAJCQlpZiAkZXhwb3J0X3Zhcl9hc19mbjsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFoL2NyeXB0 by9vcGVuc3NsY29uZi5oLmluLnN5c3RlbSBvcGVuc3NsLTEuMC4xaC9jcnlwdG8vb3BlbnNzbGNv bmYuaC5pbgotLS0tIG9wZW5zc2wtMS4wLjFoL2NyeXB0by9vcGVuc3NsY29uZi5oLmluLnN5c3Rl bQkyMDE0LTA2LTA1IDE0OjQ3OjM3LjQzNzMxMTE4OCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFo L2NyeXB0by9vcGVuc3NsY29uZi5oLmluCTIwMTQtMDYtMTEgMTM6MzE6NDQuNDk3NzIyMzQ1ICsw MjAwCi1AQCAtMjUsNiArMjUsOCBAQAotICNlbmRpZgotICNlbmRpZgotIAotKyN1bmRlZiBTWVNU RU1fQ0lQSEVSU19GSUxFCi0rCi0gI3VuZGVmIE9QRU5TU0xfVU5JU1RECi0gI2RlZmluZSBPUEVO U1NMX1VOSVNURCA8dW5pc3RkLmg+Ci0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaC9zc2wvc3Ns X2NpcGguYy5zeXN0ZW0gb3BlbnNzbC0xLjAuMWgvc3NsL3NzbF9jaXBoLmMKLS0tLSBvcGVuc3Ns LTEuMC4xaC9zc2wvc3NsX2NpcGguYy5zeXN0ZW0JMjAxNC0wNi0wNSAxNDo0NzozNy40NDEzMTEy ODIgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaC9zc2wvc3NsX2NpcGguYwkyMDE0LTA2LTExIDEz OjU1OjI4LjE5NDM4MTkzNyArMDIwMAotQEAgLTEzNTIsNiArMTM1Miw1NCBAQCBzdGF0aWMgaW50 IHNzbF9jaXBoZXJfcHJvY2Vzc19ydWxlc3RyKGNvCi0gCXJldHVybihyZXR2YWwpOwotIAl9Ci0g Ci0rI2lmZGVmIFNZU1RFTV9DSVBIRVJTX0ZJTEUKLStzdGF0aWMgY2hhciogbG9hZF9zeXN0ZW1f c3RyKGNvbnN0IGNoYXIqIHN1ZmZpeCkKLSsJewotKwlGSUxFKiBmcDsKLSsJY2hhciBidWZbMTAy NF07Ci0rCWNoYXIgKm5ld19ydWxlczsKLSsJdW5zaWduZWQgbGVuLCBzbGVuOwotKwotKwlmcCA9 IGZvcGVuKFNZU1RFTV9DSVBIRVJTX0ZJTEUsICJyIik7Ci0rCWlmIChmcCA9PSBOVUxMIHx8IGZn ZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSA9PSBOVUxMKQotKwkJewotKwkJLyogY2Fubm90IG9w ZW4gb3IgZmlsZSBpcyBlbXB0eSAqLwotKwkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVz IiwgU1NMX0RFRkFVTFRfQ0lQSEVSX0xJU1QpOwotKwkJfQotKwotKwlpZiAoZnApCi0rCQlmY2xv c2UoZnApOwotKwotKwlzbGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0rCWxlbiA9IHN0cmxlbihidWYp OwotKwotKwlpZiAoYnVmW2xlbi0xXSA9PSAnXG4nKQotKwkJewotKwkJbGVuLS07Ci0rCQlidWZb bGVuXSA9IDA7Ci0rCQl9Ci0rCWlmIChidWZbbGVuLTFdID09ICdccicpCi0rCQl7Ci0rCQlsZW4t LTsKLSsJCWJ1ZltsZW5dID0gMDsKLSsJCX0KLSsKLSsJbmV3X3J1bGVzID0gT1BFTlNTTF9tYWxs b2MobGVuICsgc2xlbiArIDEpOwotKwlpZiAobmV3X3J1bGVzID09IDApCi0rCQlyZXR1cm4gTlVM TDsKLSsKLSsJbWVtY3B5KG5ld19ydWxlcywgYnVmLCBsZW4pOwotKwlpZiAoc2xlbiA+IDApCi0r CQl7Ci0rCQltZW1jcHkoJm5ld19ydWxlc1tsZW5dLCBzdWZmaXgsIHNsZW4pOwotKwkJbGVuICs9 IHNsZW47Ci0rCQl9Ci0rCW5ld19ydWxlc1tsZW5dID0gMDsKLSsKLSsJcmV0dXJuIG5ld19ydWxl czsKLSsJfQotKyNlbmRpZgotKwotIFNUQUNLX09GKFNTTF9DSVBIRVIpICpzc2xfY3JlYXRlX2Np cGhlcl9saXN0KGNvbnN0IFNTTF9NRVRIT0QgKnNzbF9tZXRob2QsCi0gCQlTVEFDS19PRihTU0xf Q0lQSEVSKSAqKmNpcGhlcl9saXN0LAotIAkJU1RBQ0tfT0YoU1NMX0NJUEhFUikgKipjaXBoZXJf bGlzdF9ieV9pZCwKLUBAIC0xMzU5LDE2ICsxNDA3LDI5IEBAIFNUQUNLX09GKFNTTF9DSVBIRVIp ICpzc2xfY3JlYXRlX2NpcGhlcl8KLSAJewotIAlpbnQgb2ssIG51bV9vZl9jaXBoZXJzLCBudW1f b2ZfYWxpYXNfbWF4LCBudW1fb2ZfZ3JvdXBfYWxpYXNlczsKLSAJdW5zaWduZWQgbG9uZyBkaXNh YmxlZF9ta2V5LCBkaXNhYmxlZF9hdXRoLCBkaXNhYmxlZF9lbmMsIGRpc2FibGVkX21hYywgZGlz YWJsZWRfc3NsOwotLQlTVEFDS19PRihTU0xfQ0lQSEVSKSAqY2lwaGVyc3RhY2ssICp0bXBfY2lw aGVyX2xpc3Q7Ci0rCVNUQUNLX09GKFNTTF9DSVBIRVIpICpjaXBoZXJzdGFjayA9IE5VTEwsICp0 bXBfY2lwaGVyX2xpc3Q7Ci0gCWNvbnN0IGNoYXIgKnJ1bGVfcDsKLSAJQ0lQSEVSX09SREVSICpj b19saXN0ID0gTlVMTCwgKmhlYWQgPSBOVUxMLCAqdGFpbCA9IE5VTEwsICpjdXJyOwotIAljb25z dCBTU0xfQ0lQSEVSICoqY2FfbGlzdCA9IE5VTEw7Ci0rI2lmZGVmIFNZU1RFTV9DSVBIRVJTX0ZJ TEUKLSsJY2hhciAqbmV3X3J1bGVzID0gTlVMTDsKLSsKLSsJaWYgKHJ1bGVfc3RyICE9IE5VTEwg JiYgc3RybmNtcChydWxlX3N0ciwgIlBST0ZJTEU9U1lTVEVNIiwgMTQpID09IDApCi0rCQl7Ci0r CQljaGFyICpwID0gcnVsZV9zdHIgKyAxNDsKLSsKLSsJCW5ld19ydWxlcyA9IGxvYWRfc3lzdGVt X3N0cihwKTsKLSsJCXJ1bGVfc3RyID0gbmV3X3J1bGVzOwotKwkJfQotKyNlbmRpZgotIAotIAkv KgotIAkgKiBSZXR1cm4gd2l0aCBlcnJvciBpZiBub3RoaW5nIHRvIGRvLgotIAkgKi8KLSAJaWYg KHJ1bGVfc3RyID09IE5VTEwgfHwgY2lwaGVyX2xpc3QgPT0gTlVMTCB8fCBjaXBoZXJfbGlzdF9i eV9pZCA9PSBOVUxMKQotLQkJcmV0dXJuIE5VTEw7Ci0rCQl7Ci0rCQlnb3RvIGVuZDsKLSsJCX0K LSAKLSAJLyoKLSAJICogVG8gcmVkdWNlIHRoZSB3b3JrIHRvIGRvIHdlIG9ubHkgd2FudCB0byBw cm9jZXNzIHRoZSBjb21waWxlZAotQEAgLTEzODksNyArMTQ1MCw3IEBAIFNUQUNLX09GKFNTTF9D SVBIRVIpICpzc2xfY3JlYXRlX2NpcGhlcl8KLSAJaWYgKGNvX2xpc3QgPT0gTlVMTCkKLSAJCXsK LSAJCVNTTGVycihTU0xfRl9TU0xfQ1JFQVRFX0NJUEhFUl9MSVNULEVSUl9SX01BTExPQ19GQUlM VVJFKTsKLS0JCXJldHVybihOVUxMKTsJLyogRmFpbHVyZSAqLwotKwkJZ290byBlbmQ7Ci0gCQl9 Ci0gCi0gCXNzbF9jaXBoZXJfY29sbGVjdF9jaXBoZXJzKHNzbF9tZXRob2QsIG51bV9vZl9jaXBo ZXJzLAotQEAgLTE0MzEsOCArMTQ5Miw3IEBAIFNUQUNLX09GKFNTTF9DSVBIRVIpICpzc2xfY3Jl YXRlX2NpcGhlcl8KLSAJICogaW4gZm9yY2Ugd2l0aGluIGVhY2ggY2xhc3MgKi8KLSAJaWYgKCFz c2xfY2lwaGVyX3N0cmVuZ3RoX3NvcnQoJmhlYWQsICZ0YWlsKSkKLSAJCXsKLS0JCU9QRU5TU0xf ZnJlZShjb19saXN0KTsKLS0JCXJldHVybiBOVUxMOwotKwkJZ290byBlbmQ7Ci0gCQl9Ci0gCi0g CS8qIE5vdyBkaXNhYmxlIGV2ZXJ5dGhpbmcgKG1haW50YWluaW5nIHRoZSBvcmRlcmluZyEpICov Ci1AQCAtMTQ1Miw5ICsxNTEyLDggQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9jcmVhdGVf Y2lwaGVyXwotIAljYV9saXN0ID0gT1BFTlNTTF9tYWxsb2Moc2l6ZW9mKFNTTF9DSVBIRVIgKikg KiBudW1fb2ZfYWxpYXNfbWF4KTsKLSAJaWYgKGNhX2xpc3QgPT0gTlVMTCkKLSAJCXsKLS0JCU9Q RU5TU0xfZnJlZShjb19saXN0KTsKLSAJCVNTTGVycihTU0xfRl9TU0xfQ1JFQVRFX0NJUEhFUl9M SVNULEVSUl9SX01BTExPQ19GQUlMVVJFKTsKLS0JCXJldHVybihOVUxMKTsJLyogRmFpbHVyZSAq LwotKwkJZ290byBlbmQ7Ci0gCQl9Ci0gCXNzbF9jaXBoZXJfY29sbGVjdF9hbGlhc2VzKGNhX2xp c3QsIG51bV9vZl9ncm91cF9hbGlhc2VzLAotIAkgICAgICAgICAgICAgICAgICAgICAgICAgICBk aXNhYmxlZF9ta2V5LCBkaXNhYmxlZF9hdXRoLCBkaXNhYmxlZF9lbmMsCi1AQCAtMTQ4Miw4ICsx NTQxLDcgQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyXwotIAotIAlp ZiAoIW9rKQotIAkJewkvKiBSdWxlIHByb2Nlc3NpbmcgZmFpbHVyZSAqLwotLQkJT1BFTlNTTF9m cmVlKGNvX2xpc3QpOwotLQkJcmV0dXJuKE5VTEwpOwotKwkJZ290byBlbmQ7Ci0gCQl9Ci0gCQot IAkvKgotQEAgLTE0OTIsOCArMTU1MCw3IEBAIFNUQUNLX09GKFNTTF9DSVBIRVIpICpzc2xfY3Jl YXRlX2NpcGhlcl8KLSAJICovCi0gCWlmICgoY2lwaGVyc3RhY2sgPSBza19TU0xfQ0lQSEVSX25l d19udWxsKCkpID09IE5VTEwpCi0gCQl7Ci0tCQlPUEVOU1NMX2ZyZWUoY29fbGlzdCk7Ci0tCQly ZXR1cm4oTlVMTCk7Ci0rCQlnb3RvIGVuZDsKLSAJCX0KLSAKLSAJLyoKLUBAIC0xNTE0LDEzICsx NTcxLDEzIEBAIFNUQUNLX09GKFNTTF9DSVBIRVIpICpzc2xfY3JlYXRlX2NpcGhlcl8KLSAjZW5k aWYKLSAJCQl9Ci0gCQl9Ci0tCU9QRU5TU0xfZnJlZShjb19saXN0KTsJLyogTm90IG5lZWRlZCBh bnkgbG9uZ2VyICovCi0gCi0gCXRtcF9jaXBoZXJfbGlzdCA9IHNrX1NTTF9DSVBIRVJfZHVwKGNp cGhlcnN0YWNrKTsKLSAJaWYgKHRtcF9jaXBoZXJfbGlzdCA9PSBOVUxMKQotIAkJewotIAkJc2tf U1NMX0NJUEhFUl9mcmVlKGNpcGhlcnN0YWNrKTsKLS0JCXJldHVybiBOVUxMOwotKwkJY2lwaGVy c3RhY2sgPSBOVUxMOwotKwkJZ290byBlbmQ7Ci0gCQl9Ci0gCWlmICgqY2lwaGVyX2xpc3QgIT0g TlVMTCkKLSAJCXNrX1NTTF9DSVBIRVJfZnJlZSgqY2lwaGVyX2xpc3QpOwotQEAgLTE1MzEsNiAr MTU4OCwxMiBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCi0gCSh2 b2lkKXNrX1NTTF9DSVBIRVJfc2V0X2NtcF9mdW5jKCpjaXBoZXJfbGlzdF9ieV9pZCxzc2xfY2lw aGVyX3B0cl9pZF9jbXApOwotIAotIAlza19TU0xfQ0lQSEVSX3NvcnQoKmNpcGhlcl9saXN0X2J5 X2lkKTsKLSsKLStlbmQ6Ci0rCU9QRU5TU0xfZnJlZShjb19saXN0KTsKLSsjaWZkZWYgU1lTVEVN X0NJUEhFUlNfRklMRQotKwlPUEVOU1NMX2ZyZWUobmV3X3J1bGVzKTsKLSsjZW5kaWYKLSAJcmV0 dXJuKGNpcGhlcnN0YWNrKTsKLSAJfQotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWgvc3NsL3Nz bC5oLnN5c3RlbSBvcGVuc3NsLTEuMC4xaC9zc2wvc3NsLmgKLS0tLSBvcGVuc3NsLTEuMC4xaC9z c2wvc3NsLmguc3lzdGVtCTIwMTQtMDYtMDUgMTQ6NDc6MzcuMDAwMDAwMDAwICswMjAwCi0rKysg b3BlbnNzbC0xLjAuMWgvc3NsL3NzbC5oCTIwMTQtMDYtMTEgMTQ6MDg6MzUuMjQzNDYxNDQ3ICsw MjAwCi1AQCAtMzM4LDYgKzMzOCwxMSBAQCBleHRlcm4gIkMiIHsKLSAgKiAoVGhlIGxhdHRlciBh cmUgbm90IGFjdHVhbGx5IGVuYWJsZWQgYnkgQUxMLCBidXQgIkFMTDpSU0EiIHdvdWxkIGVuYWJs ZQotICAqIHNvbWUgb2YgdGhlbS4pCi0gICovCi0rI2lmZGVmIFNZU1RFTV9DSVBIRVJTX0ZJTEUK LSsjZGVmaW5lIFNTTF9TWVNURU1fREVGQVVMVF9DSVBIRVJfTElTVCAiUFJPRklMRT1TWVNURU0i Ci0rI2Vsc2UKLSsjZGVmaW5lIFNTTF9TWVNURU1fREVGQVVMVF9DSVBIRVJfTElTVCBTU0xfREVG QVVMVF9DSVBIRVJfTElTVAotKyNlbmRpZgotIAotIC8qIFVzZWQgaW4gU1NMX3NldF9zaHV0ZG93 bigpL1NTTF9nZXRfc2h1dGRvd24oKTsgKi8KLSAjZGVmaW5lIFNTTF9TRU5UX1NIVVRET1dOCTEK LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFoL3NzbC9zc2xfbGliLmMuc3lzdGVtIG9wZW5zc2wtMS4w LjFoL3NzbC9zc2xfbGliLmMKLS0tLSBvcGVuc3NsLTEuMC4xaC9zc2wvc3NsX2xpYi5jLnN5c3Rl bQkyMDE0LTA2LTA1IDExOjQ0OjMzLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFo L3NzbC9zc2xfbGliLmMJMjAxNC0wNi0xMSAxMzo1OTo0MC42OTY1NzgxMzkgKzAyMDAKLUBAIC0y NjMsNyArMjYzLDcgQEAgaW50IFNTTF9DVFhfc2V0X3NzbF92ZXJzaW9uKFNTTF9DVFggKmN0eAot IAotIAlzaz1zc2xfY3JlYXRlX2NpcGhlcl9saXN0KGN0eC0+bWV0aG9kLCYoY3R4LT5jaXBoZXJf bGlzdCksCi0gCQkmKGN0eC0+Y2lwaGVyX2xpc3RfYnlfaWQpLAotLQkJbWV0aC0+dmVyc2lvbiA9 PSBTU0wyX1ZFUlNJT04gPyAiU1NMdjIiIDogU1NMX0RFRkFVTFRfQ0lQSEVSX0xJU1QpOwotKwkJ bWV0aC0+dmVyc2lvbiA9PSBTU0wyX1ZFUlNJT04gPyAiU1NMdjIiIDogU1NMX1NZU1RFTV9ERUZB VUxUX0NJUEhFUl9MSVNUKTsKLSAJaWYgKChzayA9PSBOVUxMKSB8fCAoc2tfU1NMX0NJUEhFUl9u dW0oc2spIDw9IDApKQotIAkJewotIAkJU1NMZXJyKFNTTF9GX1NTTF9DVFhfU0VUX1NTTF9WRVJT SU9OLFNTTF9SX1NTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTKTsKLUBAIC0xNzY3LDcgKzE3Njcs NyBAQCBTU0xfQ1RYICpTU0xfQ1RYX25ldyhjb25zdCBTU0xfTUVUSE9EICptCi0gCi0gCXNzbF9j cmVhdGVfY2lwaGVyX2xpc3QocmV0LT5tZXRob2QsCi0gCQkmcmV0LT5jaXBoZXJfbGlzdCwmcmV0 LT5jaXBoZXJfbGlzdF9ieV9pZCwKLS0JCW1ldGgtPnZlcnNpb24gPT0gU1NMMl9WRVJTSU9OID8g IlNTTHYyIiA6IFNTTF9ERUZBVUxUX0NJUEhFUl9MSVNUKTsKLSsJCW1ldGgtPnZlcnNpb24gPT0g U1NMMl9WRVJTSU9OID8gIlNTTHYyIiA6IFNTTF9TWVNURU1fREVGQVVMVF9DSVBIRVJfTElTVCk7 Ci0gCWlmIChyZXQtPmNpcGhlcl9saXN0ID09IE5VTEwKLSAJICAgIHx8IHNrX1NTTF9DSVBIRVJf bnVtKHJldC0+Y2lwaGVyX2xpc3QpIDw9IDApCi0gCQl7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0x LjAuMWktbWFuZml4LnBhdGNoIGIvb3BlbnNzbC0xLjAuMWktbWFuZml4LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmY4YmU3Li4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4w LjFpLW1hbmZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLWRpZmYgLXVw IG9wZW5zc2wtMS4wLjFpL2RvYy9hcHBzL2VjLnBvZC5tYW5maXggb3BlbnNzbC0xLjAuMWkvZG9j L2FwcHMvZWMucG9kCi0tLS0gb3BlbnNzbC0xLjAuMWkvZG9jL2FwcHMvZWMucG9kLm1hbmZpeAky MDE0LTA3LTIyIDIxOjQxOjIzLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFpL2Rv Yy9hcHBzL2VjLnBvZAkyMDE0LTA4LTA3IDExOjIxOjU3LjI1ODg4Nzc0MSArMDIwMAotQEAgLTkz LDEwICs5Myw2IEBAIHByaW50cyBvdXQgdGhlIHB1YmxpYywgcHJpdmF0ZSBrZXkgY29tcG8KLSAK LSB0aGlzIG9wdGlvbiBwcmV2ZW50cyBvdXRwdXQgb2YgdGhlIGVuY29kZWQgdmVyc2lvbiBvZiB0 aGUga2V5LgotIAotLT1pdGVtIEI8LW1vZHVsdXM+Ci0tCi0tdGhpcyBvcHRpb24gcHJpbnRzIG91 dCB0aGUgdmFsdWUgb2YgdGhlIHB1YmxpYyBrZXkgY29tcG9uZW50IG9mIHRoZSBrZXkuCi0tCi0g PWl0ZW0gQjwtcHViaW4+Ci0gCi0gYnkgZGVmYXVsdCBhIHByaXZhdGUga2V5IGlzIHJlYWQgZnJv bSB0aGUgaW5wdXQgZmlsZTogd2l0aCB0aGlzIG9wdGlvbiBhCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4xaS9kb2MvYXBwcy9vcGVuc3NsLnBvZC5tYW5maXggb3BlbnNzbC0xLjAuMWkvZG9jL2FwcHMv b3BlbnNzbC5wb2QKLS0tLSBvcGVuc3NsLTEuMC4xaS9kb2MvYXBwcy9vcGVuc3NsLnBvZC5tYW5m aXgJMjAxNC0wNy0yMiAyMTo0MzoxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4x aS9kb2MvYXBwcy9vcGVuc3NsLnBvZAkyMDE0LTA4LTA3IDExOjIxOjU3LjI1OTg4Nzc0NiArMDIw MAotQEAgLTE2Myw3ICsxNjMsNyBAQCBDcmVhdGUgb3IgZXhhbWluZSBhIG5ldHNjYXBlIGNlcnRp ZmljYXRlCi0gCi0gT25saW5lIENlcnRpZmljYXRlIFN0YXR1cyBQcm90b2NvbCB1dGlsaXR5Lgot IAotLT1pdGVtIEw8QjxwYXNzd2Q+fHBhc3N3ZCgxKT4KLSs9aXRlbSBMPEI8cGFzc3dkPnxzc2xw YXNzd2QoMSk+Ci0gCi0gR2VuZXJhdGlvbiBvZiBoYXNoZWQgcGFzc3dvcmRzLgotIAotQEAgLTE4 Nyw3ICsxODcsNyBAQCBQdWJsaWMga2V5IGFsZ29yaXRobSBwYXJhbWV0ZXIgbWFuYWdlbWVuCi0g Ci0gUHVibGljIGtleSBhbGdvcml0aG0gY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb24gdXRpbGl0eS4K LSAKLS09aXRlbSBMPEI8cmFuZD58cmFuZCgxKT4KLSs9aXRlbSBMPEI8cmFuZD58c3NscmFuZCgx KT4KLSAKLSBHZW5lcmF0ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgotIAotQEAgLTQwMSw5ICs0MDEs OSBAQCBMPGNybCgxKXxjcmwoMSk+LCBMPGNybDJwa2NzNygxKXxjcmwycGtjCi0gTDxkaHBhcmFt KDEpfGRocGFyYW0oMSk+LCBMPGRzYSgxKXxkc2EoMSk+LCBMPGRzYXBhcmFtKDEpfGRzYXBhcmFt KDEpPiwKLSBMPGVuYygxKXxlbmMoMSk+LCBMPGdlbmRzYSgxKXxnZW5kc2EoMSk+LCBMPGdlbnBr ZXkoMSl8Z2VucGtleSgxKT4sCi0gTDxnZW5yc2EoMSl8Z2VucnNhKDEpPiwgTDxuc2VxKDEpfG5z ZXEoMSk+LCBMPG9wZW5zc2woMSl8b3BlbnNzbCgxKT4sCi0tTDxwYXNzd2QoMSl8cGFzc3dkKDEp PiwKLStMPHNzbHBhc3N3ZCgxKXxzc2xwYXNzd2QoMSk+LAotIEw8cGtjczEyKDEpfHBrY3MxMigx KT4sIEw8cGtjczcoMSl8cGtjczcoMSk+LCBMPHBrY3M4KDEpfHBrY3M4KDEpPiwKLS1MPHJhbmQo MSl8cmFuZCgxKT4sIEw8cmVxKDEpfHJlcSgxKT4sIEw8cnNhKDEpfHJzYSgxKT4sCi0rTDxzc2xy YW5kKDEpfHNzbHJhbmQoMSk+LCBMPHJlcSgxKXxyZXEoMSk+LCBMPHJzYSgxKXxyc2EoMSk+LAot IEw8cnNhdXRsKDEpfHJzYXV0bCgxKT4sIEw8c19jbGllbnQoMSl8c19jbGllbnQoMSk+LAotIEw8 c19zZXJ2ZXIoMSl8c19zZXJ2ZXIoMSk+LCBMPHNfdGltZSgxKXxzX3RpbWUoMSk+LAotIEw8c21p bWUoMSl8c21pbWUoMSk+LCBMPHNwa2FjKDEpfHNwa2FjKDEpPiwKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjFpL2RvYy9hcHBzL3NfY2xpZW50LnBvZC5tYW5maXggb3BlbnNzbC0xLjAuMWkvZG9jL2Fw cHMvc19jbGllbnQucG9kCi0tLS0gb3BlbnNzbC0xLjAuMWkvZG9jL2FwcHMvc19jbGllbnQucG9k Lm1hbmZpeAkyMDE0LTA4LTA2IDIzOjEwOjU2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wt MS4wLjFpL2RvYy9hcHBzL3NfY2xpZW50LnBvZAkyMDE0LTA4LTA3IDExOjI0OjI4LjczNjYwNDQ0 MyArMDIwMAotQEAgLTM0LDkgKzM0LDE0IEBAIEI8b3BlbnNzbD4gQjxzX2NsaWVudD4KLSBbQjwt c3NsMj5dCi0gW0I8LXNzbDM+XQotIFtCPC10bHMxPl0KLStbQjwtdGxzMV8xPl0KLStbQjwtdGxz MV8yPl0KLStbQjwtZHRsczE+XQotIFtCPC1ub19zc2wyPl0KLSBbQjwtbm9fc3NsMz5dCi0gW0I8 LW5vX3RsczE+XQotK1tCPC1ub190bHMxXzE+XQotK1tCPC1ub190bHMxXzI+XQotIFtCPC1idWdz Pl0KLSBbQjwtY2lwaGVyIGNpcGhlcmxpc3Q+XQotIFtCPC1zZXJ2ZXJwcmVmPl0KLUBAIC0xOTYs NyArMjAxLDcgQEAgVXNlIHRoZSBQU0sga2V5IEI8a2V5PiB3aGVuIHVzaW5nIGEgUFNLCi0gZ2l2 ZW4gYXMgYSBoZXhhZGVjaW1hbCBudW1iZXIgd2l0aG91dCBsZWFkaW5nIDB4LCBmb3IgZXhhbXBs ZSAtcHNrCi0gMWEyYjNjNGQuCi0gCi0tPWl0ZW0gQjwtc3NsMj4sIEI8LXNzbDM+LCBCPC10bHMx PiwgQjwtbm9fc3NsMj4sIEI8LW5vX3NzbDM+LCBCPC1ub190bHMxPgotKz1pdGVtIEI8LXNzbDI+ LCBCPC1zc2wzPiwgQjwtdGxzMT4sIEI8LXRsczFfMT4sIEI8LXRsczFfMj4sIEI8LWR0bHMxPiwg Qjwtbm9fc3NsMj4sIEI8LW5vX3NzbDM+LCBCPC1ub190bHMxPiwgQjwtbm9fdGxzMV8xPiwgQjwt bm9fdGxzMV8yPgotIAotIHRoZXNlIG9wdGlvbnMgZGlzYWJsZSB0aGUgdXNlIG9mIGNlcnRhaW4g U1NMIG9yIFRMUyBwcm90b2NvbHMuIEJ5IGRlZmF1bHQKLSB0aGUgaW5pdGlhbCBoYW5kc2hha2Ug dXNlcyBhIG1ldGhvZCB3aGljaCBzaG91bGQgYmUgY29tcGF0aWJsZSB3aXRoIGFsbAotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMWkvZG9jL2FwcHMvc19zZXJ2ZXIucG9kLm1hbmZpeCBvcGVuc3NsLTEu MC4xaS9kb2MvYXBwcy9zX3NlcnZlci5wb2QKLS0tLSBvcGVuc3NsLTEuMC4xaS9kb2MvYXBwcy9z X3NlcnZlci5wb2QubWFuZml4CTIwMTQtMDgtMDYgMjM6MTA6NTYuMDAwMDAwMDAwICswMjAwCi0r Kysgb3BlbnNzbC0xLjAuMWkvZG9jL2FwcHMvc19zZXJ2ZXIucG9kCTIwMTQtMDgtMDcgMTE6MjE6 NTcuMjU5ODg3NzQ2ICswMjAwCi1AQCAtMjE2LDcgKzIxNiw3IEBAIFVzZSB0aGUgUFNLIGtleSBC PGtleT4gd2hlbiB1c2luZyBhIFBTSwotIGdpdmVuIGFzIGEgaGV4YWRlY2ltYWwgbnVtYmVyIHdp dGhvdXQgbGVhZGluZyAweCwgZm9yIGV4YW1wbGUgLXBzawotIDFhMmIzYzRkLgotIAotLT1pdGVt IEI8LXNzbDI+LCBCPC1zc2wzPiwgQjwtdGxzMT4sIEI8LW5vX3NzbDI+LCBCPC1ub19zc2wzPiwg Qjwtbm9fdGxzMT4KLSs9aXRlbSBCPC1zc2wyPiwgQjwtc3NsMz4sIEI8LXRsczE+LCBCPC10bHMx XzE+LCBCPC10bHMxXzI+LCBCPC1kdGxzMT4sIEI8LW5vX3NzbDI+LCBCPC1ub19zc2wzPiwgQjwt bm9fdGxzMT4sIEI8LW5vX3RsczFfMT4sIEI8LW5vX3RsczFfMj4KLSAKLSB0aGVzZSBvcHRpb25z IGRpc2FibGUgdGhlIHVzZSBvZiBjZXJ0YWluIFNTTCBvciBUTFMgcHJvdG9jb2xzLiBCeSBkZWZh dWx0Ci0gdGhlIGluaXRpYWwgaGFuZHNoYWtlIHVzZXMgYSBtZXRob2Qgd2hpY2ggc2hvdWxkIGJl IGNvbXBhdGlibGUgd2l0aCBhbGwKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xaS1uZXctZmlw cy1yZXFzLnBhdGNoIGIvb3BlbnNzbC0xLjAuMWktbmV3LWZpcHMtcmVxcy5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBkMTZmOC4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEu MC4xaS1uZXctZmlwcy1yZXFzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM5MSArMCwwIEBA Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYm4vYm5fcmFuZC5jLmZpcHMtcmVxcyBv cGVuc3NsLTEuMC4xaS9jcnlwdG8vYm4vYm5fcmFuZC5jCi0tLS0gb3BlbnNzbC0xLjAuMWkvY3J5 cHRvL2JuL2JuX3JhbmQuYy5maXBzLXJlcXMJMjAxNC0wNy0yMiAyMTo0MzoxMS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYm4vYm5fcmFuZC5jCTIwMTQtMDgtMTMg MTk6NTg6MDYuODE4ODMyNTc3ICswMjAwCi1AQCAtMTM4LDkgKzEzOCwxMiBAQCBzdGF0aWMgaW50 IGJucmFuZChpbnQgcHNldWRvcmFuZCwgQklHTlVNCi0gCQlnb3RvIGVycjsKLSAJCX0KLSAKLS0J LyogbWFrZSBhIHJhbmRvbSBudW1iZXIgYW5kIHNldCB0aGUgdG9wIGFuZCBib3R0b20gYml0cyAq LwotLQl0aW1lKCZ0aW0pOwotLQlSQU5EX2FkZCgmdGltLHNpemVvZih0aW0pLDAuMCk7Ci0rCWlm ICghRklQU19tb2RlKCkpIC8qIGluIEZJUFMgbW9kZSB0aGUgUk5HIGlzIGFsd2F5cyBwcm9wZXJs eSBzZWVkZWQgb3IgdGhlIG1vZHVsZSBmYWlscyAqLwotKwkJewotKwkJLyogbWFrZSBhIHJhbmRv bSBudW1iZXIgYW5kIHNldCB0aGUgdG9wIGFuZCBib3R0b20gYml0cyAqLwotKwkJdGltZSgmdGlt KTsKLSsJCVJBTkRfYWRkKCZ0aW0sc2l6ZW9mKHRpbSksMC4wKTsKLSsJCX0KLSAKLSAJaWYgKHBz ZXVkb3JhbmQpCi0gCQl7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZGgvZGhfZ2Vu LmMuZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9kaC9kaF9nZW4uYwotLS0tIG9wZW5z c2wtMS4wLjFpL2NyeXB0by9kaC9kaF9nZW4uYy5maXBzLXJlcXMJMjAxNC0wOC0xMyAxOTo1ODow Ni43NjU4MzEzNTYgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZGgvZGhfZ2VuLmMJ MjAxNC0wOC0xMyAxOTo1ODowNi44MTg4MzI1NzcgKzAyMDAKLUBAIC0xMjUsNyArMTI1LDcgQEAg c3RhdGljIGludCBkaF9idWlsdGluX2dlbnBhcmFtcyhESCAqcmV0LAotIAkJcmV0dXJuIDA7Ci0g CQl9Ci0gCi0tCWlmIChGSVBTX21vZGUoKSAmJiAocHJpbWVfbGVuIDwgT1BFTlNTTF9ESF9GSVBT X01JTl9NT0RVTFVTX0JJVFMpKQotKwlpZiAoRklQU19tb2RlKCkgJiYgKHByaW1lX2xlbiA8IE9Q RU5TU0xfREhfRklQU19NSU5fTU9EVUxVU19CSVRTX0dFTikpCi0gCQl7Ci0gCQlESGVycihESF9G X0RIX0JVSUxUSU5fR0VOUEFSQU1TLCBESF9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0gCQlnb3Rv IGVycjsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9kaC9kaC5oLmZpcHMtcmVxcyBv cGVuc3NsLTEuMC4xaS9jcnlwdG8vZGgvZGguaAotLS0tIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9k aC9kaC5oLmZpcHMtcmVxcwkyMDE0LTA4LTEzIDE5OjU4OjA2Ljc2NTgzMTM1NiArMDIwMAotKysr IG9wZW5zc2wtMS4wLjFpL2NyeXB0by9kaC9kaC5oCTIwMTQtMDgtMTMgMTk6NTg6MDYuODE4ODMy NTc3ICswMjAwCi1AQCAtNzgsNiArNzgsNyBAQAotICNlbmRpZgotIAotICNkZWZpbmUgT1BFTlNT TF9ESF9GSVBTX01JTl9NT0RVTFVTX0JJVFMgMTAyNAotKyNkZWZpbmUgT1BFTlNTTF9ESF9GSVBT X01JTl9NT0RVTFVTX0JJVFNfR0VOIDIwNDgKLSAKLSAjZGVmaW5lIERIX0ZMQUdfQ0FDSEVfTU9O VF9QICAgICAweDAxCi0gI2RlZmluZSBESF9GTEFHX05PX0VYUF9DT05TVFRJTUUgMHgwMiAvKiBu ZXcgd2l0aCAwLjkuN2g7IHRoZSBidWlsdC1pbiBESAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkv Y3J5cHRvL2RoL2RoX2NoZWNrLmMuZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9kaC9k aF9jaGVjay5jCi0tLS0gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2RoL2RoX2NoZWNrLmMuZmlwcy1y ZXFzCTIwMTQtMDgtMDYgMjM6MTA6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MWkvY3J5cHRvL2RoL2RoX2NoZWNrLmMJMjAxNC0wOC0xMyAxOTo1ODowNi44MTg4MzI1NzcgKzAy MDAKLUBAIC0xMzQsNyArMTM0LDMzIEBAIGludCBESF9jaGVja19wdWJfa2V5KGNvbnN0IERIICpk aCwgY29uc3QKLSAJQk5fc3ViX3dvcmQocSwxKTsKLSAJaWYgKEJOX2NtcChwdWJfa2V5LHEpPj0w KQotIAkJKnJldHw9REhfQ0hFQ0tfUFVCS0VZX1RPT19MQVJHRTsKLSsjaWZkZWYgT1BFTlNTTF9G SVBTCi0rCWlmIChGSVBTX21vZGUoKSAmJiBkaC0+cSAhPSBOVUxMKQotKwkJewotKwkJQk5fQ1RY ICpjdHggPSBOVUxMOwotIAotKwkJY3R4ID0gQk5fQ1RYX25ldygpOwotKwkJaWYgKGN0eCA9PSBO VUxMKQotKwkJCWdvdG8gZXJyOwotKwotKwkJaWYgKEJOX21vZF9leHBfbW9udChxLCBwdWJfa2V5 LCBkaC0+cSwgZGgtPnAsIGN0eCwgTlVMTCkgPD0gMCkKLSsJCQl7Ci0rCQkJQk5fQ1RYX2ZyZWUo Y3R4KTsKLSsJCQlnb3RvIGVycjsKLSsJCQl9Ci0rCQlpZiAoIUJOX2lzX29uZShxKSkKLSsJCQl7 Ci0rCQkJLyogaXQgd291bGQgYmUgbW9yZSBjb3JyZWN0IHRvIGFkZCBuZXcgcmV0dXJuIGZsYWcg Ci0rCQkJICogZm9yIHRoaXMgdGVzdCwgYnV0IHdlIGRvIG5vdCB3YW50IHRvIGRvIGl0Ci0rCQkJ ICogc28ganVzdCBlcnJvciBvdXQKLSsJCQkgKi8KLSsJCQlCTl9DVFhfZnJlZShjdHgpOwotKwkJ CWdvdG8gZXJyOwotKwkJCX0KLSsJCQotKwkJQk5fQ1RYX2ZyZWUoY3R4KTsKLSsJCX0KLSsjZW5k aWYKLSAJb2sgPSAxOwotIGVycjoKLSAJaWYgKHEgIT0gTlVMTCkgQk5fZnJlZShxKTsKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9kc2EvZHNhX2dlbi5jLmZpcHMtcmVxcyBvcGVuc3Ns LTEuMC4xaS9jcnlwdG8vZHNhL2RzYV9nZW4uYwotLS0tIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9k c2EvZHNhX2dlbi5jLmZpcHMtcmVxcwkyMDE0LTA4LTEzIDE5OjU4OjA2Ljc2NjgzMTM4MCArMDIw MAotKysrIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9kc2EvZHNhX2dlbi5jCTIwMTQtMDgtMTMgMTk6 NTg6MDYuODE4ODMyNTc3ICswMjAwCi1AQCAtMTU5LDcgKzE1OSw3IEBAIGludCBkc2FfYnVpbHRp bl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV8KLSAJICAgIH0KLSAKLSAJaWYgKEZJUFNfbW9kdWxl X21vZGUoKSAmJgotLQkgICAgKGJpdHMgIT0gMTAyNCB8fCBxYml0cyAhPSAxNjApICYmCi0rCSAg ICAoZ2V0ZW52KCJPUEVOU1NMX0VORk9SQ0VfTU9EVUxVU19CSVRTIikgfHwgYml0cyAhPSAxMDI0 IHx8IHFiaXRzICE9IDE2MCkgJiYKLSAJICAgIChiaXRzICE9IDIwNDggfHwgcWJpdHMgIT0gMjI0 KSAmJgotIAkgICAgKGJpdHMgIT0gMjA0OCB8fCBxYml0cyAhPSAyNTYpICYmCi0gCSAgICAoYml0 cyAhPSAzMDcyIHx8IHFiaXRzICE9IDI1NikpCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlw dG8vZHNhL2RzYS5oLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZHNhL2RzYS5oCi0t LS0gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2RzYS9kc2EuaC5maXBzLXJlcXMJMjAxNC0wOC0xMyAx OTo1ODowNi43NjY4MzEzODAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZHNhL2Rz YS5oCTIwMTQtMDgtMTMgMTk6NTg6MDYuODE4ODMyNTc3ICswMjAwCi1AQCAtODksNiArODksNyBA QAotICNlbmRpZgotIAotICNkZWZpbmUgT1BFTlNTTF9EU0FfRklQU19NSU5fTU9EVUxVU19CSVRT IDEwMjQKLSsjZGVmaW5lIE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNfQklUU19HRU4gKGdl dGVudigiT1BFTlNTTF9FTkZPUkNFX01PRFVMVVNfQklUUyIpPzIwNDg6MTAyNCkKLSAKLSAjZGVm aW5lIERTQV9GTEFHX0NBQ0hFX01PTlRfUAkweDAxCi0gI2RlZmluZSBEU0FfRkxBR19OT19FWFBf Q09OU1RUSU1FICAgICAgIDB4MDIgLyogbmV3IHdpdGggMC45LjdoOyB0aGUgYnVpbHQtaW4gRFNB Ci1AQCAtMjU0LDkgKzI1NSw5IEBAIGludAlEU0FwYXJhbXNfcHJpbnRfZnAoRklMRSAqZnAsIGNv bnN0IEQKLSBpbnQJRFNBX3ByaW50X2ZwKEZJTEUgKmJwLCBjb25zdCBEU0EgKngsIGludCBvZmYp OwotICNlbmRpZgotIAotLSNkZWZpbmUgRFNTX3ByaW1lX2NoZWNrcyA1MAotLS8qIFByaW1hbGl0 eSB0ZXN0IGFjY29yZGluZyB0byBGSVBTIFBVQiAxODZbLTFdLCBBcHBlbmRpeCAyLjE6Ci0tICog NTAgcm91bmRzIG9mIFJhYmluLU1pbGxlciAqLwotKyNkZWZpbmUgRFNTX3ByaW1lX2NoZWNrcyA2 NAotKy8qIFByaW1hbGl0eSB0ZXN0IGFjY29yZGluZyB0byBGSVBTIFBVQiAxODZbLTRdLCBBcHBl bmRpeCAyLjE6Ci0rICogNjQgcm91bmRzIG9mIFJhYmluLU1pbGxlciAqLwotICNkZWZpbmUgRFNB X2lzX3ByaW1lKG4sIGNhbGxiYWNrLCBjYl9hcmcpIFwKLSAJQk5faXNfcHJpbWUobiwgRFNTX3By aW1lX2NoZWNrcywgY2FsbGJhY2ssIE5VTEwsIGNiX2FyZykKLSAKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjFpL2NyeXB0by9kc2EvZHNhX2tleS5jLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4xaS9jcnlw dG8vZHNhL2RzYV9rZXkuYwotLS0tIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9kc2EvZHNhX2tleS5j LmZpcHMtcmVxcwkyMDE0LTA4LTEzIDE5OjU4OjA2LjgxNjgzMjUzMSArMDIwMAotKysrIG9wZW5z c2wtMS4wLjFpL2NyeXB0by9kc2EvZHNhX2tleS5jCTIwMTQtMDgtMTMgMTk6NTg6MDYuODE4ODMy NTc3ICswMjAwCi1AQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyBpbnQgZHNhX2J1aWx0aW5fa2V5 Z2VuKERTQSAqZHNhKQotIAotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLSAJaWYgKEZJUFNfbW9kZSgp ICYmICEoZHNhLT5mbGFncyAmIERTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQotLQkJJiYgKEJOX251 bV9iaXRzKGRzYS0+cCkgPCBPUEVOU1NMX0RTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMpKQotKwkJ JiYgKEJOX251bV9iaXRzKGRzYS0+cCkgPCBPUEVOU1NMX0RTQV9GSVBTX01JTl9NT0RVTFVTX0JJ VFNfR0VOKSkKLSAJCXsKLSAJCURTQWVycihEU0FfRl9EU0FfQlVJTFRJTl9LRVlHRU4sIERTQV9S X0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0gCQlnb3RvIGVycjsKLWRpZmYgLXVwIG9wZW5zc2wtMS4w LjFpL2NyeXB0by9maXBzL2ZpcHMuYy5maXBzLXJlcXMgb3BlbnNzbC0xLjAuMWUvY3J5cHRvL2Zp cHMvZmlwcy5jCi0tLS0gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2ZpcHMvZmlwcy5jLmZpcHMtcmVx cwkyMDE0LTA5LTI0IDE2OjM4OjQzLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFp L2NyeXB0by9maXBzL2ZpcHMuYwkyMDE0LTA5LTI0IDE2OjM3OjI4LjAwMDAwMDAwMCArMDIwMAot QEAgLTQyNywyNyArNDI3LDI1IEBAIGludCBGSVBTX21vZHVsZV9tb2RlX3NldChpbnQgb25vZmYs IGNvbnMKLSAJICAgIHJldCA9IDA7Ci0gCSAgICBnb3RvIGVuZDsKLSAJICAgIH0KLS0JT1BFTlNT TF9pYTMyY2FwX1BbMF0gfD0gKDE8PDI4KTsJLyogc2V0ICJzaGFyZWQgY2FjaGUiCSovCi0tCU9Q RU5TU0xfaWEzMmNhcF9QWzFdICY9IH4oMTw8KDYwLTMyKSk7CS8qIGNsZWFyIEFWWAkJKi8KLSAJ fQotICNlbmRpZgotIAotLQlpZighdmVyaWZ5X2NoZWNrc3VtcygpKQotKwlpZighRklQU19zZWxm dGVzdCgpKQotIAkgICAgewotLQkgICAgRklQU2VycihGSVBTX0ZfRklQU19NT0RVTEVfTU9ERV9T RVQsRklQU19SX0ZJTkdFUlBSSU5UX0RPRVNfTk9UX01BVENIKTsKLSAJICAgIGZpcHNfc2VsZnRl c3RfZmFpbCA9IDE7Ci0gCSAgICByZXQgPSAwOwotIAkgICAgZ290byBlbmQ7Ci0gCSAgICB9Ci0g Ci0tCWlmKEZJUFNfc2VsZnRlc3QoKSkKLS0JICAgIGZpcHNfc2V0X21vZGUob25vZmYpOwotLQll bHNlCi0rCWlmKCF2ZXJpZnlfY2hlY2tzdW1zKCkpCi0gCSAgICB7Ci0rCSAgICBGSVBTZXJyKEZJ UFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCxGSVBTX1JfRklOR0VSUFJJTlRfRE9FU19OT1RfTUFU Q0gpOwotIAkgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKLSAJICAgIHJldCA9IDA7Ci0gCSAg ICBnb3RvIGVuZDsKLSAJICAgIH0KLSsKLSsJZmlwc19zZXRfbW9kZShvbm9mZik7Ci0gCXJldCA9 IDE7Ci0gCWdvdG8gZW5kOwotIAl9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZmlw cy9maXBzX2RoX3NlbGZ0ZXN0LmMuZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9maXBz L2ZpcHNfZGhfc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9maXBzL2ZpcHNf ZGhfc2VsZnRlc3QuYy5maXBzLXJlcXMJMjAxNC0wOC0xMyAxOTo1ODowNi44MTk4MzI2MDAgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZmlwcy9maXBzX2RoX3NlbGZ0ZXN0LmMJMjAx NC0wOC0xMyAxOTo1ODowNi44MTk4MzI2MDAgKzAyMDAKLUBAIC0wLDAgKzEsMTYyIEBACi0rLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4g IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICogQ29weXJpZ2h0IChjKSAyMDEzIFJlZCBIYXQsIElu Yy4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoK LSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwg YWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMK LSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVu dDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0 aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0 LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVu U1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0r ICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3 YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVu IHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wu b3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5 IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFy IGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24g b2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBh bnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tu b3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkK LSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws Ci0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsg Ki8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZGguaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0r I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSsjaW5jbHVkZSAiZmlwc19sb2NsLmgiCi0rCi0rI2lmZGVm IE9QRU5TU0xfRklQUwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRoX3Rlc3RfMjA0 OF9wW10gPSB7Ci0rCTB4QUUsMHhFQywweEVFLDB4MjIsMHhGQSwweDNBLDB4QTUsMHgyMiwweEMw LDB4REUsMHgwRiwweDA5LAotKwkweDdFLDB4MTcsMHhDMCwweDA1LDB4RjksMHhGMSwweEU3LDB4 QzYsMHg4NywweDE0LDB4NkQsMHgxMSwKLSsJMHhFNywweEFFLDB4RUQsMHgyRiwweDcyLDB4NTks MHhDNSwweEE5LDB4OUIsMHhCOCwweDAyLDB4QTUsCi0rCTB4RjMsMHg2OSwweDcwLDB4RDYsMHhE RCwweDkwLDB4RjksMHgxOSwweDc5LDB4QkUsMHg2MCwweDhGLAotKwkweDI1LDB4OTIsMHgzMCww eDFDLDB4NTEsMHg1MSwweDM4LDB4MjYsMHg4MiwweDI1LDB4RTYsMHhGQywKLSsJMHhFRCwweDY1 LDB4OTYsMHg4RiwweDU3LDB4RTUsMHg1MywweDhCLDB4MzgsMHg2MywweEM3LDB4Q0UsCi0rCTB4 QkMsMHgxQiwweDRELDB4MTgsMHgyQSwweDVCLDB4MDQsMHgzRiwweDZBLDB4M0MsMHg5NCwweDM5 LAotKwkweEFFLDB4MzYsMHhENiwweDVFLDB4MEYsMHhBMiwweENDLDB4RDAsMHhENCwweEQ1LDB4 QzYsMHgxRSwKLSsJMHhGNiwweEEwLDB4RjUsMHg4OSwweDRFLDB4QjQsMHgwQiwweEE0LDB4QjMs MHgyQiwweDNELDB4RTIsCi0rCTB4NEUsMHhFMSwweDQ5LDB4MjUsMHg5OSwweDVGLDB4MzIsMHgx NiwweDMzLDB4MzIsMHgxQiwweDdBLAotKwkweEE1LDB4NUMsMHg2QiwweDM0LDB4MEQsMHgzOSww eDk5LDB4REMsMHhGMCwweDc2LDB4RTUsMHg1QSwKLSsJMHhENCwweDcxLDB4MDAsMHhFRCwweDVB LDB4NzMsMHhGQiwweEM4LDB4MDEsMHhBRCwweDk5LDB4Q0YsCi0rCTB4OTksMHg1MiwweDdDLDB4 OUMsMHg2NCwweEM2LDB4NzYsMHg0MCwweDU3LDB4QUYsMHg1OSwweEQ3LAotKwkweDM4LDB4MEIs MHg0MCwweERFLDB4MzMsMHgwRCwweEI4LDB4NzYsMHhFQywweEE5LDB4RDgsMHg3MywKLSsJMHhG OCwweEVGLDB4MjYsMHg2NiwweDA2LDB4MjcsMHhERCwweDdDLDB4QTQsMHgxMCwweDlDLDB4QTYs Ci0rCTB4QUEsMHhGOSwweDUzLDB4NjIsMHg3MywweDFELDB4QkEsMHgxQywweEYxLDB4NjcsMHhG NCwweDM1LAotKwkweEVELDB4NkYsMHgzNywweDkyLDB4RTgsMHg0RiwweDZDLDB4QkEsMHg1Miww eDZFLDB4QTEsMHhFRCwKLSsJMHhEQSwweDlGLDB4ODUsMHgxMSwweDgyLDB4NTIsMHg2MiwweDA4 LDB4NDQsMHhGMSwweDMwLDB4MDMsCi0rCTB4QzMsMHgzOCwweDJDLDB4NzksMHhCRCwweEQ0LDB4 NDMsMHg0NSwweEVFLDB4OEUsMHg1MCwweEZDLAotKwkweDI5LDB4NDYsMHg5QSwweEZFLDB4NTQs MHgxQSwweDE5LDB4OEYsMHg0QiwweDg0LDB4MDgsMHhERSwKLSsJMHgyMCwweDYyLDB4NzMsMHhD QywweERELDB4N0UsMHhGMCwweEVGLDB4QTIsMHhGRCwweDg2LDB4NTgsCi0rCTB4NEIsMHhEOCww eDM3LDB4RUIKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRoX3Rlc3RfMjA0 OF9nW10gPSB7Ci0rCTB4MDIKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRo X3Rlc3RfMjA0OF9wdWJfa2V5W10gPSB7Ci0rCTB4QTAsMHgzOSwweDExLDB4NzcsMHg5QSwweEMx LDB4MzAsMHgxRiwweEJFLDB4NDgsMHhBNywweEFBLAotKwkweEEwLDB4ODQsMHg1NCwweDY0LDB4 QUQsMHgxQiwweDcwLDB4RkEsMHgxMywweDU1LDB4NjMsMHhEMiwKLSsJMHgxRiwweDYyLDB4MzIs MHg5MywweDhFLDB4QzksMHgzRSwweDA5LDB4QTcsMHg2NCwweEU0LDB4MTIsCi0rCTB4NkUsMHgx QiwweEYyLDB4OTIsMHgzQiwweEI5LDB4Q0IsMHg1NiwweEVBLDB4MDcsMHg4OCwweEI1LAotKwkw eEE2LDB4QkMsMHgxNiwweDFGLDB4MjcsMHhGRSwweEQ4LDB4QUEsMHg0MCwweEIyLDB4QjAsMHgy RCwKLSsJMHgzNywweDc2LDB4QTYsMHhBNCwweDgyLDB4MkMsMHgwRSwweDIyLDB4NjQsMHg5RCww eENCLDB4RDEsCi0rCTB4MDAsMHhCNywweDg5LDB4MTQsMHg3MiwweDRFLDB4QkUsMHg0OCwweDQx LDB4RjgsMHhCMiwweDUxLAotKwkweDExLDB4MDksMHg0QiwweDIyLDB4MDEsMHgyMywweDM5LDB4 OTYsMHhFMCwweDE1LDB4RDcsMHg5RiwKLSsJMHg2MCwweEQxLDB4QjcsMHhBRSwweEZFLDB4NUYs MHhEQiwweEU3LDB4MDMsMHgxNywweDk3LDB4QTYsCi0rCTB4MTYsMHg3NCwweEJELDB4NTMsMHg4 MSwweDE5LDB4QzUsMHg0NywweDVFLDB4Q0UsMHg4RCwweEVELAotKwkweDQ1LDB4NUQsMHgzQyww eDAwLDB4QTAsMHgwQSwweDY4LDB4NkEsMHhFMCwweDhFLDB4MDYsMHg0NiwKLSsJMHg2RiwweEQ3 LDB4RjksMHhERiwweDMxLDB4N0UsMHg3NywweDQ0LDB4MEQsMHg5OCwweEUwLDB4Q0EsCi0rCTB4 OTgsMHgwOSwweDUyLDB4MDQsMHg5MCwweEVBLDB4NkQsMHhGNCwweDMwLDB4NjksMHg4RiwweEIx LAotKwkweDlCLDB4QzEsMHg0MywweERCLDB4RDUsMHg4RCwweEM4LDB4OEUsMHhCNiwweDBCLDB4 MDUsMHhCRSwKLSsJMHgwRSwweEM1LDB4OTksMHhDOCwweDZFLDB4NEUsMHhGMywweENCLDB4QzMs MHg1RSwweDlCLDB4NTMsCi0rCTB4RjcsMHgwNiwweDFDLDB4NEYsMHhDNywweEI4LDB4NkUsMHgz MCwweDE4LDB4Q0EsMHg5QiwweEI5LAotKwkweEJDLDB4NUYsMHgxNywweDcyLDB4MjksMHg1QSww eEU1LDB4RDksMHg5NiwweEI3LDB4MEIsMHhGMywKLSsJMHgyRCwweDhDLDB4RjEsMHhFMSwweDBF LDB4MEQsMHg3NCwweEQ1LDB4OUQsMHhGMCwweDA2LDB4QTksCi0rCTB4QjQsMHg5NSwweDYzLDB4 NzYsMHg0NiwweDU1LDB4NDgsMHg4MiwweDM5LDB4OTAsMHhFRiwweDU2LAotKwkweDc1LDB4MzQs MHhCOCwweDM0LDB4QzMsMHgxOCwweDZFLDB4MUUsMHhBRCwweEUzLDB4NDgsMHg3RSwKLSsJMHg5 MywweDJDLDB4MjMsMHhFNywweEY4LDB4OTAsMHg3MywweEIxLDB4NzcsMHg4MCwweDY3LDB4QTks Ci0rCTB4MzYsMHg5RSwweERBLDB4RDIKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGRoX3Rlc3RfMjA0OF9wcml2X2tleVtdID0gewotKwkweDBDLDB4NEIsMHgzMCwweDg5LDB4 RDEsMHhCOCwweDYyLDB4Q0IsMHgzQywweDQzLDB4NjQsMHg5MSwKLSsJMHhGMCwweDkxLDB4NTQs MHg3MCwweEM1LDB4MjcsMHg5NiwweEUzLDB4QUMsMHhCRSwweEU4LDB4MDAsCi0rCTB4RUMsMHg1 NSwweEY2LDB4Q0MKLSt9OwotKwotK2ludCBGSVBTX3NlbGZ0ZXN0X2RoKCkKLSsJewotKwlESCAq ZGggPSBOVUxMOwotKwlpbnQgcmV0ID0gMDsKLSsJdm9pZCAqcHViX2tleSA9IE5VTEw7Ci0rCWlu dCBsZW47Ci0rCi0rCWRoID0gREhfbmV3KCk7Ci0rCi0rCWlmKGRoID09IE5VTEwpCi0rCQlnb3Rv IGVycjsKLSsKLSsJZmlwc19sb2FkX2tleV9jb21wb25lbnQoZGgsIHAsIGRoX3Rlc3RfMjA0OCk7 Ci0rCWZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGRoLCBnLCBkaF90ZXN0XzIwNDgpOwotKwkvKiBu b3RlIHRoYXQgdGhlIHByaXZhdGUga2V5IGlzIG11Y2ggc2hvcnRlciB0aGFuIG5vcm1hbGx5IHVz ZWQKLSsJICogYnV0IHN0aWxsIGcgKiogcHJpdl9rZXkgPiBwCi0rCSAqLwotKwlmaXBzX2xvYWRf a2V5X2NvbXBvbmVudChkaCwgcHJpdl9rZXksIGRoX3Rlc3RfMjA0OCk7Ci0rCi0rCWlmIChESF9n ZW5lcmF0ZV9rZXkoZGgpIDw9IDApCi0rCQlnb3RvIGVycjsKLSsKLSsJbGVuID0gQk5fbnVtX2J5 dGVzKGRoLT5wdWJfa2V5KTsKLSsJaWYgKChwdWJfa2V5ID0gT1BFTlNTTF9tYWxsb2MobGVuKSkg PT0gTlVMTCkKLSsJCWdvdG8gZXJyOwotKwlCTl9ibjJiaW4oZGgtPnB1Yl9rZXksIHB1Yl9rZXkp OwotKwotKwlpZiAobGVuICE9IHNpemVvZihkaF90ZXN0XzIwNDhfcHViX2tleSkgfHwKLSsJCW1l bWNtcChwdWJfa2V5LCBkaF90ZXN0XzIwNDhfcHViX2tleSwgbGVuKSAhPSAwKQotKwkJZ290byBl cnI7Ci0rCi0rCXJldCA9IDE7Ci0rCi0rCWVycjoKLSsJaWYgKGRoKQotKwkJREhfZnJlZShkaCk7 Ci0rCi0rCU9QRU5TU0xfZnJlZShwdWJfa2V5KTsKLSsJcmV0dXJuIHJldDsKLSsJfQotKyNlbmRp ZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2ZpcHMvZmlwcy5oLmZpcHMtcmVxcyBv cGVuc3NsLTEuMC4xaS9jcnlwdG8vZmlwcy9maXBzLmgKLS0tLSBvcGVuc3NsLTEuMC4xaS9jcnlw dG8vZmlwcy9maXBzLmguZmlwcy1yZXFzCTIwMTQtMDgtMTMgMTk6NTg6MDYuODEyODMyNDM5ICsw MjAwCi0rKysgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2ZpcHMvZmlwcy5oCTIwMTQtMDgtMTMgMTk6 NTg6MDYuODE5ODMyNjAwICswMjAwCi1AQCAtOTYsNiArOTYsNyBAQCB2b2lkIEZJUFNfY29ycnVw dF9kc2Ffa2V5Z2VuKHZvaWQpOwotIGludCBGSVBTX3NlbGZ0ZXN0X2RzYSh2b2lkKTsKLSBpbnQg RklQU19zZWxmdGVzdF9lY2RzYSh2b2lkKTsKLSBpbnQgRklQU19zZWxmdGVzdF9lY2RoKHZvaWQp OwotK2ludCBGSVBTX3NlbGZ0ZXN0X2RoKHZvaWQpOwotIHZvaWQgRklQU19jb3JydXB0X3JuZyh2 b2lkKTsKLSB2b2lkIEZJUFNfcm5nX3N0aWNrKHZvaWQpOwotIHZvaWQgRklQU194OTMxX3N0aWNr KGludCBvbm9mZik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZmlwcy9maXBzX3Bv c3QuYy5maXBzLXJlcXMgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2ZpcHMvZmlwc19wb3N0LmMKLS0t LSBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYy5maXBzLXJlcXMJMjAxNC0w OC0xMyAxOTo1ODowNi44MDk4MzIzNzAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8v Zmlwcy9maXBzX3Bvc3QuYwkyMDE0LTA4LTEzIDE5OjU4OjA2LjgxOTgzMjYwMCArMDIwMAotQEAg LTk5LDYgKzk5LDggQEAgaW50IEZJUFNfc2VsZnRlc3Qodm9pZCkKLSAJCXJ2ID0gMDsKLSAJaWYg KCFGSVBTX3NlbGZ0ZXN0X2RzYSgpKQotIAkJcnYgPSAwOwotKwlpZiAoIUZJUFNfc2VsZnRlc3Rf ZGgoKSkKLSsJCXJ2ID0gMDsKLSAJaWYgKCFGSVBTX3NlbGZ0ZXN0X2VjZGgoKSkKLSAJCXJ2ID0g MDsKLSAJcmV0dXJuIHJ2OwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2ZpcHMvZmlw c19yc2Ffc2VsZnRlc3QuYy5maXBzLXJlcXMgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2ZpcHMvZmlw c19yc2Ffc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9maXBzL2ZpcHNfcnNh X3NlbGZ0ZXN0LmMuZmlwcy1yZXFzCTIwMTQtMDgtMTMgMTk6NTg6MDYuNzc5ODMxNjc5ICswMjAw Ci0rKysgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2ZpcHMvZmlwc19yc2Ffc2VsZnRlc3QuYwkyMDE0 LTA4LTEzIDE5OjU5OjE2LjQ5MTQzNzI5NyArMDIwMAotQEAgLTYwLDY5ICs2MCwxMTMgQEAKLSAj aWZkZWYgT1BFTlNTTF9GSVBTCi0gCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgbltdID0K LS0iXHgwMFx4QkJceEY4XHgyRlx4MDlceDA2XHg4Mlx4Q0VceDlDXHgyM1x4MzhceEFDXHgyQlx4 OURceEE4XHg3MSIKLS0iXHhGN1x4MzZceDhEXHgwN1x4RUVceEQ0XHgxMFx4NDNceEE0XHg0MFx4 RDZceEI2XHhGMFx4NzRceDU0XHhGNSIKLS0iXHgxRlx4QjhceERGXHhCQVx4QUZceDAzXHg1Q1x4 MDJceEFCXHg2MVx4RUFceDQ4XHhDRVx4RUJceDZGXHhDRCIKLS0iXHg0OFx4NzZceEVEXHg1Mlx4 MERceDYwXHhFMVx4RUNceDQ2XHgxOVx4NzFceDlEXHg4QVx4NUJceDhCXHg4MCIKLS0iXHg3Rlx4 QUZceEI4XHhFMFx4QTNceERGXHhDN1x4MzdceDcyXHgzRVx4RTZceEI0XHhCN1x4RDlceDNBXHgy NSIKLS0iXHg4NFx4RUVceDZBXHg2NFx4OURceDA2XHgwOVx4NTNceDc0XHg4OFx4MzRceEIyXHg0 NVx4NDVceDk4XHgzOSIKLS0iXHg0RVx4RTBceEFBXHhCMVx4MkRceDdCXHg2MVx4QTVceDFGXHg1 Mlx4N0FceDlBXHg0MVx4RjZceEMxXHg2OCIKLS0iXHg3Rlx4RTJceDUzXHg3Mlx4OThceENBXHgy QVx4OEZceDU5XHg0Nlx4RjhceEU1XHhGRFx4MDlceDFEXHhCRCIKLS0iXHhDQiI7Ci0rIlx4MDBc eGM5XHhkNVx4NmRceDlkXHg5MFx4ZGJceDQzXHhkNlx4MDJceGVkXHg5Nlx4ODhceDEzXHg4YSIK LSsiXHhiMlx4YmZceDZlXHhhMVx4MDZceDEwXHhiMlx4NzhceDM3XHhhN1x4MTRceGE4XHhmZlx4 ZGRceDAwIgotKyJceGRkXHhiNFx4OTNceGEwXHg0NVx4Y2NceDk2XHg5MFx4ZWRceGFkXHhhOVx4 ZGRceGM0XHhkNlx4Y2EiCi0rIlx4MGNceGYwXHhlZFx4NGZceDcyXHg1ZVx4MjFceDQ5XHg5YVx4 MThceDEyXHgxNVx4OGZceDkwXHg1YSIKLSsiXHhkYlx4YjZceDMzXHg5OVx4YTNceGU2XHhiNFx4 ZjBceGM0XHg5N1x4MjFceDI2XHhiYlx4ZTNceGJhIgotKyJceGYyXHhmZlx4YTBceDcyXHhkYVx4 ODlceDYzXHg4ZVx4OGJceDNlXHgwOFx4OWRceDkyXHgyYVx4YmUiCi0rIlx4MTZceGUxXHg0M1x4 MTVceGZjXHg1N1x4YzdceDFmXHgwOVx4MTFceDY3XHgxY1x4YTlceDk2XHhkMSIKLSsiXHg4Ylx4 M2VceDgwXHg5M1x4YzFceDU5XHhkMFx4NmRceDM5XHhmMlx4YWNceDk1XHhjY1x4MTBceDc1Igot KyJceGU5XHgzMVx4MjRceGQxXHg0M1x4YWZceDY4XHg1Mlx4NGJceGU3XHgxNlx4ZDdceDQ5XHg2 NVx4NmYiCi0rIlx4MjZceGMwXHg4Nlx4YWRceGMwXHgwN1x4MGFceGMxXHhlMVx4MmZceDg3XHg4 NVx4ODZceDNiXHhkYyIKLSsiXHg1YVx4OTlceGJlXHhlOVx4ZjlceGI5XHhlOVx4ODJceDI3XHg1 MVx4MDRceDE1XHhhYlx4MDZceDBlIgotKyJceDc2XHg1YVx4MjhceDhkXHg5Mlx4YmRceGM1XHhi NVx4N2JceGE4XHhkZlx4NGVceDQ3XHhhMlx4YzEiCi0rIlx4ZTdceDUyXHhiZlx4NDdceGY3XHg2 Mlx4ZTBceDNhXHg2Zlx4NGRceDZhXHg0ZFx4NGVceGQ0XHhiOSIKLSsiXHg1OVx4NjlceGZhXHhi Mlx4MTRceGMxXHhlZVx4ZTZceDJmXHg5NVx4Y2RceDk0XHg3Mlx4YWVceGU0IgotKyJceGRiXHgx OFx4OWFceGM0XHhjZFx4NzBceGJkXHhlZVx4MzFceDE2XHhiN1x4NDlceDY1XHhhY1x4NDAiCi0r Ilx4MTlceDBlXHhiNVx4NmRceDgzXHhmMVx4MzZceGJiXHgwOFx4MmZceDJlXHg0ZVx4OTJceDYy XHhhNCIKLSsiXHhmZlx4NTBceGRiXHgyMFx4NDVceGEyXHhlYlx4MTZceDdhXHhmMlx4ZDVceDI4 XHhjMVx4ZmRceDRlIgotKyJceDAzXHg3MSI7Ci0rCi0gCi0gc3RhdGljIGludCBjb3JydXB0X3Jz YTsKLSAKLSBzdGF0aWMgaW50IHNldHJzYWtleShSU0EgKmtleSkKLSAgICAgewotLSAgICBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBlW10gPSAiXHgxMSI7Ci0rICAgIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGVbXSA9ICJceDAxXHgwMFx4MDEiOwotIAotICAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBkW10gPQotLSJceDAwXHhBNVx4REFceEZDXHg1M1x4NDFceEZBXHhGMlx4 ODlceEM0XHhCOVx4ODhceERCXHgzMFx4QzFceENEIgotLSJceEY4XHgzRlx4MzFceDI1XHgxRVx4 MDZceDY4XHhCNFx4MjdceDg0XHg4MVx4MzhceDAxXHg1N1x4OTZceDQxIgotLSJceEIyXHg5NFx4 MTBceEIzXHhDN1x4OTlceDhEXHg2Qlx4QzRceDY1XHg3NFx4NUVceDVDXHgzOVx4MjZceDY5Igot LSJceEQ2XHg4N1x4MERceEEyXHhDMFx4ODJceEE5XHgzOVx4RTNceDdGXHhEQ1x4QjhceDJFXHhD OVx4M0VceERBIgotLSJceEM5XHg3Rlx4RjNceEFEXHg1OVx4NTBceEFDXHhDRlx4QkNceDExXHgx Q1x4NzZceEYxXHhBOVx4NTJceDk0IgotLSJceDQ0XHhFNVx4NkFceEFGXHg2OFx4QzVceDZDXHgw OVx4MkNceEQzXHg4RFx4QzNceEJFXHhGNVx4RDJceDBBIgotLSJceDkzXHg5OVx4MjZceEVEXHg0 Rlx4NzRceEExXHgzRVx4RERceEZCXHhFMVx4QTFceENFXHhDQ1x4NDhceDk0IgotLSJceEFGXHg5 NFx4MjhceEMyXHhCN1x4QjhceDg4XHgzRlx4RTRceDQ2XHgzQVx4NEJceEM4XHg1Qlx4MUNceEIz IgotLSJceEMxIjsKLSsiXHgzNlx4MjdceDNkXHhiMVx4ZjlceDFiXHhkYlx4YTdceGEwXHg0MVx4 N2ZceDEyXHgyM1x4YWNceDIzIgotKyJceDI5XHg5OVx4ZDVceDNhXHg3Ylx4NjBceDY3XHg0MVx4 MDdceDYzXHg1M1x4YjRceGQyXHhlN1x4NTgiCi0rIlx4OTVceDBhXHhjN1x4MDVceGYzXHg0ZVx4 YjJceGI0XHgxMlx4ZDRceDcwXHhkY1x4NGZceDg1XHgwNiIKLSsiXHhkM1x4ZGRceGQ4XHg2M1x4 MjdceDNlXHg2N1x4MzFceDIxXHgyNFx4MzlceDA0XHhiY1x4MDZceGE0IgotKyJceGNjXHhjZVx4 MmJceDdhXHhmZVx4N2JceGFkXHhkZVx4MTFceDZlXHhhM1x4YTVceGU2XHgwNFx4NTMiCi0rIlx4 MGVceGEzXHg0ZVx4MmRceGI0XHg4Zlx4MzFceGJmXHhjYVx4NzVceDI1XHg1Mlx4MDJceDg1XHhk ZSIKLSsiXHgzZFx4YjJceDcyXHg0M1x4YjJceDg5XHg4YVx4OWFceDM0XHg0MVx4MjZceDNmXHg5 YVx4NjdceGJlIgotKyJceGE0XHg5Nlx4N2JceDBlXHg3NVx4YmFceGE2XHg5M1x4ZDVceGI4XHhk OFx4YjhceDU3XHhmMlx4NGIiCi0rIlx4MGZceDE0XHg4MVx4ZDFceDU3XHg0ZVx4ZjZceDQ1XHg0 Y1x4YTZceDNiXHhkMFx4NzBceGNhXHhkMyIKLSsiXHg5ZFx4NTVceGRlXHgyMlx4MDVceGU3XHg4 ZVx4MjhceDRkXHhlZVx4MTFceGNmXHhiNlx4NjdceDc2IgotKyJceDA5XHhkM1x4ZTNceDNjXHgx M1x4ZjlceDk5XHgzNFx4MTBceDdiXHhlY1x4ODFceDM4XHhmMFx4YjYiCi0rIlx4MzRceDljXHg5 Ylx4NTBceDZmXHgwYlx4OTFceDgxXHg0ZFx4ODlceDk0XHgwNFx4N2JceGYwXHgzYyIKLSsiXHhm NFx4YjFceGIyXHgwMFx4NDhceDhkXHg1YVx4OGZceDg4XHg5ZVx4YzVceGFiXHgzYVx4OWVceDQ0 IgotKyJceDNmXHg1NFx4ZTdceGQ5XHg2ZVx4NDdceGFhXHhhMVx4YmRceDQwXHg0Nlx4MzFceGY5 XHhmMFx4MzQiCi0rIlx4YjZceDA0XHhlMVx4MmJceDViXHg3M1x4ODZceGRkXHgzYVx4OTJceDFi XHg3MVx4YzdceDNmXHgzMiIKLSsiXHhlNVx4YzNceGMyXHhhYlx4YTFceDdlXHhiZlx4YTRceDUy XHhhMFx4YjBceDY4XHg5MFx4ZDFceDIwIgotKyJceDEyXHg3OVx4ZTlceGQ3XHhjOVx4NDBceGJh XHhmMlx4MTlceGM3XHhhNVx4MDBceDkyXHg4Nlx4MGQiCi0rIlx4MDEiOwotIAotICAgICBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBwW10gPQotLSJceDAwXHhFRVx4Q0ZceEFFXHg4MVx4QjFc eEI5XHhCM1x4QzlceDA4XHg4MVx4MEJceDEwXHhBMVx4QjVceDYwIgotLSJceDAxXHg5OVx4RUJc eDlGXHg0NFx4QUVceEY0XHhGRFx4QTRceDkzXHhCOFx4MUFceDlFXHgzRFx4ODRceEY2IgotLSJc eDMyXHgxMlx4NEVceEYwXHgyM1x4NkVceDVEXHgxRVx4M0JceDdFXHgyOFx4RkFceEU3XHhBQVx4 MDRceDBBIgotLSJceDJEXHg1Qlx4MjVceDIxXHg3Nlx4NDVceDlEXHgxRlx4MzlceDc1XHg0MVx4 QkFceDJBXHg1OFx4RkJceDY1IgotLSJceDk5IjsKLSsiXHgwMFx4ZmNceDVjXHg2ZVx4MTZceGNl XHgxZlx4MDNceDdiXHhjZFx4ZjdceGIzXHg3Mlx4YjJceDhmIgotKyJceDE2XHg3Mlx4YjhceDU2 XHhhZVx4ZjdceGNkXHg2N1x4ZDhceDRlXHg3ZFx4MDdceGFmXHhkNVx4NDMiCi0rIlx4MjZceGMz XHgzNVx4YmVceDQzXHg4Zlx4NGVceDJmXHgxY1x4NDNceDRlXHg2Ylx4ZDJceGIyXHhlYyIKLSsi XHg1Mlx4NmRceDk3XHg1Mlx4MmJceGNjXHg1Y1x4M2FceDZiXHhmNFx4MTRceGM2XHg3NFx4ZGFc eDY2IgotKyJceDM4XHgxY1x4N2FceDNmXHg4NFx4MmZceGUzXHhmOVx4NWFceGI4XHg2NVx4Njlc eDQ2XHgwNlx4YTMiCi0rIlx4MzdceDc5XHhiMlx4YTFceDViXHg1OFx4ZWRceDVlXHhhN1x4NWZc eDhjXHg2NVx4NjZceGJiXHhkMSIKLSsiXHgyNFx4MzZceGU2XHgzN1x4YTdceDNkXHg0OVx4Nzdc eDhhXHg4Y1x4MzRceGQ4XHg2OVx4MjlceGYzIgotKyJceDRkXHg1OFx4MjJceGIwXHg1MVx4MjRc eGI2XHg0MFx4YThceDg2XHg1OVx4MGFceGI3XHhiYVx4NWMiCi0rIlx4OTdceGRhXHg1N1x4ZThc eDM2XHhkYVx4N2FceDljXHhhZCI7Ci0gCi0gICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHFbXSA9Ci0tIlx4MDBceEM5XHg3Rlx4QjFceEYwXHgyN1x4RjRceDUzXHhGNlx4MzRceDEyXHgz M1x4RUFceEFBXHhEMVx4RDkiCi0tIlx4MzVceDNGXHg2Q1x4NDJceEQwXHg4OFx4NjZceEIxXHhE MFx4NUFceDBGXHgyMFx4MzVceDAyXHg4Qlx4OUQiCi0tIlx4ODZceDk4XHg0MFx4QjRceDE2XHg2 Nlx4QjRceDJFXHg5Mlx4RUFceDBEXHhBM1x4QjRceDMyXHgwNFx4QjUiCi0tIlx4Q0ZceENFXHgz M1x4NTJceDUyXHg0RFx4MDRceDE2XHhBNVx4QTRceDQxXHhFN1x4MDBceEFGXHg0Nlx4MTUiCi0t Ilx4MDMiOwotKyJceDAwXHhjY1x4YmVceDdiXHgwOVx4NjlceDA2XHhlZVx4NDVceGJmXHg4OFx4 NDdceDM4XHhhOFx4ZjgiCi0rIlx4MTdceGU1XHhiNlx4YmFceDY3XHg1NVx4ZTNceGU4XHgwNVx4 OGJceGI4XHhlMlx4NTNceGQ2XHg4ZSIKLSsiXHhlZlx4MmNceGU3XHg0Zlx4NGFceGY3XHg0ZVx4 MjZceDhkXHg4NVx4MGJceDNmXHhlY1x4YzNceDFjIgotKyJceGQ0XHhlYlx4ZWNceDZhXHhjOFx4 NzJceDJhXHgyNVx4N2RceGZkXHhhNlx4NzdceDk2XHhmMFx4MWUiCi0rIlx4Y2RceDI4XHg1N1x4 ZjhceDM3XHgzMFx4NzVceDZiXHhiZFx4ZDRceDdiXHgwY1x4ODdceGM1XHg2YyIKLSsiXHg4N1x4 NDBceGE1XHhiYlx4MjdceDJjXHg3OFx4YzlceDc0XHg1YVx4NTRceDViXHgwYlx4MzBceDZmIgot KyJceDQ0XHg0YVx4ZmFceDcxXHhlNFx4MjFceDYxXHg2Nlx4ZjlceGVlXHg2NVx4ZGVceDdjXHgw NFx4ZDciCi0rIlx4ZmRceGE5XHgxNVx4NWJceDdmXHhlMlx4N2FceGJhXHg2OVx4ODZceDcyXHhh Nlx4MDZceDhkXHg5YiIKLSsiXHg5MFx4NTVceDYwXHg5ZVx4NGNceDVkXHhhOVx4YjZceDU1IjsK LSsKLSAKLSAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZG1wMVtdID0KLS0iXHg1NFx4 NDlceDRDXHhBNlx4M0VceEJBXHgwM1x4MzdceEU0XHhFMlx4NDBceDIzXHhGQ1x4RDZceDlBXHg1 QSIKLS0iXHhFQlx4MDdceEREXHhEQ1x4MDFceDgzXHhBNFx4RDBceEFDXHg5Qlx4NTRceEIwXHg1 MVx4RjJceEIxXHgzRSIKLS0iXHhEOVx4NDlceDA5XHg3NVx4RUFceEI3XHg3NFx4MTRceEZGXHg1 OVx4QzFceEY3XHg2OVx4MkVceDlBXHgyRSIKLS0iXHgyMFx4MkJceDM4XHhGQ1x4OTFceDBBXHg0 N1x4NDFceDc0XHhBRFx4QzlceDNDXHgxRlx4NjdceEM5XHg4MSI7Ci0rIlx4N2FceGQ2XHgxMlx4 ZDBceDBlXHhlY1x4OTFceGE5XHg4NVx4OGJceGY4XHg1MFx4ZjBceDExXHgyZSIKLSsiXHgwMFx4 MTFceDMyXHg0MFx4NjBceDY2XHgxZlx4MTFceGVlXHhjMlx4NzVceDI3XHg2NVx4NGJceDE2Igot KyJceDY3XHgxNlx4OTVceGQyXHgxNFx4YzNceDFkXHhiM1x4NDhceDFmXHhiN1x4ZTRceDBiXHgy Ylx4NzQiCi0rIlx4YzNceGRiXHg1MFx4MjdceGY5XHg4NVx4M2FceGZhXHhhOVx4MDhceDIzXHhj MVx4NjVceDNkXHgzNCIKLSsiXHgzYVx4YzhceDU2XHg3YVx4NjVceDQ1XHgzNlx4NmVceGFlXHgy YVx4Y2VceDlmXHg0M1x4NDNceGQ3IgotKyJceDEwXHhlOVx4OWVceDE4XHhmNFx4YTRceDM1XHhk YVx4OGFceDZiXHhiMFx4M2ZceGRkXHg1M1x4ZTMiCi0rIlx4YThceGM1XHg0ZVx4NzlceDlkXHgx Zlx4NTFceDhjXHhhMlx4Y2FceDY2XHgzY1x4NmFceDJhXHhmZiIKLSsiXHg4ZVx4ZDJceGYzXHhi N1x4Y2JceDgyXHhkYVx4ZGVceDJjXHhlNlx4ZDJceDhjXHhiM1x4YWRceGI2IgotKyJceDRjXHg5 NVx4NTVceDc2XHhiZFx4YzlceGM4XHhkMSI7Ci0rCi0gCi0gICAgIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGRtcTFbXSA9Ci0tIlx4NDdceDFFXHgwMlx4OTBceEZGXHgwQVx4RjBceDc1XHgw M1x4NTFceEI3XHhGOFx4NzhceDg2XHg0Q1x4QTkiCi0tIlx4NjFceEFEXHhCRFx4M0FceDhBXHg3 RVx4OTlceDFDXHg1Q1x4MDVceDU2XHhBOVx4NENceDMxXHg0Nlx4QTciCi0tIlx4RjlceDgwXHgz Rlx4OEZceDZGXHg4QVx4RTNceDQyXHhFOVx4MzFceEZEXHg4QVx4RTRceDdBXHgyMlx4MEQiCi0t Ilx4MUJceDk5XHhBNFx4OTVceDg0XHg5OFx4MDdceEZFXHgzOVx4RjlceDI0XHg1QVx4OThceDM2 XHhEQVx4M0QiOwotLSAgICAKLSsiXHgwMFx4ODNceDIzXHgxZFx4YmJceDExXHg0Mlx4MTdceDJi XHgyNVx4NWFceDJjXHgwM1x4ZTZceDc1IgotKyJceGMxXHgxOFx4YThceGM5XHgwYlx4OTZceGJm XHhiYVx4YzRceDkyXHg5MVx4ODBceGE1XHgyMlx4MmYiCi0rIlx4YmFceDkxXHg5MFx4MzZceDAx XHg1Nlx4MTVceDAwXHgyY1x4NzRceGEyXHg5N1x4ZjdceDE1XHhhMSIKLSsiXHg0OVx4ZGZceDMy XHgzNVx4ZDJceGRkXHgwY1x4OTFceGE2XHhmOFx4ZTdceGJlXHg4MVx4MzZceDliIgotKyJceDAz XHhkY1x4NmJceDNiXHhkOFx4NWRceDc5XHg1N1x4ZTBceGU2XHg0Zlx4NDlceGRmXHg0Y1x4NWMi Ci0rIlx4MGVceGU1XHgyMVx4NDFceDk1XHhmZFx4YWRceGZmXHg5YVx4M2VceGEwXHhmOVx4MGZc eDU5XHg5ZSIKLSsiXHg2YVx4YTdceDdiXHg3MVx4YTdceDI0XHg5YVx4MzZceDUyXHhhZVx4OTdc eDIwXHhjMVx4NWVceDc4IgotKyJceGQ5XHg0N1x4OGJceDFlXHg2N1x4ZjJceGFmXHg5OFx4ZTZc eDJkXHhlZlx4MTBceGQ3XHhmMVx4YWIiCi0rIlx4NDlceGVlXHhlNVx4NGJceDdlXHhhZVx4MWZc eDFkXHg2MSI7Ci0rCi0rCi0gICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGlxbXBbXSA9 Ci0tIlx4MDBceEIwXHg2Q1x4NEZceERBXHhCQlx4NjNceDAxXHgxOVx4OERceDI2XHg1Qlx4REJc eEFFXHg5NFx4MjMiCi0tIlx4QjNceDgwXHhGMlx4NzFceEY3XHgzNFx4NTNceDg4XHg1MFx4OTNc eDA3XHg3Rlx4Q0RceDM5XHhFMlx4MTEiCi0tIlx4OUZceEM5XHg4Nlx4MzJceDE1XHg0Rlx4NThc eDgzXHhCMVx4NjdceEE5XHg2N1x4QkZceDQwXHgyQlx4NEUiCi0tIlx4OUVceDJFXHgwRlx4OTZc eDU2XHhFNlx4OThceEVBXHgzNlx4NjZceEVEXHhGQlx4MjVceDc5XHg4MFx4MzkiCi0tIlx4Rjci OwotKyJceDIzXHg5Nlx4YzFceDkxXHgxN1x4NWVceDBhXHg4M1x4ZDJceGRjXHg3Ylx4NjlceGIy XHg1OVx4MWQiCi0rIlx4MzNceDU4XHg1Mlx4M2ZceDE4XHhjN1x4MDlceDUwXHgxY1x4YjlceGEx XHhiYlx4NGNceGEyXHgzOCIKLSsiXHg0MFx4NGNceDlhXHg4ZVx4ZmVceDljXHg5MFx4OTJceGQw XHg3MVx4OWZceDg5XHg5OVx4NTBceDkxIgotKyJceDFmXHgzNFx4OGJceDc0XHg1M1x4MTFceDEx XHg0YVx4NzBceGUyXHhmN1x4MzBceGQ4XHg4Y1x4ODAiCi0rIlx4ZTFceGNjXHg5Zlx4ZjFceDYz XHgxN1x4MWFceDdkXHg2N1x4MjlceDRjXHhjYlx4NGVceDc0XHg3YiIKLSsiXHhlMFx4M2VceDll XHgyZlx4ZjRceDY3XHg4Zlx4ZWNceGI5XHg1Y1x4MDBceDFlXHg3ZVx4YTJceDdiIgotKyJceDky XHhjOVx4NmZceDRjXHhlNFx4MGVceGY5XHg0OFx4NjNceGNkXHg1MFx4MjJceDVkXHhiZlx4YjYi Ci0rIlx4OWRceDAxXHgzM1x4NmFceGY0XHg1MFx4YmVceDg2XHg5OFx4NGZceGNhXHgzZlx4M2Fc eGZhXHhjZiIKLSsiXHgwN1x4NDBceGM0XHhhYVx4YWRceGFlXHhiZVx4YmYiOwotIAotICAgICBr ZXktPm4gPSBCTl9iaW4yYm4obiwgc2l6ZW9mKG4pLTEsIGtleS0+bik7Ci0gICAgIGlmIChjb3Jy dXB0X3JzYSkKLS0JQk5fc2V0X2JpdChrZXktPm4sIDEwMjQpOwotKwlCTl9zZXRfYml0KGtleS0+ biwgMjA0OCk7Ci0gICAgIGtleS0+ZSA9IEJOX2JpbjJibihlLCBzaXplb2YoZSktMSwga2V5LT5l KTsKLSAgICAga2V5LT5kID0gQk5fYmluMmJuKGQsIHNpemVvZihkKS0xLCBrZXktPmQpOwotICAg ICBrZXktPnAgPSBCTl9iaW4yYm4ocCwgc2l6ZW9mKHApLTEsIGtleS0+cCk7Ci1AQCAtMTQ1LDIw MSArMTg5LDI5MSBAQCB2b2lkIEZJUFNfY29ycnVwdF9yc2EoKQotIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGthdF90YnNbXSA9ICJPcGVuU1NMIEZJUFMgMTQwLTIgUHVibGljIEtleSBSU0Eg S0FUIjsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1BTU19TSEExW10g PSB7Ci0tICAweDJELCAweEFGLCAweDZFLCAweEMyLCAweDk4LCAweEZCLCAweDhBLCAweEExLCAw eEI5LCAweDQ2LCAweERBLCAweDBGLAotLSAgMHgwMSwgMHgxRSwgMHgzNywgMHg5MywgMHhDMiwg MHg1NSwgMHgyNywgMHhFNCwgMHgxRCwgMHhEMiwgMHg5MCwgMHhCQiwKLS0gIDB4RjQsIDB4QkYs IDB4NEEsIDB4NzQsIDB4MzksIDB4NTEsIDB4QkIsIDB4RTgsIDB4MEMsIDB4QjcsIDB4RjgsIDB4 RDMsCi0tICAweEQxLCAweERGLCAweEU3LCAweEJFLCAweDgwLCAweDA1LCAweEMzLCAweEI1LCAw eEM3LCAweDgzLCAweEQ1LCAweDRDLAotLSAgMHg3RiwgMHg0OSwgMHhGQiwgMHgzRiwgMHgyOSwg MHg5QiwgMHhFMSwgMHgxMiwgMHg1MSwgMHg2MCwgMHhEMCwgMHhBNywKLS0gIDB4MEQsIDB4QTks IDB4MjgsIDB4NTYsIDB4NzMsIDB4RDksIDB4MDcsIDB4RTMsIDB4NUUsIDB4M0YsIDB4OUIsIDB4 RjUsCi0tICAweEI2LCAweEYzLCAweEYyLCAweDVFLCAweDc0LCAweEM5LCAweDgzLCAweDgxLCAw eDQ3LCAweEYwLCAweEM1LCAweDQ1LAotLSAgMHgwQSwgMHhFOSwgMHg4RSwgMHgzOCwgMHhENywg MHgxOCwgMHhDNiwgMHgyQSwgMHgwRiwgMHhGOCwgMHhCNywgMHgzMSwKLS0gIDB4RDYsIDB4NTUs IDB4RTQsIDB4NjYsIDB4NzgsIDB4ODEsIDB4RDQsIDB4RTYsIDB4REIsIDB4OUYsIDB4QkEsIDB4 RTgsCi0tICAweDIzLCAweEI1LCAweDdGLCAweERDLCAweDA4LCAweEVBLCAweEQ1LCAweDI2LCAw eDFFLCAweDIwLCAweDI1LCAweDg0LAotLSAgMHgyNiwgMHhDNiwgMHg3OSwgMHhDOSwgMHg5Qiwg MHgzRCwgMHg3RSwgMHhBOQotKyAweEMyLCAweDgwLCAweDgyLCAweDU2LCAweEQ4LCAweEE3LCAw eEIyLCAweDlDLCAweEY1LCAweEQ2LCAweDNDLCAweEUzLAotKyAweEJGLCAweEU5LCAweDNBLCAw eDUzLCAweDQwLCAweEFFLCAweEYyLCAweEE5LCAweDZBLCAweDM5LCAweDQ5LCAweDVCLAotKyAw eDA1LCAweDdGLCAweDY3LCAweDM4LCAweDJFLCAweDFELCAweEUxLCAweDkzLCAweDIyLCAweDY1 LCAweDc5LCAweDg0LAotKyAweDY4LCAweEZBLCAweEQ4LCAweEFGLCAweEExLCAweDk4LCAweDYx LCAweDZGLCAweDQ0LCAweDI3LCAweEE2LCAweDhCLAotKyAweENGLCAweDBFLCAweDEzLCAweEE5 LCAweENFLCAweEQ3LCAweDZDLCAweEQyLCAweDM4LCAweEI1LCAweDE2LCAweEI5LAotKyAweDY2 LCAweDk0LCAweDQ4LCAweERFLCAweDlFLCAweDE5LCAweDNELCAweDZGLCAweEIzLCAweEExLCAw eDlBLCAweDE5LAotKyAweERGLCAweEZCLCAweEFCLCAweEE1LCAweDlGLCAweDM4LCAweERBLCAw eEM5LCAweDIxLCAweDhGLCAweENFLCAweDk4LAotKyAweDAxLCAweDNBLCAweEM4LCAweEUwLCAw eERGLCAweERBLCAweEZDLCAweEYwLCAweEE2LCAweDg2LCAweDI5LCAweEI1LAotKyAweDdGLCAw eDYxLCAweEZCLCAweEJBLCAweEM1LCAweDQ5LCAweEIyLCAweDdDLCAweDZBLCAweDI2LCAweDgy LCAweEM0LAotKyAweDhGLCAweEFBLCAweDVCLCAweDEwLCAweEQ1LCAweEVFLCAweEEwLCAweDU1 LCAweDQyLCAweEVGLCAweDMyLCAweDVBLAotKyAweDNGLCAweDU1LCAweEIzLCAweDJDLCAweDIy LCAweEU5LCAweDY1LCAweERBLCAweDhELCAweDBBLCAweEI5LCAweDcwLAotKyAweDQzLCAweEND LCAweDNGLCAweDY0LCAweDlDLCAweEI1LCAweDY1LCAweDQ5LCAweEJELCAweDdGLCAweDM1LCAw eEMxLAotKyAweDIwLCAweDg1LCAweDI0LCAweEZFLCAweEFBLCAweDZCLCAweDM3LCAweDA0LCAw eEExLCAweDBFLCAweDlELCAweDVDLAotKyAweEJBLCAweDdGLCAweDE0LCAweDY5LCAweEM1LCAw eDkzLCAweEIyLCAweDMzLCAweEMyLCAweEMwLCAweEM3LCAweERGLAotKyAweDdFLCAweDlFLCAw eEE0LCAweEIwLCAweEEwLCAweDY0LCAweEQyLCAweEFDLCAweEZDLCAweEZELCAweEZELCAweDk5 LAotKyAweDhGLCAweDZBLCAweDQwLCAweDI2LCAweEMxLCAweDJFLCAweDRFLCAweDhCLCAweDMz LCAweEJFLCAweEYxLCAweDQ1LAotKyAweDU5LCAweDhGLCAweDMzLCAweDQwLCAweDFELCAweDJB LCAweEQyLCAweEY3LCAweDUwLCAweDgzLCAweDg5LCAweENGLAotKyAweDk0LCAweEM2LCAweEY4 LCAweDM2LCAweEYwLCAweDg0LCAweDBCLCAweDg1LCAweEE1LCAweDAyLCAweEE5LCAweDBGLAot KyAweDQxLCAweDdBLCAweDc3LCAweEEzLCAweDJGLCAweDQ3LCAweDFFLCAweDFELCAweEVDLCAw eEU2LCAweEQzLCAweDAxLAotKyAweDFFLCAweDZGLCAweDdBLCAweDk2LCAweDUwLCAweDM3LCAw eDM3LCAweDRCLCAweDI3LCAweDUyLCAweDBCLCAweERDLAotKyAweERCLCAweEM3LCAweEE5LCAw eDMxLCAweEIyLCAweDQwLCAweEVFLCAweDYwLCAweDQxLCAweDI2LCAweDZBLCAweDA1LAotKyAw eENFLCAweDA4LCAweDFELCAweDg5Ci0gfTsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBrYXRfUlNBX1BTU19TSEEyMjRbXSA9IHsKLS0gIDB4MzksIDB4NEEsIDB4NkEsIDB4MjAsIDB4 QkMsIDB4RTksIDB4MzMsIDB4RUQsIDB4RUYsIDB4QzUsIDB4NTgsIDB4QTcsCi0tICAweEZFLCAw eDgxLCAweEM0LCAweDM2LCAweDUwLCAweDlBLCAweDJDLCAweDgyLCAweDk4LCAweDA4LCAweDk1 LCAweEZBLAotLSAgMHhCMSwgMHg5RSwgMHhEMiwgMHg1NSwgMHg2MSwgMHg4NywgMHgyMSwgMHg1 OSwgMHg4NywgMHg3QiwgMHgxRiwgMHg1NywKLS0gIDB4MzAsIDB4OUQsIDB4MEQsIDB4NEEsIDB4 MDYsIDB4RUIsIDB4NTIsIDB4MzcsIDB4NTUsIDB4NTQsIDB4MUMsIDB4ODksCi0tICAweDgzLCAw eDc1LCAweDU5LCAweDY1LCAweDY0LCAweDkwLCAweDJFLCAweDE2LCAweENDLCAweDg2LCAweDA1 LCAweEVFLAotLSAgMHhCMSwgMHhFNiwgMHg3QiwgMHhCQSwgMHgxNiwgMHg3NSwgMHgwRCwgMHgw QywgMHg2NCwgMHgwQiwgMHhBQiwgMHgyMiwKLS0gIDB4MTUsIDB4NzgsIDB4NkIsIDB4NkYsIDB4 QTQsIDB4RkIsIDB4NzcsIDB4NDAsIDB4NjQsIDB4NjIsIDB4RDEsIDB4QjUsCi0tICAweDM3LCAw eDFFLCAweEUwLCAweDNELCAweEE4LCAweEY5LCAweEQyLCAweEJELCAweEFBLCAweDM4LCAweDI0 LCAweDQ5LAotLSAgMHg1OCwgMHhEMiwgMHg3NCwgMHg4NSwgMHhGNCwgMHhCNSwgMHg5MywgMHg4 RSwgMHhGNSwgMHgwMywgMHhFQSwgMHgyRCwKLS0gIDB4QzgsIDB4NTIsIDB4RkEsIDB4Q0YsIDB4 N0UsIDB4MzUsIDB4QjAsIDB4NkEsIDB4QUYsIDB4OTUsIDB4QzAsIDB4MDAsCi0tICAweDU0LCAw eDc2LCAweDNELCAweDBDLCAweDlDLCAweEIyLCAweEVFLCAweEMwCi0rIDB4QjQsIDB4MDEsIDB4 OTMsIDB4MTYsIDB4MDUsIDB4RjYsIDB4RUIsIDB4RTIsIDB4QTQsIDB4RUIsIDB4NDgsIDB4QUEs Ci0rIDB4MDAsIDB4RjQsIDB4QTEsIDB4OTksIDB4MEEsIDB4QjQsIDB4QjYsIDB4NjMsIDB4RTks IDB4NjgsIDB4Q0EsIDB4QjMsCi0rIDB4MTMsIDB4RDcsIDB4NjYsIDB4NkEsIDB4Q0QsIDB4Q0Is IDB4MzMsIDB4OUYsIDB4RTUsIDB4ODQsIDB4RTIsIDB4QzMsCi0rIDB4MEIsIDB4NTMsIDB4RTUs IDB4OEIsIDB4OTYsIDB4NEIsIDB4REIsIDB4MkQsIDB4ODAsIDB4QTQsIDB4MUQsIDB4RTMsCi0r IDB4ODEsIDB4REMsIDB4NTIsIDB4OTksIDB4QkEsIDB4OUIsIDB4NkEsIDB4OUQsIDB4NDgsIDB4 MUYsIDB4NzMsIDB4RjcsCi0rIDB4QUMsIDB4MDksIDB4MTMsIDB4QTEsIDB4MTYsIDB4MkMsIDB4 NjAsIDB4RkIsIDB4QkMsIDB4MjUsIDB4RjcsIDB4NTMsCi0rIDB4RDEsIDB4MDQsIDB4NUEsIDB4 M0YsIDB4OTUsIDB4MDksIDB4NUUsIDB4RTUsIDB4QTIsIDB4N0QsIDB4RkMsIDB4MkEsCi0rIDB4 NTEsIDB4MUQsIDB4MjEsIDB4Q0UsIDB4MkIsIDB4NEUsIDB4MUIsIDB4QjgsIDB4Q0IsIDB4REQs IDB4MjQsIDB4RUUsCi0rIDB4OTksIDB4MUQsIDB4MzcsIDB4REMsIDB4RUQsIDB4NUYsIDB4MkYs IDB4NDgsIDB4NUUsIDB4MzMsIDB4OTQsIDB4MDYsCi0rIDB4MTksIDB4Q0QsIDB4NUEsIDB4MjYs IDB4ODUsIDB4NzcsIDB4OUQsIDB4QUYsIDB4ODYsIDB4OTcsIDB4QzksIDB4MDgsCi0rIDB4RDUs IDB4ODEsIDB4MEUsIDB4QjgsIDB4OUYsIDB4QjYsIDB4QUYsIDB4MjAsIDB4NzIsIDB4REMsIDB4 MTMsIDB4NEQsCi0rIDB4N0EsIDB4RTQsIDB4NUMsIDB4ODEsIDB4REUsIDB4QzAsIDB4M0QsIDB4 MTksIDB4OUMsIDB4MzMsIDB4MTEsIDB4MDcsCi0rIDB4RDUsIDB4QTksIDB4NTEsIDB4NjcsIDB4 Q0QsIDB4RkQsIDB4MzcsIDB4NjEsIDB4MTQsIDB4OUYsIDB4RTcsIDB4NzAsCi0rIDB4MTgsIDB4 MzIsIDB4QzMsIDB4MzQsIDB4NTQsIDB4MEQsIDB4NEYsIDB4QjQsIDB4QUUsIDB4OUYsIDB4RUMs IDB4NjQsCi0rIDB4RDgsIDB4QjIsIDB4MTYsIDB4QTQsIDB4QjIsIDB4OTksIDB4OTIsIDB4Q0Is IDB4N0YsIDB4MUYsIDB4MDYsIDB4MTcsCi0rIDB4NUYsIDB4QTEsIDB4MDcsIDB4NjgsIDB4QUUs IDB4QTcsIDB4MkQsIDB4MDMsIDB4OTEsIDB4MkEsIDB4OUQsIDB4NjksCi0rIDB4QzIsIDB4OUQs IDB4OTAsIDB4RjcsIDB4RjksIDB4NjYsIDB4NUQsIDB4MTMsIDB4QjcsIDB4N0YsIDB4RDMsIDB4 OTcsCi0rIDB4NDUsIDB4OTcsIDB4NDMsIDB4RDgsIDB4Q0UsIDB4M0MsIDB4RjIsIDB4OTgsIDB4 OTgsIDB4REQsIDB4RTIsIDB4MkQsCi0rIDB4Q0YsIDB4QTEsIDB4QzQsIDB4MjUsIDB4NDYsIDB4 MkUsIDB4RDIsIDB4RTUsIDB4NUYsIDB4QzYsIDB4MDEsIDB4QzUsCi0rIDB4NEYsIDB4NDIsIDB4 MkIsIDB4REUsIDB4MEYsIDB4RUEsIDB4NEEsIDB4NEYsIDB4QzMsIDB4NUIsIDB4REYsIDB4OUIs Ci0rIDB4NUQsIDB4MzAsIDB4MTgsIDB4OTMsIDB4RDAsIDB4REUsIDB4QzUsIDB4MDksIDB4QUEs IDB4NTcsIDB4NTcsIDB4QkQsCi0rIDB4MkQsIDB4ODQsIDB4MDMsIDB4QjcKLSB9OwotIAotIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTI1NltdID0gewotLSAgMHg2 RCwgMHgzRCwgMHhCRSwgMHg4RiwgMHg2MCwgMHg2RCwgMHgyNSwgMHgxNCwgMHhGMCwgMHgzMSwg MHhFMywgMHg4OSwKLS0gIDB4MDAsIDB4OTcsIDB4RkEsIDB4OTksIDB4NzEsIDB4MjgsIDB4RTUs IDB4MTAsIDB4MjUsIDB4OUEsIDB4RjMsIDB4OEYsCi0tICAweDdCLCAweEM1LCAweEE4LCAweDRB LCAweDc0LCAweDUxLCAweDM2LCAweEUyLCAweDhELCAweDdELCAweDczLCAweDI4LAotLSAgMHhD MSwgMHg3NywgMHhDNiwgMHgyNywgMHg5NywgMHgwMCwgMHg4QiwgMHgwMCwgMHhBMywgMHg5Niwg MHg3MywgMHg0RSwKLS0gIDB4N0QsIDB4MkUsIDB4MkMsIDB4MzQsIDB4NjgsIDB4OEMsIDB4OEUs IDB4REYsIDB4OUQsIDB4NDksIDB4NDcsIDB4MDUsCi0tICAweEFCLCAweEY1LCAweDAxLCAweEQ2 LCAweDgxLCAweDQ3LCAweDcwLCAweEY1LCAweDFELCAweDZELCAweDI2LCAweEJBLAotLSAgMHgy RiwgMHg3QSwgMHg1NCwgMHg1MywgMHg0RSwgMHhFRCwgMHg3MSwgMHhEOSwgMHg1QSwgMHhGMywg MHhEQSwgMHhCNiwKLS0gIDB4MEIsIDB4NDcsIDB4MzQsIDB4QUYsIDB4OTAsIDB4REMsIDB4Qzgs IDB4RDksIDB4NkYsIDB4NTYsIDB4Q0QsIDB4OUYsCi0tICAweDIxLCAweEI3LCAweDdFLCAweEFE LCAweDdDLCAweDJGLCAweDc1LCAweDUwLCAweDQ3LCAweDEyLCAweEU0LCAweDZELAotLSAgMHg1 RiwgMHhCNywgMHgwMSwgMHhERiwgMHhDMywgMHgxMSwgMHg2QywgMHhBOSwgMHg5RSwgMHg0OSwg MHhCOSwgMHhGNiwKLS0gIDB4NzIsIDB4RjQsIDB4RjYsIDB4RUYsIDB4ODgsIDB4MUUsIDB4MkQs IDB4MUMKLSsgMHgzOCwgMHhEQSwgMHg5OSwgMHg1MSwgMHgyNiwgMHgzOCwgMHhDNiwgMHg3Riwg MHhDNCwgMHg4MSwgMHg1NywgMHgxOSwKLSsgMHgzNSwgMHhDNiwgMHhGNiwgMHgxRSwgMHg5MCwg MHg0NywgMHgyMCwgMHg1NSwgMHg0NywgMHg1NiwgMHgyNiwgMHhFOSwKLSsgMHhGMiwgMHhBOCwg MHgzOSwgMHg2QywgMHhENSwgMHhDRCwgMHhDQiwgMHg1NSwgMHhGQywgMHgwQywgMHhDNSwgMHhD QiwKLSsgMHhGNywgMHg0MCwgMHgxNywgMHgzQiwgMHhDRiwgMHhFNCwgMHgwNSwgMHgwMywgMHgz QiwgMHhBMCwgMHhCMiwgMHhDOSwKLSsgMHgwRCwgMHg1RSwgMHg0OCwgMHgzQSwgMHhFOSwgMHhB RCwgMHgyOCwgMHg3MSwgMHg3RCwgMHg4RiwgMHg4OSwgMHgxNiwKLSsgMHg1OSwgMHg5MywgMHgz NSwgMHhEQywgMHg0RCwgMHg3QiwgMHhERiwgMHg4NCwgMHhFNCwgMHg2OCwgMHhBQSwgMHgzMywK LSsgMHhBQSwgMHhEQywgMHg2NiwgMHg1MCwgMHhDOCwgMHhBOSwgMHgzMiwgMHgxMiwgMHhEQywg MHhDNiwgMHg5MCwgMHg0OSwKLSsgMHgwQiwgMHg3NSwgMHhGRiwgMHg5QiwgMHg5NSwgMHgwMCwg MHg5QSwgMHg5MCwgMHhFMCwgMHhENCwgMHgwRSwgMHg2NywKLSsgMHhBQiwgMHgzQywgMHg0Nywg MHgzNiwgMHhDNSwgMHgyRSwgMHgxQywgMHg0NiwgMHhGMCwgMHgyRCwgMHhEMywgMHg4QiwKLSsg MHg0MiwgMHgwOCwgMHhERSwgMHgwRCwgMHhCNiwgMHgyQywgMHg4NiwgMHhCMCwgMHgzNSwgMHg3 MSwgMHgxOCwgMHg2QiwKLSsgMHg4OSwgMHg2NywgMHhDMCwgMHgwNSwgMHhBRCwgMHhGNCwgMHgx RCwgMHg2MiwgMHg0RSwgMHg3NSwgMHhFQywgMHhENiwKLSsgMHhDMiwgMHhEQiwgMHgwNywgMHhC MCwgMHhCNiwgMHg4RCwgMHgxNSwgMHhBRCwgMHhDRCwgMHhCRiwgMHhGNSwgMHg2MCwKLSsgMHg3 NiwgMHhBRSwgMHg0OCwgMHhCOCwgMHg3NywgMHg3RiwgMHhDNSwgMHgwMSwgMHhEOSwgMHgyOSwg MHhCQiwgMHhENiwKLSsgMHgxNywgMHhBMiwgMHgyMCwgMHg1QSwgMHhDMCwgMHg0QSwgMHgzQiwg MHgzNCwgMHhDOCwgMHhCOSwgMHgzOSwgMHhDRiwKLSsgMHgwNiwgMHg4OSwgMHg5NSwgMHg2Riwg MHhDNywgMHhDQSwgMHhDNCwgMHhFNCwgMHg0MywgMHhERiwgMHg1QSwgMHgyMywKLSsgMHhFMiwg MHg4OSwgMHhBMywgMHgzOCwgMHg3OCwgMHgzMSwgMHgzOCwgMHhDNiwgMHhBNCwgMHg2RiwgMHg1 RiwgMHg3MywKLSsgMHg1QSwgMHhFNSwgMHg5RSwgMHgwOSwgMHhFNywgMHg2RiwgMHhENCwgMHhG OCwgMHgzRSwgMHhCNywgMHhCMCwgMHg1NiwKLSsgMHg5QSwgMHhGMywgMHg2NSwgMHhGMCwgMHhD MiwgMHhBNiwgMHg4QSwgMHgwOCwgMHhCQSwgMHg0NCwgMHhBQywgMHg5NywKLSsgMHhERSwgMHhC NCwgMHgxNiwgMHg4MywgMHhERiwgMHhFMywgMHhFRSwgMHg3MSwgMHhGQSwgMHhGOSwgMHg1MSwg MHg1MCwKLSsgMHgxNCwgMHhEQywgMHhGRCwgMHg2QSwgMHg4MiwgMHgyMCwgMHg2OCwgMHg2NCwg MHg3RCwgMHg0RSwgMHg4MiwgMHg2OCwKLSsgMHhENywgMHg0NSwgMHhGQSwgMHg2QSwgMHhFNCwg MHhFNSwgMHgyOSwgMHgzQSwgMHg3MCwgMHhGQiwgMHhFNCwgMHg2MiwKLSsgMHgyQiwgMHgzMSwg MHhCOSwgMHg3RAotIH07Ci0gCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9Q U1NfU0hBMzg0W10gPSB7Ci0tICAweDQwLCAweEZCLCAweEExLCAweDIxLCAweEY0LCAweEIyLCAw eDQwLCAweDlBLCAweEI0LCAweDMxLCAweEE4LCAweEYyLAotLSAgMHhFQywgMHgxQywgMHhDNCwg MHhDOCwgMHg3QywgMHgyMiwgMHg2NSwgMHg5QywgMHg1NywgMHg0NSwgMHhDRCwgMHg1RSwKLS0g IDB4ODYsIDB4MDAsIDB4RjcsIDB4MjUsIDB4NzgsIDB4REUsIDB4REMsIDB4N0EsIDB4NzEsIDB4 NDQsIDB4OUEsIDB4Q0QsCi0tICAweEFBLCAweDI1LCAweEY0LCAweEIyLCAweEZDLCAweEYwLCAw eDc1LCAweEQ5LCAweDJGLCAweDc4LCAweDIzLCAweDdGLAotLSAgMHg2RiwgMHgwMiwgMHhFRiwg MHhDMSwgMHhBRiwgMHhBNiwgMHgyOCwgMHgxNiwgMHgzMSwgMHhEQywgMHg0MiwgMHg2QywKLS0g IDB4QjIsIDB4NDQsIDB4RTUsIDB4NEQsIDB4NjYsIDB4QTIsIDB4RTYsIDB4NzEsIDB4RjMsIDB4 QUMsIDB4NEYsIDB4RkIsCi0tICAweDkxLCAweENBLCAweEY1LCAweDcwLCAweEVGLCAweDZCLCAw eDlELCAweEE0LCAweEVGLCAweEQ5LCAweDNELCAweDJGLAotLSAgMHgzQSwgMHhCRSwgMHg4OSwg MHgzOCwgMHg1OSwgMHgwMSwgMHhCQSwgMHhEQSwgMHgzMiwgMHhBRCwgMHg0MiwgMHg4OSwKLS0g IDB4OTgsIDB4OEIsIDB4MzksIDB4NDQsIDB4RjAsIDB4RkMsIDB4MzgsIDB4QUMsIDB4ODcsIDB4 MUYsIDB4Q0EsIDB4NkYsCi0tICAweDQ4LCAweEY2LCAweEFFLCAweEQ3LCAweDQ1LCAweEVFLCAw eEFFLCAweDg4LCAweDBFLCAweDYwLCAweEY0LCAweDU1LAotLSAgMHg0OCwgMHg0NCwgMHhFRSwg MHgxRiwgMHg5MCwgMHgxOCwgMHg0QiwgMHhGMQotKyAweDk5LCAweDAyLCAweEM5LCAweDFFLCAw eDMxLCAweDgyLCAweEI0LCAweEU2LCAweDFCLCAweDMyLCAweENFLCAweDVELAotKyAweDQxLCAw eDFELCAweDAwLCAweDJGLCAweDA0LCAweDhCLCAweEJELCAweDM3LCAweDc5LCAweENGLCAweDc3 LCAweDAzLAotKyAweDA1LCAweDZBLCAweDIxLCAweEM3LCAweDhELCAweDI0LCAweDYwLCAweDQ5 LCAweDM5LCAweDU4LCAweEM1LCAweDI3LAotKyAweDhGLCAweEM1LCAweDk3LCAweDRBLCAweEIy LCAweEUxLCAweEQ0LCAweDM2LCAweDU3LCAweEJELCAweDQzLCAweENDLAotKyAweDdCLCAweENF LCAweEYyLCAweEE1LCAweDMwLCAweEY4LCAweDcyLCAweDE0LCAweEJCLCAweEQwLCAweDlGLCAw eEMxLAotKyAweDQ5LCAweEM4LCAweDFDLCAweEFGLCAweENELCAweDk1LCAweDc4LCAweDcyLCAw eDI1LCAweEY5LCAweDQ1LCAweEM2LAotKyAweDVCLCAweDYyLCAweDVFLCAweDAxLCAweEQ3LCAw eDQwLCAweDVFLCAweEM4LCAweENBLCAweDBBLCAweEYzLCAweEJBLAotKyAweDA4LCAweDA3LCAw eDg4LCAweENBLCAweDQ5LCAweDM2LCAweDg0LCAweDdELCAweEY2LCAweEZDLCAweDVBLCAweERC LAotKyAweEZDLCAweDUwLCAweEQzLCAweEVCLCAweDNELCAweDgzLCAweEIwLCAweEY1LCAweDk0 LCAweDVFLCAweDg4LCAweEMzLAotKyAweDgyLCAweENELCAweDUzLCAweDQwLCAweDk2LCAweDE4 LCAweDZCLCAweDRBLCAweDZDLCAweDlDLCAweEZFLCAweEU1LAotKyAweDNCLCAweDc1LCAweEY5 LCAweEVCLCAweEE1LCAweDc3LCAweDExLCAweEVGLCAweDg4LCAweDFDLCAweDI1LCAweDcwLAot KyAweDdELCAweDg4LCAweDVELCAweEMzLCAweENBLCAweEUxLCAweDQ5LCAweDE0LCAweDkwLCAw eEFELCAweEYyLCAweDVFLAotKyAweDQ5LCAweEQ3LCAweDk5LCAweEE1LCAweDdCLCAweDc3LCAw eDNCLCAweDhFLCAweEI4LCAweERCLCAweEYxLCAweDRDLAotKyAweEQ2LCAweDlBLCAweERDLCAw eEU1LCAweDdBLCAweDFDLCAweEUxLCAweENFLCAweDlELCAweEYxLCAweEYzLCAweEEwLAotKyAw eDBBLCAweDM1LCAweDUyLCAweDlELCAweEI5LCAweDQ2LCAweDk0LCAweDgyLCAweDBGLCAweEY3 LCAweEIyLCAweDYyLAotKyAweDUxLCAweDcwLCAweDc1LCAweEQyLCAweDM3LCAweDk2LCAweDY3 LCAweDJGLCAweEQwLCAweDIyLCAweEQ4LCAweDA3LAotKyAweDhELCAweDY5LCAweDlFLCAweDZE LCAweDBCLCAweDQwLCAweDRGLCAweDcwLCAweEVDLCAweDBCLCAweENBLCAweDg4LAotKyAweDgw LCAweDhELCAweDlBLCAweEY0LCAweEY5LCAweDE4LCAweDUwLCAweDI3LCAweDA4LCAweEZBLCAw eENDLCAweEM3LAotKyAweDNGLCAweEU0LCAweDg0LCAweDgzLCAweEExLCAweEI2LCAweDFELCAw eDIzLCAweDM0LCAweEZFLCAweDQ4LCAweEU1LAotKyAweEUzLCAweEFFLCAweDRELCAweDk4LCAw eEJDLCAweEE2LCAweDhBLCAweDlGLCAweEZELCAweDRELCAweERCLCAweDlELAotKyAweEY3LCAw eEVCLCAweDRFLCAweEI2LCAweDZGLCAweDI1LCAweEVBLCAweDdBLCAweEU5LCAweDg1LCAweEIy LCAweEVGLAotKyAweDkwLCAweEQyLCAweEE2LCAweDJCCi0gfTsKLSAKLSBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBrYXRfUlNBX1BTU19TSEE1MTJbXSA9IHsKLS0gIDB4MDcsIDB4MUUsIDB4 RDgsIDB4RDUsIDB4MDUsIDB4RTgsIDB4RTYsIDB4RTYsIDB4NTcsIDB4QUUsIDB4NjMsIDB4OEMs Ci0tICAweEM2LCAweDgzLCAweEI3LCAweEEwLCAweDU5LCAweEJCLCAweEYyLCAweEM2LCAweDhG LCAweDEyLCAweDUzLCAweDlBLAotLSAgMHg5QiwgMHg1NCwgMHg5RSwgMHhCMywgMHhDMSwgMHgx RCwgMHgyMywgMHg0RCwgMHg1MSwgMHhFRCwgMHg5RSwgMHhERCwKLS0gIDB4NEIsIDB4RjMsIDB4 NDYsIDB4OUIsIDB4NkIsIDB4RjYsIDB4N0MsIDB4MjQsIDB4NjAsIDB4NzksIDB4MjMsIDB4Mzks Ci0tICAweDAxLCAweDFDLCAweDUxLCAweENCLCAweEQ4LCAweEU5LCAweDlBLCAweDAxLCAweDY3 LCAweDVGLCAweEZFLCAweEQ3LAotLSAgMHg3QywgMHhFMywgMHg3RiwgMHhFRCwgMHhEQiwgMHg4 NywgMHhCQiwgMHhGMCwgMHgzRCwgMHg3OCwgMHg1NSwgMHg2MSwKLS0gIDB4NTcsIDB4RTMsIDB4 MEYsIDB4RTMsIDB4RDIsIDB4OUQsIDB4MEMsIDB4MkEsIDB4MjAsIDB4QjAsIDB4ODUsIDB4MTMs Ci0tICAweEM1LCAweDQ3LCAweDM0LCAweDBELCAweDMyLCAweDE1LCAweEM4LCAweEFFLCAweDlB LCAweDZBLCAweDM5LCAweDYzLAotLSAgMHgyRCwgMHg2MCwgMHhGNSwgMHg0QywgMHhERiwgMHg4 QSwgMHg0OCwgMHg0QiwgMHhCRiwgMHhGNCwgMHhBOCwgMHhGRSwKLS0gIDB4NzYsIDB4RjIsIDB4 MzIsIDB4MUIsIDB4OUMsIDB4N0MsIDB4Q0EsIDB4RkUsIDB4N0YsIDB4ODAsIDB4QzIsIDB4ODgs Ci0tICAweDVDLCAweDk3LCAweDcwLCAweEI0LCAweDI2LCAweEM5LCAweDE0LCAweDhCCi0rIDB4 M0YsIDB4ODMsIDB4NDMsIDB4NzgsIDB4MjUsIDB4QkUsIDB4ODEsIDB4QjIsIDB4NkUsIDB4Nzgs IDB4MTEsIDB4MzIsCi0rIDB4RDAsIDB4ODgsIDB4MDUsIDB4NTMsIDB4OTUsIDB4RUQsIDB4ODEs IDB4MTIsIDB4Q0UsIDB4NTAsIDB4RDksIDB4MDYsCi0rIDB4NDIsIDB4ODksIDB4QTAsIDB4NTUs IDB4N0EsIDB4MDUsIDB4MTMsIDB4OTQsIDB4MzUsIDB4OUIsIDB4Q0EsIDB4NUQsCi0rIDB4Q0Is IDB4QjIsIDB4MzIsIDB4RTEsIDB4MDQsIDB4OTksIDB4RUMsIDB4RTcsIDB4QTYsIDB4NjksIDB4 NEQsIDB4MkIsCi0rIDB4QzEsIDB4NTcsIDB4MTMsIDB4NDgsIDB4MEQsIDB4NkIsIDB4NEQsIDB4 ODMsIDB4MjgsIDB4MDYsIDB4NzksIDB4OUQsCi0rIDB4QjQsIDB4NzAsIDB4Q0UsIDB4QzAsIDB4 RkMsIDB4M0IsIDB4NjksIDB4QjMsIDB4OTEsIDB4NTQsIDB4QTksIDB4NDQsCi0rIDB4MkUsIDB4 REEsIDB4NEEsIDB4QzUsIDB4QzIsIDB4OTksIDB4RjAsIDB4REUsIDB4Q0EsIDB4NzcsIDB4OTks IDB4NkIsCi0rIDB4MEMsIDB4NzksIDB4RTUsIDB4MjksIDB4NzQsIDB4ODMsIDB4NjksIDB4RUEs IDB4QjgsIDB4NzIsIDB4MzAsIDB4M0QsCi0rIDB4N0EsIDB4MzAsIDB4RTEsIDB4MDMsIDB4N0Is IDB4MDksIDB4RTYsIDB4MTEsIDB4QzAsIDB4REMsIDB4RkYsIDB4RkQsCi0rIDB4QkQsIDB4RUMs IDB4OUMsIDB4Q0MsIDB4NDYsIDB4N0IsIDB4NEMsIDB4NEMsIDB4NTksIDB4QkUsIDB4ODIsIDB4 N0MsCi0rIDB4RjUsIDB4NjAsIDB4NUEsIDB4QzMsIDB4RTgsIDB4QTgsIDB4OEEsIDB4MzgsIDB4 OUUsIDB4MDEsIDB4NTcsIDB4RjEsCi0rIDB4NzksIDB4M0EsIDB4N0MsIDB4QTMsIDB4OUYsIDB4 MTIsIDB4MUEsIDB4NEYsIDB4MkUsIDB4QTIsIDB4RTUsIDB4MEEsCi0rIDB4QUIsIDB4QzAsIDB4 RjQsIDB4QTUsIDB4RTMsIDB4NUYsIDB4ODksIDB4MUMsIDB4OEYsIDB4QTQsIDB4NUUsIDB4Q0Us Ci0rIDB4MEQsIDB4OTEsIDB4MDUsIDB4MUIsIDB4MTcsIDB4NjIsIDB4NDgsIDB4RkUsIDB4QTUs IDB4NEMsIDB4RUYsIDB4MkQsCi0rIDB4MjgsIDB4RjEsIDB4NUUsIDB4RTYsIDB4RDEsIDB4MzAs IDB4ODksIDB4MEEsIDB4QUQsIDB4MTgsIDB4QUYsIDB4NkYsCi0rIDB4MDQsIDB4MDksIDB4MzYs IDB4OUEsIDB4RkYsIDB4Q0EsIDB4QTEsIDB4QTcsIDB4MDUsIDB4N0YsIDB4RDQsIDB4QkYsCi0r IDB4M0EsIDB4QjUsIDB4NDIsIDB4NkQsIDB4RTksIDB4MDcsIDB4MjksIDB4NjUsIDB4OEIsIDB4 QUQsIDB4NEQsIDB4MEYsCi0rIDB4MjIsIDB4RTEsIDB4NTksIDB4NDMsIDB4NjgsIDB4ODcsIDB4 QTgsIDB4OEIsIDB4QkMsIDB4NjksIDB4QTEsIDB4OTQsCi0rIDB4MjIsIDB4M0UsIDB4OEEsIDB4 NDksIDB4RTgsIDB4QTMsIDB4NkYsIDB4QzIsIDB4OTMsIDB4NTgsIDB4RTcsIDB4QUUsCi0rIDB4 QzksIDB4MUYsIDB4Q0YsIDB4NjEsIDB4OTMsIDB4RkMsIDB4QzEsIDB4RjYsIDB4RjMsIDB4Mjcs IDB4N0YsIDB4MEEsCi0rIDB4OTAsIDB4RTAsIDB4NjUsIDB4MzIsIDB4NTcsIDB4NDcsIDB4RTIs IDB4RUQsIDB4MDgsIDB4NTksIDB4QTYsIDB4RjAsCi0rIDB4MTcsIDB4MkMsIDB4MTMsIDB4RTAK LSB9OwotIAotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfU0hBMVtdID0gewot LSAgMHg3MSwgMHhFRSwgMHgxQSwgMHhDMCwgMHhGRSwgMHgwMSwgMHg5MywgMHg1NCwgMHg3OSwg MHg1QywgMHhGMiwgMHg0QywKLS0gIDB4NEEsIDB4RkQsIDB4MUEsIDB4MDUsIDB4OEYsIDB4NjQs IDB4QjEsIDB4NkQsIDB4NjEsIDB4MzMsIDB4OEQsIDB4OUIsCi0tICAweEU3LCAweEZELCAweDYw LCAweEEzLCAweDgzLCAweEI1LCAweEEzLCAweDUxLCAweDU1LCAweDc3LCAweDkwLCAweENGLAot LSAgMHhEQywgMHgyMiwgMHgzNywgMHg4RSwgMHhEMCwgMHhFMSwgMHhBRSwgMHgwOSwgMHhFMywg MHgzRCwgMHgxRSwgMHhGOCwKLS0gIDB4ODAsIDB4RDEsIDB4OEIsIDB4QzIsIDB4RUMsIDB4MEEs IDB4RDcsIDB4NkIsIDB4ODgsIDB4OEIsIDB4OEIsIDB4QTEsCi0tICAweDIwLCAweDIyLCAweEJF LCAweDU5LCAweDVCLCAweEUwLCAweDIzLCAweDI0LCAweEExLCAweDQ5LCAweDMwLCAweEJBLAot LSAgMHhBOSwgMHg5RSwgMHhFOCwgMHhCMSwgMHg4QSwgMHg2MiwgMHgxNiwgMHhCRiwgMHg0RSwg MHhDQSwgMHgyRSwgMHg0RSwKLS0gIDB4QkMsIDB4MjksIDB4QTgsIDB4NjcsIDB4MTMsIDB4Qjcs IDB4OUYsIDB4MUQsIDB4MDQsIDB4NDQsIDB4RTUsIDB4NUYsCi0tICAweDM1LCAweDA3LCAweDEx LCAweEJDLCAweEVELCAweDE5LCAweDM3LCAweDIxLCAweENGLCAweDIzLCAweDQ4LCAweDFGLAot LSAgMHg3MiwgMHgwNSwgMHhERSwgMHhFNiwgMHhFOCwgMHg3RiwgMHgzMywgMHg4QSwgMHg3Niwg MHg0QiwgMHgyRiwgMHg5NSwKLS0gIDB4REYsIDB4RjEsIDB4NUYsIDB4ODQsIDB4ODAsIDB4RDks IDB4NDYsIDB4QjQKLSsgMHgzQiwgMHg2MCwgMHg0QiwgMHhGQywgMHg1NCwgMHgyOCwgMHgyMywg MHhFNiwgMHgyRiwgMHgwNSwgMHgwNCwgMHhCQSwKLSsgMHg5RCwgMHhFNCwgMHgzQywgMHhCOCwg MHg1QiwgMHg2MCwgMHg1QywgMHhDRCwgMHg5RCwgMHhFQSwgMHhDMywgMHg0QywKLSsgMHhDMiwg MHgzMywgMHhFNiwgMHhDNiwgMHgyMSwgMHg0OCwgMHg3NiwgMHhFQywgMHhCMiwgMHhGNSwgMHgx MSwgMHhERSwKLSsgMHg0NCwgMHhCNCwgMHhBRiwgMHgxNiwgMHgxMSwgMHhDMywgMHgxOCwgMHgx NiwgMHhCMywgMHg2OSwgMHhCQiwgMHg5NCwKLSsgMHhFRCwgMHhFOCwgMHhCMywgMHg5RSwgMHhC MSwgMHg0MywgMHg4RSwgMHhDRSwgMHhCNCwgMHgzNCwgMHg5QiwgMHgwOCwKLSsgMHgyMiwgMHhB RiwgMHgzMSwgMHg3MywgMHhCNSwgMHhGQSwgMHgxMSwgMHg3RSwgMHg4RiwgMHgxMywgMHg1Miwg MHhFQywKLSsgMHhDOSwgMHgwMywgMHhFRSwgMHgwRCwgMHgyQiwgMHg5MSwgMHgzMiwgMHhGMiwg MHg4RSwgMHhERiwgMHgwMiwgMHhFMCwKLSsgMHgwQSwgMHg0NywgMHhEMiwgMHgwQSwgMHg1MSwg MHgwMCwgMHgxQSwgMHgzMCwgMHg2RiwgMHgwQywgMHhCMywgMHg1NCwKLSsgMHg2NCwgMHgyMCwg MHg5MCwgMHgwQywgMHgwMSwgMHhCRSwgMHhDMCwgMHg0MiwgMHg4QywgMHg1RCwgMHgxOCwgMHg2 RiwKLSsgMHgzMiwgMHg3NSwgMHg0NSwgMHg3QiwgMHgxQywgMHgwNCwgMHhBMiwgMHg5RiwgMHg4 NCwgMHhENywgMHhGNSwgMHgzQSwKLSsgMHg5NSwgMHhENCwgMHhFOCwgMHg4RCwgMHhFQywgMHg5 OSwgMHhFRiwgMHgxOCwgMHg1RSwgMHg2NCwgMHhEMywgMHhBRiwKLSsgMHhGOCwgMHhENCwgMHhG RiwgMHgzQywgMHg4NywgMHhBMCwgMHgzRiwgMHhDNywgMHgyMiwgMHgwNSwgMHhGRCwgMHhGRCwK LSsgMHgyOSwgMHg4QSwgMHgyOCwgMHhEQSwgMHhBOSwgMHg4QSwgMHg4QiwgMHgyMywgMHg2Miwg MHg5RCwgMHg0MiwgMHhCOCwKLSsgMHg0QSwgMHg3NiwgMHgwRCwgMHg5RiwgMHg5QSwgMHhFMCwg MHhFNiwgMHhERCwgMHhBRCwgMHg1RSwgMHg1RiwgMHhENSwKLSsgMHgzMiwgMHhFOSwgMHg0Qiwg MHg5NywgMHg3RCwgMHg2MiwgMHgwQSwgMHhCMywgMHhCRSwgMHhGMiwgMHg4QywgMHgxRiwKLSsg MHgyQiwgMHgyMiwgMHgwNiwgMHgxNSwgMHgzMywgMHg3MSwgMHhFRCwgMHg5QiwgMHhBMCwgMHg4 MiwgMHhDRSwgMHhCRiwKLSsgMHgzQiwgMHgwOCwgMHg1RiwgMHhBNywgMHgyMCwgMHg5NCwgMHgw OSwgMHhFQiwgMHg4MiwgMHhBNSwgMHg0MSwgMHg2MCwKLSsgMHhGMSwgMHgwOCwgMHhFQiwgMHg4 RCwgMHhDQywgMHg4RCwgMHhDOSwgMHg1MiwgMHgwQSwgMHhBRiwgMHhGNCwgMHhGOSwKLSsgMHg5 RiwgMHg4MiwgMHhEOCwgMHgwQiwgMHg3NSwgMHg1RSwgMHhFNCwgMHhBRiwgMHg2NSwgMHg5Niwg MHhBRiwgMHhGQywKLSsgMHgzMywgMHhCRiwgMHg5RiwgMHgzRSwgMHhBNCwgMHg3QiwgMHg4Niwg MHhDNywgMHhGNywgMHg0NywgMHhBQiwgMHgzNywKLSsgMHgwNSwgMHhENiwgMHgwRCwgMHgzMSwg MHg3MiwgMHg4QywgMHg4MCwgMHgxRSwgMHhBOSwgMHg1NCwgMHhGQywgMHhERiwKLSsgMHgyNywg MHg5MCwgMHhFMiwgMHgwMQotIH07Ci0gCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0 X1JTQV9TSEEyMjRbXSA9IHsKLS0gIDB4NjIsIDB4QUEsIDB4NzksIDB4QTksIDB4MTgsIDB4MEUs IDB4NUYsIDB4OEMsIDB4QkIsIDB4QjcsIDB4MTUsIDB4RjksCi0tICAweDI1LCAweEJCLCAweEZB LCAweEQ0LCAweDNBLCAweDM0LCAweEVELCAweDlFLCAweEEwLCAweEE5LCAweDE4LCAweDhELAot LSAgMHg1QiwgMHg1NSwgMHg5QSwgMHg3RSwgMHgxRSwgMHgwOCwgMHgwOCwgMHg2MCwgMHhDNSwg MHgxQSwgMHhDNSwgMHg4OSwKLS0gIDB4MDgsIDB4RTIsIDB4MUIsIDB4QkQsIDB4NjIsIDB4NTAs IDB4MTcsIDB4NzYsIDB4MzAsIDB4MkMsIDB4OUUsIDB4Q0QsCi0tICAweEE0LCAweDAyLCAweEFE LCAweEIxLCAweDZELCAweDQ0LCAweDZELCAweEQ1LCAweEM2LCAweDQ1LCAweDQxLCAweEU1LAot LSAgMHhFRSwgMHgxRiwgMHg4RCwgMHg3RSwgMHgwOCwgMHgxNiwgMHhBNiwgMHhFMSwgMHg1RSwg MHgwQiwgMHhBOSwgMHhDQywKLS0gIDB4REIsIDB4NTksIDB4NTUsIDB4ODcsIDB4MDksIDB4MjUs IDB4NzAsIDB4ODYsIDB4ODQsIDB4MDIsIDB4QzYsIDB4M0IsCi0tICAweDBCLCAweDQ0LCAweDRD LCAweDQ2LCAweDk1LCAweEY0LCAweEY4LCAweDVBLCAweDkxLCAweDI4LCAweDNFLCAweEIyLAot LSAgMHg1OCwgMHgyRSwgMHgwNiwgMHg0NSwgMHg0OSwgMHhFMCwgMHg5MiwgMHhFMiwgMHhDMCwg MHg2NiwgMHhFNiwgMHgzNSwKLS0gIDB4RDksIDB4NzksIDB4N0YsIDB4MTcsIDB4NUUsIDB4MDIs IDB4NzMsIDB4MDQsIDB4NzcsIDB4ODIsIDB4RTYsIDB4REMsCi0tICAweDQwLCAweDIxLCAweDg5 LCAweDhCLCAweDM3LCAweDNFLCAweDFFLCAweDhECi0rIDB4QTIsIDB4RDgsIDB4NDIsIDB4NTMs IDB4REQsIDB4QkYsIDB4MUYsIDB4NkIsIDB4MDcsIDB4RTAsIDB4NjAsIDB4ODYsCi0rIDB4NUEs IDB4NjAsIDB4MDYsIDB4OEYsIDB4NDQsIDB4RDksIDB4QjAsIDB4NEEsIDB4QUEsIDB4OTAsIDB4 NzEsIDB4QjgsCi0rIDB4QjIsIDB4QkMsIDB4MzAsIDB4NDEsIDB4NTAsIDB4QkIsIDB4RkQsIDB4 NDYsIDB4OTgsIDB4NEQsIDB4QzAsIDB4ODksCi0rIDB4NTcsIDB4ODUsIDB4OEEsIDB4OTcsIDB4 NDksIDB4MjUsIDB4QTgsIDB4MEMsIDB4NjksIDB4NzAsIDB4MTksIDB4MzksCi0rIDB4NjYsIDB4 MjQsIDB4QjQsIDB4NjksIDB4NDcsIDB4RDIsIDB4N0MsIDB4REUsIDB4MkQsIDB4MzcsIDB4NTks IDB4QjMsCi0rIDB4RTMsIDB4QzcsIDB4NkIsIDB4REQsIDB4QkUsIDB4RTEsIDB4RTYsIDB4Mjgs IDB4OUEsIDB4OEQsIDB4NDIsIDB4M0UsCi0rIDB4MjgsIDB4MDEsIDB4RDcsIDB4MDMsIDB4Qzks IDB4NzMsIDB4QzMsIDB4NkIsIDB4MDMsIDB4RUMsIDB4MUUsIDB4RjgsCi0rIDB4NTMsIDB4OEIs IDB4NTIsIDB4NDIsIDB4ODksIDB4NTUsIDB4QjcsIDB4ODcsIDB4QTksIDB4OTQsIDB4QzIsIDB4 QjQsCi0rIDB4NEIsIDB4NzYsIDB4RjUsIDB4NjEsIDB4NDcsIDB4RTEsIDB4NDQsIDB4N0IsIDB4 RUMsIDB4QjQsIDB4MjUsIDB4NjYsCi0rIDB4QzAsIDB4RkYsIDB4RUIsIDB4ODYsIDB4MjQsIDB4 QUEsIDB4QTgsIDB4NzIsIDB4QzcsIDB4RkIsIDB4RkIsIDB4RjYsCi0rIDB4ODQsIDB4QTcsIDB4 NUIsIDB4RDQsIDB4ODcsIDB4RTUsIDB4ODQsIDB4NTYsIDB4MUUsIDB4NEMsIDB4RTUsIDB4QkMs Ci0rIDB4ODcsIDB4OTQsIDB4QUMsIDB4OUMsIDB4MUIsIDB4M0QsIDB4RjcsIDB4RDQsIDB4MzYs IDB4ODUsIDB4OUYsIDB4QzksCi0rIDB4RjYsIDB4NDMsIDB4M0YsIDB4QjYsIDB4MjUsIDB4MzMs IDB4NDgsIDB4MEYsIDB4RTUsIDB4N0MsIDB4Q0QsIDB4NTMsCi0rIDB4NDgsIDB4RUIsIDB4MDIs IDB4MTEsIDB4QjksIDB4OUUsIDB4QzMsIDB4QjQsIDB4RTEsIDB4NTQsIDB4RDYsIDB4QUEsCi0r IDB4MUEsIDB4OUUsIDB4MTAsIDB4RTEsIDB4MjcsIDB4MjUsIDB4RjIsIDB4RTEsIDB4QUIsIDB4 QUIsIDB4NkMsIDB4NDUsCi0rIDB4NjEsIDB4RDUsIDB4QTMsIDB4NkMsIDB4QjYsIDB4MzMsIDB4 NTIsIDB4QUUsIDB4M0QsIDB4RkQsIDB4MjIsIDB4RkMsCi0rIDB4M0EsIDB4QUIsIDB4NjMsIDB4 OTQsIDB4QjUsIDB4M0EsIDB4NjksIDB4MTEsIDB4QUMsIDB4OTksIDB4NEYsIDB4MzMsCi0rIDB4 NjcsIDB4MEEsIDB4MUEsIDB4NzAsIDB4MUUsIDB4QjksIDB4RTIsIDB4MjYsIDB4MjcsIDB4Njgs IDB4RUEsIDB4RjUsCi0rIDB4OTcsIDB4NTUsIDB4QUMsIDB4ODMsIDB4NkEsIDB4NDAsIDB4M0Is IDB4NTYsIDB4QUUsIDB4MTMsIDB4ODgsIDB4RTgsCi0rIDB4OTgsIDB4NzIsIDB4NTIsIDB4OTEs IDB4N0YsIDB4NzgsIDB4MEEsIDB4MTgsIDB4RDQsIDB4NDQsIDB4NzgsIDB4ODMsCi0rIDB4MEQs IDB4NDQsIDB4NzcsIDB4QTYsIDB4RjMsIDB4MDQsIDB4RjEsIDB4OEMsIDB4QkMsIDB4MkYsIDB4 RjksIDB4NUIsCi0rIDB4REIsIDB4NzAsIDB4MDAsIDB4RjYKLSB9OwotIAotIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfU0hBMjU2W10gPSB7Ci0tICAweDBELCAweDU1LCAweEUy LCAweEFBLCAweDgxLCAweERCLCAweDhFLCAweDgyLCAweDA1LCAweDE3LCAweEE1LCAweDIzLAot LSAgMHhFNywgMHgzQiwgMHgxRCwgMHhBRiwgMHhGQiwgMHg4QywgMHhEMCwgMHg4MSwgMHgyMCwg MHg3QiwgMHhBQSwgMHgyMywKLS0gIDB4OTIsIDB4ODcsIDB4OEMsIDB4RDEsIDB4NTMsIDB4ODUs IDB4MTYsIDB4REMsIDB4QkUsIDB4QUQsIDB4NkYsIDB4MzUsCi0tICAweDk4LCAweDJELCAweDY5 LCAweDg0LCAweEJGLCAweEQ5LCAweDhBLCAweDAxLCAweDE3LCAweDU4LCAweEIyLCAweDZFLAot LSAgMHgyQywgMHg0NCwgMHg5QiwgMHg5MCwgMHhGMSwgMHhGQiwgMHg1MSwgMHhFOCwgMHg2QSwg MHg5MCwgMHgyRCwgMHgxOCwKLS0gIDB4MEUsIDB4QzAsIDB4OTAsIDB4MTAsIDB4MjQsIDB4QTks IDB4MUQsIDB4QjMsIDB4NTgsIDB4N0EsIDB4OTEsIDB4MzAsCi0tICAweEJFLCAweDIyLCAweEM3 LCAweEQzLCAweEVDLCAweEMzLCAweDA5LCAweDVELCAweEJGLCAweEUyLCAweDgwLCAweDNBLAot LSAgMHg3QywgMHg4NSwgMHhCNCwgMHhCQywgMHhEMSwgMHhFOSwgMHhGMCwgMHg1QywgMHhERSwg MHg4MSwgMHhBNiwgMHgzOCwKLS0gIDB4QjgsIDB4NDIsIDB4QkIsIDB4ODYsIDB4QzUsIDB4OUQs IDB4Q0UsIDB4N0MsIDB4MkMsIDB4RUUsIDB4RDEsIDB4REEsCi0tICAweDI3LCAweDQ4LCAweDJC LCAweEY1LCAweEFCLCAweEI5LCAweEY3LCAweDgwLCAweEQxLCAweDkwLCAweDI3LCAweDkwLAot LSAgMHhCRCwgMHg0NCwgMHg5NywgMHg2MCwgMHhDRCwgMHg1NywgMHhDMCwgMHg3QQotKyAweEMy LCAweEIxLCAweDk3LCAweDAwLCAweDlBLCAweEU1LCAweDgwLCAweDZBLCAweEUyLCAweDUxLCAw eDY4LCAweEI5LAotKyAweDdBLCAweDBDLCAweEYyLCAweEI0LCAweDc3LCAweEVELCAweDE1LCAw eDBDLCAweDRFLCAweEUxLCAweERDLCAweEZGLAotKyAweDhFLCAweEJDLCAweERFLCAweEM3LCAw eDlBLCAweDk2LCAweEYxLCAweDQ3LCAweDQ1LCAweDI0LCAweDlELCAweDZGLAotKyAweEE2LCAw eEYzLCAweDFELCAweDBELCAweDM1LCAweDRDLCAweDFBLCAweEYzLCAweDU4LCAweDJDLCAweDZD LCAweDA2LAotKyAweEQ2LCAweDIyLCAweDM3LCAweDc3LCAweDhDLCAweDMzLCAweEU1LCAweDA3 LCAweDUzLCAweDkzLCAweDI4LCAweENGLAotKyAweDY3LCAweEZBLCAweEM0LCAweDFGLCAweDFC LCAweDI0LCAweERCLCAweDRDLCAweEM1LCAweDJBLCAweDUxLCAweEEyLAotKyAweDYwLCAweDE1 LCAweDhDLCAweDU0LCAweEI0LCAweDMwLCAweEUyLCAweDI0LCAweDQ3LCAweDg2LCAweEYyLCAw eEY4LAotKyAweDZDLCAweEQ2LCAweDEyLCAweDU5LCAweDJDLCAweDc0LCAweDlBLCAweDM3LCAw eEYzLCAweEM0LCAweEEyLCAweEQ1LAotKyAweDRFLCAweDFGLCAweDc3LCAweEYwLCAweDI3LCAw eENFLCAweDc3LCAweEY4LCAweDRBLCAweDc5LCAweDAzLCAweEJFLAotKyAweEM4LCAweDA2LCAw eDJELCAweEE3LCAweEE2LCAweDQ2LCAweEY1LCAweDU1LCAweDc5LCAweEQ3LCAweDVDLCAweEM2 LAotKyAweDVCLCAweEIxLCAweDAwLCAweDRFLCAweDdDLCAweEQ5LCAweDExLCAweDg1LCAweEUw LCAweEIxLCAweDRELCAweDJELAotKyAweDEzLCAweEQ3LCAweEFDLCAweEVBLCAweDY0LCAweEQx LCAweEFDLCAweDhGLCAweDhELCAweDhGLCAweEVBLCAweDQyLAotKyAweDdGLCAweEY5LCAweEI3 LCAweDdELCAweDJDLCAweDY4LCAweDQ5LCAweDA3LCAweDdBLCAweDc0LCAweEVGLCAweEI0LAot KyAweEM5LCAweDk3LCAweDE2LCAweDVDLCAweDZDLCAweDZFLCAweDVDLCAweDA5LCAweDJFLCAw eDhFLCAweDEzLCAweDJFLAotKyAweDFBLCAweDhELCAweEE2LCAweDBDLCAweDZFLCAweDBDLCAw eDFDLCAweDBGLCAweENDLCAweEIyLCAweDc4LCAweDhBLAotKyAweDA3LCAweEZDLCAweDVDLCAw eEMyLCAweEY1LCAweDY1LCAweEVDLCAweEFCLCAweDhCLCAweDNDLCAweENBLCAweDkxLAotKyAw eDZGLCAweDg0LCAweDdDLCAweDIxLCAweDBFLCAweEI4LCAweERBLCAweDdCLCAweDZDLCAweEY3 LCAweERGLCAweEFCLAotKyAweDdFLCAweDE1LCAweEZELCAweDg1LCAweDBCLCAweDMzLCAweDlC LCAweDZBLCAweDNBLCAweEMzLCAweEVGLCAweDY1LAotKyAweDA0LCAweDZFLCAweEIyLCAweEFD LCAweDk4LCAweEZELCAweEVCLCAweDAyLCAweEY1LCAweEMwLCAweDBCLCAweDVFLAotKyAweENC LCAweEQ0LCAweDgzLCAweDgyLCAweDE4LCAweDFCLCAweERBLCAweEI0LCAweENELCAweEU4LCAw eDcxLCAweDZCLAotKyAweDFELCAweEI1LCAweDRGLCAweEU5LCAweEQ2LCAweDQzLCAweEEwLCAw eDBBLCAweDE0LCAweEEwLCAweEU3LCAweDVELAotKyAweDQ3LCAweDlELCAweDE4LCAweEQ3Ci0g fTsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1NIQTM4NFtdID0gewot LSAgMHgxRCwgMHhFMywgMHg2QSwgMHhERCwgMHgyNywgMHg0QywgMHhDMCwgMHhBNSwgMHgyNywg MHhFRiwgMHhFNiwgMHgxRiwKLS0gIDB4RDIsIDB4OTEsIDB4NjgsIDB4NTksIDB4MDQsIDB4QUUs IDB4QkQsIDB4OTksIDB4NjMsIDB4NTYsIDB4NDcsIDB4QzcsCi0tICAweDZGLCAweDIyLCAweDE2 LCAweDQ4LCAweEQwLCAweEY5LCAweDE4LCAweEE5LCAweENBLCAweEZBLCAweDVELCAweDVDLAot LSAgMHhBNywgMHg2NSwgMHg1MiwgMHg4QSwgMHhDOCwgMHg0NCwgMHg3RSwgMHg4NiwgMHg1RCwg MHhBOSwgMHhBNiwgMHg1NSwKLS0gIDB4NjUsIDB4M0UsIDB4RDksIDB4MkQsIDB4MDIsIDB4Mzgs IDB4QTgsIDB4NzksIDB4MjgsIDB4N0YsIDB4QjYsIDB4Q0YsCi0tICAweDgyLCAweERELCAweDdF LCAweDU1LCAweEUxLCAweEIxLCAweEJDLCAweEUyLCAweDE5LCAweDJCLCAweDMwLCAweEMyLAot LSAgMHgxQiwgMHgyQiwgMHhCMCwgMHg4MiwgMHg0NiwgMHhBQywgMHg0QiwgMHhEMSwgMHhFMiwg MHg3RCwgMHhFQiwgMHg4QywKLS0gIDB4RkYsIDB4OTUsIDB4RTksIDB4NkEsIDB4MUMsIDB4M0Qs IDB4NEQsIDB4QkYsIDB4OEYsIDB4OEIsIDB4OUMsIDB4Q0QsCi0tICAweEVBLCAweDg1LCAweEVF LCAweDAwLCAweERDLCAweDFDLCAweEE3LCAweEVCLCAweEQwLCAweDhGLCAweDk5LCAweEYxLAot LSAgMHgxNiwgMHgyOCwgMHgyNCwgMHg2NCwgMHgwNCwgMHgzOSwgMHgyRCwgMHg1OCwgMHgxRSwg MHgzNywgMHhEQywgMHgwNCwKLS0gIDB4QkQsIDB4MzEsIDB4QTIsIDB4MkYsIDB4QjMsIDB4MzUs IDB4NTYsIDB4QkYKLSsgMHgxMSwgMHg1RSwgMHg2MywgMHhGRSwgMHg0NywgMHhBQSwgMHg2QSwg MHg4NCwgMHhFQiwgMHg0NCwgMHg5QSwgMHgwMCwKLSsgMHg5NiwgMHg0QSwgMHhFRCwgMHhEMiwg MHhBNywgMHg2NywgMHgzQSwgMHg2NCwgMHg4MiwgMHgzMCwgMHg2MSwgMHgyRCwKLSsgMHhFMywg MHhGNSwgMHg0OSwgMHg2OCwgMHg1RSwgMHg2MCwgMHhEMiwgMHg0RCwgMHhFRiwgMHhGMiwgMHhB NCwgMHhCMiwKLSsgMHg5QSwgMHg4MSwgMHgxRCwgMHg0MSwgMHhBNSwgMHg3MywgMHg1OSwgMHhF QiwgMHhCQiwgMHhDNCwgMHg5RSwgMHgyQiwKLSsgMHhFQiwgMHhDMywgMHhERSwgMHgzQSwgMHhF QSwgMHhGNSwgMHhBRCwgMHhEQSwgMHg4NywgMHgwOCwgMHg2OCwgMHhDRiwKLSsgMHgxMiwgMHg5 QiwgMHhDMSwgMHhFNCwgMHhBNywgMHg3MSwgMHhGOCwgMHhCRCwgMHg2QiwgMHg2RiwgMHg1MCwg MHhGMSwKLSsgMHhEMSwgMHhGRiwgMHhDRSwgMHg2QywgMHhEOSwgMHhCRSwgMHhEQSwgMHg3Niwg MHhGMywgMHhFQiwgMHhBQiwgMHg5QywKLSsgMHg0MSwgMHg2RSwgMHg0RiwgMHgzNSwgMHg3QSwg MHg2MSwgMHgyNywgMHhCQywgMHgwMywgMHgzRSwgMHhBRSwgMHgzRSwKLSsgMHgxQiwgMHhERCwg MHhBQywgMHhEOSwgMHgxQSwgMHhGRiwgMHhEMywgMHhGNSwgMHg2NiwgMHg0MywgMHgwNywgMHg3 NiwKLSsgMHg4QSwgMHg2OSwgMHgyRCwgMHgxNCwgMHhCMSwgMHhCRSwgMHg1NSwgMHg0OSwgMHg5 MCwgMHg4OSwgMHg0QiwgMHhDNCwKLSsgMHgxMSwgMHg2NywgMHhENSwgMHg5RCwgMHhCMCwgMHhC MiwgMHhFRSwgMHg4RCwgMHgwQSwgMHg0NywgMHg0QSwgMHhEOSwKLSsgMHgwRSwgMHhEMSwgMHgy NCwgMHhGMCwgMHgzMCwgMHgyQiwgMHhGMiwgMHg3OSwgMHg0NywgMHhEQiwgMHg3MCwgMHhCNCwK LSsgMHg0NiwgMHhGMiwgMHhGOCwgMHhCNywgMHhCNCwgMHhGNiwgMHgzNCwgMHg3OSwgMHhBOCwg MHgyRCwgMHgzRCwgMHg1NiwKLSsgMHhENSwgMHg5QSwgMHg2MCwgMHg3QSwgMHgwNCwgMHhDNywg MHg2NiwgMHgxRCwgMHhDRCwgMHgzQywgMHhENSwgMHgzOSwKLSsgMHgzNywgMHgxMiwgMHg1MSwg MHg1RSwgMHg5RiwgMHhGOCwgMHgxQSwgMHhBRiwgMHgxMywgMHhDMSwgMHgxMywgMHgwMCwKLSsg MHgzNSwgMHhENSwgMHg4RCwgMHgxNywgMHhFMywgMHgwMiwgMHgyOCwgMHhEOSwgMHhFQywgMHhE RSwgMHhEMSwgMHgyRiwKLSsgMHg5MywgMHg0OSwgMHgwMywgMHgxMSwgMHgzRSwgMHg1NiwgMHg5 RCwgMHhDMiwgMHgzMSwgMHhGOCwgMHhBRiwgMHgyRCwKLSsgMHhEOSwgMHg5OSwgMHhCNywgMHg4 QSwgMHhBQywgMHg1QSwgMHg4NiwgMHgyMCwgMHgzQSwgMHg4MywgMHgyOSwgMHgyNiwKLSsgMHg5 RCwgMHgwMywgMHg1MiwgMHgyQiwgMHgzNCwgMHg1NiwgMHg0MCwgMHgxNiwgMHg1MywgMHg1MCwg MHg4MiwgMHhDOSwKLSsgMHhDNywgMHhENSwgMHg1MSwgMHg0QywgMHhFRCwgMHhCMywgMHhFMiwg MHhFMSwgMHhDRiwgMHhBOCwgMHhDRSwgMHhCRCwKLSsgMHhCMSwgMHg0OCwgMHhBNiwgMHg4QSwg MHg3OSwgMHgxNywgMHg1NSwgMHgxMSwgMHhFRiwgMHhFOCwgMHgxNCwgMHhGNCwKLSsgMHg3RSwg MHgzNywgMHgxRCwgMHg5NgotIH07Ci0gCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0 X1JTQV9TSEE1MTJbXSA9IHsKLS0gIDB4NjksIDB4NTIsIDB4MUIsIDB4NTEsIDB4NUUsIDB4MDYs IDB4Q0EsIDB4OUIsIDB4MTYsIDB4NTEsIDB4NUQsIDB4Q0YsCi0tICAweDQ5LCAweDI1LCAweDRB LCAweEExLCAweDZBLCAweDc3LCAweDRDLCAweDM2LCAweDQwLCAweEY4LCAweEIyLCAweDlBLAot LSAgMHgxNSwgMHhFQSwgMHg1QywgMHhFNSwgMHhFNiwgMHg4MiwgMHhFMCwgMHg4NiwgMHg4Miwg MHg2QiwgMHgzMiwgMHhGMSwKLS0gIDB4MDQsIDB4QzEsIDB4NUEsIDB4MUEsIDB4RUQsIDB4MUUs IDB4OUEsIDB4QjYsIDB4NEMsIDB4NTQsIDB4OUYsIDB4RDgsCi0tICAweDhELCAweENDLCAweEFD LCAweDhBLCAweEJCLCAweDlDLCAweDgyLCAweDNGLCAweEE2LCAweDUzLCAweDYyLCAweEI1LAot LSAgMHg4MCwgMHhFMiwgMHhCQywgMHhERCwgMHg2NywgMHgyQiwgMHhEOSwgMHgzRiwgMHhFNCwg MHg3NSwgMHg5MiwgMHg2QiwKLS0gIDB4QUYsIDB4NjIsIDB4N0MsIDB4NTIsIDB4RjAsIDB4RUUs IDB4MzMsIDB4REYsIDB4MUIsIDB4MUQsIDB4NDcsIDB4RTYsCi0tICAweDU5LCAweDU2LCAweEE1 LCAweEI5LCAweDVDLCAweEU2LCAweDc3LCAweDc4LCAweDE2LCAweDYzLCAweDg0LCAweDA1LAot LSAgMHg2RiwgMHgwRSwgMHgyQiwgMHgzMSwgMHg5RCwgMHhGNywgMHg3RiwgMHhCMiwgMHg2NCwg MHg3MSwgMHhFMCwgMHgyRCwKLS0gIDB4M0UsIDB4NjIsIDB4Q0UsIDB4QjUsIDB4M0YsIDB4ODgs IDB4REYsIDB4MkQsIDB4QUIsIDB4OTgsIDB4NjUsIDB4OTEsCi0tICAweERGLCAweDcwLCAweDE0 LCAweEE1LCAweDNGLCAweDM2LCAweEFCLCAweDg0Ci0rIDB4MzUsIDB4NkQsIDB4RjEsIDB4OUUs IDB4Q0YsIDB4QjEsIDB4RjYsIDB4MEMsIDB4MDQsIDB4MjEsIDB4MTcsIDB4QjMsCi0rIDB4QzQs IDB4OUQsIDB4RkUsIDB4NjIsIDB4MUMsIDB4MUEsIDB4NDUsIDB4MDAsIDB4MkUsIDB4NkIsIDB4 QjYsIDB4OUYsCi0rIDB4NUMsIDB4QjEsIDB4Q0IsIDB4Q0YsIDB4RjksIDB4NjcsIDB4RUEsIDB4 NjIsIDB4OEEsIDB4RUIsIDB4NzcsIDB4MDIsCi0rIDB4NDIsIDB4MzAsIDB4ODgsIDB4QjEsIDB4 NDgsIDB4REYsIDB4MTIsIDB4NjAsIDB4NkUsIDB4OTIsIDB4QkIsIDB4NEIsCi0rIDB4MDksIDB4 NjgsIDB4RDEsIDB4NzAsIDB4MkIsIDB4NTksIDB4RUUsIDB4NTcsIDB4OTYsIDB4RjksIDB4RUEs IDB4QTMsCi0rIDB4NEMsIDB4RTksIDB4QzksIDB4QkQsIDB4MjUsIDB4MzQsIDB4NjYsIDB4MTUs IDB4NkMsIDB4QzksIDB4ODEsIDB4RDEsCi0rIDB4NDgsIDB4MEYsIDB4MzMsIDB4NUYsIDB4MDUs IDB4NEYsIDB4QzIsIDB4QzQsIDB4REQsIDB4MDksIDB4NTQsIDB4NzksCi0rIDB4QTEsIDB4NTcs IDB4MDcsIDB4NzAsIDB4QTAsIDB4MzMsIDB4MDIsIDB4NEQsIDB4NUQsIDB4RTksIDB4MjQsIDB4 RDEsCi0rIDB4RUYsIDB4RjAsIDB4NjEsIDB4RDAsIDB4MUQsIDB4NDEsIDB4RTIsIDB4OUIsIDB4 MkIsIDB4N0MsIDB4RDAsIDB4NEUsCi0rIDB4NTUsIDB4RDksIDB4NkQsIDB4QTEsIDB4MTYsIDB4 OUYsIDB4REEsIDB4QzMsIDB4M0IsIDB4RjEsIDB4NzQsIDB4RDEsCi0rIDB4OTksIDB4RjEsIDB4 NjMsIDB4NTcsIDB4QUQsIDB4QzcsIDB4NTUsIDB4RjQsIDB4OTcsIDB4NDMsIDB4MUMsIDB4RUQs Ci0rIDB4MUIsIDB4N0EsIDB4MzIsIDB4Q0IsIDB4MjQsIDB4QTYsIDB4M0QsIDB4OTMsIDB4Mzcs IDB4OTAsIDB4NzQsIDB4RUUsCi0rIDB4RDIsIDB4OEQsIDB4NEIsIDB4QkMsIDB4NzIsIDB4REEs IDB4MjUsIDB4MkIsIDB4NjQsIDB4RTksIDB4Q0EsIDB4NjksCi0rIDB4MzYsIDB4QjYsIDB4RUMs IDB4NkUsIDB4OEYsIDB4MzMsIDB4MEUsIDB4NzQsIDB4NDAsIDB4NDgsIDB4NTEsIDB4RTIsCi0r IDB4NTQsIDB4NkYsIDB4QUYsIDB4NkUsIDB4MzYsIDB4NTQsIDB4M0EsIDB4RUMsIDB4NzgsIDB4 MzcsIDB4RTYsIDB4MUYsCi0rIDB4NzYsIDB4QTUsIDB4NEQsIDB4QTYsIDB4RDksIDB4QjMsIDB4 NkIsIDB4MTcsIDB4NkQsIDB4NjEsIDB4RkMsIDB4QTMsCi0rIDB4ODUsIDB4NEEsIDB4Q0MsIDB4 REEsIDB4NTIsIDB4QUMsIDB4NUIsIDB4REEsIDB4NTEsIDB4RTUsIDB4N0YsIDB4NUIsCi0rIDB4 NTIsIDB4OEIsIDB4NzQsIDB4NzUsIDB4OTksIDB4NUMsIDB4MDEsIDB4RkQsIDB4MjUsIDB4M0Us IDB4Q0QsIDB4ODYsCi0rIDB4NkYsIDB4N0EsIDB4QzAsIDB4RDgsIDB4MTcsIDB4NkYsIDB4RDEs IDB4RDIsIDB4NkIsIDB4QUIsIDB4MTQsIDB4MUYsCi0rIDB4M0IsIDB4QjgsIDB4MTUsIDB4MDUs IDB4ODYsIDB4NDAsIDB4MzYsIDB4Q0YsIDB4REEsIDB4NTksIDB4MkIsIDB4OUEsCi0rIDB4RTks IDB4MUUsIDB4NkUsIDB4RDMsIDB4NkIsIDB4QTEsIDB4MTksIDB4QzUsIDB4RTYsIDB4M0YsIDB4 RTksIDB4MkUsCi0rIDB4NDMsIDB4QTgsIDB4MzQsIDB4MEEKLSB9OwotIAotLXN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfWDkzMV9TSEExW10gPSB7Ci0tICAweDg2LCAweEI0LCAw eDE4LCAweEJBLCAweEQxLCAweDgwLCAweEI2LCAweDdDLCAweDQyLCAweDQ1LCAweDRELCAweERG LAotLSAgMHhFOSwgMHgyRCwgMHhFMSwgMHg4MywgMHg1RiwgMHhCNSwgMHgyRiwgMHhDOSwgMHhD RCwgMHhDNCwgMHhCMiwgMHg3NSwKLS0gIDB4ODAsIDB4QTQsIDB4RjEsIDB4NEEsIDB4RTcsIDB4 ODMsIDB4MTIsIDB4MUUsIDB4MUUsIDB4MTQsIDB4QjgsIDB4QUMsCi0tICAweDM1LCAweEUyLCAw eEFBLCAweDBCLCAweDVDLCAweEY4LCAweDM4LCAweDRELCAweDA0LCAweEVFLCAweEE5LCAweDk3 LAotLSAgMHg3MCwgMHhGQiwgMHg1RSwgMHhFNywgMHhCNywgMHhFMywgMHg2MiwgMHgyMywgMHg0 QiwgMHgzOCwgMHhCRSwgMHhENiwKLS0gIDB4NTMsIDB4MTUsIDB4RjcsIDB4REYsIDB4ODcsIDB4 QjQsIDB4MEUsIDB4Q0MsIDB4QjEsIDB4MUEsIDB4MTEsIDB4MTksCi0tICAweEVFLCAweDUxLCAw eENDLCAweDkyLCAweERELCAweEJDLCAweDYzLCAweDI5LCAweDYzLCAweDBDLCAweDU5LCAweEQ3 LAotLSAgMHg2RiwgMHg0QywgMHgzQywgMHgzNywgMHg1QiwgMHgzNywgMHgwMywgMHg2MSwgMHg3 RCwgMHgyNCwgMHgxQywgMHg5OSwKLS0gIDB4NDgsIDB4QUYsIDB4ODIsIDB4RkUsIDB4MzIsIDB4 NDEsIDB4OUIsIDB4QjIsIDB4REIsIDB4RUEsIDB4RUQsIDB4NzYsCi0tICAweDhFLCAweDZFLCAw eENBLCAweDdFLCAweDRFLCAweDE0LCAweEJBLCAweDMwLCAweDg0LCAweDFDLCAweEIzLCAweDY3 LAotLSAgMHhBMywgMHgyOSwgMHg4MCwgMHg3MCwgMHg1NCwgMHg2OCwgMHg3RCwgMHg0OQotLX07 Ci0rc3RhdGljIGludCBmaXBzX3JzYV9lbmNyeXB0X3Rlc3QoUlNBICpyc2EsIGNvbnN0IHVuc2ln bmVkIGNoYXIgKnBsYWludGV4dCwgaW50IHB0bGVuKQotKwl7Ci0rCXVuc2lnbmVkIGNoYXIgKmN0 YnVmID0gTlVMTCwgKnB0YnVmID0gTlVMTDsKLSsJaW50IHJldCA9IDA7Ci0rCWludCBsZW47Ci0g Ci0tc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMxX1NIQTI1NltdID0gewot LSAgMHg3RSwgMHhBMiwgMHg3NywgMHhGRSwgMHhCOCwgMHg1NCwgMHg4QSwgMHhDNywgMHg3Riwg MHg2NCwgMHg1NCwgMHg4OSwKLS0gIDB4RTUsIDB4NTIsIDB4MTUsIDB4OEUsIDB4NTIsIDB4OTYs IDB4NEUsIDB4QTYsIDB4NTgsIDB4OTIsIDB4MUMsIDB4REQsCi0tICAweEVBLCAweEEyLCAweDJE LCAweDVDLCAweEQxLCAweDYyLCAweDAwLCAweDQ5LCAweDA1LCAweDk1LCAweDczLCAweENGLAot LSAgMHgxNiwgMHg3NiwgMHg2OCwgMHhGNiwgMHhDNiwgMHg1RSwgMHg4MCwgMHhCOCwgMHhCOCwg MHg3QiwgMHhDOCwgMHg5QiwKLS0gIDB4QzYsIDB4NTMsIDB4ODgsIDB4MjYsIDB4MjAsIDB4ODgs IDB4NzMsIDB4QjYsIDB4MTMsIDB4QjgsIDB4RjAsIDB4NEIsCi0tICAweDAwLCAweDg1LCAweEYz LCAweERELCAweDA3LCAweDUwLCAweEVCLCAweDIwLCAweEM0LCAweDM4LCAweDBFLCAweDk4LAot LSAgMHhBRCwgMHg0RSwgMHg0OSwgMHgyQywgMHhENywgMHg2NSwgMHhBNSwgMHgxOSwgMHgwRSwg MHg1OSwgMHgwMSwgMHhFQywKLS0gIDB4N0UsIDB4NzUsIDB4ODksIDB4NjksIDB4MkUsIDB4NjMs IDB4NzYsIDB4ODUsIDB4NDYsIDB4OEQsIDB4QTAsIDB4OEMsCi0tICAweDMzLCAweDFELCAweDgy LCAweDhDLCAweDAzLCAweEVBLCAweDY5LCAweDg4LCAweDM1LCAweEExLCAweDQyLCAweEJELAot LSAgMHgyMSwgMHhFRCwgMHg4RCwgMHhCQywgMHhCQywgMHhEQiwgMHgzMCwgMHhGRiwgMHg4Niwg MHhGMCwgMHg1QiwgMHhEQywKLS0gIDB4RTMsIDB4RTIsIDB4RTgsIDB4MEEsIDB4MEEsIDB4Mjks IDB4OTQsIDB4ODAKLS19OwotKwljdGJ1ZiA9IE9QRU5TU0xfbWFsbG9jKFJTQV9zaXplKHJzYSkp OwotKwlpZiAoIWN0YnVmKQotKwkJZ290byBlcnI7Ci0gCi0tc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIga2F0X1JTQV9YOTMxX1NIQTM4NFtdID0gewotLSAgMHg1QywgMHg3RCwgMHg5NiwgMHgz NSwgMHhFQywgMHg3RSwgMHgxMSwgMHgzOCwgMHhCQiwgMHg3QiwgMHhFQywgMHg3QiwKLS0gIDB4 RjIsIDB4ODIsIDB4OEUsIDB4OTksIDB4QkQsIDB4RUYsIDB4RDgsIDB4QUUsIDB4RDcsIDB4Mzks IDB4MzcsIDB4Q0IsCi0tICAweEU2LCAweDRGLCAweDVFLCAweDBBLCAweDEzLCAweEU0LCAweDJF LCAweDQwLCAweEI5LCAweEJFLCAweDJFLCAweEUzLAotLSAgMHhFRiwgMHg3OCwgMHg4MywgMHgx OCwgMHg0NCwgMHgzNSwgMHg5QywgMHg4RSwgMHhENywgMHg0QSwgMHg2MywgMHhGNiwKLS0gIDB4 NTcsIDB4QzIsIDB4QjAsIDB4MDgsIDB4NTEsIDB4NzMsIDB4Q0YsIDB4Q0EsIDB4OTksIDB4NjYs IDB4RUUsIDB4MzEsCi0tICAweEQ4LCAweDY5LCAweEU5LCAweEFCLCAweDEzLCAweDI3LCAweDdC LCAweDQxLCAweDFFLCAweDZELCAweDhELCAweEYxLAotLSAgMHgzRSwgMHg5QywgMHgzNSwgMHg5 NSwgMHg1OCwgMHhERCwgMHgyQiwgMHhENSwgMHhBMCwgMHg2MCwgMHg0MSwgMHg3OSwKLS0gIDB4 MjQsIDB4MjIsIDB4RTQsIDB4QjcsIDB4QkYsIDB4NDcsIDB4NTMsIDB4RjYsIDB4MzQsIDB4RDUs IDB4N0MsIDB4RkYsCi0tICAweDBFLCAweDA5LCAweEVFLCAweDJFLCAweEUyLCAweDM3LCAweEI5 LCAweERFLCAweEM1LCAweDEyLCAweDQ0LCAweDM1LAotLSAgMHhFRiwgMHgwMSwgMHhFNiwgMHg1 RSwgMHgzOSwgMHgzMSwgMHgyRCwgMHg3MSwgMHhBNSwgMHhEQywgMHhDNiwgMHg2RCwKLS0gIDB4 RTIsIDB4Q0QsIDB4ODUsIDB4REIsIDB4NzMsIDB4ODIsIDB4NjUsIDB4MjgKLS19OwotKwlsZW4g PSBSU0FfcHVibGljX2VuY3J5cHQocHRsZW4sIHBsYWludGV4dCwgY3RidWYsIHJzYSwgUlNBX1BL Q1MxX1BBRERJTkcpOwotKwlpZiAobGVuIDw9IDApCi0rCQlnb3RvIGVycjsKLSsJLyogQ2hlY2sg Y2lwaGVydGV4dCBkb2Vzbid0IG1hdGNoIHBsYWludGV4dCAqLwotKwlpZiAobGVuID49IHB0bGVu ICYmICFtZW1jbXAocGxhaW50ZXh0LCBjdGJ1ZiwgcHRsZW4pKQotKwkJZ290byBlcnI7Ci0gCi0t c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMxX1NIQTUxMltdID0gewotLSAg MHhBNiwgMHg2NSwgMHhBMiwgMHg3NywgMHg0RiwgMHhCMywgMHg4NiwgMHhDQiwgMHg2NCwgMHgz QSwgMHhDMSwgMHg2MywKLS0gIDB4RkMsIDB4QTEsIDB4QUEsIDB4Q0IsIDB4OUIsIDB4NzksIDB4 REQsIDB4NEIsIDB4RTEsIDB4RDksIDB4REEsIDB4QUMsCi0tICAweEU3LCAweDQ3LCAweDA5LCAw eEIyLCAweDExLCAweDRCLCAweDhBLCAweEFBLCAweDA1LCAweDlFLCAweDc3LCAweEQ3LAotLSAg MHgzQSwgMHhCRCwgMHg1RSwgMHg1MywgMHgwOSwgMHg0QSwgMHhFNiwgMHgwRiwgMHg1RSwgMHhG OSwgMHgxNCwgMHgyOCwKLS0gIDB4QTAsIDB4OTksIDB4NzQsIDB4NjQsIDB4NzAsIDB4NEUsIDB4 RjIsIDB4RTMsIDB4RkEsIDB4QzcsIDB4RjgsIDB4QzUsCi0tICAweDZFLCAweDJCLCAweDc5LCAw eDk2LCAweDBELCAweDBDLCAweEM4LCAweDEwLCAweDM0LCAweDUzLCAweEQyLCAweEFGLAotLSAg MHgxNywgMHgwRSwgMHhFMCwgMHhCRiwgMHg3OSwgMHhGNiwgMHgwNCwgMHg3MiwgMHgxMCwgMHhF MCwgMHhGNiwgMHhEMCwKLS0gIDB4Q0UsIDB4OEEsIDB4NkYsIDB4QTEsIDB4OTUsIDB4ODksIDB4 QkYsIDB4NTgsIDB4OEYsIDB4NDYsIDB4NUYsIDB4MDksCi0tICAweDlGLCAweDA5LCAweENBLCAw eDg0LCAweDE1LCAweDg1LCAweEUwLCAweEVELCAweDA0LCAweDJELCAweEZCLCAweDdDLAotLSAg MHgzNiwgMHgzNSwgMHgyMSwgMHgzMSwgMHhDMywgMHhGRCwgMHg5MiwgMHg0MiwgMHgxMSwgMHgz MCwgMHg3MSwgMHgxQiwKLS0gIDB4NjAsIDB4ODMsIDB4MTgsIDB4ODgsIDB4QTMsIDB4RjUsIDB4 NTksIDB4QzMKLS19OwotKwlwdGJ1ZiA9IE9QRU5TU0xfbWFsbG9jKFJTQV9zaXplKHJzYSkpOwot KwlpZiAoIXB0YnVmKQotKwkJZ290byBlcnI7Ci0rCi0rCWxlbiA9IFJTQV9wcml2YXRlX2RlY3J5 cHQobGVuLCBjdGJ1ZiwgcHRidWYsIHJzYSwgUlNBX1BLQ1MxX1BBRERJTkcpOwotKwlpZiAobGVu ICE9IHB0bGVuKQotKwkJZ290byBlcnI7Ci0rCWlmIChtZW1jbXAocHRidWYsIHBsYWludGV4dCwg bGVuKSkKLSsJCWdvdG8gZXJyOwotKwotKwlyZXQgPSAxOwotIAotKwllcnI6Ci0rCWlmIChjdGJ1 ZikKLSsJCU9QRU5TU0xfZnJlZShjdGJ1Zik7Ci0rCWlmIChwdGJ1ZikKLSsJCU9QRU5TU0xfZnJl ZShwdGJ1Zik7Ci0rCXJldHVybiByZXQ7Ci0rCX0KLSAKLSBpbnQgRklQU19zZWxmdGVzdF9yc2Eo KQotIAl7Ci1AQCAtMzUzLDcgKzQ4Nyw3IEBAIGludCBGSVBTX3NlbGZ0ZXN0X3JzYSgpCi0gCWlm ICgocGs9RVZQX1BLRVlfbmV3KCkpID09IE5VTEwpCi0gCQlnb3RvIGVycjsKLSAKLS0JRVZQX1BL RVlfYXNzaWduX1JTQShwaywga2V5KTsKLSsJRVZQX1BLRVlfc2V0MV9SU0EocGssIGtleSk7Ci0g Ci0gCWlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0 X3RicykgLSAxLAotIAkJCQlrYXRfUlNBX1NIQTEsIHNpemVvZihrYXRfUlNBX1NIQTEpLAotQEAg LTQwNywzNiArNTQxLDE1IEBAIGludCBGSVBTX3NlbGZ0ZXN0X3JzYSgpCi0gCQkJCSJSU0EgU0hB NTEyIFBTUyIpKQotIAkJZ290byBlcnI7Ci0gCi0tCi0tCWlmICghZmlwc19wa2V5X3NpZ25hdHVy ZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotLQkJCWthdF9SU0FfWDkz MV9TSEExLCBzaXplb2Yoa2F0X1JTQV9YOTMxX1NIQTEpLAotLQkJCUVWUF9zaGExKCksIEVWUF9N RF9DVFhfRkxBR19QQURfWDkzMSwKLS0JCQkiUlNBIFNIQTEgWDkzMSIpKQotLQkJZ290byBlcnI7 Ci0tCS8qIE5COiBTSEEyMjQgbm90IHN1cHBvcnRlZCBpbiBYOS4zMSAqLwotLQlpZiAoIWZpcHNf cGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKLS0J CQlrYXRfUlNBX1g5MzFfU0hBMjU2LCBzaXplb2Yoa2F0X1JTQV9YOTMxX1NIQTI1NiksCi0tCQkJ RVZQX3NoYTI1NigpLCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1g5MzEsCi0tCQkJIlJTQSBTSEEyNTYg WDkzMSIpKQotLQkJZ290byBlcnI7Ci0tCWlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBr LCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotLQkJCWthdF9SU0FfWDkzMV9TSEEzODQs IHNpemVvZihrYXRfUlNBX1g5MzFfU0hBMzg0KSwKLS0JCQlFVlBfc2hhMzg0KCksIEVWUF9NRF9D VFhfRkxBR19QQURfWDkzMSwKLS0JCQkiUlNBIFNIQTM4NCBYOTMxIikpCi0tCQlnb3RvIGVycjsK LS0JaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRf dGJzKSAtIDEsCi0tCQkJa2F0X1JTQV9YOTMxX1NIQTUxMiwgc2l6ZW9mKGthdF9SU0FfWDkzMV9T SEE1MTIpLAotLQkJCUVWUF9zaGE1MTIoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9YOTMxLAotLQkJ CSJSU0EgU0hBNTEyIFg5MzEiKSkKLSsJaWYgKCFmaXBzX3JzYV9lbmNyeXB0X3Rlc3Qoa2V5LCBr YXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxKSkKLSAJCWdvdG8gZXJyOwotIAotLQotIAlyZXQg PSAxOwotIAotIAllcnI6Ci0gCWlmIChwaykKLSAJCUVWUF9QS0VZX2ZyZWUocGspOwotLQllbHNl IGlmIChrZXkpCi0rCWlmIChrZXkpCi0gCQlSU0FfZnJlZShrZXkpOwotIAlyZXR1cm4gcmV0Owot IAl9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZmlwcy9NYWtlZmlsZS5maXBzLXJl cXMgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2ZpcHMvTWFrZWZpbGUKLS0tLSBvcGVuc3NsLTEuMC4x aS9jcnlwdG8vZmlwcy9NYWtlZmlsZS5maXBzLXJlcXMJMjAxNC0wOC0xMyAxOTo1ODowNi44MDk4 MzIzNzAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vZmlwcy9NYWtlZmlsZQkyMDE0 LTA4LTEzIDE5OjU4OjA2LjgyMDgzMjYyNCArMDIwMAotQEAgLTI0LDEzICsyNCwxNSBAQCBMSUJT UkM9Zmlwc19hZXNfc2VsZnRlc3QuYyBmaXBzX2Rlc19zZWxmCi0gICAgIGZpcHNfcnNhX3NlbGZ0 ZXN0LmMgZmlwc19zaGFfc2VsZnRlc3QuYyBmaXBzLmMgZmlwc19kc2Ffc2VsZnRlc3QuYyAgZmlw c19yYW5kLmMgXAotICAgICBmaXBzX3JzYV94OTMxZy5jIGZpcHNfcG9zdC5jIGZpcHNfZHJiZ19j dHIuYyBmaXBzX2RyYmdfaGFzaC5jIGZpcHNfZHJiZ19obWFjLmMgXAotICAgICBmaXBzX2RyYmdf bGliLmMgZmlwc19kcmJnX3JhbmQuYyBmaXBzX2RyYmdfc2VsZnRlc3QuYyBmaXBzX3JhbmRfbGli LmMgXAotLSAgICBmaXBzX2NtYWNfc2VsZnRlc3QuYyBmaXBzX2VjZGhfc2VsZnRlc3QuYyBmaXBz X2VjZHNhX3NlbGZ0ZXN0LmMgZmlwc19lbmMuYyBmaXBzX21kLmMKLSsgICAgZmlwc19jbWFjX3Nl bGZ0ZXN0LmMgZmlwc19lY2RoX3NlbGZ0ZXN0LmMgZmlwc19lY2RzYV9zZWxmdGVzdC5jIGZpcHNf ZW5jLmMgZmlwc19tZC5jIFwKLSsgICAgZmlwc19kaF9zZWxmdGVzdC5jCi0gCi0gTElCT0JKPWZp cHNfYWVzX3NlbGZ0ZXN0Lm8gZmlwc19kZXNfc2VsZnRlc3QubyBmaXBzX2htYWNfc2VsZnRlc3Qu byBmaXBzX3JhbmRfc2VsZnRlc3QubyBcCi0gICAgIGZpcHNfcnNhX3NlbGZ0ZXN0Lm8gZmlwc19z aGFfc2VsZnRlc3QubyBmaXBzLm8gZmlwc19kc2Ffc2VsZnRlc3QubyAgZmlwc19yYW5kLm8gXAot ICAgICBmaXBzX3JzYV94OTMxZy5vIGZpcHNfcG9zdC5vIGZpcHNfZHJiZ19jdHIubyBmaXBzX2Ry YmdfaGFzaC5vIGZpcHNfZHJiZ19obWFjLm8gXAotICAgICBmaXBzX2RyYmdfbGliLm8gZmlwc19k cmJnX3JhbmQubyBmaXBzX2RyYmdfc2VsZnRlc3QubyBmaXBzX3JhbmRfbGliLm8gXAotLSAgICBm aXBzX2NtYWNfc2VsZnRlc3QubyBmaXBzX2VjZGhfc2VsZnRlc3QubyBmaXBzX2VjZHNhX3NlbGZ0 ZXN0Lm8gZmlwc19lbmMubyBmaXBzX21kLm8KLSsgICAgZmlwc19jbWFjX3NlbGZ0ZXN0Lm8gZmlw c19lY2RoX3NlbGZ0ZXN0Lm8gZmlwc19lY2RzYV9zZWxmdGVzdC5vIGZpcHNfZW5jLm8gZmlwc19t ZC5vIFwKLSsgICAgZmlwc19kaF9zZWxmdGVzdC5vCi0gCi0gTElCQ1JZUFRPPS1MLi4gLWxjcnlw dG8KLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9yYW5kL3JhbmRfbGNsLmguZmlw cy1yZXFzIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9yYW5kL3JhbmRfbGNsLmgKLS0tLSBvcGVuc3Ns LTEuMC4xaS9jcnlwdG8vcmFuZC9yYW5kX2xjbC5oLmZpcHMtcmVxcwkyMDE0LTA4LTEzIDE5OjU4 OjA2LjUyNTgyNTgyOSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9yYW5kL3JhbmRf bGNsLmgJMjAxNC0wOC0xMyAxOTo1ODowNi44MjA4MzI2MjQgKzAyMDAKLUBAIC0xMTIsNyArMTEy LDcgQEAKLSAjaWZuZGVmIEhFQURFUl9SQU5EX0xDTF9ICi0gI2RlZmluZSBIRUFERVJfUkFORF9M Q0xfSAotIAotLSNkZWZpbmUgRU5UUk9QWV9ORUVERUQgMzIgIC8qIHJlcXVpcmUgMjU2IGJpdHMg PSAzMiBieXRlcyBvZiByYW5kb21uZXNzICovCi0rI2RlZmluZSBFTlRST1BZX05FRURFRCA0OCAg LyogcmVxdWlyZSAzODQgYml0cyA9IDQ4IGJ5dGVzIG9mIHJhbmRvbW5lc3MgKi8KLSAKLSAKLSAj aWYgIWRlZmluZWQoVVNFX01ENV9SQU5EKSAmJiAhZGVmaW5lZChVU0VfU0hBMV9SQU5EKSAmJiAh ZGVmaW5lZChVU0VfTURDMl9SQU5EKSAmJiAhZGVmaW5lZChVU0VfTUQyX1JBTkQpCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vcmFuZC9yYW5kX2xpYi5jLmZpcHMtcmVxcyBvcGVuc3Ns LTEuMC4xaS9jcnlwdG8vcmFuZC9yYW5kX2xpYi5jCi0tLS0gb3BlbnNzbC0xLjAuMWkvY3J5cHRv L3JhbmQvcmFuZF9saWIuYy5maXBzLXJlcXMJMjAxNC0wOC0wNiAyMzoxMDo1Ni4wMDAwMDAwMDAg KzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vcmFuZC9yYW5kX2xpYi5jCTIwMTQtMDgt MTMgMTk6NTg6MDYuODIwODMyNjI0ICswMjAwCi1AQCAtMjQwLDEyICsyNDAsMjQgQEAgc3RhdGlj IGludCBkcmJnX3JhbmRfYWRkKERSQkdfQ1RYICpjdHgsCi0gCQkJCWRvdWJsZSBlbnRyb3B5KQot IAl7Ci0gCVJBTkRfU1NMZWF5KCktPmFkZChpbiwgaW5sZW4sIGVudHJvcHkpOwotKwlpZiAoRklQ U19yYW5kX3N0YXR1cygpKQotKwkJewotKwkJQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5E KTsKLSsJCUZJUFNfZHJiZ19yZXNlZWQoY3R4LCBOVUxMLCAwKTsKLSsJCUNSWVBUT193X3VubG9j ayhDUllQVE9fTE9DS19SQU5EKTsKLSsJCX0KLSAJcmV0dXJuIDE7Ci0gCX0KLSAKLSBzdGF0aWMg aW50IGRyYmdfcmFuZF9zZWVkKERSQkdfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKmluLCBpbnQgaW5s ZW4pCi0gCXsKLSAJUkFORF9TU0xlYXkoKS0+c2VlZChpbiwgaW5sZW4pOwotKwlpZiAoRklQU19y YW5kX3N0YXR1cygpKQotKwkJewotKwkJQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsK LSsJCUZJUFNfZHJiZ19yZXNlZWQoY3R4LCBOVUxMLCAwKTsKLSsJCUNSWVBUT193X3VubG9jayhD UllQVE9fTE9DS19SQU5EKTsKLSsJCX0KLSAJcmV0dXJuIDE7Ci0gCX0KLSAKLWRpZmYgLXVwIG9w ZW5zc2wtMS4wLjFpL2NyeXB0by9yc2EvcnNhX2dlbi5jLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4x aS9jcnlwdG8vcnNhL3JzYV9nZW4uYwotLS0tIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9yc2EvcnNh X2dlbi5jLmZpcHMtcmVxcwkyMDE0LTA4LTEzIDE5OjU4OjA2Ljc4MjgzMTc0OCArMDIwMAotKysr IG9wZW5zc2wtMS4wLjFpL2NyeXB0by9yc2EvcnNhX2dlbi5jCTIwMTQtMDgtMTMgMTk6NTg6MDYu ODIxODMyNjQ2ICswMjAwCi1AQCAtMSw1ICsxLDYgQEAKLSAvKiBjcnlwdG8vcnNhL3JzYV9nZW4u YyAqLwotIC8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEVyaWMgWW91bmcgKGVheUBjcnlwdHNv ZnQuY29tKQotKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWQgSGF0LCBJbmMuCi0gICogQWxsIHJp Z2h0cyByZXNlcnZlZC4KLSAgKgotICAqIFRoaXMgcGFja2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50 YXRpb24gd3JpdHRlbgotQEAgLTE2NSw2ICsxNjYsMjM2IEBAIGludCBSU0FfZ2VuZXJhdGVfa2V5 X2V4KFJTQSAqcnNhLCBpbnQgYmkKLSAJcmV0dXJuIHJzYV9idWlsdGluX2tleWdlbihyc2EsIGJp dHMsIGVfdmFsdWUsIGNiKTsKLSAJfQotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLStzdGF0aWMg aW50IEZJUFNfcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLCBpbnQgYml0cywgQklHTlVNICpl X3ZhbHVlLCBCTl9HRU5DQiAqY2IpCi0rCXsKLSsJQklHTlVNICpyMCA9IE5VTEwsICpyMSA9IE5V TEwsICpyMiA9IE5VTEwsICpyMyA9IE5VTEwsICp0bXA7Ci0rCUJJR05VTSBsb2NhbF9yMCwgbG9j YWxfZCwgbG9jYWxfcDsKLSsJQklHTlVNICpwcjAsICpkLCAqcDsKLSsJQk5fQ1RYICpjdHggPSBO VUxMOwotKwlpbnQgb2sgPSAtMTsKLSsJaW50IGk7Ci0rICAgICAgICBpbnQgbiA9IDA7Ci0rCWlu dCB0ZXN0ID0gMDsKLSsgICAgICAgIGludCBwYml0cyA9IGJpdHMvMjsKLSsKLSsJaWYoRklQU19z ZWxmdGVzdF9mYWlsZWQoKSkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX1JTQV9CVUlMVElOX0tF WUdFTiwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKLSsJICAgIAlyZXR1cm4gMDsKLSsJ ICAgIAl9Ci0rCi0rCWlmICgocGJpdHMgJiAweEZGKSB8fCAoZ2V0ZW52KCJPUEVOU1NMX0VORk9S Q0VfTU9EVUxVU19CSVRTIikgJiYgYml0cyAhPSAyMDQ4ICYmIGJpdHMgIT0gMzA3MikpCi0rCQl7 Ci0rCQlGSVBTZXJyKEZJUFNfRl9SU0FfQlVJTFRJTl9LRVlHRU4sIEZJUFNfUl9JTlZBTElEX0tF WV9MRU5HVEgpOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCi0rCWN0eCA9IEJOX0NUWF9uZXcoKTsK LSsJaWYgKGN0eCA9PSBOVUxMKSBnb3RvIGVycjsKLSsJQk5fQ1RYX3N0YXJ0KGN0eCk7Ci0rCXIw ID0gQk5fQ1RYX2dldChjdHgpOwotKwlyMSA9IEJOX0NUWF9nZXQoY3R4KTsKLSsJcjIgPSBCTl9D VFhfZ2V0KGN0eCk7Ci0rCXIzID0gQk5fQ1RYX2dldChjdHgpOwotKwotKwlpZiAocjMgPT0gTlVM TCkgZ290byBlcnI7Ci0rCi0rCS8qIFdlIG5lZWQgdGhlIFJTQSBjb21wb25lbnRzIG5vbi1OVUxM ICovCi0rCWlmICghcnNhLT5uICYmICgocnNhLT5uPUJOX25ldygpKSA9PSBOVUxMKSkgZ290byBl cnI7Ci0rCWlmICghcnNhLT5kICYmICgocnNhLT5kPUJOX25ldygpKSA9PSBOVUxMKSkgZ290byBl cnI7Ci0rCWlmICghcnNhLT5lICYmICgocnNhLT5lPUJOX25ldygpKSA9PSBOVUxMKSkgZ290byBl cnI7Ci0rCWlmICghcnNhLT5wICYmICgocnNhLT5wPUJOX25ldygpKSA9PSBOVUxMKSkgZ290byBl cnI7Ci0rCWlmICghcnNhLT5xICYmICgocnNhLT5xPUJOX25ldygpKSA9PSBOVUxMKSkgZ290byBl cnI7Ci0rCWlmICghcnNhLT5kbXAxICYmICgocnNhLT5kbXAxPUJOX25ldygpKSA9PSBOVUxMKSkg Z290byBlcnI7Ci0rCWlmICghcnNhLT5kbXExICYmICgocnNhLT5kbXExPUJOX25ldygpKSA9PSBO VUxMKSkgZ290byBlcnI7Ci0rCWlmICghcnNhLT5pcW1wICYmICgocnNhLT5pcW1wPUJOX25ldygp KSA9PSBOVUxMKSkgZ290byBlcnI7Ci0rCi0rCWlmICghQk5fc2V0X3dvcmQocjAsIFJTQV9GNCkp IGdvdG8gZXJyOwotKwlpZiAoQk5fY21wKGVfdmFsdWUsIHIwKSA8IDAgfHwgQk5fbnVtX2JpdHMo ZV92YWx1ZSkgPiAyNTYpCi0rCQl7Ci0rCQlvayA9IDA7IC8qIHdlIHNldCBvdXIgb3duIGVyciAq LwotKwkJUlNBZXJyKFJTQV9GX1JTQV9CVUlMVElOX0tFWUdFTixSU0FfUl9CQURfRV9WQUxVRSk7 Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsJLyogcHJlcGFyZSBhcHByb3hpbWF0ZSBtaW5pbXVt IHAgYW5kIHEgKi8KLSsJaWYgKCFCTl9zZXRfd29yZChyMCwgMHhCNTA0RjMzNCkpIGdvdG8gZXJy OwotKwlpZiAoIUJOX2xzaGlmdChyMCwgcjAsIHBiaXRzIC0gMzIpKSBnb3RvIGVycjsKLSsKLSsJ LyogcHJlcGFyZSBtaW5pbXVtIHAgYW5kIHEgZGlmZmVyZW5jZSAqLwotKwlpZiAoIUJOX29uZShy MykpIGdvdG8gZXJyOwotKwlpZiAoIUJOX2xzaGlmdChyMywgcjMsIHBiaXRzIC0gMTAwKSkgZ290 byBlcnI7Ci0rCi0rCUJOX2NvcHkocnNhLT5lLCBlX3ZhbHVlKTsKLSsKLSsJaWYgKCFCTl9pc196 ZXJvKHJzYS0+cCkgJiYgIUJOX2lzX3plcm8ocnNhLT5xKSkKLSsJCXRlc3QgPSAxOwotKwotK3Jl dHJ5OgotKwkvKiBnZW5lcmF0ZSBwIGFuZCBxICovCi0rCWZvciAoaSA9IDA7IGkgPCA1ICogcGJp dHM7IGkrKykKLSsJCXsKLSsgICAgICAgIHBsb29wOgotKyAgICAgICAgICAgICAgICBpZiAoIXRl c3QpCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFCTl9yYW5kKHJzYS0+cCwgcGJpdHMs IDAsIDEpKSBnb3RvIGVycjsKLSsgICAgICAgICAgICAgICAgaWYgKEJOX2NtcChyc2EtPnAsIHIw KSA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmICh0ZXN0KSBnb3RvIGVycjsKLSsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBs b29wOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsKLSsJCWlmICghQk5fc3ViKHIyLCBy c2EtPnAsIEJOX3ZhbHVlX29uZSgpKSkgZ290byBlcnI7Ci0rCQlpZiAoIUJOX2djZChyMSwgcjIs IHJzYS0+ZSwgY3R4KSkgZ290byBlcnI7Ci0rCQlpZiAoQk5faXNfb25lKHIxKSkKLSsgICAgICAg ICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaW50IHI7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgciA9IEJOX2lzX3ByaW1lX2Zhc3R0ZXN0X2V4KHJzYS0+cCwg cGJpdHM+MTAyND80OjUsIGN0eCwgMCwgY2IpOwotKyAgICAgICAgCQlpZiAociA9PSAtMSB8fCAo dGVzdCAmJiByIDw9IDApKSBnb3RvIGVycjsKLSsgICAgICAgIAkJaWYgKHIgPiAwKSBicmVhazsK LSsgICAgICAgICAgICAgICAgICAgICAgICB9IAotKwotKwkJaWYoIUJOX0dFTkNCX2NhbGwoY2Is IDIsIG4rKykpCi0rCQkJZ290byBlcnI7Ci0rCQl9Ci0rCi0rCWlmKCFCTl9HRU5DQl9jYWxsKGNi LCAzLCAwKSkKLSsJCWdvdG8gZXJyOwotKwotKyAgICAgICAgaWYoaSA+PSA1KnBiaXRzKQotKyAg ICAgICAgICAgICAgICAvKiBwcmltZSBub3QgZm91bmQgKi8KLSsgICAgICAgICAgICAgICAgZ290 byBlcnI7Ci0rCi0rCWZvciAoaSA9IDA7IGkgPCA1ICogcGJpdHM7IGkrKykKLSsJCXsKLSsgICAg ICAgIHFsb29wOgotKyAgICAgICAgICAgICAgICBpZiAoIXRlc3QpCi0rICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCFCTl9yYW5kKHJzYS0+cSwgcGJpdHMsIDAsIDEpKSBnb3RvIGVycjsKLSsg ICAgICAgICAgICAgICAgaWYgKEJOX2NtcChyc2EtPnEsIHIwKSA8IDApCi0rICAgICAgICAgICAg ICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0KSBnb3RvIGVy cjsKLSsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHFsb29wOwotKyAgICAgICAgICAgICAg ICAgICAgICAgIH0KLSsgICAgICAgCQlpZiAoIUJOX3N1YihyMiwgcnNhLT5xLCByc2EtPnApKSBn b3RvIGVycjsKLSsgICAgICAgICAgICAgICAgaWYgKEJOX3VjbXAocjIsIHIzKSA8PSAwKQotKyAg ICAgICAgICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVz dCkgZ290byBlcnI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZ290byBxbG9vcDsKLSsgICAg ICAgICAgICAgICAgICAgICAgICB9Ci0rCi0rCQlpZiAoIUJOX3N1YihyMiwgcnNhLT5xLCBCTl92 YWx1ZV9vbmUoKSkpIGdvdG8gZXJyOwotKwkJaWYgKCFCTl9nY2QocjEsIHIyLCByc2EtPmUsIGN0 eCkpIGdvdG8gZXJyOwotKwkJaWYgKEJOX2lzX29uZShyMSkpCi0rICAgICAgICAgICAgICAgICAg ICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByOwotKyAgICAgICAgICAgICAg ICAgICAgICAgIHIgPSBCTl9pc19wcmltZV9mYXN0dGVzdF9leChyc2EtPnEsIHBiaXRzPjEwMjQ/ NDo1LCBjdHgsIDAsIGNiKTsKLSsgICAgICAgIAkJaWYgKHIgPT0gLTEgfHwgKHRlc3QgJiYgciA8 PSAwKSkgZ290byBlcnI7Ci0rICAgICAgICAJCWlmIChyID4gMCkgYnJlYWs7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgfSAKLSsKLSsJCWlmKCFCTl9HRU5DQl9jYWxsKGNiLCAyLCBuKyspKQot KwkJCWdvdG8gZXJyOwotKwkJfQotKwotKwlpZighQk5fR0VOQ0JfY2FsbChjYiwgMywgMSkpCi0r CQlnb3RvIGVycjsKLSsKLSsgICAgICAgIGlmKGkgPj0gNSpwYml0cykKLSsgICAgICAgICAgICAg ICAgLyogcHJpbWUgbm90IGZvdW5kICovCi0rICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotKwot KyAgICAgICAgaWYgKHRlc3QpCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAg LyogZG8gbm90IHRyeSB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmluZyBrZXkgdmFsdWVzICovCi0r ICAgICAgICAgICAgICAgIEJOX2NsZWFyKHJzYS0+bik7Ci0rICAgICAgICAgICAgICAgIG9rID0g MTsKLSsgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICAgICAgICAgIH0KLSsKLSsJ aWYgKEJOX2NtcChyc2EtPnAscnNhLT5xKSA8IDApCi0rCQl7Ci0rCQl0bXA9cnNhLT5wOwotKwkJ cnNhLT5wPXJzYS0+cTsKLSsJCXJzYS0+cT10bXA7Ci0rCQl9Ci0rCi0rCS8qIGNhbGN1bGF0ZSBu ICovCi0rCWlmICghQk5fbXVsKHJzYS0+bixyc2EtPnAscnNhLT5xLGN0eCkpIGdvdG8gZXJyOwot KwotKwkvKiBjYWxjdWxhdGUgZCAqLwotKwlpZiAoIUJOX3N1YihyMSxyc2EtPnAsQk5fdmFsdWVf b25lKCkpKSBnb3RvIGVycjsJLyogcC0xICovCi0rCWlmICghQk5fc3ViKHIyLHJzYS0+cSxCTl92 YWx1ZV9vbmUoKSkpIGdvdG8gZXJyOwkvKiBxLTEgKi8KLSsJCi0rCWlmICghQk5fZ2NkKHIwLCBy MSwgcjIsIGN0eCkpIGdvdG8gZXJyOwotKwlpZiAoIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9f Q09OU1RUSU1FKSkKLSsJCXsKLSsJCSAgcHIwID0gJmxvY2FsX3IwOwotKwkJICBCTl93aXRoX2Zs YWdzKHByMCwgcjAsIEJOX0ZMR19DT05TVFRJTUUpOwotKwkJfQotKwllbHNlCi0rCSAgcHIwID0g cjA7Ci0rCWlmICghQk5fZGl2KHIwLCBOVUxMLCByMSwgcHIwLCBjdHgpKSBnb3RvIGVycjsKLSsJ aWYgKCFCTl9tdWwocjAscjAscjIsY3R4KSkgZ290byBlcnI7CS8qIGxjbShwLTEsIHEtMSkgKi8K LSsKLSsJaWYgKCEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PX0NPTlNUVElNRSkpCi0rCQl7Ci0r CQkgIHByMCA9ICZsb2NhbF9yMDsKLSsJCSAgQk5fd2l0aF9mbGFncyhwcjAsIHIwLCBCTl9GTEdf Q09OU1RUSU1FKTsKLSsJCX0KLSsJZWxzZQotKwkgIHByMCA9IHIwOwotKwlpZiAoIUJOX21vZF9p bnZlcnNlKHJzYS0+ZCxyc2EtPmUscHIwLGN0eCkpIGdvdG8gZXJyOwkvKiBkICovCi0rCi0rCWlm IChCTl9udW1fYml0cyhyc2EtPmQpIDwgcGJpdHMpIGdvdG8gcmV0cnk7IC8qIGQgaXMgdG9vIHNt YWxsICovCi0rCi0rCS8qIHNldCB1cCBkIGZvciBjb3JyZWN0IEJOX0ZMR19DT05TVFRJTUUgZmxh ZyAqLwotKwlpZiAoIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9fQ09OU1RUSU1FKSkKLSsJCXsK LSsJCWQgPSAmbG9jYWxfZDsKLSsJCUJOX3dpdGhfZmxhZ3MoZCwgcnNhLT5kLCBCTl9GTEdfQ09O U1RUSU1FKTsKLSsJCX0KLSsJZWxzZQotKwkJZCA9IHJzYS0+ZDsKLSsKLSsJLyogY2FsY3VsYXRl IGQgbW9kIChwLTEpICovCi0rCWlmICghQk5fbW9kKHJzYS0+ZG1wMSxkLHIxLGN0eCkpIGdvdG8g ZXJyOwotKwotKwkvKiBjYWxjdWxhdGUgZCBtb2QgKHEtMSkgKi8KLSsJaWYgKCFCTl9tb2QocnNh LT5kbXExLGQscjIsY3R4KSkgZ290byBlcnI7Ci0rCi0rCS8qIGNhbGN1bGF0ZSBpbnZlcnNlIG9m IHEgbW9kIHAgKi8KLSsJaWYgKCEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PX0NPTlNUVElNRSkp Ci0rCQl7Ci0rCQlwID0gJmxvY2FsX3A7Ci0rCQlCTl93aXRoX2ZsYWdzKHAsIHJzYS0+cCwgQk5f RkxHX0NPTlNUVElNRSk7Ci0rCQl9Ci0rCWVsc2UKLSsJCXAgPSByc2EtPnA7Ci0rCWlmICghQk5f bW9kX2ludmVyc2UocnNhLT5pcW1wLHJzYS0+cSxwLGN0eCkpIGdvdG8gZXJyOwotKwotKwlpZiAo Zmlwc19yc2FfcGFpcndpc2VfZmFpbCkKLSsJCUJOX2FkZF93b3JkKHJzYS0+biwgMSk7Ci0rCi0r CWlmKCFmaXBzX2NoZWNrX3JzYShyc2EpKQotKwkgICAgZ290byBlcnI7Ci0rCi0rCW9rPTE7Ci0r ZXJyOgotKwlpZiAob2sgPT0gLTEpCi0rCQl7Ci0rCQlSU0FlcnIoUlNBX0ZfUlNBX0JVSUxUSU5f S0VZR0VOLEVSUl9MSUJfQk4pOwotKwkJb2sgPSAwOwotKwkJfQotKwlpZiAoY3R4ICE9IE5VTEwp Ci0rCQl7Ci0rCQlCTl9DVFhfZW5kKGN0eCk7Ci0rCQlCTl9DVFhfZnJlZShjdHgpOwotKwkJfQot KwotKwlyZXR1cm4gb2s7Ci0rCX0KLSsjZW5kaWYKLSsKLSBzdGF0aWMgaW50IHJzYV9idWlsdGlu X2tleWdlbihSU0EgKnJzYSwgaW50IGJpdHMsIEJJR05VTSAqZV92YWx1ZSwgQk5fR0VOQ0IgKmNi KQotIAl7Ci0gCUJJR05VTSAqcjA9TlVMTCwqcjE9TlVMTCwqcjI9TlVMTCwqcjM9TlVMTCwqdG1w OwotQEAgLTE3NiwxNyArNDA3LDEyIEBAIHN0YXRpYyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJT QSAqcnNhLAotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLSAJaWYgKEZJUFNfbW9kdWxlX21vZGUoKSkK LSAJCXsKLS0JCWlmKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpCi0tCSAgICAJewotLQkJICAgIEZJ UFNlcnIoRklQU19GX1JTQV9CVUlMVElOX0tFWUdFTixGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlM RUQpOwotLQkgICAgCXJldHVybiAwOwotLQkgICAgCX0KLS0KLSAJCWlmIChiaXRzIDwgT1BFTlNT TF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKQotIAkJICAgIHsKLSAJCSAgICBGSVBTZXJyKEZJ UFNfRl9SU0FfQlVJTFRJTl9LRVlHRU4sRklQU19SX0tFWV9UT09fU0hPUlQpOwotIAkJICAgIHJl dHVybiAwOwotIAkJICAgIH0KLSsJCXJldHVybiBGSVBTX3JzYV9idWlsdGluX2tleWdlbihyc2Es IGJpdHMsIGVfdmFsdWUsIGNiKTsKLSAJCX0KLSAjZW5kaWYKLSAKLUBAIC0zMDEsMTcgKzUyNyw2 IEBAIHN0YXRpYyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLAotIAkJcCA9IHJzYS0+ cDsKLSAJaWYgKCFCTl9tb2RfaW52ZXJzZShyc2EtPmlxbXAscnNhLT5xLHAsY3R4KSkgZ290byBl cnI7Ci0gCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLQlpZiAoRklQU19tb2R1bGVfbW9kZSgpKQot LQkJewotLQkJaWYgKGZpcHNfcnNhX3BhaXJ3aXNlX2ZhaWwpCi0tCQkJQk5fYWRkX3dvcmQocnNh LT5uLCAxKTsKLS0KLS0JCWlmKCFmaXBzX2NoZWNrX3JzYShyc2EpKQotLQkJICAgIGdvdG8gZXJy OwotLQkJfQotLSNlbmRpZgotLQotIAlvaz0xOwotIGVycjoKLSAJaWYgKG9rID09IC0xKQotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMWkvc3NsL3QxX2VuYy5jLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4x aS9zc2wvdDFfZW5jLmMKLS0tLSBvcGVuc3NsLTEuMC4xaS9zc2wvdDFfZW5jLmMuZmlwcy1yZXFz CTIwMTQtMDgtMDYgMjM6MTA6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWkv c3NsL3QxX2VuYy5jCTIwMTQtMDgtMTMgMTk6NTg6MDYuODIxODMyNjQ2ICswMjAwCi1AQCAtMjkx LDYgKzI5MSwyNyBAQCBzdGF0aWMgaW50IHRsczFfUFJGKGxvbmcgZGlnZXN0X21hc2ssCi0gZXJy OgotIAlyZXR1cm4gcmV0OwotIH0KLSsKLStpbnQgcHJpdmF0ZV90bHMxX1BSRihsb25nIGRpZ2Vz dF9tYXNrLAotKwkJICAgICBjb25zdCB2b2lkICpzZWVkMSwgaW50IHNlZWQxX2xlbiwKLSsJCSAg ICAgY29uc3Qgdm9pZCAqc2VlZDIsIGludCBzZWVkMl9sZW4sCi0rCQkgICAgIGNvbnN0IHZvaWQg KnNlZWQzLCBpbnQgc2VlZDNfbGVuLAotKwkJICAgICBjb25zdCB2b2lkICpzZWVkNCwgaW50IHNl ZWQ0X2xlbiwKLSsJCSAgICAgY29uc3Qgdm9pZCAqc2VlZDUsIGludCBzZWVkNV9sZW4sCi0rCQkg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlYywgaW50IHNsZW4sCi0rCQkgICAgIHVuc2lnbmVk IGNoYXIgKm91dDEsCi0rCQkgICAgIHVuc2lnbmVkIGNoYXIgKm91dDIsIGludCBvbGVuKQotKwl7 Ci0rCXJldHVybiB0bHMxX1BSRihkaWdlc3RfbWFzaywKLSsJCXNlZWQxLCBzZWVkMV9sZW4sCi0r CQlzZWVkMiwgc2VlZDJfbGVuLAotKwkJc2VlZDMsIHNlZWQzX2xlbiwKLSsJCXNlZWQ0LCBzZWVk NF9sZW4sCi0rCQlzZWVkNSwgc2VlZDVfbGVuLAotKwkJc2VjLCBzbGVuLAotKwkJb3V0MSwgb3V0 Miwgb2xlbik7Ci0rCX0KLSsKLSBzdGF0aWMgaW50IHRsczFfZ2VuZXJhdGVfa2V5X2Jsb2NrKFNT TCAqcywgdW5zaWduZWQgY2hhciAqa20sCi0gCSAgICAgdW5zaWduZWQgY2hhciAqdG1wLCBpbnQg bnVtKQotIAl7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMWktcHBjLWFzbS11cGRhdGUucGF0 Y2ggYi9vcGVuc3NsLTEuMC4xaS1wcGMtYXNtLXVwZGF0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggY2JmMjIwYy4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4xaS1wcGMt YXNtLXVwZGF0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2MzYgKzAsMCBAQAotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMWkvY29uZmlnLnBwYy1hc20gb3BlbnNzbC0xLjAuMWkvY29uZmlnCi0t LS0gb3BlbnNzbC0xLjAuMWkvY29uZmlnLnBwYy1hc20JMjAxNC0wOC0wNiAyMzoxMDo1Ni4wMDAw MDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jb25maWcJMjAxNC0wOC0xMyAxOTo0Njoy MS4wOTI1NzgxMDQgKzAyMDAKLUBAIC01ODcsMTMgKzU4NywyMCBAQCBjYXNlICIkR1VFU1NPUyIg aW4KLSAJZmkKLSAJOzsKLSAgIHBwYzY0LSotbGludXgyKQotLQllY2hvICJXQVJOSU5HISBJZiB5 b3Ugd2lzaCB0byBidWlsZCA2NC1iaXQgbGlicmFyeSwgdGhlbiB5b3UgaGF2ZSB0byIKLS0JZWNo byAiICAgICAgICAgaW52b2tlICcuL0NvbmZpZ3VyZSBsaW51eC1wcGM2NCcgKm1hbnVhbGx5Ki4i Ci0tCWlmIFsgIiRURVNUIiA9ICJmYWxzZSIgLWEgLXQgMSBdOyB0aGVuCi0tCSAgICBlY2hvICIg ICAgICAgICBZb3UgaGF2ZSBhYm91dCA1IHNlY29uZHMgdG8gcHJlc3MgQ3RybC1DIHRvIGFib3J0 LiIKLS0JICAgICh0cmFwICJzdHR5IGBzdHR5IC1nYCIgMiAwOyBzdHR5IC1pY2Fub24gbWluIDAg dGltZSA1MDsgcmVhZCB3YXN0ZSkgPCYxCi0rCWlmIFsgLXogIiRLRVJORUxfQklUUyIgXTsgdGhl bgotKwkgICAgZWNobyAiV0FSTklORyEgSWYgeW91IHdpc2ggdG8gYnVpbGQgNjQtYml0IGxpYnJh cnksIHRoZW4geW91IGhhdmUgdG8iCi0rCSAgICBlY2hvICIgICAgICAgICBpbnZva2UgJy4vQ29u ZmlndXJlIGxpbnV4LXBwYzY0JyAqbWFudWFsbHkqLiIKLSsJICAgIGlmIFsgIiRURVNUIiA9ICJm YWxzZSIgLWEgLXQgMSBdOyB0aGVuCi0rCQllY2hvICIgICAgICAgICBZb3UgaGF2ZSBhYm91dCA1 IHNlY29uZHMgdG8gcHJlc3MgQ3RybC1DIHRvIGFib3J0LiIKLSsJCSh0cmFwICJzdHR5IGBzdHR5 IC1nYCIgMiAwOyBzdHR5IC1pY2Fub24gbWluIDAgdGltZSA1MDsgcmVhZCB3YXN0ZSkgPCYxCi0r CSAgICBmaQotKwlmaQotKwlpZiBbICIkS0VSTkVMX0JJVFMiID0gIjY0IiBdOyB0aGVuCi0rCSAg ICBPVVQ9ImxpbnV4LXBwYzY0IgotKwllbHNlCi0rCSAgICBPVVQ9ImxpbnV4LXBwYyIKLSsJICAg IChlY2hvICJfX0xQNjRfXyIgfCBnY2MgLUUgLXggYyAtIDI+L2Rldi9udWxsIHwgZ3JlcCAiXl9f TFA2NF9fIiAyPiYxID4gL2Rldi9udWxsKSB8fCBvcHRpb25zPSIkb3B0aW9ucyAtbTMyIgotIAlm aQotLQlPVVQ9ImxpbnV4LXBwYyIKLSAJOzsKLSAgIHBwYy0qLWxpbnV4MikgT1VUPSJsaW51eC1w cGMiIDs7Ci0gICBwcGM2MHgtKi12eHdvcmtzKikgT1VUPSJ2eHdvcmtzLXBwYzYweCIgOzsKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjFpL0NvbmZpZ3VyZS5wcGMtYXNtIG9wZW5zc2wtMS4wLjFpL0Nv bmZpZ3VyZQotLS0tIG9wZW5zc2wtMS4wLjFpL0NvbmZpZ3VyZS5wcGMtYXNtCTIwMTQtMDgtMDYg MjM6MTA6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWkvQ29uZmlndXJlCTIw MTQtMDgtMTMgMTk6NDY6MjEuMDkyNTc4MTA0ICswMjAwCi1AQCAtMTM5LDggKzEzOSw4IEBAIG15 ICRzMzkweF9hc209InMzOTB4Y2FwLm8gczM5MHhjcHVpZC5vOmIKLSBteSAkYXJtdjRfYXNtPSJh cm1jYXAubyBhcm12NGNwdWlkLm86Ym5fYXNtLm8gYXJtdjQtbW9udC5vIGFybXY0LWdmMm0ubzo6 YWVzX2NiYy5vIGFlcy1hcm12NC5vOjo6c2hhMS1hcm12NC1sYXJnZS5vIHNoYTI1Ni1hcm12NC5v IHNoYTUxMi1hcm12NC5vOjo6Ojo6OmdoYXNoLWFybXY0Lm86OnZvaWQiOwotIG15ICRwYXJpc2Mx MV9hc209InBhcmlzY2lkLm86Ym5fYXNtLm8gcGFyaXNjLW1vbnQubzo6YWVzX2NvcmUubyBhZXNf Y2JjLm8gYWVzLXBhcmlzYy5vOjo6c2hhMS1wYXJpc2MubyBzaGEyNTYtcGFyaXNjLm8gc2hhNTEy LXBhcmlzYy5vOjpyYzQtcGFyaXNjLm86Ojo6OmdoYXNoLXBhcmlzYy5vOjozMiI7Ci0gbXkgJHBh cmlzYzIwX2FzbT0icGFyaXNjaWQubzpwYS1yaXNjMlcubyBwYXJpc2MtbW9udC5vOjphZXNfY29y ZS5vIGFlc19jYmMubyBhZXMtcGFyaXNjLm86OjpzaGExLXBhcmlzYy5vIHNoYTI1Ni1wYXJpc2Mu byBzaGE1MTItcGFyaXNjLm86OnJjNC1wYXJpc2Mubzo6Ojo6Z2hhc2gtcGFyaXNjLm86OjY0IjsK LS1teSAkcHBjMzJfYXNtPSJwcGNjcHVpZC5vIHBwY2NhcC5vOmJuLXBwYy5vIHBwYy1tb250Lm8g cHBjNjQtbW9udC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtcHBjLm86OjpzaGExLXBwYy5v IHNoYTI1Ni1wcGMubzo6Ojo6Ojo6IjsKLS1teSAkcHBjNjRfYXNtPSJwcGNjcHVpZC5vIHBwY2Nh cC5vOmJuLXBwYy5vIHBwYy1tb250Lm8gcHBjNjQtbW9udC5vOjphZXNfY29yZS5vIGFlc19jYmMu byBhZXMtcHBjLm86OjpzaGExLXBwYy5vIHNoYTI1Ni1wcGMubyBzaGE1MTItcHBjLm86Ojo6Ojo6 OiI7Ci0rbXkgJHBwYzY0X2FzbT0icHBjY3B1aWQubyBwcGNjYXAubzpibi1wcGMubyBwcGMtbW9u dC5vIHBwYzY0LW1vbnQubzo6YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLXBwYy5vIHZwYWVzLXBw Yy5vIGFlc3A4LXBwYy5vOjo6c2hhMS1wcGMubyBzaGEyNTYtcHBjLm8gc2hhNTEyLXBwYy5vIHNo YTI1NnA4LXBwYy5vIHNoYTUxMnA4LXBwYy5vOjo6Ojo6OmdoYXNocDgtcHBjLm86IjsKLStteSAk cHBjMzJfYXNtPSRwcGM2NF9hc207Ci0gbXkgJG5vX2FzbT0iOjo6Ojo6Ojo6Ojo6Ojo6dm9pZCI7 Ci0gCi0gIyBBcyBmb3IgJEJTRHRocmVhZHMuIElkZWEgaXMgdG8gbWFpbnRhaW4gImNvbGxlY3Rp dmUiIHNldCBvZiBmbGFncywKLUBAIC0zNTcsNiArMzU3LDcgQEAgbXkgJXRhYmxlPSgKLSAjIyMj Ci0gImxpbnV4LWdlbmVyaWM2NCIsImdjYzotRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFO VDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERF U19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5c JChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSAibGludXgtcHBjNjQiLAkiZ2NjOi1t NjQgLURCX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhU WV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDok e3BwYzY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQo U0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKLSsibGludXgtcHBjNjRsZSIsImdj YzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6 U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJP TEw6JHBwYzY0X2FzbTpsaW51eDY0bGU6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNv LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjoiLAotICJsaW51eC1pYTY0IiwJImdj YzotRExfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZ X0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX0lOVDoke2lhNjRfYXNtfTpk bGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlO T1IpIiwKLSAibGludXgtaWE2NC1lY2MiLCJlY2M6LURMX0VORElBTiAtRFRFUk1JTyAtTzIgLVdh bGwgLW5vX2NwcHJ0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRf Q0hVTksgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5c JChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSAibGludXgtaWE2NC1pY2MiLCJpY2M6 LURMX0VORElBTiAtRFRFUk1JTyAtTzIgLVdhbGwgLW5vX2NwcHJ0OjotRF9SRUVOVFJBTlQ6Oi1s ZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19JTlQ6JHtpYTY0 X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNI TElCX01JTk9SKSIsCi1AQCAtNDYyLDggKzQ2Myw4IEBAIG15ICV0YWJsZT0oCi0gCi0gIyMjIyBJ Qk0ncyBBSVguCi0gImFpeDMtY2MiLCAgImNjOi1PIC1EQl9FTkRJQU4gLXFtYXhtZW09MTYzODQ6 Oih1bmtub3duKTpBSVg6OkJOX0xMT05HIFJDNF9DSEFSOjo6IiwKLS0iYWl4LWdjYyIsICAiZ2Nj Oi1PIC1EQl9FTkRJQU46Oi1wdGhyZWFkOkFJWDo6Qk5fTExPTkcgUkM0X0NIQVI6JHtwcGMzMl9h c219OmFpeDMyOmRsZmNuOmFpeC1zaGFyZWQ6Oi1zaGFyZWQgLVdsLC1HOi5zby5cJChTSExJQl9N QUpPUikuXCQoU0hMSUJfTUlOT1IpOjotWDMyIiwKLS0iYWl4NjQtZ2NjIiwiZ2NjOi1tYWl4NjQg LU8gLURCX0VORElBTjo6LXB0aHJlYWQ6QUlYOjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFS OiR7cHBjNjRfYXNtfTphaXg2NDpkbGZjbjphaXgtc2hhcmVkOjotbWFpeDY0IC1zaGFyZWQgLVds LC1HOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjotWDY0IiwKLSsiYWl4LWdj YyIsICAiZ2NjOi1PIC1EQl9FTkRJQU46Oi1wdGhyZWFkOkFJWDo6Qk5fTExPTkcgUkM0X0NIQVI6 JHBwYzMyX2FzbTphaXgzMjpkbGZjbjphaXgtc2hhcmVkOjotc2hhcmVkIC1XbCwtRzouc28uXCQo U0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6LVgzMiIsCi0rImFpeDY0LWdjYyIsImdjYzot bWFpeDY0IC1PIC1EQl9FTkRJQU46Oi1wdGhyZWFkOkFJWDo6U0lYVFlfRk9VUl9CSVRfTE9ORyBS QzRfQ0hBUjokcHBjNjRfYXNtOmFpeDY0OmRsZmNuOmFpeC1zaGFyZWQ6Oi1tYWl4NjQgLXNoYXJl ZCAtV2wsLUc6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Oi1YNjQiLAotICMg QmVsb3cgdGFyZ2V0cyBhc3N1bWUgQUlYIDUuIElkZWEgaXMgdG8gZWZmZWN0aXZlbHkgZGlzcmVn YXJkICRPQkpFQ1RfTU9ERQotICMgYXQgYnVpbGQgdGltZS4gJE9CSkVDVF9NT0RFIGlzIHJlc3Bl Y3RlZCBhdCAuL2NvbmZpZyBzdGFnZSEKLSAiYWl4LWNjIiwgICAiY2M6LXEzMiAtTyAtREJfRU5E SUFOIC1xbWF4bWVtPTE2Mzg0IC1xcm8gLXFyb2NvbnN0OjotcXRocmVhZGVkIC1EX1RIUkVBRF9T QUZFOkFJWDo6Qk5fTExPTkcgUkM0X0NIQVI6JHtwcGMzMl9hc219OmFpeDMyOmRsZmNuOmFpeC1z aGFyZWQ6Oi1xMzIgLUc6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Oi1YIDMy IiwKLUBAIC0xNTI2LDcgKzE1MjcsNyBAQCBlbHNlCXsKLSAJJHdwX29iaj0id3BfYmxvY2subyI7 Ci0gCX0KLSAkY21sbF9vYmo9JGNtbGxfZW5jCXVubGVzcyAoJGNtbGxfb2JqID1+IC8ubyQvKTsK LS1pZiAoJG1vZGVzX29iaiA9fiAvZ2hhc2gvKQotK2lmICgkbW9kZXNfb2JqID1+IC9naGFzaFwt LykKLSAJewotIAkkY2ZsYWdzLj0iIC1ER0hBU0hfQVNNIjsKLSAJfQotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMWkvY3J5cHRvL2Flcy9hc20vYWVzLXBwYy5wbC5wcGMtYXNtIG9wZW5zc2wtMS4wLjFp L2NyeXB0by9hZXMvYXNtL2Flcy1wcGMucGwKLS0tLSBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYWVz L2FzbS9hZXMtcHBjLnBsLnBwYy1hc20JMjAxNC0wOC0wNiAyMzoxMDo1Ni4wMDAwMDAwMDAgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYWVzL2FzbS9hZXMtcHBjLnBsCTIwMTQtMDgt MTMgMTk6NDY6MjEuMDkyNTc4MTA0ICswMjAwCi1AQCAtNDUsNiArNDUsOCBAQCBpZiAoJGZsYXZv dXIgPX4gLzY0LykgewotIAkkUFVTSAk9InN0dyI7Ci0gfSBlbHNlIHsgZGllICJub25zZW5zZSAk Zmxhdm91ciI7IH0KLSAKLSskTElUVExFX0VORElBTiA9ICgkZmxhdm91cj1+L2xlJC8pID8gJFNJ WkVfVCA6IDA7Ci0rCi0gJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKLSAo ICR4bGF0ZT0iJHtkaXJ9cHBjLXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlICkgb3IKLSAoICR4bGF0 ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS9wcGMteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUpIG9yCi1A QCAtNjgsNyArNzAsNyBAQCAka2V5PSJyNSI7Ci0gJFRibDA9InIzIjsKLSAkVGJsMT0icjYiOwot ICRUYmwyPSJyNyI7Ci0tJFRibDM9InIyIjsKLSskVGJsMz0kb3V0OwkjIHN0YXkgYXdheSBmcm9t ICJyMiI7ICRvdXQgaXMgb2ZmbG9hZGVkIHRvIHN0YWNrCi0gCi0gJHMwPSJyOCI7Ci0gJHMxPSJy OSI7Ci1AQCAtNzYsNyArNzgsNyBAQCAkczI9InIxMCI7Ci0gJHMzPSJyMTEiOwotIAotICR0MD0i cjEyIjsKLS0kdDE9InIxMyI7Ci0rJHQxPSJyMCI7CSMgc3RheSBhd2F5IGZyb20gInIxMyI7Ci0g JHQyPSJyMTQiOwotICR0Mz0icjE1IjsKLSAKLUBAIC0xMDAsOSArMTAyLDYgQEAgJGFjYzEzPSJy MjkiOwotICRhY2MxND0icjMwIjsKLSAkYWNjMTU9InIzMSI7Ci0gCi0tIyBzdGF5IGF3YXkgZnJv bSBUTFMgcG9pbnRlcgotLWlmICgkU0laRV9UPT04KQl7IGRpZSBpZiAoJHQxIG5lICJyMTMiKTsg ICR0MT0icjAiOwkJfQotLWVsc2UJCXsgZGllIGlmICgkVGJsMyBuZSAicjIiKTsgJFRibDM9JHQw OyAkdDA9InIwIjsJfQotICRtYXNrODA9JFRibDI7Ci0gJG1hc2sxYj0kVGJsMzsKLSAKLUBAIC0z MzcsOCArMzM2LDcgQEAgJGNvZGUuPTw8X19fOwotIAkkU1RVCSRzcCwtJEZSQU1FKCRzcCkKLSAJ bWZscglyMAotIAotLQkkUFVTSAkkdG9jLGAkRlJBTUUtJFNJWkVfVCoyMGAoJHNwKQotLQkkUFVT SAlyMTMsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3ApCi0rCSRQVVNICSRvdXQsYCRGUkFNRS0kU0la RV9UKjE5YCgkc3ApCi0gCSRQVVNICXIxNCxgJEZSQU1FLSRTSVpFX1QqMThgKCRzcCkKLSAJJFBV U0gJcjE1LGAkRlJBTUUtJFNJWkVfVCoxN2AoJHNwKQotIAkkUFVTSAlyMTYsYCRGUkFNRS0kU0la RV9UKjE2YCgkc3ApCi1AQCAtMzY1LDE2ICszNjMsNjEgQEAgJGNvZGUuPTw8X19fOwotIAlibmUJ TGVuY191bmFsaWduZWQKLSAKLSBMZW5jX3VuYWxpZ25lZF9vazoKLStfX18KLSskY29kZS49PDxf X18gaWYgKCEkTElUVExFX0VORElBTik7Ci0gCWx3egkkczAsMCgkaW5wKQotIAlsd3oJJHMxLDQo JGlucCkKLSAJbHd6CSRzMiw4KCRpbnApCi0gCWx3egkkczMsMTIoJGlucCkKLStfX18KLSskY29k ZS49PDxfX18gaWYgKCRMSVRUTEVfRU5ESUFOKTsKLSsJbHd6CSR0MCwwKCRpbnApCi0rCWx3egkk dDEsNCgkaW5wKQotKwlsd3oJJHQyLDgoJGlucCkKLSsJbHd6CSR0MywxMigkaW5wKQotKwlyb3Rs d2kJJHMwLCR0MCw4Ci0rCXJvdGx3aQkkczEsJHQxLDgKLSsJcm90bHdpCSRzMiwkdDIsOAotKwly b3Rsd2kJJHMzLCR0Myw4Ci0rCXJsd2ltaQkkczAsJHQwLDI0LDAsNwotKwlybHdpbWkJJHMxLCR0 MSwyNCwwLDcKLSsJcmx3aW1pCSRzMiwkdDIsMjQsMCw3Ci0rCXJsd2ltaQkkczMsJHQzLDI0LDAs NwotKwlybHdpbWkJJHMwLCR0MCwyNCwxNiwyMwotKwlybHdpbWkJJHMxLCR0MSwyNCwxNiwyMwot KwlybHdpbWkJJHMyLCR0MiwyNCwxNiwyMwotKwlybHdpbWkJJHMzLCR0MywyNCwxNiwyMwotK19f XwotKyRjb2RlLj08PF9fXzsKLSAJYmwJTEFFU19UZQotIAlibAlMcHBjX0FFU19lbmNyeXB0X2Nv bXBhY3QKLSsJJFBPUAkkb3V0LGAkRlJBTUUtJFNJWkVfVCoxOWAoJHNwKQotK19fXwotKyRjb2Rl Lj08PF9fXyBpZiAoJExJVFRMRV9FTkRJQU4pOwotKwlyb3Rsd2kJJHQwLCRzMCw4Ci0rCXJvdGx3 aQkkdDEsJHMxLDgKLSsJcm90bHdpCSR0MiwkczIsOAotKwlyb3Rsd2kJJHQzLCRzMyw4Ci0rCXJs d2ltaQkkdDAsJHMwLDI0LDAsNwotKwlybHdpbWkJJHQxLCRzMSwyNCwwLDcKLSsJcmx3aW1pCSR0 MiwkczIsMjQsMCw3Ci0rCXJsd2ltaQkkdDMsJHMzLDI0LDAsNwotKwlybHdpbWkJJHQwLCRzMCwy NCwxNiwyMwotKwlybHdpbWkJJHQxLCRzMSwyNCwxNiwyMwotKwlybHdpbWkJJHQyLCRzMiwyNCwx NiwyMwotKwlybHdpbWkJJHQzLCRzMywyNCwxNiwyMwotKwlzdHcJJHQwLDAoJG91dCkKLSsJc3R3 CSR0MSw0KCRvdXQpCi0rCXN0dwkkdDIsOCgkb3V0KQotKwlzdHcJJHQzLDEyKCRvdXQpCi0rX19f Ci0rJGNvZGUuPTw8X19fIGlmICghJExJVFRMRV9FTkRJQU4pOwotIAlzdHcJJHMwLDAoJG91dCkK LSAJc3R3CSRzMSw0KCRvdXQpCi0gCXN0dwkkczIsOCgkb3V0KQotIAlzdHcJJHMzLDEyKCRvdXQp Ci0rX19fCi0rJGNvZGUuPTw8X19fOwotIAliCUxlbmNfZG9uZQotIAotIExlbmNfdW5hbGlnbmVk OgotQEAgLTQxNyw2ICs0NjAsNyBAQCBMZW5jX3hwYWdlOgotIAotIAlibAlMQUVTX1RlCi0gCWJs CUxwcGNfQUVTX2VuY3J5cHRfY29tcGFjdAotKwkkUE9QCSRvdXQsYCRGUkFNRS0kU0laRV9UKjE5 YCgkc3ApCi0gCi0gCWV4dHJ3aQkkYWNjMDAsJHMwLDgsMAotIAlleHRyd2kJJGFjYzAxLCRzMCw4 LDgKLUBAIC00NDksOCArNDkzLDYgQEAgTGVuY194cGFnZToKLSAKLSBMZW5jX2RvbmU6Ci0gCSRQ T1AJcjAsYCRGUkFNRSskTFJTQVZFYCgkc3ApCi0tCSRQT1AJJHRvYyxgJEZSQU1FLSRTSVpFX1Qq MjBgKCRzcCkKLS0JJFBPUAlyMTMsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3ApCi0gCSRQT1AJcjE0 LGAkRlJBTUUtJFNJWkVfVCoxOGAoJHNwKQotIAkkUE9QCXIxNSxgJEZSQU1FLSRTSVpFX1QqMTdg KCRzcCkKLSAJJFBPUAlyMTYsYCRGUkFNRS0kU0laRV9UKjE2YCgkc3ApCi1AQCAtNzY0LDYgKzgw Niw3IEBAIExlbmNfY29tcGFjdF9kb25lOgotIAlibHIKLSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEy LDB4MTQsMCwwLDAsMCwwCi0rLnNpemUJLkFFU19lbmNyeXB0LC4tLkFFU19lbmNyeXB0Ci0gCi0g Lmdsb2JsCS5BRVNfZGVjcnlwdAotIC5hbGlnbgk3Ci1AQCAtNzcxLDggKzgxNCw3IEBAIExlbmNf Y29tcGFjdF9kb25lOgotIAkkU1RVCSRzcCwtJEZSQU1FKCRzcCkKLSAJbWZscglyMAotIAotLQkk UFVTSAkkdG9jLGAkRlJBTUUtJFNJWkVfVCoyMGAoJHNwKQotLQkkUFVTSAlyMTMsYCRGUkFNRS0k U0laRV9UKjE5YCgkc3ApCi0rCSRQVVNICSRvdXQsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3ApCi0g CSRQVVNICXIxNCxgJEZSQU1FLSRTSVpFX1QqMThgKCRzcCkKLSAJJFBVU0gJcjE1LGAkRlJBTUUt JFNJWkVfVCoxN2AoJHNwKQotIAkkUFVTSAlyMTYsYCRGUkFNRS0kU0laRV9UKjE2YCgkc3ApCi1A QCAtNzk5LDE2ICs4NDEsNjEgQEAgTGVuY19jb21wYWN0X2RvbmU6Ci0gCWJuZQlMZGVjX3VuYWxp Z25lZAotIAotIExkZWNfdW5hbGlnbmVkX29rOgotK19fXwotKyRjb2RlLj08PF9fXyBpZiAoISRM SVRUTEVfRU5ESUFOKTsKLSAJbHd6CSRzMCwwKCRpbnApCi0gCWx3egkkczEsNCgkaW5wKQotIAls d3oJJHMyLDgoJGlucCkKLSAJbHd6CSRzMywxMigkaW5wKQotK19fXwotKyRjb2RlLj08PF9fXyBp ZiAoJExJVFRMRV9FTkRJQU4pOwotKwlsd3oJJHQwLDAoJGlucCkKLSsJbHd6CSR0MSw0KCRpbnAp Ci0rCWx3egkkdDIsOCgkaW5wKQotKwlsd3oJJHQzLDEyKCRpbnApCi0rCXJvdGx3aQkkczAsJHQw LDgKLSsJcm90bHdpCSRzMSwkdDEsOAotKwlyb3Rsd2kJJHMyLCR0Miw4Ci0rCXJvdGx3aQkkczMs JHQzLDgKLSsJcmx3aW1pCSRzMCwkdDAsMjQsMCw3Ci0rCXJsd2ltaQkkczEsJHQxLDI0LDAsNwot KwlybHdpbWkJJHMyLCR0MiwyNCwwLDcKLSsJcmx3aW1pCSRzMywkdDMsMjQsMCw3Ci0rCXJsd2lt aQkkczAsJHQwLDI0LDE2LDIzCi0rCXJsd2ltaQkkczEsJHQxLDI0LDE2LDIzCi0rCXJsd2ltaQkk czIsJHQyLDI0LDE2LDIzCi0rCXJsd2ltaQkkczMsJHQzLDI0LDE2LDIzCi0rX19fCi0rJGNvZGUu PTw8X19fOwotIAlibAlMQUVTX1RkCi0gCWJsCUxwcGNfQUVTX2RlY3J5cHRfY29tcGFjdAotKwkk UE9QCSRvdXQsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3ApCi0rX19fCi0rJGNvZGUuPTw8X19fIGlm ICgkTElUVExFX0VORElBTik7Ci0rCXJvdGx3aQkkdDAsJHMwLDgKLSsJcm90bHdpCSR0MSwkczEs OAotKwlyb3Rsd2kJJHQyLCRzMiw4Ci0rCXJvdGx3aQkkdDMsJHMzLDgKLSsJcmx3aW1pCSR0MCwk czAsMjQsMCw3Ci0rCXJsd2ltaQkkdDEsJHMxLDI0LDAsNwotKwlybHdpbWkJJHQyLCRzMiwyNCww LDcKLSsJcmx3aW1pCSR0MywkczMsMjQsMCw3Ci0rCXJsd2ltaQkkdDAsJHMwLDI0LDE2LDIzCi0r CXJsd2ltaQkkdDEsJHMxLDI0LDE2LDIzCi0rCXJsd2ltaQkkdDIsJHMyLDI0LDE2LDIzCi0rCXJs d2ltaQkkdDMsJHMzLDI0LDE2LDIzCi0rCXN0dwkkdDAsMCgkb3V0KQotKwlzdHcJJHQxLDQoJG91 dCkKLSsJc3R3CSR0Miw4KCRvdXQpCi0rCXN0dwkkdDMsMTIoJG91dCkKLStfX18KLSskY29kZS49 PDxfX18gaWYgKCEkTElUVExFX0VORElBTik7Ci0gCXN0dwkkczAsMCgkb3V0KQotIAlzdHcJJHMx LDQoJG91dCkKLSAJc3R3CSRzMiw4KCRvdXQpCi0gCXN0dwkkczMsMTIoJG91dCkKLStfX18KLSsk Y29kZS49PDxfX187Ci0gCWIJTGRlY19kb25lCi0gCi0gTGRlY191bmFsaWduZWQ6Ci1AQCAtODUx LDYgKzkzOCw3IEBAIExkZWNfeHBhZ2U6Ci0gCi0gCWJsCUxBRVNfVGQKLSAJYmwJTHBwY19BRVNf ZGVjcnlwdF9jb21wYWN0Ci0rCSRQT1AJJG91dCxgJEZSQU1FLSRTSVpFX1QqMTlgKCRzcCkKLSAK LSAJZXh0cndpCSRhY2MwMCwkczAsOCwwCi0gCWV4dHJ3aQkkYWNjMDEsJHMwLDgsOAotQEAgLTg4 Myw4ICs5NzEsNiBAQCBMZGVjX3hwYWdlOgotIAotIExkZWNfZG9uZToKLSAJJFBPUAlyMCxgJEZS QU1FKyRMUlNBVkVgKCRzcCkKLS0JJFBPUAkkdG9jLGAkRlJBTUUtJFNJWkVfVCoyMGAoJHNwKQot LQkkUE9QCXIxMyxgJEZSQU1FLSRTSVpFX1QqMTlgKCRzcCkKLSAJJFBPUAlyMTQsYCRGUkFNRS0k U0laRV9UKjE4YCgkc3ApCi0gCSRQT1AJcjE1LGAkRlJBTUUtJFNJWkVfVCoxN2AoJHNwKQotIAkk UE9QCXIxNixgJEZSQU1FLSRTSVpFX1QqMTZgKCRzcCkKLUBAIC0xMzU1LDYgKzE0NDEsNyBAQCBM ZGVjX2NvbXBhY3RfZG9uZToKLSAJYmxyCi0gCS5sb25nCTAKLSAJLmJ5dGUJMCwxMiwweDE0LDAs MCwwLDAsMAotKy5zaXplCS5BRVNfZGVjcnlwdCwuLS5BRVNfZGVjcnlwdAotIAotIC5hc2Npegki QUVTIGZvciBQUEMsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCi0gLmFsaWdu CTcKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9hZXMvYXNtL2Flc3A4LXBwYy5wbC5w cGMtYXNtIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9hZXMvYXNtL2Flc3A4LXBwYy5wbAotLS0tIG9w ZW5zc2wtMS4wLjFpL2NyeXB0by9hZXMvYXNtL2Flc3A4LXBwYy5wbC5wcGMtYXNtCTIwMTQtMDgt MTMgMTk6NDY6MjEuMDkzNTc4MTI4ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2Fl cy9hc20vYWVzcDgtcHBjLnBsCTIwMTQtMDgtMTMgMTk6NDY6MjEuMDkzNTc4MTI4ICswMjAwCi1A QCAtMCwwICsxLDE5NDAgQEAKLSsjIS91c3IvYmluL2VudiBwZXJsCi0rIwotKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLSsjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0 aGUgT3BlblNTTAotKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNl bnNlZCB1bmRlciBPcGVuU1NMIGFuZAotKyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcg b24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKLSsjIGRldGFpbHMgc2VlIGh0dHA6 Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgotKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsj Ci0rIyBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEFFUyBpbnN0cnVjdGlvbnMg YXMgcGVyIFBvd2VySVNBCi0rIyBzcGVjaWZpY2F0aW9uIHZlcnNpb24gMi4wNywgZmlyc3QgaW1w bGVtZW50ZWQgYnkgUE9XRVI4IHByb2Nlc3Nvci4KLSsjIFRoZSBtb2R1bGUgaXMgZW5kaWFuLWFn bm9zdGljIGluIHNlbnNlIHRoYXQgaXQgc3VwcG9ydHMgYm90aCBiaWctCi0rIyBhbmQgbGl0dGxl LWVuZGlhbiBjYXNlcy4gRGF0YSBhbGlnbm1lbnQgaW4gcGFyYWxsZWxpemFibGUgbW9kZXMgaXMK LSsjIGhhbmRsZWQgd2l0aCBWU1ggbG9hZHMgYW5kIHN0b3Jlcywgd2hpY2ggaW1wbGllcyBNU1Iu VlNYIGZsYWcgYmVpbmcKLSsjIHNldC4gSXQgc2hvdWxkIGFsc28gYmUgbm90ZWQgdGhhdCBJU0Eg c3BlY2lmaWNhdGlvbiBkb2Vzbid0IHByb2hpYml0Ci0rIyBhbGlnbm1lbnQgZXhjZXB0aW9ucyBm b3IgdGhlc2UgaW5zdHJ1Y3Rpb25zIG9uIHBhZ2UgYm91bmRhcmllcy4KLSsjIEluaXRpYWxseSBh bGlnbm1lbnQgd2FzIGhhbmRsZWQgaW4gcHVyZSBBbHRpVmVjL1ZNWCB3YXkgW3doZW4gZGF0YQot KyMgaXMgYWxpZ25lZCBwcm9ncmFtbWF0aWNhbGx5LCB3aGljaCBpbiB0dXJuIGd1YXJhbnRlZXMg ZXhjZXB0aW9uLQotKyMgZnJlZSBleGVjdXRpb25dLCBidXQgaXQgdHVybmVkIHRvIGhhbXBlciBw ZXJmb3JtYW5jZSB3aGVuIHZjaXBoZXIKLSsjIGluc3RydWN0aW9ucyBhcmUgaW50ZXJsZWF2ZWQu IEl0J3MgcmVja29uZWQgdGhhdCBldmVudHVhbAotKyMgbWlzYWxpZ25tZW50IHBlbmFsdGllcyBh dCBwYWdlIGJvdW5kYXJpZXMgYXJlIGluIGF2ZXJhZ2UgbG93ZXIKLSsjIHRoYW4gYWRkaXRpb25h bCBvdmVyaGVhZCBpbiBwdXJlIEFsdGlWZWMgYXBwcm9hY2guCi0rCi0rJGZsYXZvdXIgPSBzaGlm dDsKLSsKLStpZiAoJGZsYXZvdXIgPX4gLzY0LykgewotKwkkU0laRV9UCT04OwotKwkkTFJTQVZF CT0yKiRTSVpFX1Q7Ci0rCSRTVFUJPSJzdGR1IjsKLSsJJFBPUAk9ImxkIjsKLSsJJFBVU0gJPSJz dGQiOwotKwkkVUNNUAk9ImNtcGxkIjsKLSsJJFNITAk9InNsZGkiOwotK30gZWxzaWYgKCRmbGF2 b3VyID1+IC8zMi8pIHsKLSsJJFNJWkVfVAk9NDsKLSsJJExSU0FWRQk9JFNJWkVfVDsKLSsJJFNU VQk9InN0d3UiOwotKwkkUE9QCT0ibHd6IjsKLSsJJFBVU0gJPSJzdHciOwotKwkkVUNNUAk9ImNt cGx3IjsKLSsJJFNITAk9InNsd2kiOwotK30gZWxzZSB7IGRpZSAibm9uc2Vuc2UgJGZsYXZvdXIi OyB9Ci0rCi0rJExJVFRMRV9FTkRJQU4gPSAoJGZsYXZvdXI9fi9sZSQvKSA/ICRTSVpFX1QgOiAw OwotKwotKyQwID1+IG0vKC4qW1wvXFxdKVteXC9cXF0rJC87ICRkaXI9JDE7Ci0rKCAkeGxhdGU9 IiR7ZGlyfXBwYy14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSApIG9yCi0rKCAkeGxhdGU9IiR7ZGly fS4uLy4uL3Blcmxhc20vcHBjLXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlKSBvcgotK2RpZSAiY2Fu J3QgbG9jYXRlIHBwYy14bGF0ZS5wbCI7Ci0rCi0rb3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAk Zmxhdm91ciAiLnNoaWZ0IHx8IGRpZSAiY2FuJ3QgY2FsbCAkeGxhdGU6ICQhIjsKLSsKLSskRlJB TUU9OCokU0laRV9UOwotKyRwcmVmaXg9ImFlc19wOCI7Ci0rCi0rJHNwPSJyMSI7Ci0rJHZyc2F2 ZT0icjEyIjsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0re3t7CSMgS2V5IHNldHVwIHByb2NlZHVy ZXMJCQkJCQkjCi0rbXkgKCRpbnAsJGJpdHMsJG91dCwkcHRyLCRjbnQsJHJvdW5kcyk9bWFwKCJy JF8iLCgzLi44KSk7Ci0rbXkgKCR6ZXJvLCRpbjAsJGluMSwka2V5LCRyY29uLCRtYXNrLCR0bXAp PW1hcCgidiRfIiwoMC4uNikpOwotK215ICgkc3RhZ2UsJG91dHBlcm0sJG91dG1hc2ssJG91dGhl YWQsJG91dHRhaWwpPW1hcCgidiRfIiwoNy4uMTEpKTsKLSsKLSskY29kZS49PDxfX187Ci0rLm1h Y2hpbmUJImFueSIKLSsKLSsudGV4dAotKwotKy5hbGlnbgk3Ci0rcmNvbjoKLSsubG9uZwkweDAx MDAwMDAwLCAweDAxMDAwMDAwLCAweDAxMDAwMDAwLCAweDAxMDAwMDAwCT9yZXYKLSsubG9uZwkw eDFiMDAwMDAwLCAweDFiMDAwMDAwLCAweDFiMDAwMDAwLCAweDFiMDAwMDAwCT9yZXYKLSsubG9u ZwkweDBkMGUwZjBjLCAweDBkMGUwZjBjLCAweDBkMGUwZjBjLCAweDBkMGUwZjBjCT9yZXYKLSsu bG9uZwkwLDAsMCwwCQkJCQkJP2FzaXMKLStMY29uc3RzOgotKwltZmxyCXIwCi0rCWJjbAkyMCwz MSxcJCs0Ci0rCW1mbHIJJHB0cgkgI3Z2dnZ2ICJkaXN0YW5jZSBiZXR3ZWVuIC4gYW5kIHJjb24K LSsJYWRkaQkkcHRyLCRwdHIsLTB4NDgKLSsJbXRscglyMAotKwlibHIKLSsJLmxvbmcJMAotKwku Ynl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0rLmFzY2l6CSJBRVMgZm9yIFBvd2VySVNBIDIuMDcs IENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCi0rCi0rLmdsb2JsCS4ke3ByZWZp eH1fc2V0X2VuY3J5cHRfa2V5Ci0rLmFsaWduCTUKLSsuJHtwcmVmaXh9X3NldF9lbmNyeXB0X2tl eToKLStMc2V0X2VuY3J5cHRfa2V5OgotKwltZmxyCQlyMTEKLSsJJFBVU0gJCXIxMSwkTFJTQVZF KCRzcCkKLSsKLSsJbGkJCSRwdHIsLTEKLSsJJHtVQ01QfWkJJGlucCwwCi0rCWJlcS0JCUxlbmNf a2V5X2Fib3J0CQkjIGlmICgkaW5wPT0wKSByZXR1cm4gLTE7Ci0rCSR7VUNNUH1pCSRvdXQsMAot KwliZXEtCQlMZW5jX2tleV9hYm9ydAkJIyBpZiAoJG91dD09MCkgcmV0dXJuIC0xOwotKwlsaQkJ JHB0ciwtMgotKwljbXB3aQkJJGJpdHMsMTI4Ci0rCWJsdC0JCUxlbmNfa2V5X2Fib3J0Ci0rCWNt cHdpCQkkYml0cywyNTYKLSsJYmd0LQkJTGVuY19rZXlfYWJvcnQKLSsJYW5kaS4JCXIwLCRiaXRz LDB4M2YKLSsJYm5lLQkJTGVuY19rZXlfYWJvcnQKLSsKLSsJbGlzCQlyMCwweGZmZjAKLSsJbWZz cHIJCSR2cnNhdmUsMjU2Ci0rCW10c3ByCQkyNTYscjAKLSsKLSsJYmwJCUxjb25zdHMKLSsJbXRs cgkJcjExCi0rCi0rCW5lZwkJcjksJGlucAotKwlsdngJCSRpbjAsMCwkaW5wCi0rCWFkZGkJCSRp bnAsJGlucCwxNQkJIyAxNSBpcyBub3QgdHlwbwotKwlsdnNyCQkka2V5LDAscjkJCSMgYm9ycm93 ICRrZXkKLSsJbGkJCXI4LDB4MjAKLSsJY21wd2kJCSRiaXRzLDE5MgotKwlsdngJCSRpbjEsMCwk aW5wCi0rCWxlP3ZzcGx0aXNiCSRtYXNrLDB4MGYJCSMgYm9ycm93ICRtYXNrCi0rCWx2eAkJJHJj b24sMCwkcHRyCi0rCWxlP3Z4b3IJCSRrZXksJGtleSwkbWFzawkJIyBhZGp1c3QgZm9yIGJ5dGUg c3dhcAotKwlsdngJCSRtYXNrLHI4LCRwdHIKLSsJYWRkaQkJJHB0ciwkcHRyLDB4MTAKLSsJdnBl cm0JCSRpbjAsJGluMCwkaW4xLCRrZXkJIyBhbGlnbiBbYW5kIGJ5dGUgc3dhcCBpbiBMRV0KLSsJ bGkJCSRjbnQsOAotKwl2eG9yCQkkemVybywkemVybywkemVybwotKwltdGN0cgkJJGNudAotKwot Kwk/bHZzcgkJJG91dHBlcm0sMCwkb3V0Ci0rCXZzcGx0aXNiCSRvdXRtYXNrLC0xCi0rCWx2eAkJ JG91dGhlYWQsMCwkb3V0Ci0rCT92cGVybQkJJG91dG1hc2ssJHplcm8sJG91dG1hc2ssJG91dHBl cm0KLSsKLSsJYmx0CQlMb29wMTI4Ci0rCWFkZGkJCSRpbnAsJGlucCw4Ci0rCWJlcQkJTDE5Mgot KwlhZGRpCQkkaW5wLCRpbnAsOAotKwliCQlMMjU2Ci0rCi0rLmFsaWduCTQKLStMb29wMTI4Ogot Kwl2cGVybQkJJGtleSwkaW4wLCRpbjAsJG1hc2sJIyByb3RhdGUtbi1zcGxhdAotKwl2c2xkb2kJ CSR0bXAsJHplcm8sJGluMCwxMgkjID4+MzIKLSsJIHZwZXJtCQkkb3V0dGFpbCwkaW4wLCRpbjAs JG91dHBlcm0JIyByb3RhdGUKLSsJIHZzZWwJCSRzdGFnZSwkb3V0aGVhZCwkb3V0dGFpbCwkb3V0 bWFzawotKwkgdm1yCQkkb3V0aGVhZCwkb3V0dGFpbAotKwl2Y2lwaGVybGFzdAkka2V5LCRrZXks JHJjb24KLSsJIHN0dngJCSRzdGFnZSwwLCRvdXQKLSsJIGFkZGkJCSRvdXQsJG91dCwxNgotKwot Kwl2eG9yCQkkaW4wLCRpbjAsJHRtcAotKwl2c2xkb2kJCSR0bXAsJHplcm8sJHRtcCwxMgkjID4+ MzIKLSsJdnhvcgkJJGluMCwkaW4wLCR0bXAKLSsJdnNsZG9pCQkkdG1wLCR6ZXJvLCR0bXAsMTIJ IyA+PjMyCi0rCXZ4b3IJCSRpbjAsJGluMCwkdG1wCi0rCSB2YWRkdXdtCSRyY29uLCRyY29uLCRy Y29uCi0rCXZ4b3IJCSRpbjAsJGluMCwka2V5Ci0rCWJkbnoJCUxvb3AxMjgKLSsKLSsJbHZ4CQkk cmNvbiwwLCRwdHIJCSMgbGFzdCB0d28gcm91bmQga2V5cwotKwotKwl2cGVybQkJJGtleSwkaW4w LCRpbjAsJG1hc2sJIyByb3RhdGUtbi1zcGxhdAotKwl2c2xkb2kJCSR0bXAsJHplcm8sJGluMCwx MgkjID4+MzIKLSsJIHZwZXJtCQkkb3V0dGFpbCwkaW4wLCRpbjAsJG91dHBlcm0JIyByb3RhdGUK LSsJIHZzZWwJCSRzdGFnZSwkb3V0aGVhZCwkb3V0dGFpbCwkb3V0bWFzawotKwkgdm1yCQkkb3V0 aGVhZCwkb3V0dGFpbAotKwl2Y2lwaGVybGFzdAkka2V5LCRrZXksJHJjb24KLSsJIHN0dngJCSRz dGFnZSwwLCRvdXQKLSsJIGFkZGkJCSRvdXQsJG91dCwxNgotKwotKwl2eG9yCQkkaW4wLCRpbjAs JHRtcAotKwl2c2xkb2kJCSR0bXAsJHplcm8sJHRtcCwxMgkjID4+MzIKLSsJdnhvcgkJJGluMCwk aW4wLCR0bXAKLSsJdnNsZG9pCQkkdG1wLCR6ZXJvLCR0bXAsMTIJIyA+PjMyCi0rCXZ4b3IJCSRp bjAsJGluMCwkdG1wCi0rCSB2YWRkdXdtCSRyY29uLCRyY29uLCRyY29uCi0rCXZ4b3IJCSRpbjAs JGluMCwka2V5Ci0rCi0rCXZwZXJtCQkka2V5LCRpbjAsJGluMCwkbWFzawkjIHJvdGF0ZS1uLXNw bGF0Ci0rCXZzbGRvaQkJJHRtcCwkemVybywkaW4wLDEyCSMgPj4zMgotKwkgdnBlcm0JCSRvdXR0 YWlsLCRpbjAsJGluMCwkb3V0cGVybQkjIHJvdGF0ZQotKwkgdnNlbAkJJHN0YWdlLCRvdXRoZWFk LCRvdXR0YWlsLCRvdXRtYXNrCi0rCSB2bXIJCSRvdXRoZWFkLCRvdXR0YWlsCi0rCXZjaXBoZXJs YXN0CSRrZXksJGtleSwkcmNvbgotKwkgc3R2eAkJJHN0YWdlLDAsJG91dAotKwkgYWRkaQkJJG91 dCwkb3V0LDE2Ci0rCi0rCXZ4b3IJCSRpbjAsJGluMCwkdG1wCi0rCXZzbGRvaQkJJHRtcCwkemVy bywkdG1wLDEyCSMgPj4zMgotKwl2eG9yCQkkaW4wLCRpbjAsJHRtcAotKwl2c2xkb2kJCSR0bXAs JHplcm8sJHRtcCwxMgkjID4+MzIKLSsJdnhvcgkJJGluMCwkaW4wLCR0bXAKLSsJdnhvcgkJJGlu MCwkaW4wLCRrZXkKLSsJIHZwZXJtCQkkb3V0dGFpbCwkaW4wLCRpbjAsJG91dHBlcm0JIyByb3Rh dGUKLSsJIHZzZWwJCSRzdGFnZSwkb3V0aGVhZCwkb3V0dGFpbCwkb3V0bWFzawotKwkgdm1yCQkk b3V0aGVhZCwkb3V0dGFpbAotKwkgc3R2eAkJJHN0YWdlLDAsJG91dAotKwotKwlhZGRpCQkkaW5w LCRvdXQsMTUJCSMgMTUgaXMgbm90IHR5cG8KLSsJYWRkaQkJJG91dCwkb3V0LDB4NTAKLSsKLSsJ bGkJCSRyb3VuZHMsMTAKLSsJYgkJTGRvbmUKLSsKLSsuYWxpZ24JNAotK0wxOTI6Ci0rCWx2eAkJ JHRtcCwwLCRpbnAKLSsJbGkJCSRjbnQsNAotKwkgdnBlcm0JCSRvdXR0YWlsLCRpbjAsJGluMCwk b3V0cGVybQkjIHJvdGF0ZQotKwkgdnNlbAkJJHN0YWdlLCRvdXRoZWFkLCRvdXR0YWlsLCRvdXRt YXNrCi0rCSB2bXIJCSRvdXRoZWFkLCRvdXR0YWlsCi0rCSBzdHZ4CQkkc3RhZ2UsMCwkb3V0Ci0r CSBhZGRpCQkkb3V0LCRvdXQsMTYKLSsJdnBlcm0JCSRpbjEsJGluMSwkdG1wLCRrZXkJIyBhbGln biBbYW5kIGJ5dGUgc3dhcCBpbiBMRV0KLSsJdnNwbHRpc2IJJGtleSw4CQkJIyBib3Jyb3cgJGtl eQotKwltdGN0cgkJJGNudAotKwl2c3VidWJtCQkkbWFzaywkbWFzaywka2V5CSMgYWRqdXN0IHRo ZSBtYXNrCi0rCi0rTG9vcDE5MjoKLSsJdnBlcm0JCSRrZXksJGluMSwkaW4xLCRtYXNrCSMgcm9h dGUtbi1zcGxhdAotKwl2c2xkb2kJCSR0bXAsJHplcm8sJGluMCwxMgkjID4+MzIKLSsJdmNpcGhl cmxhc3QJJGtleSwka2V5LCRyY29uCi0rCi0rCXZ4b3IJCSRpbjAsJGluMCwkdG1wCi0rCXZzbGRv aQkJJHRtcCwkemVybywkdG1wLDEyCSMgPj4zMgotKwl2eG9yCQkkaW4wLCRpbjAsJHRtcAotKwl2 c2xkb2kJCSR0bXAsJHplcm8sJHRtcCwxMgkjID4+MzIKLSsJdnhvcgkJJGluMCwkaW4wLCR0bXAK LSsKLSsJIHZzbGRvaQkJJHN0YWdlLCR6ZXJvLCRpbjEsOAotKwl2c3BsdHcJCSR0bXAsJGluMCwz Ci0rCXZ4b3IJCSR0bXAsJHRtcCwkaW4xCi0rCXZzbGRvaQkJJGluMSwkemVybywkaW4xLDEyCSMg Pj4zMgotKwkgdmFkZHV3bQkkcmNvbiwkcmNvbiwkcmNvbgotKwl2eG9yCQkkaW4xLCRpbjEsJHRt cAotKwl2eG9yCQkkaW4wLCRpbjAsJGtleQotKwl2eG9yCQkkaW4xLCRpbjEsJGtleQotKwkgdnNs ZG9pCQkkc3RhZ2UsJHN0YWdlLCRpbjAsOAotKwotKwl2cGVybQkJJGtleSwkaW4xLCRpbjEsJG1h c2sJIyByb3RhdGUtbi1zcGxhdAotKwl2c2xkb2kJCSR0bXAsJHplcm8sJGluMCwxMgkjID4+MzIK LSsJIHZwZXJtCQkkb3V0dGFpbCwkc3RhZ2UsJHN0YWdlLCRvdXRwZXJtCSMgcm90YXRlCi0rCSB2 c2VsCQkkc3RhZ2UsJG91dGhlYWQsJG91dHRhaWwsJG91dG1hc2sKLSsJIHZtcgkJJG91dGhlYWQs JG91dHRhaWwKLSsJdmNpcGhlcmxhc3QJJGtleSwka2V5LCRyY29uCi0rCSBzdHZ4CQkkc3RhZ2Us MCwkb3V0Ci0rCSBhZGRpCQkkb3V0LCRvdXQsMTYKLSsKLSsJIHZzbGRvaQkJJHN0YWdlLCRpbjAs JGluMSw4Ci0rCXZ4b3IJCSRpbjAsJGluMCwkdG1wCi0rCXZzbGRvaQkJJHRtcCwkemVybywkdG1w LDEyCSMgPj4zMgotKwkgdnBlcm0JCSRvdXR0YWlsLCRzdGFnZSwkc3RhZ2UsJG91dHBlcm0JIyBy b3RhdGUKLSsJIHZzZWwJCSRzdGFnZSwkb3V0aGVhZCwkb3V0dGFpbCwkb3V0bWFzawotKwkgdm1y CQkkb3V0aGVhZCwkb3V0dGFpbAotKwl2eG9yCQkkaW4wLCRpbjAsJHRtcAotKwl2c2xkb2kJCSR0 bXAsJHplcm8sJHRtcCwxMgkjID4+MzIKLSsJdnhvcgkJJGluMCwkaW4wLCR0bXAKLSsJIHN0dngJ CSRzdGFnZSwwLCRvdXQKLSsJIGFkZGkJCSRvdXQsJG91dCwxNgotKwotKwl2c3BsdHcJCSR0bXAs JGluMCwzCi0rCXZ4b3IJCSR0bXAsJHRtcCwkaW4xCi0rCXZzbGRvaQkJJGluMSwkemVybywkaW4x LDEyCSMgPj4zMgotKwkgdmFkZHV3bQkkcmNvbiwkcmNvbiwkcmNvbgotKwl2eG9yCQkkaW4xLCRp bjEsJHRtcAotKwl2eG9yCQkkaW4wLCRpbjAsJGtleQotKwl2eG9yCQkkaW4xLCRpbjEsJGtleQot KwkgdnBlcm0JCSRvdXR0YWlsLCRpbjAsJGluMCwkb3V0cGVybQkjIHJvdGF0ZQotKwkgdnNlbAkJ JHN0YWdlLCRvdXRoZWFkLCRvdXR0YWlsLCRvdXRtYXNrCi0rCSB2bXIJCSRvdXRoZWFkLCRvdXR0 YWlsCi0rCSBzdHZ4CQkkc3RhZ2UsMCwkb3V0Ci0rCSBhZGRpCQkkaW5wLCRvdXQsMTUJCSMgMTUg aXMgbm90IHR5cG8KLSsJIGFkZGkJCSRvdXQsJG91dCwxNgotKwliZG56CQlMb29wMTkyCi0rCi0r CWxpCQkkcm91bmRzLDEyCi0rCWFkZGkJCSRvdXQsJG91dCwweDIwCi0rCWIJCUxkb25lCi0rCi0r LmFsaWduCTQKLStMMjU2OgotKwlsdngJCSR0bXAsMCwkaW5wCi0rCWxpCQkkY250LDcKLSsJbGkJ CSRyb3VuZHMsMTQKLSsJIHZwZXJtCQkkb3V0dGFpbCwkaW4wLCRpbjAsJG91dHBlcm0JIyByb3Rh dGUKLSsJIHZzZWwJCSRzdGFnZSwkb3V0aGVhZCwkb3V0dGFpbCwkb3V0bWFzawotKwkgdm1yCQkk b3V0aGVhZCwkb3V0dGFpbAotKwkgc3R2eAkJJHN0YWdlLDAsJG91dAotKwkgYWRkaQkJJG91dCwk b3V0LDE2Ci0rCXZwZXJtCQkkaW4xLCRpbjEsJHRtcCwka2V5CSMgYWxpZ24gW2FuZCBieXRlIHN3 YXAgaW4gTEVdCi0rCW10Y3RyCQkkY250Ci0rCi0rTG9vcDI1NjoKLSsJdnBlcm0JCSRrZXksJGlu MSwkaW4xLCRtYXNrCSMgcm90YXRlLW4tc3BsYXQKLSsJdnNsZG9pCQkkdG1wLCR6ZXJvLCRpbjAs MTIJIyA+PjMyCi0rCSB2cGVybQkJJG91dHRhaWwsJGluMSwkaW4xLCRvdXRwZXJtCSMgcm90YXRl Ci0rCSB2c2VsCQkkc3RhZ2UsJG91dGhlYWQsJG91dHRhaWwsJG91dG1hc2sKLSsJIHZtcgkJJG91 dGhlYWQsJG91dHRhaWwKLSsJdmNpcGhlcmxhc3QJJGtleSwka2V5LCRyY29uCi0rCSBzdHZ4CQkk c3RhZ2UsMCwkb3V0Ci0rCSBhZGRpCQkkb3V0LCRvdXQsMTYKLSsKLSsJdnhvcgkJJGluMCwkaW4w LCR0bXAKLSsJdnNsZG9pCQkkdG1wLCR6ZXJvLCR0bXAsMTIJIyA+PjMyCi0rCXZ4b3IJCSRpbjAs JGluMCwkdG1wCi0rCXZzbGRvaQkJJHRtcCwkemVybywkdG1wLDEyCSMgPj4zMgotKwl2eG9yCQkk aW4wLCRpbjAsJHRtcAotKwkgdmFkZHV3bQkkcmNvbiwkcmNvbiwkcmNvbgotKwl2eG9yCQkkaW4w LCRpbjAsJGtleQotKwkgdnBlcm0JCSRvdXR0YWlsLCRpbjAsJGluMCwkb3V0cGVybQkjIHJvdGF0 ZQotKwkgdnNlbAkJJHN0YWdlLCRvdXRoZWFkLCRvdXR0YWlsLCRvdXRtYXNrCi0rCSB2bXIJCSRv dXRoZWFkLCRvdXR0YWlsCi0rCSBzdHZ4CQkkc3RhZ2UsMCwkb3V0Ci0rCSBhZGRpCQkkaW5wLCRv dXQsMTUJCSMgMTUgaXMgbm90IHR5cG8KLSsJIGFkZGkJCSRvdXQsJG91dCwxNgotKwliZHoJCUxk b25lCi0rCi0rCXZzcGx0dwkJJGtleSwkaW4wLDMJCSMganVzdCBzcGxhdAotKwl2c2xkb2kJCSR0 bXAsJHplcm8sJGluMSwxMgkjID4+MzIKLSsJdnNib3gJCSRrZXksJGtleQotKwotKwl2eG9yCQkk aW4xLCRpbjEsJHRtcAotKwl2c2xkb2kJCSR0bXAsJHplcm8sJHRtcCwxMgkjID4+MzIKLSsJdnhv cgkJJGluMSwkaW4xLCR0bXAKLSsJdnNsZG9pCQkkdG1wLCR6ZXJvLCR0bXAsMTIJIyA+PjMyCi0r CXZ4b3IJCSRpbjEsJGluMSwkdG1wCi0rCi0rCXZ4b3IJCSRpbjEsJGluMSwka2V5Ci0rCWIJCUxv b3AyNTYKLSsKLSsuYWxpZ24JNAotK0xkb25lOgotKwlsdngJCSRpbjEsMCwkaW5wCQkjIHJlZHVu ZGFudCBpbiBhbGlnbmVkIGNhc2UKLSsJdnNlbAkJJGluMSwkb3V0aGVhZCwkaW4xLCRvdXRtYXNr Ci0rCXN0dngJCSRpbjEsMCwkaW5wCi0rCWxpCQkkcHRyLDAKLSsJbXRzcHIJCTI1NiwkdnJzYXZl Ci0rCXN0dwkJJHJvdW5kcywwKCRvdXQpCi0rCi0rTGVuY19rZXlfYWJvcnQ6Ci0rCW1yCQlyMywk cHRyCi0rCWJscgotKwkubG9uZwkJMAotKwkuYnl0ZQkJMCwxMiwweDE0LDEsMCwwLDMsMAotKwku bG9uZwkJMAotKy5zaXplCS4ke3ByZWZpeH1fc2V0X2VuY3J5cHRfa2V5LC4tLiR7cHJlZml4fV9z ZXRfZW5jcnlwdF9rZXkKLSsKLSsuZ2xvYmwJLiR7cHJlZml4fV9zZXRfZGVjcnlwdF9rZXkKLSsu YWxpZ24JNQotKy4ke3ByZWZpeH1fc2V0X2RlY3J5cHRfa2V5OgotKwkkU1RVCQkkc3AsLSRGUkFN RSgkc3ApCi0rCW1mbHIJCXIxMAotKwkkUFVTSAkJcjEwLCRGUkFNRSskTFJTQVZFKCRzcCkKLSsJ YmwJCUxzZXRfZW5jcnlwdF9rZXkKLSsJbXRscgkJcjEwCi0rCi0rCWNtcHdpCQlyMywwCi0rCWJu ZS0JCUxkZWNfa2V5X2Fib3J0Ci0rCi0rCXNsd2kJCSRjbnQsJHJvdW5kcyw0Ci0rCXN1YmkJCSRp bnAsJG91dCwyNDAJCSMgZmlyc3Qgcm91bmQga2V5Ci0rCXNyd2kJCSRyb3VuZHMsJHJvdW5kcywx Ci0rCWFkZAkJJG91dCwkaW5wLCRjbnQJCSMgbGFzdCByb3VuZCBrZXkKLSsJbXRjdHIJCSRyb3Vu ZHMKLSsKLStMZGVja2V5OgotKwlsd3oJCXIwLCAwKCRpbnApCi0rCWx3egkJcjYsIDQoJGlucCkK LSsJbHd6CQlyNywgOCgkaW5wKQotKwlsd3oJCXI4LCAxMigkaW5wKQotKwlhZGRpCQkkaW5wLCRp bnAsMTYKLSsJbHd6CQlyOSwgMCgkb3V0KQotKwlsd3oJCXIxMCw0KCRvdXQpCi0rCWx3egkJcjEx LDgoJG91dCkKLSsJbHd6CQlyMTIsMTIoJG91dCkKLSsJc3R3CQlyMCwgMCgkb3V0KQotKwlzdHcJ CXI2LCA0KCRvdXQpCi0rCXN0dwkJcjcsIDgoJG91dCkKLSsJc3R3CQlyOCwgMTIoJG91dCkKLSsJ c3ViaQkJJG91dCwkb3V0LDE2Ci0rCXN0dwkJcjksIC0xNigkaW5wKQotKwlzdHcJCXIxMCwtMTIo JGlucCkKLSsJc3R3CQlyMTEsLTgoJGlucCkKLSsJc3R3CQlyMTIsLTQoJGlucCkKLSsJYmRuegkJ TGRlY2tleQotKwotKwl4b3IJCXIzLHIzLHIzCQkjIHJldHVybiB2YWx1ZQotK0xkZWNfa2V5X2Fi b3J0OgotKwlhZGRpCQkkc3AsJHNwLCRGUkFNRQotKwlibHIKLSsJLmxvbmcJCTAKLSsJLmJ5dGUJ CTAsMTIsNCwxLDB4ODAsMCwzLDAKLSsJLmxvbmcJCTAKLSsuc2l6ZQkuJHtwcmVmaXh9X3NldF9k ZWNyeXB0X2tleSwuLS4ke3ByZWZpeH1fc2V0X2RlY3J5cHRfa2V5Ci0rX19fCi0rfX19Ci0rIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwotK3t7ewkjIFNpbmdsZSBibG9jayBlbi0gYW5kIGRlY3J5cHQgcHJvY2Vk dXJlcwkJCSMKLStzdWIgZ2VuX2Jsb2NrICgpIHsKLStteSAkZGlyID0gc2hpZnQ7Ci0rbXkgJG4g ICA9ICRkaXIgZXEgImRlIiA/ICJuIiA6ICIiOwotK215ICgkaW5wLCRvdXQsJGtleSwkcm91bmRz LCRpZHgpPW1hcCgiciRfIiwoMy4uNykpOwotKwotKyRjb2RlLj08PF9fXzsKLSsuZ2xvYmwJLiR7 cHJlZml4fV8ke2Rpcn1jcnlwdAotKy5hbGlnbgk1Ci0rLiR7cHJlZml4fV8ke2Rpcn1jcnlwdDoK LSsJbHd6CQkkcm91bmRzLDI0MCgka2V5KQotKwlsaXMJCXIwLDB4ZmMwMAotKwltZnNwcgkJJHZy c2F2ZSwyNTYKLSsJbGkJCSRpZHgsMTUJCQkjIDE1IGlzIG5vdCB0eXBvCi0rCW10c3ByCQkyNTYs cjAKLSsKLSsJbHZ4CQl2MCwwLCRpbnAKLSsJbmVnCQlyMTEsJG91dAotKwlsdngJCXYxLCRpZHgs JGlucAotKwlsdnNsCQl2MiwwLCRpbnAJCSMgaW5wcGVybQotKwlsZT92c3BsdGlzYgl2NCwweDBm Ci0rCT9sdnNsCQl2MywwLHIxMQkJIyBvdXRwZXJtCi0rCWxlP3Z4b3IJCXYyLHYyLHY0Ci0rCWxp CQkkaWR4LDE2Ci0rCXZwZXJtCQl2MCx2MCx2MSx2MgkJIyBhbGlnbiBbYW5kIGJ5dGUgc3dhcCBp biBMRV0KLSsJbHZ4CQl2MSwwLCRrZXkKLSsJP2x2c2wJCXY1LDAsJGtleQkJIyBrZXlwZXJtCi0r CXNyd2kJCSRyb3VuZHMsJHJvdW5kcywxCi0rCWx2eAkJdjIsJGlkeCwka2V5Ci0rCWFkZGkJCSRp ZHgsJGlkeCwxNgotKwlzdWJpCQkkcm91bmRzLCRyb3VuZHMsMQotKwk/dnBlcm0JCXYxLHYxLHYy LHY1CQkjIGFsaWduIHJvdW5kIGtleQotKwotKwl2eG9yCQl2MCx2MCx2MQotKwlsdngJCXYxLCRp ZHgsJGtleQotKwlhZGRpCQkkaWR4LCRpZHgsMTYKLSsJbXRjdHIJCSRyb3VuZHMKLSsKLStMb29w XyR7ZGlyfWM6Ci0rCT92cGVybQkJdjIsdjIsdjEsdjUKLSsJdiR7bn1jaXBoZXIJdjAsdjAsdjIK LSsJbHZ4CQl2MiwkaWR4LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCT92cGVybQkJdjEs djEsdjIsdjUKLSsJdiR7bn1jaXBoZXIJdjAsdjAsdjEKLSsJbHZ4CQl2MSwkaWR4LCRrZXkKLSsJ YWRkaQkJJGlkeCwkaWR4LDE2Ci0rCWJkbnoJCUxvb3BfJHtkaXJ9YwotKwotKwk/dnBlcm0JCXYy LHYyLHYxLHY1Ci0rCXYke259Y2lwaGVyCXYwLHYwLHYyCi0rCWx2eAkJdjIsJGlkeCwka2V5Ci0r CT92cGVybQkJdjEsdjEsdjIsdjUKLSsJdiR7bn1jaXBoZXJsYXN0CXYwLHYwLHYxCi0rCi0rCXZz cGx0aXNiCXYyLC0xCi0rCXZ4b3IJCXYxLHYxLHYxCi0rCWxpCQkkaWR4LDE1CQkJIyAxNSBpcyBu b3QgdHlwbwotKwk/dnBlcm0JCXYyLHYxLHYyLHYzCQkjIG91dG1hc2sKLSsJbGU/dnhvcgkJdjMs djMsdjQKLSsJbHZ4CQl2MSwwLCRvdXQJCSMgb3V0aGVhZAotKwl2cGVybQkJdjAsdjAsdjAsdjMJ CSMgcm90YXRlIFthbmQgYnl0ZSBzd2FwIGluIExFXQotKwl2c2VsCQl2MSx2MSx2MCx2MgotKwls dngJCXY0LCRpZHgsJG91dAotKwlzdHZ4CQl2MSwwLCRvdXQKLSsJdnNlbAkJdjAsdjAsdjQsdjIK LSsJc3R2eAkJdjAsJGlkeCwkb3V0Ci0rCi0rCW10c3ByCQkyNTYsJHZyc2F2ZQotKwlibHIKLSsJ LmxvbmcJCTAKLSsJLmJ5dGUJCTAsMTIsMHgxNCwwLDAsMCwzLDAKLSsJLmxvbmcJCTAKLSsuc2l6 ZQkuJHtwcmVmaXh9XyR7ZGlyfWNyeXB0LC4tLiR7cHJlZml4fV8ke2Rpcn1jcnlwdAotK19fXwot K30KLSsmZ2VuX2Jsb2NrKCJlbiIpOwotKyZnZW5fYmxvY2soImRlIik7Ci0rfX19Ci0rIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotK3t7ewkjIENCQyBlbi0gYW5kIGRlY3J5cHQgcHJvY2VkdXJlcwkJCQkjCi0r bXkgKCRpbnAsJG91dCwkbGVuLCRrZXksJGl2cCwkZW5jLCRyb3VuZHMsJGlkeCk9bWFwKCJyJF8i LCgzLi4xMCkpOwotK215ICgkcm5ka2V5MCwkcm5ka2V5MSwkaW5vdXQsJHRtcCk9CQltYXAoInYk XyIsKDAuLjMpKTsKLStteSAoJGl2ZWMsJGlucHRhaWwsJGlucHBlcm0sJG91dGhlYWQsJG91dHBl cm0sJG91dG1hc2ssJGtleXBlcm0pPQotKwkJCQkJCW1hcCgidiRfIiwoNC4uMTApKTsKLSskY29k ZS49PDxfX187Ci0rLmdsb2JsCS4ke3ByZWZpeH1fY2JjX2VuY3J5cHQKLSsuYWxpZ24JNQotKy4k e3ByZWZpeH1fY2JjX2VuY3J5cHQ6Ci0rCSR7VUNNUH1pCSRsZW4sMTYKLSsJYmx0bHItCi0rCi0r CWNtcHdpCQkkZW5jLDAJCQkjIHRlc3QgZGlyZWN0aW9uCi0rCWxpcwkJcjAsMHhmZmUwCi0rCW1m c3ByCQkkdnJzYXZlLDI1NgotKwltdHNwcgkJMjU2LHIwCi0rCi0rCWxpCQkkaWR4LDE1Ci0rCXZ4 b3IJCSRybmRrZXkwLCRybmRrZXkwLCRybmRrZXkwCi0rCWxlP3ZzcGx0aXNiCSR0bXAsMHgwZgot KwotKwlsdngJCSRpdmVjLDAsJGl2cAkJIyBsb2FkIFt1bmFsaWduZWRdIGl2Ci0rCWx2c2wJCSRp bnBwZXJtLDAsJGl2cAotKwlsdngJCSRpbnB0YWlsLCRpZHgsJGl2cAotKwlsZT92eG9yCQkkaW5w cGVybSwkaW5wcGVybSwkdG1wCi0rCXZwZXJtCQkkaXZlYywkaXZlYywkaW5wdGFpbCwkaW5wcGVy bQotKwotKwluZWcJCXIxMSwkaW5wCi0rCT9sdnNsCQkka2V5cGVybSwwLCRrZXkJCSMgcHJlcGFy ZSBmb3IgdW5hbGlnbmVkIGtleQotKwlsd3oJCSRyb3VuZHMsMjQwKCRrZXkpCi0rCi0rCWx2c3IJ CSRpbnBwZXJtLDAscjExCQkjIHByZXBhcmUgZm9yIHVuYWxpZ25lZCBsb2FkCi0rCWx2eAkJJGlu cHRhaWwsMCwkaW5wCi0rCWFkZGkJCSRpbnAsJGlucCwxNQkJIyAxNSBpcyBub3QgdHlwbwotKwls ZT92eG9yCQkkaW5wcGVybSwkaW5wcGVybSwkdG1wCi0rCi0rCT9sdnNyCQkkb3V0cGVybSwwLCRv dXQJCSMgcHJlcGFyZSBmb3IgdW5hbGlnbmVkIHN0b3JlCi0rCXZzcGx0aXNiCSRvdXRtYXNrLC0x Ci0rCWx2eAkJJG91dGhlYWQsMCwkb3V0Ci0rCT92cGVybQkJJG91dG1hc2ssJHJuZGtleTAsJG91 dG1hc2ssJG91dHBlcm0KLSsJbGU/dnhvcgkJJG91dHBlcm0sJG91dHBlcm0sJHRtcAotKwotKwlz cndpCQkkcm91bmRzLCRyb3VuZHMsMQotKwlsaQkJJGlkeCwxNgotKwlzdWJpCQkkcm91bmRzLCRy b3VuZHMsMQotKwliZXEJCUxjYmNfZGVjCi0rCi0rTGNiY19lbmM6Ci0rCXZtcgkJJGlub3V0LCRp bnB0YWlsCi0rCWx2eAkJJGlucHRhaWwsMCwkaW5wCi0rCWFkZGkJCSRpbnAsJGlucCwxNgotKwlt dGN0cgkJJHJvdW5kcwotKwlzdWJpCQkkbGVuLCRsZW4sMTYJCSMgbGVuLT0xNgotKwotKwlsdngJ CSRybmRrZXkwLDAsJGtleQotKwkgdnBlcm0JCSRpbm91dCwkaW5vdXQsJGlucHRhaWwsJGlucHBl cm0KLSsJbHZ4CQkkcm5ka2V5MSwkaWR4LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCT92 cGVybQkJJHJuZGtleTAsJHJuZGtleTAsJHJuZGtleTEsJGtleXBlcm0KLSsJdnhvcgkJJGlub3V0 LCRpbm91dCwkcm5ka2V5MAotKwlsdngJCSRybmRrZXkwLCRpZHgsJGtleQotKwlhZGRpCQkkaWR4 LCRpZHgsMTYKLSsJdnhvcgkJJGlub3V0LCRpbm91dCwkaXZlYwotKwotK0xvb3BfY2JjX2VuYzoK LSsJP3ZwZXJtCQkkcm5ka2V5MSwkcm5ka2V5MSwkcm5ka2V5MCwka2V5cGVybQotKwl2Y2lwaGVy CQkkaW5vdXQsJGlub3V0LCRybmRrZXkxCi0rCWx2eAkJJHJuZGtleTEsJGlkeCwka2V5Ci0rCWFk ZGkJCSRpZHgsJGlkeCwxNgotKwk/dnBlcm0JCSRybmRrZXkwLCRybmRrZXkwLCRybmRrZXkxLCRr ZXlwZXJtCi0rCXZjaXBoZXIJCSRpbm91dCwkaW5vdXQsJHJuZGtleTAKLSsJbHZ4CQkkcm5ka2V5 MCwkaWR4LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCWJkbnoJCUxvb3BfY2JjX2VuYwot KwotKwk/dnBlcm0JCSRybmRrZXkxLCRybmRrZXkxLCRybmRrZXkwLCRrZXlwZXJtCi0rCXZjaXBo ZXIJCSRpbm91dCwkaW5vdXQsJHJuZGtleTEKLSsJbHZ4CQkkcm5ka2V5MSwkaWR4LCRrZXkKLSsJ bGkJCSRpZHgsMTYKLSsJP3ZwZXJtCQkkcm5ka2V5MCwkcm5ka2V5MCwkcm5ka2V5MSwka2V5cGVy bQotKwl2Y2lwaGVybGFzdAkkaXZlYywkaW5vdXQsJHJuZGtleTAKLSsJJHtVQ01QfWkJJGxlbiwx NgotKwotKwl2cGVybQkJJHRtcCwkaXZlYywkaXZlYywkb3V0cGVybQotKwl2c2VsCQkkaW5vdXQs JG91dGhlYWQsJHRtcCwkb3V0bWFzawotKwl2bXIJCSRvdXRoZWFkLCR0bXAKLSsJc3R2eAkJJGlu b3V0LDAsJG91dAotKwlhZGRpCQkkb3V0LCRvdXQsMTYKLSsJYmdlCQlMY2JjX2VuYwotKwotKwli CQlMY2JjX2RvbmUKLSsKLSsuYWxpZ24JNAotK0xjYmNfZGVjOgotKwkke1VDTVB9aQkkbGVuLDEy OAotKwliZ2UJCV9hZXNwOF9jYmNfZGVjcnlwdDh4Ci0rCXZtcgkJJHRtcCwkaW5wdGFpbAotKwls dngJCSRpbnB0YWlsLDAsJGlucAotKwlhZGRpCQkkaW5wLCRpbnAsMTYKLSsJbXRjdHIJCSRyb3Vu ZHMKLSsJc3ViaQkJJGxlbiwkbGVuLDE2CQkjIGxlbi09MTYKLSsKLSsJbHZ4CQkkcm5ka2V5MCww LCRrZXkKLSsJIHZwZXJtCQkkdG1wLCR0bXAsJGlucHRhaWwsJGlucHBlcm0KLSsJbHZ4CQkkcm5k a2V5MSwkaWR4LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCT92cGVybQkJJHJuZGtleTAs JHJuZGtleTAsJHJuZGtleTEsJGtleXBlcm0KLSsJdnhvcgkJJGlub3V0LCR0bXAsJHJuZGtleTAK LSsJbHZ4CQkkcm5ka2V5MCwkaWR4LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCi0rTG9v cF9jYmNfZGVjOgotKwk/dnBlcm0JCSRybmRrZXkxLCRybmRrZXkxLCRybmRrZXkwLCRrZXlwZXJt Ci0rCXZuY2lwaGVyCSRpbm91dCwkaW5vdXQsJHJuZGtleTEKLSsJbHZ4CQkkcm5ka2V5MSwkaWR4 LCRrZXkKLSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCT92cGVybQkJJHJuZGtleTAsJHJuZGtleTAs JHJuZGtleTEsJGtleXBlcm0KLSsJdm5jaXBoZXIJJGlub3V0LCRpbm91dCwkcm5ka2V5MAotKwls dngJCSRybmRrZXkwLCRpZHgsJGtleQotKwlhZGRpCQkkaWR4LCRpZHgsMTYKLSsJYmRuegkJTG9v cF9jYmNfZGVjCi0rCi0rCT92cGVybQkJJHJuZGtleTEsJHJuZGtleTEsJHJuZGtleTAsJGtleXBl cm0KLSsJdm5jaXBoZXIJJGlub3V0LCRpbm91dCwkcm5ka2V5MQotKwlsdngJCSRybmRrZXkxLCRp ZHgsJGtleQotKwlsaQkJJGlkeCwxNgotKwk/dnBlcm0JCSRybmRrZXkwLCRybmRrZXkwLCRybmRr ZXkxLCRrZXlwZXJtCi0rCXZuY2lwaGVybGFzdAkkaW5vdXQsJGlub3V0LCRybmRrZXkwCi0rCSR7 VUNNUH1pCSRsZW4sMTYKLSsKLSsJdnhvcgkJJGlub3V0LCRpbm91dCwkaXZlYwotKwl2bXIJCSRp dmVjLCR0bXAKLSsJdnBlcm0JCSR0bXAsJGlub3V0LCRpbm91dCwkb3V0cGVybQotKwl2c2VsCQkk aW5vdXQsJG91dGhlYWQsJHRtcCwkb3V0bWFzawotKwl2bXIJCSRvdXRoZWFkLCR0bXAKLSsJc3R2 eAkJJGlub3V0LDAsJG91dAotKwlhZGRpCQkkb3V0LCRvdXQsMTYKLSsJYmdlCQlMY2JjX2RlYwot KwotK0xjYmNfZG9uZToKLSsJYWRkaQkJJG91dCwkb3V0LC0xCi0rCWx2eAkJJGlub3V0LDAsJG91 dAkJIyByZWR1bmRhbnQgaW4gYWxpZ25lZCBjYXNlCi0rCXZzZWwJCSRpbm91dCwkb3V0aGVhZCwk aW5vdXQsJG91dG1hc2sKLSsJc3R2eAkJJGlub3V0LDAsJG91dAotKwotKwluZWcJCSRlbmMsJGl2 cAkJIyB3cml0ZSBbdW5hbGlnbmVkXSBpdgotKwlsaQkJJGlkeCwxNQkJCSMgMTUgaXMgbm90IHR5 cG8KLSsJdnhvcgkJJHJuZGtleTAsJHJuZGtleTAsJHJuZGtleTAKLSsJdnNwbHRpc2IJJG91dG1h c2ssLTEKLSsJbGU/dnNwbHRpc2IJJHRtcCwweDBmCi0rCT9sdnNsCQkkb3V0cGVybSwwLCRlbmMK LSsJP3ZwZXJtCQkkb3V0bWFzaywkcm5ka2V5MCwkb3V0bWFzaywkb3V0cGVybQotKwlsZT92eG9y CQkkb3V0cGVybSwkb3V0cGVybSwkdG1wCi0rCWx2eAkJJG91dGhlYWQsMCwkaXZwCi0rCXZwZXJt CQkkaXZlYywkaXZlYywkaXZlYywkb3V0cGVybQotKwl2c2VsCQkkaW5vdXQsJG91dGhlYWQsJGl2 ZWMsJG91dG1hc2sKLSsJbHZ4CQkkaW5wdGFpbCwkaWR4LCRpdnAKLSsJc3R2eAkJJGlub3V0LDAs JGl2cAotKwl2c2VsCQkkaW5vdXQsJGl2ZWMsJGlucHRhaWwsJG91dG1hc2sKLSsJc3R2eAkJJGlu b3V0LCRpZHgsJGl2cAotKwotKwltdHNwcgkJMjU2LCR2cnNhdmUKLSsJYmxyCi0rCS5sb25nCQkw Ci0rCS5ieXRlCQkwLDEyLDB4MTQsMCwwLDAsNiwwCi0rCS5sb25nCQkwCi0rX19fCi0rIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotK3t7CSMgT3B0aW1pemVkIENCQyBkZWNyeXB0IHByb2NlZHVyZQkJCQkjCi0r bXkgJGtleV89InIxMSI7Ci0rbXkgKCR4MDAsJHgxMCwkeDIwLCR4MzAsJHg0MCwkeDUwLCR4NjAs JHg3MCk9bWFwKCJyJF8iLCgwLDgsMjYuLjMxKSk7Ci0rbXkgKCRpbjAsICRpbjEsICRpbjIsICRp bjMsICRpbjQsICRpbjUsICRpbjYsICRpbjcgKT1tYXAoInYkXyIsKDAuLjMsMTAuLjEzKSk7Ci0r bXkgKCRvdXQwLCRvdXQxLCRvdXQyLCRvdXQzLCRvdXQ0LCRvdXQ1LCRvdXQ2LCRvdXQ3KT1tYXAo InYkXyIsKDE0Li4yMSkpOwotK215ICRybmRrZXkwPSJ2MjMiOwkjIHYyNC12MjUgcm90YXRpbmcg YnVmZmVyIGZvciBmaXJzdCBmb3VuZCBrZXlzCi0rCQkJIyB2MjYtdjMxIGxhc3QgNiByb3VuZCBr ZXlzCi0rbXkgKCR0bXAsJGtleXBlcm0pPSgkaW4zLCRpbjQpOwkjIGFsaWFzZXMgd2l0aCAiY2Fs bGVyIiwgcmVkdW5kYW50IGFzc2lnbm1lbnQKLSsKLSskY29kZS49PDxfX187Ci0rLmFsaWduCTUK LStfYWVzcDhfY2JjX2RlY3J5cHQ4eDoKLSsJJFNUVQkJJHNwLC1gKCRGUkFNRSsyMSoxNis2KiRT SVpFX1QpYCgkc3ApCi0rCWxpCQlyMTAsYCRGUkFNRSs4KjE2KzE1YAotKwlsaQkJcjExLGAkRlJB TUUrOCoxNiszMWAKLSsJc3R2eAkJdjIwLHIxMCwkc3AJCSMgQUJJIHNheXMgc28KLSsJYWRkaQkJ cjEwLHIxMCwzMgotKwlzdHZ4CQl2MjEscjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0rCXN0 dngJCXYyMixyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJc3R2eAkJdjIzLHIxMSwkc3AK LSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQl2MjQscjEwLCRzcAotKwlhZGRpCQlyMTAscjEw LDMyCi0rCXN0dngJCXYyNSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2eAkJdjI2 LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlzdHZ4CQl2MjcscjExLCRzcAotKwlhZGRp CQlyMTEscjExLDMyCi0rCXN0dngJCXYyOCxyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJ c3R2eAkJdjI5LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQl2MzAscjEwLCRz cAotKwlzdHZ4CQl2MzEscjExLCRzcAotKwlsaQkJcjAsLTEKLSsJc3R3CQkkdnJzYXZlLGAkRlJB TUUrMjEqMTYtNGAoJHNwKQkjIHNhdmUgdnJzYXZlCi0rCWxpCQkkeDEwLDB4MTAKLSsJJFBVU0gJ CXIyNixgJEZSQU1FKzIxKjE2KzAqJFNJWkVfVGAoJHNwKQotKwlsaQkJJHgyMCwweDIwCi0rCSRQ VVNICQlyMjcsYCRGUkFNRSsyMSoxNisxKiRTSVpFX1RgKCRzcCkKLSsJbGkJCSR4MzAsMHgzMAot KwkkUFVTSAkJcjI4LGAkRlJBTUUrMjEqMTYrMiokU0laRV9UYCgkc3ApCi0rCWxpCQkkeDQwLDB4 NDAKLSsJJFBVU0gJCXIyOSxgJEZSQU1FKzIxKjE2KzMqJFNJWkVfVGAoJHNwKQotKwlsaQkJJHg1 MCwweDUwCi0rCSRQVVNICQlyMzAsYCRGUkFNRSsyMSoxNis0KiRTSVpFX1RgKCRzcCkKLSsJbGkJ CSR4NjAsMHg2MAotKwkkUFVTSAkJcjMxLGAkRlJBTUUrMjEqMTYrNSokU0laRV9UYCgkc3ApCi0r CWxpCQkkeDcwLDB4NzAKLSsJbXRzcHIJCTI1NixyMAotKwotKwlzdWJpCQkkcm91bmRzLCRyb3Vu ZHMsMwkjIC00IGluIHRvdGFsCi0rCXN1YmkJCSRsZW4sJGxlbiwxMjgJCSMgYmlhcwotKwotKwls dngJCSRybmRrZXkwLCR4MDAsJGtleQkjIGxvYWQga2V5IHNjaGVkdWxlCi0rCWx2eAkJdjMwLCR4 MTAsJGtleQotKwlhZGRpCQkka2V5LCRrZXksMHgyMAotKwlsdngJCXYzMSwkeDAwLCRrZXkKLSsJ P3ZwZXJtCQkkcm5ka2V5MCwkcm5ka2V5MCx2MzAsJGtleXBlcm0KLSsJYWRkaQkJJGtleV8sJHNw LCRGUkFNRSsxNQotKwltdGN0cgkJJHJvdW5kcwotKwotK0xvYWRfY2JjX2RlY19rZXk6Ci0rCT92 cGVybQkJdjI0LHYzMCx2MzEsJGtleXBlcm0KLSsJbHZ4CQl2MzAsJHgxMCwka2V5Ci0rCWFkZGkJ CSRrZXksJGtleSwweDIwCi0rCXN0dngJCXYyNCwkeDAwLCRrZXlfCQkjIG9mZi1sb2FkIHJvdW5k WzFdCi0rCT92cGVybQkJdjI1LHYzMSx2MzAsJGtleXBlcm0KLSsJbHZ4CQl2MzEsJHgwMCwka2V5 Ci0rCXN0dngJCXYyNSwkeDEwLCRrZXlfCQkjIG9mZi1sb2FkIHJvdW5kWzJdCi0rCWFkZGkJCSRr ZXlfLCRrZXlfLDB4MjAKLSsJYmRuegkJTG9hZF9jYmNfZGVjX2tleQotKwotKwlsdngJCXYyNiwk eDEwLCRrZXkKLSsJP3ZwZXJtCQl2MjQsdjMwLHYzMSwka2V5cGVybQotKwlsdngJCXYyNywkeDIw LCRrZXkKLSsJc3R2eAkJdjI0LCR4MDAsJGtleV8JCSMgb2ZmLWxvYWQgcm91bmRbM10KLSsJP3Zw ZXJtCQl2MjUsdjMxLHYyNiwka2V5cGVybQotKwlsdngJCXYyOCwkeDMwLCRrZXkKLSsJc3R2eAkJ djI1LCR4MTAsJGtleV8JCSMgb2ZmLWxvYWQgcm91bmRbNF0KLSsJYWRkaQkJJGtleV8sJHNwLCRG UkFNRSsxNQkjIHJld2luZCAka2V5XwotKwk/dnBlcm0JCXYyNix2MjYsdjI3LCRrZXlwZXJtCi0r CWx2eAkJdjI5LCR4NDAsJGtleQotKwk/dnBlcm0JCXYyNyx2MjcsdjI4LCRrZXlwZXJtCi0rCWx2 eAkJdjMwLCR4NTAsJGtleQotKwk/dnBlcm0JCXYyOCx2MjgsdjI5LCRrZXlwZXJtCi0rCWx2eAkJ djMxLCR4NjAsJGtleQotKwk/dnBlcm0JCXYyOSx2MjksdjMwLCRrZXlwZXJtCi0rCWx2eAkJJG91 dDAsJHg3MCwka2V5CQkjIGJvcnJvdyAkb3V0MAotKwk/dnBlcm0JCXYzMCx2MzAsdjMxLCRrZXlw ZXJtCi0rCWx2eAkJdjI0LCR4MDAsJGtleV8JCSMgcHJlLWxvYWQgcm91bmRbMV0KLSsJP3ZwZXJt CQl2MzEsdjMxLCRvdXQwLCRrZXlwZXJtCi0rCWx2eAkJdjI1LCR4MTAsJGtleV8JCSMgcHJlLWxv YWQgcm91bmRbMl0KLSsKLSsJI2x2eAkJJGlucHRhaWwsMCwkaW5wCQkjICJjYWxsZXIiIGFscmVh ZHkgZGlkIHRoaXMKLSsJI2FkZGkJCSRpbnAsJGlucCwxNQkJIyAxNSBpcyBub3QgdHlwbwotKwlz dWJpCQkkaW5wLCRpbnAsMTUJCSMgdW5kbyAiY2FsbGVyIgotKwotKwkgbGU/bGkJCSRpZHgsOAot KwlsdnhfdQkJJGluMCwkeDAwLCRpbnAJCSMgbG9hZCBmaXJzdCA4ICJ3b3JkcyIKLSsJIGxlP2x2 c2wJJGlucHBlcm0sMCwkaWR4Ci0rCSBsZT92c3BsdGlzYgkkdG1wLDB4MGYKLSsJbHZ4X3UJCSRp bjEsJHgxMCwkaW5wCi0rCSBsZT92eG9yCSRpbnBwZXJtLCRpbnBwZXJtLCR0bXAJIyB0cmFuc2Zv cm0gZm9yIGx2eF91L3N0dnhfdQotKwlsdnhfdQkJJGluMiwkeDIwLCRpbnAKLSsJIGxlP3ZwZXJt CSRpbjAsJGluMCwkaW4wLCRpbnBwZXJtCi0rCWx2eF91CQkkaW4zLCR4MzAsJGlucAotKwkgbGU/ dnBlcm0JJGluMSwkaW4xLCRpbjEsJGlucHBlcm0KLSsJbHZ4X3UJCSRpbjQsJHg0MCwkaW5wCi0r CSBsZT92cGVybQkkaW4yLCRpbjIsJGluMiwkaW5wcGVybQotKwl2eG9yCQkkb3V0MCwkaW4wLCRy bmRrZXkwCi0rCWx2eF91CQkkaW41LCR4NTAsJGlucAotKwkgbGU/dnBlcm0JJGluMywkaW4zLCRp bjMsJGlucHBlcm0KLSsJdnhvcgkJJG91dDEsJGluMSwkcm5ka2V5MAotKwlsdnhfdQkJJGluNiwk eDYwLCRpbnAKLSsJIGxlP3ZwZXJtCSRpbjQsJGluNCwkaW40LCRpbnBwZXJtCi0rCXZ4b3IJCSRv dXQyLCRpbjIsJHJuZGtleTAKLSsJbHZ4X3UJCSRpbjcsJHg3MCwkaW5wCi0rCWFkZGkJCSRpbnAs JGlucCwweDgwCi0rCSBsZT92cGVybQkkaW41LCRpbjUsJGluNSwkaW5wcGVybQotKwl2eG9yCQkk b3V0MywkaW4zLCRybmRrZXkwCi0rCSBsZT92cGVybQkkaW42LCRpbjYsJGluNiwkaW5wcGVybQot Kwl2eG9yCQkkb3V0NCwkaW40LCRybmRrZXkwCi0rCSBsZT92cGVybQkkaW43LCRpbjcsJGluNywk aW5wcGVybQotKwl2eG9yCQkkb3V0NSwkaW41LCRybmRrZXkwCi0rCXZ4b3IJCSRvdXQ2LCRpbjYs JHJuZGtleTAKLSsJdnhvcgkJJG91dDcsJGluNywkcm5ka2V5MAotKwotKwltdGN0cgkJJHJvdW5k cwotKwliCQlMb29wX2NiY19kZWM4eAotKy5hbGlnbgk1Ci0rTG9vcF9jYmNfZGVjOHg6Ci0rCXZu Y2lwaGVyCSRvdXQwLCRvdXQwLHYyNAotKwl2bmNpcGhlcgkkb3V0MSwkb3V0MSx2MjQKLSsJdm5j aXBoZXIJJG91dDIsJG91dDIsdjI0Ci0rCXZuY2lwaGVyCSRvdXQzLCRvdXQzLHYyNAotKwl2bmNp cGhlcgkkb3V0NCwkb3V0NCx2MjQKLSsJdm5jaXBoZXIJJG91dDUsJG91dDUsdjI0Ci0rCXZuY2lw aGVyCSRvdXQ2LCRvdXQ2LHYyNAotKwl2bmNpcGhlcgkkb3V0Nywkb3V0Nyx2MjQKLSsJbHZ4CQl2 MjQsJHgyMCwka2V5XwkJIyByb3VuZFszXQotKwlhZGRpCQkka2V5Xywka2V5XywweDIwCi0rCi0r CXZuY2lwaGVyCSRvdXQwLCRvdXQwLHYyNQotKwl2bmNpcGhlcgkkb3V0MSwkb3V0MSx2MjUKLSsJ dm5jaXBoZXIJJG91dDIsJG91dDIsdjI1Ci0rCXZuY2lwaGVyCSRvdXQzLCRvdXQzLHYyNQotKwl2 bmNpcGhlcgkkb3V0NCwkb3V0NCx2MjUKLSsJdm5jaXBoZXIJJG91dDUsJG91dDUsdjI1Ci0rCXZu Y2lwaGVyCSRvdXQ2LCRvdXQ2LHYyNQotKwl2bmNpcGhlcgkkb3V0Nywkb3V0Nyx2MjUKLSsJbHZ4 CQl2MjUsJHgxMCwka2V5XwkJIyByb3VuZFs0XQotKwliZG56CQlMb29wX2NiY19kZWM4eAotKwot KwlzdWJpYwkJJGxlbiwkbGVuLDEyOAkJIyAkbGVuLT0xMjgKLSsJdm5jaXBoZXIJJG91dDAsJG91 dDAsdjI0Ci0rCXZuY2lwaGVyCSRvdXQxLCRvdXQxLHYyNAotKwl2bmNpcGhlcgkkb3V0Miwkb3V0 Mix2MjQKLSsJdm5jaXBoZXIJJG91dDMsJG91dDMsdjI0Ci0rCXZuY2lwaGVyCSRvdXQ0LCRvdXQ0 LHYyNAotKwl2bmNpcGhlcgkkb3V0NSwkb3V0NSx2MjQKLSsJdm5jaXBoZXIJJG91dDYsJG91dDYs djI0Ci0rCXZuY2lwaGVyCSRvdXQ3LCRvdXQ3LHYyNAotKwotKwlzdWJmZS4JCXIwLHIwLHIwCQkj IGJvcnJvdz8tMTowCi0rCXZuY2lwaGVyCSRvdXQwLCRvdXQwLHYyNQotKwl2bmNpcGhlcgkkb3V0 MSwkb3V0MSx2MjUKLSsJdm5jaXBoZXIJJG91dDIsJG91dDIsdjI1Ci0rCXZuY2lwaGVyCSRvdXQz LCRvdXQzLHYyNQotKwl2bmNpcGhlcgkkb3V0NCwkb3V0NCx2MjUKLSsJdm5jaXBoZXIJJG91dDUs JG91dDUsdjI1Ci0rCXZuY2lwaGVyCSRvdXQ2LCRvdXQ2LHYyNQotKwl2bmNpcGhlcgkkb3V0Nywk b3V0Nyx2MjUKLSsKLSsJYW5kCQlyMCxyMCwkbGVuCi0rCXZuY2lwaGVyCSRvdXQwLCRvdXQwLHYy NgotKwl2bmNpcGhlcgkkb3V0MSwkb3V0MSx2MjYKLSsJdm5jaXBoZXIJJG91dDIsJG91dDIsdjI2 Ci0rCXZuY2lwaGVyCSRvdXQzLCRvdXQzLHYyNgotKwl2bmNpcGhlcgkkb3V0NCwkb3V0NCx2MjYK LSsJdm5jaXBoZXIJJG91dDUsJG91dDUsdjI2Ci0rCXZuY2lwaGVyCSRvdXQ2LCRvdXQ2LHYyNgot Kwl2bmNpcGhlcgkkb3V0Nywkb3V0Nyx2MjYKLSsKLSsJYWRkCQkkaW5wLCRpbnAscjAJCSMgJGlu cCBpcyBhZGp1c3RlZCBpbiBzdWNoCi0rCQkJCQkJIyB3YXkgdGhhdCBhdCBleGl0IGZyb20gdGhl Ci0rCQkJCQkJIyBsb29wIGluWC1pbjcgYXJlIGxvYWRlZAotKwkJCQkJCSMgd2l0aCBsYXN0ICJ3 b3JkcyIKLSsJdm5jaXBoZXIJJG91dDAsJG91dDAsdjI3Ci0rCXZuY2lwaGVyCSRvdXQxLCRvdXQx LHYyNwotKwl2bmNpcGhlcgkkb3V0Miwkb3V0Mix2MjcKLSsJdm5jaXBoZXIJJG91dDMsJG91dDMs djI3Ci0rCXZuY2lwaGVyCSRvdXQ0LCRvdXQ0LHYyNwotKwl2bmNpcGhlcgkkb3V0NSwkb3V0NSx2 MjcKLSsJdm5jaXBoZXIJJG91dDYsJG91dDYsdjI3Ci0rCXZuY2lwaGVyCSRvdXQ3LCRvdXQ3LHYy NwotKwotKwlhZGRpCQkka2V5Xywkc3AsJEZSQU1FKzE1CSMgcmV3aW5kICRrZXlfCi0rCXZuY2lw aGVyCSRvdXQwLCRvdXQwLHYyOAotKwl2bmNpcGhlcgkkb3V0MSwkb3V0MSx2MjgKLSsJdm5jaXBo ZXIJJG91dDIsJG91dDIsdjI4Ci0rCXZuY2lwaGVyCSRvdXQzLCRvdXQzLHYyOAotKwl2bmNpcGhl cgkkb3V0NCwkb3V0NCx2MjgKLSsJdm5jaXBoZXIJJG91dDUsJG91dDUsdjI4Ci0rCXZuY2lwaGVy CSRvdXQ2LCRvdXQ2LHYyOAotKwl2bmNpcGhlcgkkb3V0Nywkb3V0Nyx2MjgKLSsJbHZ4CQl2MjQs JHgwMCwka2V5XwkJIyByZS1wcmUtbG9hZCByb3VuZFsxXQotKwotKwl2bmNpcGhlcgkkb3V0MCwk b3V0MCx2MjkKLSsJdm5jaXBoZXIJJG91dDEsJG91dDEsdjI5Ci0rCXZuY2lwaGVyCSRvdXQyLCRv dXQyLHYyOQotKwl2bmNpcGhlcgkkb3V0Mywkb3V0Myx2MjkKLSsJdm5jaXBoZXIJJG91dDQsJG91 dDQsdjI5Ci0rCXZuY2lwaGVyCSRvdXQ1LCRvdXQ1LHYyOQotKwl2bmNpcGhlcgkkb3V0Niwkb3V0 Nix2MjkKLSsJdm5jaXBoZXIJJG91dDcsJG91dDcsdjI5Ci0rCWx2eAkJdjI1LCR4MTAsJGtleV8J CSMgcmUtcHJlLWxvYWQgcm91bmRbMl0KLSsKLSsJdm5jaXBoZXIJJG91dDAsJG91dDAsdjMwCi0r CSB2eG9yCQkkaXZlYywkaXZlYyx2MzEJCSMgeG9yIHdpdGggbGFzdCByb3VuZCBrZXkKLSsJdm5j aXBoZXIJJG91dDEsJG91dDEsdjMwCi0rCSB2eG9yCQkkaW4wLCRpbjAsdjMxCi0rCXZuY2lwaGVy CSRvdXQyLCRvdXQyLHYzMAotKwkgdnhvcgkJJGluMSwkaW4xLHYzMQotKwl2bmNpcGhlcgkkb3V0 Mywkb3V0Myx2MzAKLSsJIHZ4b3IJCSRpbjIsJGluMix2MzEKLSsJdm5jaXBoZXIJJG91dDQsJG91 dDQsdjMwCi0rCSB2eG9yCQkkaW4zLCRpbjMsdjMxCi0rCXZuY2lwaGVyCSRvdXQ1LCRvdXQ1LHYz MAotKwkgdnhvcgkJJGluNCwkaW40LHYzMQotKwl2bmNpcGhlcgkkb3V0Niwkb3V0Nix2MzAKLSsJ IHZ4b3IJCSRpbjUsJGluNSx2MzEKLSsJdm5jaXBoZXIJJG91dDcsJG91dDcsdjMwCi0rCSB2eG9y CQkkaW42LCRpbjYsdjMxCi0rCi0rCXZuY2lwaGVybGFzdAkkb3V0MCwkb3V0MCwkaXZlYwotKwl2 bmNpcGhlcmxhc3QJJG91dDEsJG91dDEsJGluMAotKwkgbHZ4X3UJCSRpbjAsJHgwMCwkaW5wCQkj IGxvYWQgbmV4dCBpbnB1dCBibG9jawotKwl2bmNpcGhlcmxhc3QJJG91dDIsJG91dDIsJGluMQot KwkgbHZ4X3UJCSRpbjEsJHgxMCwkaW5wCi0rCXZuY2lwaGVybGFzdAkkb3V0Mywkb3V0MywkaW4y Ci0rCSBsZT92cGVybQkkaW4wLCRpbjAsJGluMCwkaW5wcGVybQotKwkgbHZ4X3UJCSRpbjIsJHgy MCwkaW5wCi0rCXZuY2lwaGVybGFzdAkkb3V0NCwkb3V0NCwkaW4zCi0rCSBsZT92cGVybQkkaW4x LCRpbjEsJGluMSwkaW5wcGVybQotKwkgbHZ4X3UJCSRpbjMsJHgzMCwkaW5wCi0rCXZuY2lwaGVy bGFzdAkkb3V0NSwkb3V0NSwkaW40Ci0rCSBsZT92cGVybQkkaW4yLCRpbjIsJGluMiwkaW5wcGVy bQotKwkgbHZ4X3UJCSRpbjQsJHg0MCwkaW5wCi0rCXZuY2lwaGVybGFzdAkkb3V0Niwkb3V0Niwk aW41Ci0rCSBsZT92cGVybQkkaW4zLCRpbjMsJGluMywkaW5wcGVybQotKwkgbHZ4X3UJCSRpbjUs JHg1MCwkaW5wCi0rCXZuY2lwaGVybGFzdAkkb3V0Nywkb3V0NywkaW42Ci0rCSBsZT92cGVybQkk aW40LCRpbjQsJGluNCwkaW5wcGVybQotKwkgbHZ4X3UJCSRpbjYsJHg2MCwkaW5wCi0rCXZtcgkJ JGl2ZWMsJGluNwotKwkgbGU/dnBlcm0JJGluNSwkaW41LCRpbjUsJGlucHBlcm0KLSsJIGx2eF91 CQkkaW43LCR4NzAsJGlucAotKwkgYWRkaQkJJGlucCwkaW5wLDB4ODAKLSsKLSsJbGU/dnBlcm0J JG91dDAsJG91dDAsJG91dDAsJGlucHBlcm0KLSsJbGU/dnBlcm0JJG91dDEsJG91dDEsJG91dDEs JGlucHBlcm0KLSsJc3R2eF91CQkkb3V0MCwkeDAwLCRvdXQKLSsJIGxlP3ZwZXJtCSRpbjYsJGlu NiwkaW42LCRpbnBwZXJtCi0rCSB2eG9yCQkkb3V0MCwkaW4wLCRybmRrZXkwCi0rCWxlP3ZwZXJt CSRvdXQyLCRvdXQyLCRvdXQyLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDEsJHgxMCwkb3V0Ci0r CSBsZT92cGVybQkkaW43LCRpbjcsJGluNywkaW5wcGVybQotKwkgdnhvcgkJJG91dDEsJGluMSwk cm5ka2V5MAotKwlsZT92cGVybQkkb3V0Mywkb3V0Mywkb3V0MywkaW5wcGVybQotKwlzdHZ4X3UJ CSRvdXQyLCR4MjAsJG91dAotKwkgdnhvcgkJJG91dDIsJGluMiwkcm5ka2V5MAotKwlsZT92cGVy bQkkb3V0NCwkb3V0NCwkb3V0NCwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQzLCR4MzAsJG91dAot KwkgdnhvcgkJJG91dDMsJGluMywkcm5ka2V5MAotKwlsZT92cGVybQkkb3V0NSwkb3V0NSwkb3V0 NSwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQ0LCR4NDAsJG91dAotKwkgdnhvcgkJJG91dDQsJGlu NCwkcm5ka2V5MAotKwlsZT92cGVybQkkb3V0Niwkb3V0Niwkb3V0NiwkaW5wcGVybQotKwlzdHZ4 X3UJCSRvdXQ1LCR4NTAsJG91dAotKwkgdnhvcgkJJG91dDUsJGluNSwkcm5ka2V5MAotKwlsZT92 cGVybQkkb3V0Nywkb3V0Nywkb3V0NywkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQ2LCR4NjAsJG91 dAotKwkgdnhvcgkJJG91dDYsJGluNiwkcm5ka2V5MAotKwlzdHZ4X3UJCSRvdXQ3LCR4NzAsJG91 dAotKwlhZGRpCQkkb3V0LCRvdXQsMHg4MAotKwkgdnhvcgkJJG91dDcsJGluNywkcm5ka2V5MAot KwotKwltdGN0cgkJJHJvdW5kcwotKwliZXEJCUxvb3BfY2JjX2RlYzh4CQkjIGRpZCAkbGVuLT0x MjggYm9ycm93PwotKwotKwlhZGRpYy4JCSRsZW4sJGxlbiwxMjgKLSsJYmVxCQlMY2JjX2RlYzh4 X2RvbmUKLSsJbm9wCi0rCW5vcAotKwotK0xvb3BfY2JjX2RlYzh4X3RhaWw6CQkJCSMgdXAgdG8g NyAid29yZHMiIHRhaWwuLi4KLSsJdm5jaXBoZXIJJG91dDEsJG91dDEsdjI0Ci0rCXZuY2lwaGVy CSRvdXQyLCRvdXQyLHYyNAotKwl2bmNpcGhlcgkkb3V0Mywkb3V0Myx2MjQKLSsJdm5jaXBoZXIJ JG91dDQsJG91dDQsdjI0Ci0rCXZuY2lwaGVyCSRvdXQ1LCRvdXQ1LHYyNAotKwl2bmNpcGhlcgkk b3V0Niwkb3V0Nix2MjQKLSsJdm5jaXBoZXIJJG91dDcsJG91dDcsdjI0Ci0rCWx2eAkJdjI0LCR4 MjAsJGtleV8JCSMgcm91bmRbM10KLSsJYWRkaQkJJGtleV8sJGtleV8sMHgyMAotKwotKwl2bmNp cGhlcgkkb3V0MSwkb3V0MSx2MjUKLSsJdm5jaXBoZXIJJG91dDIsJG91dDIsdjI1Ci0rCXZuY2lw aGVyCSRvdXQzLCRvdXQzLHYyNQotKwl2bmNpcGhlcgkkb3V0NCwkb3V0NCx2MjUKLSsJdm5jaXBo ZXIJJG91dDUsJG91dDUsdjI1Ci0rCXZuY2lwaGVyCSRvdXQ2LCRvdXQ2LHYyNQotKwl2bmNpcGhl cgkkb3V0Nywkb3V0Nyx2MjUKLSsJbHZ4CQl2MjUsJHgxMCwka2V5XwkJIyByb3VuZFs0XQotKwli ZG56CQlMb29wX2NiY19kZWM4eF90YWlsCi0rCi0rCXZuY2lwaGVyCSRvdXQxLCRvdXQxLHYyNAot Kwl2bmNpcGhlcgkkb3V0Miwkb3V0Mix2MjQKLSsJdm5jaXBoZXIJJG91dDMsJG91dDMsdjI0Ci0r CXZuY2lwaGVyCSRvdXQ0LCRvdXQ0LHYyNAotKwl2bmNpcGhlcgkkb3V0NSwkb3V0NSx2MjQKLSsJ dm5jaXBoZXIJJG91dDYsJG91dDYsdjI0Ci0rCXZuY2lwaGVyCSRvdXQ3LCRvdXQ3LHYyNAotKwot Kwl2bmNpcGhlcgkkb3V0MSwkb3V0MSx2MjUKLSsJdm5jaXBoZXIJJG91dDIsJG91dDIsdjI1Ci0r CXZuY2lwaGVyCSRvdXQzLCRvdXQzLHYyNQotKwl2bmNpcGhlcgkkb3V0NCwkb3V0NCx2MjUKLSsJ dm5jaXBoZXIJJG91dDUsJG91dDUsdjI1Ci0rCXZuY2lwaGVyCSRvdXQ2LCRvdXQ2LHYyNQotKwl2 bmNpcGhlcgkkb3V0Nywkb3V0Nyx2MjUKLSsKLSsJdm5jaXBoZXIJJG91dDEsJG91dDEsdjI2Ci0r CXZuY2lwaGVyCSRvdXQyLCRvdXQyLHYyNgotKwl2bmNpcGhlcgkkb3V0Mywkb3V0Myx2MjYKLSsJ dm5jaXBoZXIJJG91dDQsJG91dDQsdjI2Ci0rCXZuY2lwaGVyCSRvdXQ1LCRvdXQ1LHYyNgotKwl2 bmNpcGhlcgkkb3V0Niwkb3V0Nix2MjYKLSsJdm5jaXBoZXIJJG91dDcsJG91dDcsdjI2Ci0rCi0r CXZuY2lwaGVyCSRvdXQxLCRvdXQxLHYyNwotKwl2bmNpcGhlcgkkb3V0Miwkb3V0Mix2MjcKLSsJ dm5jaXBoZXIJJG91dDMsJG91dDMsdjI3Ci0rCXZuY2lwaGVyCSRvdXQ0LCRvdXQ0LHYyNwotKwl2 bmNpcGhlcgkkb3V0NSwkb3V0NSx2MjcKLSsJdm5jaXBoZXIJJG91dDYsJG91dDYsdjI3Ci0rCXZu Y2lwaGVyCSRvdXQ3LCRvdXQ3LHYyNwotKwotKwl2bmNpcGhlcgkkb3V0MSwkb3V0MSx2MjgKLSsJ dm5jaXBoZXIJJG91dDIsJG91dDIsdjI4Ci0rCXZuY2lwaGVyCSRvdXQzLCRvdXQzLHYyOAotKwl2 bmNpcGhlcgkkb3V0NCwkb3V0NCx2MjgKLSsJdm5jaXBoZXIJJG91dDUsJG91dDUsdjI4Ci0rCXZu Y2lwaGVyCSRvdXQ2LCRvdXQ2LHYyOAotKwl2bmNpcGhlcgkkb3V0Nywkb3V0Nyx2MjgKLSsKLSsJ dm5jaXBoZXIJJG91dDEsJG91dDEsdjI5Ci0rCXZuY2lwaGVyCSRvdXQyLCRvdXQyLHYyOQotKwl2 bmNpcGhlcgkkb3V0Mywkb3V0Myx2MjkKLSsJdm5jaXBoZXIJJG91dDQsJG91dDQsdjI5Ci0rCXZu Y2lwaGVyCSRvdXQ1LCRvdXQ1LHYyOQotKwl2bmNpcGhlcgkkb3V0Niwkb3V0Nix2MjkKLSsJdm5j aXBoZXIJJG91dDcsJG91dDcsdjI5Ci0rCi0rCXZuY2lwaGVyCSRvdXQxLCRvdXQxLHYzMAotKwkg dnhvcgkJJGl2ZWMsJGl2ZWMsdjMxCQkjIGxhc3Qgcm91bmQga2V5Ci0rCXZuY2lwaGVyCSRvdXQy LCRvdXQyLHYzMAotKwkgdnhvcgkJJGluMSwkaW4xLHYzMQotKwl2bmNpcGhlcgkkb3V0Mywkb3V0 Myx2MzAKLSsJIHZ4b3IJCSRpbjIsJGluMix2MzEKLSsJdm5jaXBoZXIJJG91dDQsJG91dDQsdjMw Ci0rCSB2eG9yCQkkaW4zLCRpbjMsdjMxCi0rCXZuY2lwaGVyCSRvdXQ1LCRvdXQ1LHYzMAotKwkg dnhvcgkJJGluNCwkaW40LHYzMQotKwl2bmNpcGhlcgkkb3V0Niwkb3V0Nix2MzAKLSsJIHZ4b3IJ CSRpbjUsJGluNSx2MzEKLSsJdm5jaXBoZXIJJG91dDcsJG91dDcsdjMwCi0rCSB2eG9yCQkkaW42 LCRpbjYsdjMxCi0rCi0rCWNtcGx3aQkJJGxlbiwzMgkJCSMgc3dpdGNoKCRsZW4pCi0rCWJsdAkJ TGNiY19kZWM4eF9vbmUKLSsJbm9wCi0rCWJlcQkJTGNiY19kZWM4eF90d28KLSsJY21wbHdpCQkk bGVuLDY0Ci0rCWJsdAkJTGNiY19kZWM4eF90aHJlZQotKwlub3AKLSsJYmVxCQlMY2JjX2RlYzh4 X2ZvdXIKLSsJY21wbHdpCQkkbGVuLDk2Ci0rCWJsdAkJTGNiY19kZWM4eF9maXZlCi0rCW5vcAot KwliZXEJCUxjYmNfZGVjOHhfc2l4Ci0rCi0rTGNiY19kZWM4eF9zZXZlbjoKLSsJdm5jaXBoZXJs YXN0CSRvdXQxLCRvdXQxLCRpdmVjCi0rCXZuY2lwaGVybGFzdAkkb3V0Miwkb3V0MiwkaW4xCi0r CXZuY2lwaGVybGFzdAkkb3V0Mywkb3V0MywkaW4yCi0rCXZuY2lwaGVybGFzdAkkb3V0NCwkb3V0 NCwkaW4zCi0rCXZuY2lwaGVybGFzdAkkb3V0NSwkb3V0NSwkaW40Ci0rCXZuY2lwaGVybGFzdAkk b3V0Niwkb3V0NiwkaW41Ci0rCXZuY2lwaGVybGFzdAkkb3V0Nywkb3V0NywkaW42Ci0rCXZtcgkJ JGl2ZWMsJGluNwotKwotKwlsZT92cGVybQkkb3V0MSwkb3V0MSwkb3V0MSwkaW5wcGVybQotKwls ZT92cGVybQkkb3V0Miwkb3V0Miwkb3V0MiwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQxLCR4MDAs JG91dAotKwlsZT92cGVybQkkb3V0Mywkb3V0Mywkb3V0MywkaW5wcGVybQotKwlzdHZ4X3UJCSRv dXQyLCR4MTAsJG91dAotKwlsZT92cGVybQkkb3V0NCwkb3V0NCwkb3V0NCwkaW5wcGVybQotKwlz dHZ4X3UJCSRvdXQzLCR4MjAsJG91dAotKwlsZT92cGVybQkkb3V0NSwkb3V0NSwkb3V0NSwkaW5w cGVybQotKwlzdHZ4X3UJCSRvdXQ0LCR4MzAsJG91dAotKwlsZT92cGVybQkkb3V0Niwkb3V0Niwk b3V0NiwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQ1LCR4NDAsJG91dAotKwlsZT92cGVybQkkb3V0 Nywkb3V0Nywkb3V0NywkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQ2LCR4NTAsJG91dAotKwlzdHZ4 X3UJCSRvdXQ3LCR4NjAsJG91dAotKwlhZGRpCQkkb3V0LCRvdXQsMHg3MAotKwliCQlMY2JjX2Rl Yzh4X2RvbmUKLSsKLSsuYWxpZ24JNQotK0xjYmNfZGVjOHhfc2l4OgotKwl2bmNpcGhlcmxhc3QJ JG91dDIsJG91dDIsJGl2ZWMKLSsJdm5jaXBoZXJsYXN0CSRvdXQzLCRvdXQzLCRpbjIKLSsJdm5j aXBoZXJsYXN0CSRvdXQ0LCRvdXQ0LCRpbjMKLSsJdm5jaXBoZXJsYXN0CSRvdXQ1LCRvdXQ1LCRp bjQKLSsJdm5jaXBoZXJsYXN0CSRvdXQ2LCRvdXQ2LCRpbjUKLSsJdm5jaXBoZXJsYXN0CSRvdXQ3 LCRvdXQ3LCRpbjYKLSsJdm1yCQkkaXZlYywkaW43Ci0rCi0rCWxlP3ZwZXJtCSRvdXQyLCRvdXQy LCRvdXQyLCRpbnBwZXJtCi0rCWxlP3ZwZXJtCSRvdXQzLCRvdXQzLCRvdXQzLCRpbnBwZXJtCi0r CXN0dnhfdQkJJG91dDIsJHgwMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ0LCRvdXQ0LCRvdXQ0LCRp bnBwZXJtCi0rCXN0dnhfdQkJJG91dDMsJHgxMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ1LCRvdXQ1 LCRvdXQ1LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDQsJHgyMCwkb3V0Ci0rCWxlP3ZwZXJtCSRv dXQ2LCRvdXQ2LCRvdXQ2LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDUsJHgzMCwkb3V0Ci0rCWxl P3ZwZXJtCSRvdXQ3LCRvdXQ3LCRvdXQ3LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDYsJHg0MCwk b3V0Ci0rCXN0dnhfdQkJJG91dDcsJHg1MCwkb3V0Ci0rCWFkZGkJCSRvdXQsJG91dCwweDYwCi0r CWIJCUxjYmNfZGVjOHhfZG9uZQotKwotKy5hbGlnbgk1Ci0rTGNiY19kZWM4eF9maXZlOgotKwl2 bmNpcGhlcmxhc3QJJG91dDMsJG91dDMsJGl2ZWMKLSsJdm5jaXBoZXJsYXN0CSRvdXQ0LCRvdXQ0 LCRpbjMKLSsJdm5jaXBoZXJsYXN0CSRvdXQ1LCRvdXQ1LCRpbjQKLSsJdm5jaXBoZXJsYXN0CSRv dXQ2LCRvdXQ2LCRpbjUKLSsJdm5jaXBoZXJsYXN0CSRvdXQ3LCRvdXQ3LCRpbjYKLSsJdm1yCQkk aXZlYywkaW43Ci0rCi0rCWxlP3ZwZXJtCSRvdXQzLCRvdXQzLCRvdXQzLCRpbnBwZXJtCi0rCWxl P3ZwZXJtCSRvdXQ0LCRvdXQ0LCRvdXQ0LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDMsJHgwMCwk b3V0Ci0rCWxlP3ZwZXJtCSRvdXQ1LCRvdXQ1LCRvdXQ1LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91 dDQsJHgxMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ2LCRvdXQ2LCRvdXQ2LCRpbnBwZXJtCi0rCXN0 dnhfdQkJJG91dDUsJHgyMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ3LCRvdXQ3LCRvdXQ3LCRpbnBw ZXJtCi0rCXN0dnhfdQkJJG91dDYsJHgzMCwkb3V0Ci0rCXN0dnhfdQkJJG91dDcsJHg0MCwkb3V0 Ci0rCWFkZGkJCSRvdXQsJG91dCwweDUwCi0rCWIJCUxjYmNfZGVjOHhfZG9uZQotKwotKy5hbGln bgk1Ci0rTGNiY19kZWM4eF9mb3VyOgotKwl2bmNpcGhlcmxhc3QJJG91dDQsJG91dDQsJGl2ZWMK LSsJdm5jaXBoZXJsYXN0CSRvdXQ1LCRvdXQ1LCRpbjQKLSsJdm5jaXBoZXJsYXN0CSRvdXQ2LCRv dXQ2LCRpbjUKLSsJdm5jaXBoZXJsYXN0CSRvdXQ3LCRvdXQ3LCRpbjYKLSsJdm1yCQkkaXZlYywk aW43Ci0rCi0rCWxlP3ZwZXJtCSRvdXQ0LCRvdXQ0LCRvdXQ0LCRpbnBwZXJtCi0rCWxlP3ZwZXJt CSRvdXQ1LCRvdXQ1LCRvdXQ1LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDQsJHgwMCwkb3V0Ci0r CWxlP3ZwZXJtCSRvdXQ2LCRvdXQ2LCRvdXQ2LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDUsJHgx MCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ3LCRvdXQ3LCRvdXQ3LCRpbnBwZXJtCi0rCXN0dnhfdQkJ JG91dDYsJHgyMCwkb3V0Ci0rCXN0dnhfdQkJJG91dDcsJHgzMCwkb3V0Ci0rCWFkZGkJCSRvdXQs JG91dCwweDQwCi0rCWIJCUxjYmNfZGVjOHhfZG9uZQotKwotKy5hbGlnbgk1Ci0rTGNiY19kZWM4 eF90aHJlZToKLSsJdm5jaXBoZXJsYXN0CSRvdXQ1LCRvdXQ1LCRpdmVjCi0rCXZuY2lwaGVybGFz dAkkb3V0Niwkb3V0NiwkaW41Ci0rCXZuY2lwaGVybGFzdAkkb3V0Nywkb3V0NywkaW42Ci0rCXZt cgkJJGl2ZWMsJGluNwotKwotKwlsZT92cGVybQkkb3V0NSwkb3V0NSwkb3V0NSwkaW5wcGVybQot KwlsZT92cGVybQkkb3V0Niwkb3V0Niwkb3V0NiwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQ1LCR4 MDAsJG91dAotKwlsZT92cGVybQkkb3V0Nywkb3V0Nywkb3V0NywkaW5wcGVybQotKwlzdHZ4X3UJ CSRvdXQ2LCR4MTAsJG91dAotKwlzdHZ4X3UJCSRvdXQ3LCR4MjAsJG91dAotKwlhZGRpCQkkb3V0 LCRvdXQsMHgzMAotKwliCQlMY2JjX2RlYzh4X2RvbmUKLSsKLSsuYWxpZ24JNQotK0xjYmNfZGVj OHhfdHdvOgotKwl2bmNpcGhlcmxhc3QJJG91dDYsJG91dDYsJGl2ZWMKLSsJdm5jaXBoZXJsYXN0 CSRvdXQ3LCRvdXQ3LCRpbjYKLSsJdm1yCQkkaXZlYywkaW43Ci0rCi0rCWxlP3ZwZXJtCSRvdXQ2 LCRvdXQ2LCRvdXQ2LCRpbnBwZXJtCi0rCWxlP3ZwZXJtCSRvdXQ3LCRvdXQ3LCRvdXQ3LCRpbnBw ZXJtCi0rCXN0dnhfdQkJJG91dDYsJHgwMCwkb3V0Ci0rCXN0dnhfdQkJJG91dDcsJHgxMCwkb3V0 Ci0rCWFkZGkJCSRvdXQsJG91dCwweDIwCi0rCWIJCUxjYmNfZGVjOHhfZG9uZQotKwotKy5hbGln bgk1Ci0rTGNiY19kZWM4eF9vbmU6Ci0rCXZuY2lwaGVybGFzdAkkb3V0Nywkb3V0NywkaXZlYwot Kwl2bXIJCSRpdmVjLCRpbjcKLSsKLSsJbGU/dnBlcm0JJG91dDcsJG91dDcsJG91dDcsJGlucHBl cm0KLSsJc3R2eF91CQkkb3V0NywwLCRvdXQKLSsJYWRkaQkJJG91dCwkb3V0LDB4MTAKLSsKLStM Y2JjX2RlYzh4X2RvbmU6Ci0rCWxlP3ZwZXJtCSRpdmVjLCRpdmVjLCRpdmVjLCRpbnBwZXJtCi0r CXN0dnhfdQkJJGl2ZWMsMCwkaXZwCQkjIHdyaXRlIFt1bmFsaWduZWRdIGl2Ci0rCi0rCWxpCQly MTAsYCRGUkFNRSsxNWAKLSsJbGkJCXIxMSxgJEZSQU1FKzMxYAotKwlzdHZ4CQkkaW5wcGVybSxy MTAsJHNwCSMgd2lwZSBjb3BpZXMgb2Ygcm91bmQga2V5cwotKwlhZGRpCQlyMTAscjEwLDMyCi0r CXN0dngJCSRpbnBwZXJtLHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQkkaW5w cGVybSxyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJc3R2eAkJJGlucHBlcm0scjExLCRz cAotKwlhZGRpCQlyMTEscjExLDMyCi0rCXN0dngJCSRpbnBwZXJtLHIxMCwkc3AKLSsJYWRkaQkJ cjEwLHIxMCwzMgotKwlzdHZ4CQkkaW5wcGVybSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIK LSsJc3R2eAkJJGlucHBlcm0scjEwLCRzcAotKwlhZGRpCQlyMTAscjEwLDMyCi0rCXN0dngJCSRp bnBwZXJtLHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwotKwltdHNwcgkJMjU2LCR2cnNh dmUKLSsJbHZ4CQl2MjAscjEwLCRzcAkJIyBBQkkgc2F5cyBzbwotKwlhZGRpCQlyMTAscjEwLDMy Ci0rCWx2eAkJdjIxLHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlsdngJCXYyMixyMTAs JHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjMscjExLCRzcAotKwlhZGRpCQlyMTEs cjExLDMyCi0rCWx2eAkJdjI0LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlsdngJCXYy NSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJbHZ4CQl2MjYscjEwLCRzcAotKwlhZGRp CQlyMTAscjEwLDMyCi0rCWx2eAkJdjI3LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwls dngJCXYyOCxyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjkscjExLCRzcAot KwlhZGRpCQlyMTEscjExLDMyCi0rCWx2eAkJdjMwLHIxMCwkc3AKLSsJbHZ4CQl2MzEscjExLCRz cAotKwkkUE9QCQlyMjYsYCRGUkFNRSsyMSoxNiswKiRTSVpFX1RgKCRzcCkKLSsJJFBPUAkJcjI3 LGAkRlJBTUUrMjEqMTYrMSokU0laRV9UYCgkc3ApCi0rCSRQT1AJCXIyOCxgJEZSQU1FKzIxKjE2 KzIqJFNJWkVfVGAoJHNwKQotKwkkUE9QCQlyMjksYCRGUkFNRSsyMSoxNiszKiRTSVpFX1RgKCRz cCkKLSsJJFBPUAkJcjMwLGAkRlJBTUUrMjEqMTYrNCokU0laRV9UYCgkc3ApCi0rCSRQT1AJCXIz MSxgJEZSQU1FKzIxKjE2KzUqJFNJWkVfVGAoJHNwKQotKwlhZGRpCQkkc3AsJHNwLGAkRlJBTUUr MjEqMTYrNiokU0laRV9UYAotKwlibHIKLSsJLmxvbmcJCTAKLSsJLmJ5dGUJCTAsMTIsMHgxNCww LDB4ODAsNiw2LDAKLSsJLmxvbmcJCTAKLSsuc2l6ZQkuJHtwcmVmaXh9X2NiY19lbmNyeXB0LC4t LiR7cHJlZml4fV9jYmNfZW5jcnlwdAotK19fXwotK319CX19fQotKwotKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSt7e3sJIyBDVFIgcHJvY2VkdXJlW3NdCQkJCQkJIwotK215ICgkaW5wLCRvdXQsJGxlbiwk a2V5LCRpdnAsJHgxMCwkcm91bmRzLCRpZHgpPW1hcCgiciRfIiwoMy4uMTApKTsKLStteSAoJHJu ZGtleTAsJHJuZGtleTEsJGlub3V0LCR0bXApPQkJbWFwKCJ2JF8iLCgwLi4zKSk7Ci0rbXkgKCRp dmVjLCRpbnB0YWlsLCRpbnBwZXJtLCRvdXRoZWFkLCRvdXRwZXJtLCRvdXRtYXNrLCRrZXlwZXJt LCRvbmUpPQotKwkJCQkJCW1hcCgidiRfIiwoNC4uMTEpKTsKLStteSAkZGF0PSR0bXA7Ci0rCi0r JGNvZGUuPTw8X19fOwotKy5nbG9ibAkuJHtwcmVmaXh9X2N0cjMyX2VuY3J5cHRfYmxvY2tzCi0r LmFsaWduCTUKLSsuJHtwcmVmaXh9X2N0cjMyX2VuY3J5cHRfYmxvY2tzOgotKwkke1VDTVB9aQkk bGVuLDEKLSsJYmx0bHItCi0rCi0rCWxpcwkJcjAsMHhmZmYwCi0rCW1mc3ByCQkkdnJzYXZlLDI1 NgotKwltdHNwcgkJMjU2LHIwCi0rCi0rCWxpCQkkaWR4LDE1Ci0rCXZ4b3IJCSRybmRrZXkwLCRy bmRrZXkwLCRybmRrZXkwCi0rCWxlP3ZzcGx0aXNiCSR0bXAsMHgwZgotKwotKwlsdngJCSRpdmVj LDAsJGl2cAkJIyBsb2FkIFt1bmFsaWduZWRdIGl2Ci0rCWx2c2wJCSRpbnBwZXJtLDAsJGl2cAot KwlsdngJCSRpbnB0YWlsLCRpZHgsJGl2cAotKwkgdnNwbHRpc2IJJG9uZSwxCi0rCWxlP3Z4b3IJ CSRpbnBwZXJtLCRpbnBwZXJtLCR0bXAKLSsJdnBlcm0JCSRpdmVjLCRpdmVjLCRpbnB0YWlsLCRp bnBwZXJtCi0rCSB2c2xkb2kJCSRvbmUsJHJuZGtleTAsJG9uZSwxCi0rCi0rCW5lZwkJcjExLCRp bnAKLSsJP2x2c2wJCSRrZXlwZXJtLDAsJGtleQkJIyBwcmVwYXJlIGZvciB1bmFsaWduZWQga2V5 Ci0rCWx3egkJJHJvdW5kcywyNDAoJGtleSkKLSsKLSsJbHZzcgkJJGlucHBlcm0sMCxyMTEJCSMg cHJlcGFyZSBmb3IgdW5hbGlnbmVkIGxvYWQKLSsJbHZ4CQkkaW5wdGFpbCwwLCRpbnAKLSsJYWRk aQkJJGlucCwkaW5wLDE1CQkjIDE1IGlzIG5vdCB0eXBvCi0rCWxlP3Z4b3IJCSRpbnBwZXJtLCRp bnBwZXJtLCR0bXAKLSsKLSsJc3J3aQkJJHJvdW5kcywkcm91bmRzLDEKLSsJbGkJCSRpZHgsMTYK LSsJc3ViaQkJJHJvdW5kcywkcm91bmRzLDEKLSsKLSsJJHtVQ01QfWkJJGxlbiw4Ci0rCWJnZQkJ X2Flc3A4X2N0cjMyX2VuY3J5cHQ4eAotKwotKwk/bHZzcgkJJG91dHBlcm0sMCwkb3V0CQkjIHBy ZXBhcmUgZm9yIHVuYWxpZ25lZCBzdG9yZQotKwl2c3BsdGlzYgkkb3V0bWFzaywtMQotKwlsdngJ CSRvdXRoZWFkLDAsJG91dAotKwk/dnBlcm0JCSRvdXRtYXNrLCRybmRrZXkwLCRvdXRtYXNrLCRv dXRwZXJtCi0rCWxlP3Z4b3IJCSRvdXRwZXJtLCRvdXRwZXJtLCR0bXAKLSsKLSsJbHZ4CQkkcm5k a2V5MCwwLCRrZXkKLSsJbXRjdHIJCSRyb3VuZHMKLSsJbHZ4CQkkcm5ka2V5MSwkaWR4LCRrZXkK LSsJYWRkaQkJJGlkeCwkaWR4LDE2Ci0rCT92cGVybQkJJHJuZGtleTAsJHJuZGtleTAsJHJuZGtl eTEsJGtleXBlcm0KLSsJdnhvcgkJJGlub3V0LCRpdmVjLCRybmRrZXkwCi0rCWx2eAkJJHJuZGtl eTAsJGlkeCwka2V5Ci0rCWFkZGkJCSRpZHgsJGlkeCwxNgotKwliCQlMb29wX2N0cjMyX2VuYwot KwotKy5hbGlnbgk1Ci0rTG9vcF9jdHIzMl9lbmM6Ci0rCT92cGVybQkJJHJuZGtleTEsJHJuZGtl eTEsJHJuZGtleTAsJGtleXBlcm0KLSsJdmNpcGhlcgkJJGlub3V0LCRpbm91dCwkcm5ka2V5MQot KwlsdngJCSRybmRrZXkxLCRpZHgsJGtleQotKwlhZGRpCQkkaWR4LCRpZHgsMTYKLSsJP3ZwZXJt CQkkcm5ka2V5MCwkcm5ka2V5MCwkcm5ka2V5MSwka2V5cGVybQotKwl2Y2lwaGVyCQkkaW5vdXQs JGlub3V0LCRybmRrZXkwCi0rCWx2eAkJJHJuZGtleTAsJGlkeCwka2V5Ci0rCWFkZGkJCSRpZHgs JGlkeCwxNgotKwliZG56CQlMb29wX2N0cjMyX2VuYwotKwotKwl2YWRkdXdtCQkkaXZlYywkaXZl Yywkb25lCi0rCSB2bXIJCSRkYXQsJGlucHRhaWwKLSsJIGx2eAkJJGlucHRhaWwsMCwkaW5wCi0r CSBhZGRpCQkkaW5wLCRpbnAsMTYKLSsJIHN1YmljLgkJJGxlbiwkbGVuLDEJCSMgYmxvY2tzLS0K LSsKLSsJP3ZwZXJtCQkkcm5ka2V5MSwkcm5ka2V5MSwkcm5ka2V5MCwka2V5cGVybQotKwl2Y2lw aGVyCQkkaW5vdXQsJGlub3V0LCRybmRrZXkxCi0rCWx2eAkJJHJuZGtleTEsJGlkeCwka2V5Ci0r CSB2cGVybQkJJGRhdCwkZGF0LCRpbnB0YWlsLCRpbnBwZXJtCi0rCSBsaQkJJGlkeCwxNgotKwk/ dnBlcm0JCSRybmRrZXkxLCRybmRrZXkwLCRybmRrZXkxLCRrZXlwZXJtCi0rCSBsdngJCSRybmRr ZXkwLDAsJGtleQotKwl2eG9yCQkkZGF0LCRkYXQsJHJuZGtleTEJIyBsYXN0IHJvdW5kIGtleQot Kwl2Y2lwaGVybGFzdAkkaW5vdXQsJGlub3V0LCRkYXQKLSsKLSsJIGx2eAkJJHJuZGtleTEsJGlk eCwka2V5Ci0rCSBhZGRpCQkkaWR4LCRpZHgsMTYKLSsJdnBlcm0JCSRpbm91dCwkaW5vdXQsJGlu b3V0LCRvdXRwZXJtCi0rCXZzZWwJCSRkYXQsJG91dGhlYWQsJGlub3V0LCRvdXRtYXNrCi0rCSBt dGN0cgkJJHJvdW5kcwotKwkgP3ZwZXJtCQkkcm5ka2V5MCwkcm5ka2V5MCwkcm5ka2V5MSwka2V5 cGVybQotKwl2bXIJCSRvdXRoZWFkLCRpbm91dAotKwkgdnhvcgkJJGlub3V0LCRpdmVjLCRybmRr ZXkwCi0rCSBsdngJCSRybmRrZXkwLCRpZHgsJGtleQotKwkgYWRkaQkJJGlkeCwkaWR4LDE2Ci0r CXN0dngJCSRkYXQsMCwkb3V0Ci0rCWFkZGkJCSRvdXQsJG91dCwxNgotKwlibmUJCUxvb3BfY3Ry MzJfZW5jCi0rCi0rCWFkZGkJCSRvdXQsJG91dCwtMQotKwlsdngJCSRpbm91dCwwLCRvdXQJCSMg cmVkdW5kYW50IGluIGFsaWduZWQgY2FzZQotKwl2c2VsCQkkaW5vdXQsJG91dGhlYWQsJGlub3V0 LCRvdXRtYXNrCi0rCXN0dngJCSRpbm91dCwwLCRvdXQKLSsKLSsJbXRzcHIJCTI1NiwkdnJzYXZl Ci0rCWJscgotKwkubG9uZwkJMAotKwkuYnl0ZQkJMCwxMiwweDE0LDAsMCwwLDYsMAotKwkubG9u ZwkJMAotK19fXwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSt7ewkjIE9wdGltaXplZCBDVFIgcHJvY2Vk dXJlCQkJCQkjCi0rbXkgJGtleV89InIxMSI7Ci0rbXkgKCR4MDAsJHgxMCwkeDIwLCR4MzAsJHg0 MCwkeDUwLCR4NjAsJHg3MCk9bWFwKCJyJF8iLCgwLDgsMjYuLjMxKSk7Ci0rbXkgKCRpbjAsICRp bjEsICRpbjIsICRpbjMsICRpbjQsICRpbjUsICRpbjYsICRpbjcgKT1tYXAoInYkXyIsKDAuLjMs MTAsMTIuLjE0KSk7Ci0rbXkgKCRvdXQwLCRvdXQxLCRvdXQyLCRvdXQzLCRvdXQ0LCRvdXQ1LCRv dXQ2LCRvdXQ3KT1tYXAoInYkXyIsKDE1Li4yMikpOwotK215ICRybmRrZXkwPSJ2MjMiOwkjIHYy NC12MjUgcm90YXRpbmcgYnVmZmVyIGZvciBmaXJzdCBmb3VuZCBrZXlzCi0rCQkJIyB2MjYtdjMx IGxhc3QgNiByb3VuZCBrZXlzCi0rbXkgKCR0bXAsJGtleXBlcm0pPSgkaW4zLCRpbjQpOwkjIGFs aWFzZXMgd2l0aCAiY2FsbGVyIiwgcmVkdW5kYW50IGFzc2lnbm1lbnQKLStteSAoJHR3bywkdGhy ZWUsJGZvdXIpPSgkb3V0aGVhZCwkb3V0cGVybSwkb3V0bWFzayk7Ci0rCi0rJGNvZGUuPTw8X19f OwotKy5hbGlnbgk1Ci0rX2Flc3A4X2N0cjMyX2VuY3J5cHQ4eDoKLSsJJFNUVQkJJHNwLC1gKCRG UkFNRSsyMSoxNis2KiRTSVpFX1QpYCgkc3ApCi0rCWxpCQlyMTAsYCRGUkFNRSs4KjE2KzE1YAot KwlsaQkJcjExLGAkRlJBTUUrOCoxNiszMWAKLSsJc3R2eAkJdjIwLHIxMCwkc3AJCSMgQUJJIHNh eXMgc28KLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlzdHZ4CQl2MjEscjExLCRzcAotKwlhZGRpCQly MTEscjExLDMyCi0rCXN0dngJCXYyMixyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJc3R2 eAkJdjIzLHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQl2MjQscjEwLCRzcAot KwlhZGRpCQlyMTAscjEwLDMyCi0rCXN0dngJCXYyNSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEs MzIKLSsJc3R2eAkJdjI2LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlzdHZ4CQl2Mjcs cjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0rCXN0dngJCXYyOCxyMTAsJHNwCi0rCWFkZGkJ CXIxMCxyMTAsMzIKLSsJc3R2eAkJdjI5LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlz dHZ4CQl2MzAscjEwLCRzcAotKwlzdHZ4CQl2MzEscjExLCRzcAotKwlsaQkJcjAsLTEKLSsJc3R3 CQkkdnJzYXZlLGAkRlJBTUUrMjEqMTYtNGAoJHNwKQkjIHNhdmUgdnJzYXZlCi0rCWxpCQkkeDEw LDB4MTAKLSsJJFBVU0gJCXIyNixgJEZSQU1FKzIxKjE2KzAqJFNJWkVfVGAoJHNwKQotKwlsaQkJ JHgyMCwweDIwCi0rCSRQVVNICQlyMjcsYCRGUkFNRSsyMSoxNisxKiRTSVpFX1RgKCRzcCkKLSsJ bGkJCSR4MzAsMHgzMAotKwkkUFVTSAkJcjI4LGAkRlJBTUUrMjEqMTYrMiokU0laRV9UYCgkc3Ap Ci0rCWxpCQkkeDQwLDB4NDAKLSsJJFBVU0gJCXIyOSxgJEZSQU1FKzIxKjE2KzMqJFNJWkVfVGAo JHNwKQotKwlsaQkJJHg1MCwweDUwCi0rCSRQVVNICQlyMzAsYCRGUkFNRSsyMSoxNis0KiRTSVpF X1RgKCRzcCkKLSsJbGkJCSR4NjAsMHg2MAotKwkkUFVTSAkJcjMxLGAkRlJBTUUrMjEqMTYrNSok U0laRV9UYCgkc3ApCi0rCWxpCQkkeDcwLDB4NzAKLSsJbXRzcHIJCTI1NixyMAotKwotKwlzdWJp CQkkcm91bmRzLCRyb3VuZHMsMwkjIC00IGluIHRvdGFsCi0rCi0rCWx2eAkJJHJuZGtleTAsJHgw MCwka2V5CSMgbG9hZCBrZXkgc2NoZWR1bGUKLSsJbHZ4CQl2MzAsJHgxMCwka2V5Ci0rCWFkZGkJ CSRrZXksJGtleSwweDIwCi0rCWx2eAkJdjMxLCR4MDAsJGtleQotKwk/dnBlcm0JCSRybmRrZXkw LCRybmRrZXkwLHYzMCwka2V5cGVybQotKwlhZGRpCQkka2V5Xywkc3AsJEZSQU1FKzE1Ci0rCW10 Y3RyCQkkcm91bmRzCi0rCi0rTG9hZF9jdHIzMl9lbmNfa2V5OgotKwk/dnBlcm0JCXYyNCx2MzAs djMxLCRrZXlwZXJtCi0rCWx2eAkJdjMwLCR4MTAsJGtleQotKwlhZGRpCQkka2V5LCRrZXksMHgy MAotKwlzdHZ4CQl2MjQsJHgwMCwka2V5XwkJIyBvZmYtbG9hZCByb3VuZFsxXQotKwk/dnBlcm0J CXYyNSx2MzEsdjMwLCRrZXlwZXJtCi0rCWx2eAkJdjMxLCR4MDAsJGtleQotKwlzdHZ4CQl2MjUs JHgxMCwka2V5XwkJIyBvZmYtbG9hZCByb3VuZFsyXQotKwlhZGRpCQkka2V5Xywka2V5XywweDIw Ci0rCWJkbnoJCUxvYWRfY3RyMzJfZW5jX2tleQotKwotKwlsdngJCXYyNiwkeDEwLCRrZXkKLSsJ P3ZwZXJtCQl2MjQsdjMwLHYzMSwka2V5cGVybQotKwlsdngJCXYyNywkeDIwLCRrZXkKLSsJc3R2 eAkJdjI0LCR4MDAsJGtleV8JCSMgb2ZmLWxvYWQgcm91bmRbM10KLSsJP3ZwZXJtCQl2MjUsdjMx LHYyNiwka2V5cGVybQotKwlsdngJCXYyOCwkeDMwLCRrZXkKLSsJc3R2eAkJdjI1LCR4MTAsJGtl eV8JCSMgb2ZmLWxvYWQgcm91bmRbNF0KLSsJYWRkaQkJJGtleV8sJHNwLCRGUkFNRSsxNQkjIHJl d2luZCAka2V5XwotKwk/dnBlcm0JCXYyNix2MjYsdjI3LCRrZXlwZXJtCi0rCWx2eAkJdjI5LCR4 NDAsJGtleQotKwk/dnBlcm0JCXYyNyx2MjcsdjI4LCRrZXlwZXJtCi0rCWx2eAkJdjMwLCR4NTAs JGtleQotKwk/dnBlcm0JCXYyOCx2MjgsdjI5LCRrZXlwZXJtCi0rCWx2eAkJdjMxLCR4NjAsJGtl eQotKwk/dnBlcm0JCXYyOSx2MjksdjMwLCRrZXlwZXJtCi0rCWx2eAkJJG91dDAsJHg3MCwka2V5 CQkjIGJvcnJvdyAkb3V0MAotKwk/dnBlcm0JCXYzMCx2MzAsdjMxLCRrZXlwZXJtCi0rCWx2eAkJ djI0LCR4MDAsJGtleV8JCSMgcHJlLWxvYWQgcm91bmRbMV0KLSsJP3ZwZXJtCQl2MzEsdjMxLCRv dXQwLCRrZXlwZXJtCi0rCWx2eAkJdjI1LCR4MTAsJGtleV8JCSMgcHJlLWxvYWQgcm91bmRbMl0K LSsKLSsJdmFkZHV3bQkJJHR3bywkb25lLCRvbmUKLSsJc3ViaQkJJGlucCwkaW5wLDE1CQkjIHVu ZG8gImNhbGxlciIKLSsJJFNITAkJJGxlbiwkbGVuLDQKLSsKLSsJdmFkZHV3bQkJJG91dDEsJGl2 ZWMsJG9uZQkjIGNvdW50ZXIgdmFsdWVzIC4uLgotKwl2YWRkdXdtCQkkb3V0MiwkaXZlYywkdHdv Ci0rCXZ4b3IJCSRvdXQwLCRpdmVjLCRybmRrZXkwCSMgLi4uIHhvcmVkIHdpdGggcm5ka2V5WzBd Ci0rCSBsZT9saQkJJGlkeCw4Ci0rCXZhZGR1d20JCSRvdXQzLCRvdXQxLCR0d28KLSsJdnhvcgkJ JG91dDEsJG91dDEsJHJuZGtleTAKLSsJIGxlP2x2c2wJJGlucHBlcm0sMCwkaWR4Ci0rCXZhZGR1 d20JCSRvdXQ0LCRvdXQyLCR0d28KLSsJdnhvcgkJJG91dDIsJG91dDIsJHJuZGtleTAKLSsJIGxl P3ZzcGx0aXNiCSR0bXAsMHgwZgotKwl2YWRkdXdtCQkkb3V0NSwkb3V0MywkdHdvCi0rCXZ4b3IJ CSRvdXQzLCRvdXQzLCRybmRrZXkwCi0rCSBsZT92eG9yCSRpbnBwZXJtLCRpbnBwZXJtLCR0bXAJ IyB0cmFuc2Zvcm0gZm9yIGx2eF91L3N0dnhfdQotKwl2YWRkdXdtCQkkb3V0Niwkb3V0NCwkdHdv Ci0rCXZ4b3IJCSRvdXQ0LCRvdXQ0LCRybmRrZXkwCi0rCXZhZGR1d20JCSRvdXQ3LCRvdXQ1LCR0 d28KLSsJdnhvcgkJJG91dDUsJG91dDUsJHJuZGtleTAKLSsJdmFkZHV3bQkJJGl2ZWMsJG91dDYs JHR3bwkjIG5leHQgY291bnRlciB2YWx1ZQotKwl2eG9yCQkkb3V0Niwkb3V0Niwkcm5ka2V5MAot Kwl2eG9yCQkkb3V0Nywkb3V0Nywkcm5ka2V5MAotKwotKwltdGN0cgkJJHJvdW5kcwotKwliCQlM b29wX2N0cjMyX2VuYzh4Ci0rLmFsaWduCTUKLStMb29wX2N0cjMyX2VuYzh4OgotKwl2Y2lwaGVy IAkkb3V0MCwkb3V0MCx2MjQKLSsJdmNpcGhlciAJJG91dDEsJG91dDEsdjI0Ci0rCXZjaXBoZXIg CSRvdXQyLCRvdXQyLHYyNAotKwl2Y2lwaGVyIAkkb3V0Mywkb3V0Myx2MjQKLSsJdmNpcGhlciAJ JG91dDQsJG91dDQsdjI0Ci0rCXZjaXBoZXIgCSRvdXQ1LCRvdXQ1LHYyNAotKwl2Y2lwaGVyIAkk b3V0Niwkb3V0Nix2MjQKLSsJdmNpcGhlciAJJG91dDcsJG91dDcsdjI0Ci0rTG9vcF9jdHIzMl9l bmM4eF9taWRkbGU6Ci0rCWx2eAkJdjI0LCR4MjAsJGtleV8JCSMgcm91bmRbM10KLSsJYWRkaQkJ JGtleV8sJGtleV8sMHgyMAotKwotKwl2Y2lwaGVyIAkkb3V0MCwkb3V0MCx2MjUKLSsJdmNpcGhl ciAJJG91dDEsJG91dDEsdjI1Ci0rCXZjaXBoZXIgCSRvdXQyLCRvdXQyLHYyNQotKwl2Y2lwaGVy IAkkb3V0Mywkb3V0Myx2MjUKLSsJdmNpcGhlciAJJG91dDQsJG91dDQsdjI1Ci0rCXZjaXBoZXIg CSRvdXQ1LCRvdXQ1LHYyNQotKwl2Y2lwaGVyIAkkb3V0Niwkb3V0Nix2MjUKLSsJdmNpcGhlciAJ JG91dDcsJG91dDcsdjI1Ci0rCWx2eAkJdjI1LCR4MTAsJGtleV8JCSMgcm91bmRbNF0KLSsJYmRu egkJTG9vcF9jdHIzMl9lbmM4eAotKwotKwlzdWJpYwkJcjExLCRsZW4sMjU2CQkjICRsZW4tMjU2 LCBib3Jyb3cgJGtleV8KLSsJdmNpcGhlciAJJG91dDAsJG91dDAsdjI0Ci0rCXZjaXBoZXIgCSRv dXQxLCRvdXQxLHYyNAotKwl2Y2lwaGVyIAkkb3V0Miwkb3V0Mix2MjQKLSsJdmNpcGhlciAJJG91 dDMsJG91dDMsdjI0Ci0rCXZjaXBoZXIgCSRvdXQ0LCRvdXQ0LHYyNAotKwl2Y2lwaGVyIAkkb3V0 NSwkb3V0NSx2MjQKLSsJdmNpcGhlciAJJG91dDYsJG91dDYsdjI0Ci0rCXZjaXBoZXIgCSRvdXQ3 LCRvdXQ3LHYyNAotKwotKwlzdWJmZQkJcjAscjAscjAJCSMgYm9ycm93Py0xOjAKLSsJdmNpcGhl ciAJJG91dDAsJG91dDAsdjI1Ci0rCXZjaXBoZXIgCSRvdXQxLCRvdXQxLHYyNQotKwl2Y2lwaGVy IAkkb3V0Miwkb3V0Mix2MjUKLSsJdmNpcGhlciAJJG91dDMsJG91dDMsdjI1Ci0rCXZjaXBoZXIg CSRvdXQ0LCRvdXQ0LHYyNQotKwl2Y2lwaGVyCQkkb3V0NSwkb3V0NSx2MjUKLSsJdmNpcGhlcgkJ JG91dDYsJG91dDYsdjI1Ci0rCXZjaXBoZXIJCSRvdXQ3LCRvdXQ3LHYyNQotKwotKwlhbmQJCXIw LHIwLHIxMQotKwlhZGRpCQkka2V5Xywkc3AsJEZSQU1FKzE1CSMgcmV3aW5kICRrZXlfCi0rCXZj aXBoZXIJCSRvdXQwLCRvdXQwLHYyNgotKwl2Y2lwaGVyCQkkb3V0MSwkb3V0MSx2MjYKLSsJdmNp cGhlcgkJJG91dDIsJG91dDIsdjI2Ci0rCXZjaXBoZXIJCSRvdXQzLCRvdXQzLHYyNgotKwl2Y2lw aGVyCQkkb3V0NCwkb3V0NCx2MjYKLSsJdmNpcGhlcgkJJG91dDUsJG91dDUsdjI2Ci0rCXZjaXBo ZXIJCSRvdXQ2LCRvdXQ2LHYyNgotKwl2Y2lwaGVyCQkkb3V0Nywkb3V0Nyx2MjYKLSsJbHZ4CQl2 MjQsJHgwMCwka2V5XwkJIyByZS1wcmUtbG9hZCByb3VuZFsxXQotKwotKwlzdWJpYwkJJGxlbiwk bGVuLDEyOQkJIyAkbGVuLT0xMjkKLSsJdmNpcGhlcgkJJG91dDAsJG91dDAsdjI3Ci0rCWFkZGkJ CSRsZW4sJGxlbiwxCQkjICRsZW4tPTEyOCByZWFsbHkKLSsJdmNpcGhlcgkJJG91dDEsJG91dDEs djI3Ci0rCXZjaXBoZXIJCSRvdXQyLCRvdXQyLHYyNwotKwl2Y2lwaGVyCQkkb3V0Mywkb3V0Myx2 MjcKLSsJdmNpcGhlcgkJJG91dDQsJG91dDQsdjI3Ci0rCXZjaXBoZXIJCSRvdXQ1LCRvdXQ1LHYy NwotKwl2Y2lwaGVyCQkkb3V0Niwkb3V0Nix2MjcKLSsJdmNpcGhlcgkJJG91dDcsJG91dDcsdjI3 Ci0rCWx2eAkJdjI1LCR4MTAsJGtleV8JCSMgcmUtcHJlLWxvYWQgcm91bmRbMl0KLSsKLSsJdmNp cGhlcgkJJG91dDAsJG91dDAsdjI4Ci0rCSBsdnhfdQkJJGluMCwkeDAwLCRpbnAJCSMgbG9hZCBp bnB1dAotKwl2Y2lwaGVyCQkkb3V0MSwkb3V0MSx2MjgKLSsJIGx2eF91CQkkaW4xLCR4MTAsJGlu cAotKwl2Y2lwaGVyCQkkb3V0Miwkb3V0Mix2MjgKLSsJIGx2eF91CQkkaW4yLCR4MjAsJGlucAot Kwl2Y2lwaGVyCQkkb3V0Mywkb3V0Myx2MjgKLSsJIGx2eF91CQkkaW4zLCR4MzAsJGlucAotKwl2 Y2lwaGVyCQkkb3V0NCwkb3V0NCx2MjgKLSsJIGx2eF91CQkkaW40LCR4NDAsJGlucAotKwl2Y2lw aGVyCQkkb3V0NSwkb3V0NSx2MjgKLSsJIGx2eF91CQkkaW41LCR4NTAsJGlucAotKwl2Y2lwaGVy CQkkb3V0Niwkb3V0Nix2MjgKLSsJIGx2eF91CQkkaW42LCR4NjAsJGlucAotKwl2Y2lwaGVyCQkk b3V0Nywkb3V0Nyx2MjgKLSsJIGx2eF91CQkkaW43LCR4NzAsJGlucAotKwkgYWRkaQkJJGlucCwk aW5wLDB4ODAKLSsKLSsJdmNpcGhlcgkJJG91dDAsJG91dDAsdjI5Ci0rCSBsZT92cGVybQkkaW4w LCRpbjAsJGluMCwkaW5wcGVybQotKwl2Y2lwaGVyCQkkb3V0MSwkb3V0MSx2MjkKLSsJIGxlP3Zw ZXJtCSRpbjEsJGluMSwkaW4xLCRpbnBwZXJtCi0rCXZjaXBoZXIJCSRvdXQyLCRvdXQyLHYyOQot KwkgbGU/dnBlcm0JJGluMiwkaW4yLCRpbjIsJGlucHBlcm0KLSsJdmNpcGhlcgkJJG91dDMsJG91 dDMsdjI5Ci0rCSBsZT92cGVybQkkaW4zLCRpbjMsJGluMywkaW5wcGVybQotKwl2Y2lwaGVyCQkk b3V0NCwkb3V0NCx2MjkKLSsJIGxlP3ZwZXJtCSRpbjQsJGluNCwkaW40LCRpbnBwZXJtCi0rCXZj aXBoZXIJCSRvdXQ1LCRvdXQ1LHYyOQotKwkgbGU/dnBlcm0JJGluNSwkaW41LCRpbjUsJGlucHBl cm0KLSsJdmNpcGhlcgkJJG91dDYsJG91dDYsdjI5Ci0rCSBsZT92cGVybQkkaW42LCRpbjYsJGlu NiwkaW5wcGVybQotKwl2Y2lwaGVyCQkkb3V0Nywkb3V0Nyx2MjkKLSsJIGxlP3ZwZXJtCSRpbjcs JGluNywkaW43LCRpbnBwZXJtCi0rCi0rCWFkZAkJJGlucCwkaW5wLHIwCQkjICRpbnAgaXMgYWRq dXN0ZWQgaW4gc3VjaAotKwkJCQkJCSMgd2F5IHRoYXQgYXQgZXhpdCBmcm9tIHRoZQotKwkJCQkJ CSMgbG9vcCBpblgtaW43IGFyZSBsb2FkZWQKLSsJCQkJCQkjIHdpdGggbGFzdCAid29yZHMiCi0r CXN1YmZlLgkJcjAscjAscjAJCSMgYm9ycm93Py0xOjAKLSsJdmNpcGhlcgkJJG91dDAsJG91dDAs djMwCi0rCSB2eG9yCQkkaW4wLCRpbjAsdjMxCQkjIHhvciB3aXRoIGxhc3Qgcm91bmQga2V5Ci0r CXZjaXBoZXIJCSRvdXQxLCRvdXQxLHYzMAotKwkgdnhvcgkJJGluMSwkaW4xLHYzMQotKwl2Y2lw aGVyCQkkb3V0Miwkb3V0Mix2MzAKLSsJIHZ4b3IJCSRpbjIsJGluMix2MzEKLSsJdmNpcGhlcgkJ JG91dDMsJG91dDMsdjMwCi0rCSB2eG9yCQkkaW4zLCRpbjMsdjMxCi0rCXZjaXBoZXIJCSRvdXQ0 LCRvdXQ0LHYzMAotKwkgdnhvcgkJJGluNCwkaW40LHYzMQotKwl2Y2lwaGVyCQkkb3V0NSwkb3V0 NSx2MzAKLSsJIHZ4b3IJCSRpbjUsJGluNSx2MzEKLSsJdmNpcGhlcgkJJG91dDYsJG91dDYsdjMw Ci0rCSB2eG9yCQkkaW42LCRpbjYsdjMxCi0rCXZjaXBoZXIJCSRvdXQ3LCRvdXQ3LHYzMAotKwkg dnhvcgkJJGluNywkaW43LHYzMQotKwotKwlibmUJCUxjdHIzMl9lbmM4eF9icmVhawkjIGRpZCAk bGVuLTEyOSBib3Jyb3c/Ci0rCi0rCXZjaXBoZXJsYXN0CSRpbjAsJG91dDAsJGluMAotKwl2Y2lw aGVybGFzdAkkaW4xLCRvdXQxLCRpbjEKLSsJIHZhZGR1d20JJG91dDEsJGl2ZWMsJG9uZQkjIGNv dW50ZXIgdmFsdWVzIC4uLgotKwl2Y2lwaGVybGFzdAkkaW4yLCRvdXQyLCRpbjIKLSsJIHZhZGR1 d20JJG91dDIsJGl2ZWMsJHR3bwotKwkgdnhvcgkJJG91dDAsJGl2ZWMsJHJuZGtleTAJIyAuLi4g eG9yZWQgd2l0aCBybmRrZXlbMF0KLSsJdmNpcGhlcmxhc3QJJGluMywkb3V0MywkaW4zCi0rCSB2 YWRkdXdtCSRvdXQzLCRvdXQxLCR0d28KLSsJIHZ4b3IJCSRvdXQxLCRvdXQxLCRybmRrZXkwCi0r CXZjaXBoZXJsYXN0CSRpbjQsJG91dDQsJGluNAotKwkgdmFkZHV3bQkkb3V0NCwkb3V0MiwkdHdv Ci0rCSB2eG9yCQkkb3V0Miwkb3V0Miwkcm5ka2V5MAotKwl2Y2lwaGVybGFzdAkkaW41LCRvdXQ1 LCRpbjUKLSsJIHZhZGR1d20JJG91dDUsJG91dDMsJHR3bwotKwkgdnhvcgkJJG91dDMsJG91dDMs JHJuZGtleTAKLSsJdmNpcGhlcmxhc3QJJGluNiwkb3V0NiwkaW42Ci0rCSB2YWRkdXdtCSRvdXQ2 LCRvdXQ0LCR0d28KLSsJIHZ4b3IJCSRvdXQ0LCRvdXQ0LCRybmRrZXkwCi0rCXZjaXBoZXJsYXN0 CSRpbjcsJG91dDcsJGluNwotKwkgdmFkZHV3bQkkb3V0Nywkb3V0NSwkdHdvCi0rCSB2eG9yCQkk b3V0NSwkb3V0NSwkcm5ka2V5MAotKwlsZT92cGVybQkkaW4wLCRpbjAsJGluMCwkaW5wcGVybQot KwkgdmFkZHV3bQkkaXZlYywkb3V0NiwkdHdvCSMgbmV4dCBjb3VudGVyIHZhbHVlCi0rCSB2eG9y CQkkb3V0Niwkb3V0Niwkcm5ka2V5MAotKwlsZT92cGVybQkkaW4xLCRpbjEsJGluMSwkaW5wcGVy bQotKwkgdnhvcgkJJG91dDcsJG91dDcsJHJuZGtleTAKLSsJbXRjdHIJCSRyb3VuZHMKLSsKLSsJ IHZjaXBoZXIJJG91dDAsJG91dDAsdjI0Ci0rCXN0dnhfdQkJJGluMCwkeDAwLCRvdXQKLSsJbGU/ dnBlcm0JJGluMiwkaW4yLCRpbjIsJGlucHBlcm0KLSsJIHZjaXBoZXIJJG91dDEsJG91dDEsdjI0 Ci0rCXN0dnhfdQkJJGluMSwkeDEwLCRvdXQKLSsJbGU/dnBlcm0JJGluMywkaW4zLCRpbjMsJGlu cHBlcm0KLSsJIHZjaXBoZXIJJG91dDIsJG91dDIsdjI0Ci0rCXN0dnhfdQkJJGluMiwkeDIwLCRv dXQKLSsJbGU/dnBlcm0JJGluNCwkaW40LCRpbjQsJGlucHBlcm0KLSsJIHZjaXBoZXIJJG91dDMs JG91dDMsdjI0Ci0rCXN0dnhfdQkJJGluMywkeDMwLCRvdXQKLSsJbGU/dnBlcm0JJGluNSwkaW41 LCRpbjUsJGlucHBlcm0KLSsJIHZjaXBoZXIJJG91dDQsJG91dDQsdjI0Ci0rCXN0dnhfdQkJJGlu NCwkeDQwLCRvdXQKLSsJbGU/dnBlcm0JJGluNiwkaW42LCRpbjYsJGlucHBlcm0KLSsJIHZjaXBo ZXIJJG91dDUsJG91dDUsdjI0Ci0rCXN0dnhfdQkJJGluNSwkeDUwLCRvdXQKLSsJbGU/dnBlcm0J JGluNywkaW43LCRpbjcsJGlucHBlcm0KLSsJIHZjaXBoZXIJJG91dDYsJG91dDYsdjI0Ci0rCXN0 dnhfdQkJJGluNiwkeDYwLCRvdXQKLSsJIHZjaXBoZXIJJG91dDcsJG91dDcsdjI0Ci0rCXN0dnhf dQkJJGluNywkeDcwLCRvdXQKLSsJYWRkaQkJJG91dCwkb3V0LDB4ODAKLSsKLSsJYgkJTG9vcF9j dHIzMl9lbmM4eF9taWRkbGUKLSsKLSsuYWxpZ24JNQotK0xjdHIzMl9lbmM4eF9icmVhazoKLSsJ Y21wd2kJCSRsZW4sLTB4NjAKLSsJYmx0CQlMY3RyMzJfZW5jOHhfb25lCi0rCW5vcAotKwliZXEJ CUxjdHIzMl9lbmM4eF90d28KLSsJY21wd2kJCSRsZW4sLTB4NDAKLSsJYmx0CQlMY3RyMzJfZW5j OHhfdGhyZWUKLSsJbm9wCi0rCWJlcQkJTGN0cjMyX2VuYzh4X2ZvdXIKLSsJY21wd2kJCSRsZW4s LTB4MjAKLSsJYmx0CQlMY3RyMzJfZW5jOHhfZml2ZQotKwlub3AKLSsJYmVxCQlMY3RyMzJfZW5j OHhfc2l4Ci0rCWNtcHdpCQkkbGVuLDB4MDAKLSsJYmx0CQlMY3RyMzJfZW5jOHhfc2V2ZW4KLSsK LStMY3RyMzJfZW5jOHhfZWlnaHQ6Ci0rCXZjaXBoZXJsYXN0CSRvdXQwLCRvdXQwLCRpbjAKLSsJ dmNpcGhlcmxhc3QJJG91dDEsJG91dDEsJGluMQotKwl2Y2lwaGVybGFzdAkkb3V0Miwkb3V0Miwk aW4yCi0rCXZjaXBoZXJsYXN0CSRvdXQzLCRvdXQzLCRpbjMKLSsJdmNpcGhlcmxhc3QJJG91dDQs JG91dDQsJGluNAotKwl2Y2lwaGVybGFzdAkkb3V0NSwkb3V0NSwkaW41Ci0rCXZjaXBoZXJsYXN0 CSRvdXQ2LCRvdXQ2LCRpbjYKLSsJdmNpcGhlcmxhc3QJJG91dDcsJG91dDcsJGluNwotKwotKwls ZT92cGVybQkkb3V0MCwkb3V0MCwkb3V0MCwkaW5wcGVybQotKwlsZT92cGVybQkkb3V0MSwkb3V0 MSwkb3V0MSwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQwLCR4MDAsJG91dAotKwlsZT92cGVybQkk b3V0Miwkb3V0Miwkb3V0MiwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQxLCR4MTAsJG91dAotKwls ZT92cGVybQkkb3V0Mywkb3V0Mywkb3V0MywkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQyLCR4MjAs JG91dAotKwlsZT92cGVybQkkb3V0NCwkb3V0NCwkb3V0NCwkaW5wcGVybQotKwlzdHZ4X3UJCSRv dXQzLCR4MzAsJG91dAotKwlsZT92cGVybQkkb3V0NSwkb3V0NSwkb3V0NSwkaW5wcGVybQotKwlz dHZ4X3UJCSRvdXQ0LCR4NDAsJG91dAotKwlsZT92cGVybQkkb3V0Niwkb3V0Niwkb3V0NiwkaW5w cGVybQotKwlzdHZ4X3UJCSRvdXQ1LCR4NTAsJG91dAotKwlsZT92cGVybQkkb3V0Nywkb3V0Nywk b3V0NywkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQ2LCR4NjAsJG91dAotKwlzdHZ4X3UJCSRvdXQ3 LCR4NzAsJG91dAotKwlhZGRpCQkkb3V0LCRvdXQsMHg4MAotKwliCQlMY3RyMzJfZW5jOHhfZG9u ZQotKwotKy5hbGlnbgk1Ci0rTGN0cjMyX2VuYzh4X3NldmVuOgotKwl2Y2lwaGVybGFzdAkkb3V0 MCwkb3V0MCwkaW4xCi0rCXZjaXBoZXJsYXN0CSRvdXQxLCRvdXQxLCRpbjIKLSsJdmNpcGhlcmxh c3QJJG91dDIsJG91dDIsJGluMwotKwl2Y2lwaGVybGFzdAkkb3V0Mywkb3V0MywkaW40Ci0rCXZj aXBoZXJsYXN0CSRvdXQ0LCRvdXQ0LCRpbjUKLSsJdmNpcGhlcmxhc3QJJG91dDUsJG91dDUsJGlu NgotKwl2Y2lwaGVybGFzdAkkb3V0Niwkb3V0NiwkaW43Ci0rCi0rCWxlP3ZwZXJtCSRvdXQwLCRv dXQwLCRvdXQwLCRpbnBwZXJtCi0rCWxlP3ZwZXJtCSRvdXQxLCRvdXQxLCRvdXQxLCRpbnBwZXJt Ci0rCXN0dnhfdQkJJG91dDAsJHgwMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQyLCRvdXQyLCRvdXQy LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDEsJHgxMCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQzLCRv dXQzLCRvdXQzLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDIsJHgyMCwkb3V0Ci0rCWxlP3ZwZXJt CSRvdXQ0LCRvdXQ0LCRvdXQ0LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDMsJHgzMCwkb3V0Ci0r CWxlP3ZwZXJtCSRvdXQ1LCRvdXQ1LCRvdXQ1LCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDQsJHg0 MCwkb3V0Ci0rCWxlP3ZwZXJtCSRvdXQ2LCRvdXQ2LCRvdXQ2LCRpbnBwZXJtCi0rCXN0dnhfdQkJ JG91dDUsJHg1MCwkb3V0Ci0rCXN0dnhfdQkJJG91dDYsJHg2MCwkb3V0Ci0rCWFkZGkJCSRvdXQs JG91dCwweDcwCi0rCWIJCUxjdHIzMl9lbmM4eF9kb25lCi0rCi0rLmFsaWduCTUKLStMY3RyMzJf ZW5jOHhfc2l4OgotKwl2Y2lwaGVybGFzdAkkb3V0MCwkb3V0MCwkaW4yCi0rCXZjaXBoZXJsYXN0 CSRvdXQxLCRvdXQxLCRpbjMKLSsJdmNpcGhlcmxhc3QJJG91dDIsJG91dDIsJGluNAotKwl2Y2lw aGVybGFzdAkkb3V0Mywkb3V0MywkaW41Ci0rCXZjaXBoZXJsYXN0CSRvdXQ0LCRvdXQ0LCRpbjYK LSsJdmNpcGhlcmxhc3QJJG91dDUsJG91dDUsJGluNwotKwotKwlsZT92cGVybQkkb3V0MCwkb3V0 MCwkb3V0MCwkaW5wcGVybQotKwlsZT92cGVybQkkb3V0MSwkb3V0MSwkb3V0MSwkaW5wcGVybQot KwlzdHZ4X3UJCSRvdXQwLCR4MDAsJG91dAotKwlsZT92cGVybQkkb3V0Miwkb3V0Miwkb3V0Miwk aW5wcGVybQotKwlzdHZ4X3UJCSRvdXQxLCR4MTAsJG91dAotKwlsZT92cGVybQkkb3V0Mywkb3V0 Mywkb3V0MywkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQyLCR4MjAsJG91dAotKwlsZT92cGVybQkk b3V0NCwkb3V0NCwkb3V0NCwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQzLCR4MzAsJG91dAotKwls ZT92cGVybQkkb3V0NSwkb3V0NSwkb3V0NSwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQ0LCR4NDAs JG91dAotKwlzdHZ4X3UJCSRvdXQ1LCR4NTAsJG91dAotKwlhZGRpCQkkb3V0LCRvdXQsMHg2MAot KwliCQlMY3RyMzJfZW5jOHhfZG9uZQotKwotKy5hbGlnbgk1Ci0rTGN0cjMyX2VuYzh4X2ZpdmU6 Ci0rCXZjaXBoZXJsYXN0CSRvdXQwLCRvdXQwLCRpbjMKLSsJdmNpcGhlcmxhc3QJJG91dDEsJG91 dDEsJGluNAotKwl2Y2lwaGVybGFzdAkkb3V0Miwkb3V0MiwkaW41Ci0rCXZjaXBoZXJsYXN0CSRv dXQzLCRvdXQzLCRpbjYKLSsJdmNpcGhlcmxhc3QJJG91dDQsJG91dDQsJGluNwotKwotKwlsZT92 cGVybQkkb3V0MCwkb3V0MCwkb3V0MCwkaW5wcGVybQotKwlsZT92cGVybQkkb3V0MSwkb3V0MSwk b3V0MSwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQwLCR4MDAsJG91dAotKwlsZT92cGVybQkkb3V0 Miwkb3V0Miwkb3V0MiwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQxLCR4MTAsJG91dAotKwlsZT92 cGVybQkkb3V0Mywkb3V0Mywkb3V0MywkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQyLCR4MjAsJG91 dAotKwlsZT92cGVybQkkb3V0NCwkb3V0NCwkb3V0NCwkaW5wcGVybQotKwlzdHZ4X3UJCSRvdXQz LCR4MzAsJG91dAotKwlzdHZ4X3UJCSRvdXQ0LCR4NDAsJG91dAotKwlhZGRpCQkkb3V0LCRvdXQs MHg1MAotKwliCQlMY3RyMzJfZW5jOHhfZG9uZQotKwotKy5hbGlnbgk1Ci0rTGN0cjMyX2VuYzh4 X2ZvdXI6Ci0rCXZjaXBoZXJsYXN0CSRvdXQwLCRvdXQwLCRpbjQKLSsJdmNpcGhlcmxhc3QJJG91 dDEsJG91dDEsJGluNQotKwl2Y2lwaGVybGFzdAkkb3V0Miwkb3V0MiwkaW42Ci0rCXZjaXBoZXJs YXN0CSRvdXQzLCRvdXQzLCRpbjcKLSsKLSsJbGU/dnBlcm0JJG91dDAsJG91dDAsJG91dDAsJGlu cHBlcm0KLSsJbGU/dnBlcm0JJG91dDEsJG91dDEsJG91dDEsJGlucHBlcm0KLSsJc3R2eF91CQkk b3V0MCwkeDAwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDIsJG91dDIsJG91dDIsJGlucHBlcm0KLSsJ c3R2eF91CQkkb3V0MSwkeDEwLCRvdXQKLSsJbGU/dnBlcm0JJG91dDMsJG91dDMsJG91dDMsJGlu cHBlcm0KLSsJc3R2eF91CQkkb3V0MiwkeDIwLCRvdXQKLSsJc3R2eF91CQkkb3V0MywkeDMwLCRv dXQKLSsJYWRkaQkJJG91dCwkb3V0LDB4NDAKLSsJYgkJTGN0cjMyX2VuYzh4X2RvbmUKLSsKLSsu YWxpZ24JNQotK0xjdHIzMl9lbmM4eF90aHJlZToKLSsJdmNpcGhlcmxhc3QJJG91dDAsJG91dDAs JGluNQotKwl2Y2lwaGVybGFzdAkkb3V0MSwkb3V0MSwkaW42Ci0rCXZjaXBoZXJsYXN0CSRvdXQy LCRvdXQyLCRpbjcKLSsKLSsJbGU/dnBlcm0JJG91dDAsJG91dDAsJG91dDAsJGlucHBlcm0KLSsJ bGU/dnBlcm0JJG91dDEsJG91dDEsJG91dDEsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0MCwkeDAw LCRvdXQKLSsJbGU/dnBlcm0JJG91dDIsJG91dDIsJG91dDIsJGlucHBlcm0KLSsJc3R2eF91CQkk b3V0MSwkeDEwLCRvdXQKLSsJc3R2eF91CQkkb3V0MiwkeDIwLCRvdXQKLSsJYWRkaQkJJG91dCwk b3V0LDB4MzAKLSsJYgkJTGNiY19kZWM4eF9kb25lCi0rCi0rLmFsaWduCTUKLStMY3RyMzJfZW5j OHhfdHdvOgotKwl2Y2lwaGVybGFzdAkkb3V0MCwkb3V0MCwkaW42Ci0rCXZjaXBoZXJsYXN0CSRv dXQxLCRvdXQxLCRpbjcKLSsKLSsJbGU/dnBlcm0JJG91dDAsJG91dDAsJG91dDAsJGlucHBlcm0K LSsJbGU/dnBlcm0JJG91dDEsJG91dDEsJG91dDEsJGlucHBlcm0KLSsJc3R2eF91CQkkb3V0MCwk eDAwLCRvdXQKLSsJc3R2eF91CQkkb3V0MSwkeDEwLCRvdXQKLSsJYWRkaQkJJG91dCwkb3V0LDB4 MjAKLSsJYgkJTGNiY19kZWM4eF9kb25lCi0rCi0rLmFsaWduCTUKLStMY3RyMzJfZW5jOHhfb25l OgotKwl2Y2lwaGVybGFzdAkkb3V0MCwkb3V0MCwkaW43Ci0rCi0rCWxlP3ZwZXJtCSRvdXQwLCRv dXQwLCRvdXQwLCRpbnBwZXJtCi0rCXN0dnhfdQkJJG91dDAsMCwkb3V0Ci0rCWFkZGkJCSRvdXQs JG91dCwweDEwCi0rCi0rTGN0cjMyX2VuYzh4X2RvbmU6Ci0rCWxpCQlyMTAsYCRGUkFNRSsxNWAK LSsJbGkJCXIxMSxgJEZSQU1FKzMxYAotKwlzdHZ4CQkkaW5wcGVybSxyMTAsJHNwCSMgd2lwZSBj b3BpZXMgb2Ygcm91bmQga2V5cwotKwlhZGRpCQlyMTAscjEwLDMyCi0rCXN0dngJCSRpbnBwZXJt LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQkkaW5wcGVybSxyMTAsJHNwCi0r CWFkZGkJCXIxMCxyMTAsMzIKLSsJc3R2eAkJJGlucHBlcm0scjExLCRzcAotKwlhZGRpCQlyMTEs cjExLDMyCi0rCXN0dngJCSRpbnBwZXJtLHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlz dHZ4CQkkaW5wcGVybSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2eAkJJGlucHBl cm0scjEwLCRzcAotKwlhZGRpCQlyMTAscjEwLDMyCi0rCXN0dngJCSRpbnBwZXJtLHIxMSwkc3AK LSsJYWRkaQkJcjExLHIxMSwzMgotKwotKwltdHNwcgkJMjU2LCR2cnNhdmUKLSsJbHZ4CQl2MjAs cjEwLCRzcAkJIyBBQkkgc2F5cyBzbwotKwlhZGRpCQlyMTAscjEwLDMyCi0rCWx2eAkJdjIxLHIx MSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlsdngJCXYyMixyMTAsJHNwCi0rCWFkZGkJCXIx MCxyMTAsMzIKLSsJbHZ4CQl2MjMscjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0rCWx2eAkJ djI0LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlsdngJCXYyNSxyMTEsJHNwCi0rCWFk ZGkJCXIxMSxyMTEsMzIKLSsJbHZ4CQl2MjYscjEwLCRzcAotKwlhZGRpCQlyMTAscjEwLDMyCi0r CWx2eAkJdjI3LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlsdngJCXYyOCxyMTAsJHNw Ci0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjkscjExLCRzcAotKwlhZGRpCQlyMTEscjEx LDMyCi0rCWx2eAkJdjMwLHIxMCwkc3AKLSsJbHZ4CQl2MzEscjExLCRzcAotKwkkUE9QCQlyMjYs YCRGUkFNRSsyMSoxNiswKiRTSVpFX1RgKCRzcCkKLSsJJFBPUAkJcjI3LGAkRlJBTUUrMjEqMTYr MSokU0laRV9UYCgkc3ApCi0rCSRQT1AJCXIyOCxgJEZSQU1FKzIxKjE2KzIqJFNJWkVfVGAoJHNw KQotKwkkUE9QCQlyMjksYCRGUkFNRSsyMSoxNiszKiRTSVpFX1RgKCRzcCkKLSsJJFBPUAkJcjMw LGAkRlJBTUUrMjEqMTYrNCokU0laRV9UYCgkc3ApCi0rCSRQT1AJCXIzMSxgJEZSQU1FKzIxKjE2 KzUqJFNJWkVfVGAoJHNwKQotKwlhZGRpCQkkc3AsJHNwLGAkRlJBTUUrMjEqMTYrNiokU0laRV9U YAotKwlibHIKLSsJLmxvbmcJCTAKLSsJLmJ5dGUJCTAsMTIsMHgxNCwwLDB4ODAsNiw2LDAKLSsJ LmxvbmcJCTAKLSsuc2l6ZQkuJHtwcmVmaXh9X2N0cjMyX2VuY3J5cHRfYmxvY2tzLC4tLiR7cHJl Zml4fV9jdHIzMl9lbmNyeXB0X2Jsb2NrcwotK19fXwotK319CX19fQotKwotK215ICRjb25zdHM9 MTsKLStmb3JlYWNoKHNwbGl0KCJcbiIsJGNvZGUpKSB7Ci0rICAgICAgICBzL1xgKFteXGBdKilc YC9ldmFsKCQxKS9nZW87Ci0rCi0rCSMgY29uc3RhbnRzIHRhYmxlIGVuZGlhbi1zcGVjaWZpYyBj b252ZXJzaW9uCi0rCWlmICgkY29uc3RzICYmIG0vXC4obG9uZ3xieXRlKVxzKyguKylccysoXD9b YS16XSopJC9vKSB7Ci0rCSAgICBteSAkY29udj0kMzsKLSsJICAgIG15IEBieXRlcz0oKTsKLSsK LSsJICAgICMgY29udmVydCB0byBlbmRpYW4tYWdub3N0aWMgZm9ybWF0Ci0rCSAgICBpZiAoJDEg ZXEgImxvbmciKSB7Ci0rCSAgICAgIGZvcmVhY2ggKHNwbGl0KC8sXHMqLywkMikpIHsKLSsJCW15 ICRsID0gL14wLz9vY3Q6aW50OwotKwkJcHVzaCBAYnl0ZXMsKCRsPj4yNCkmMHhmZiwoJGw+PjE2 KSYweGZmLCgkbD4+OCkmMHhmZiwkbCYweGZmOwotKwkgICAgICB9Ci0rCSAgICB9IGVsc2Ugewot KwkJQGJ5dGVzID0gbWFwKC9eMC8/b2N0OmludCxzcGxpdCgvLFxzKi8sJDIpKTsKLSsJICAgIH0K LSsKLSsJICAgICMgbGl0dGxlLWVuZGlhbiBjb252ZXJzaW9uCi0rCSAgICBpZiAoJGZsYXZvdXIg PX4gL2xlJC9vKSB7Ci0rCQlTV0lUQ0g6IGZvcigkY29udikgIHsKLSsJCSAgICAvXD9pbnYvICYm IGRvICAgeyBAYnl0ZXM9bWFwKCRfXjB4ZixAYnl0ZXMpOyBsYXN0OyB9OwotKwkJICAgIC9cP3Jl di8gJiYgZG8gICB7IEBieXRlcz1yZXZlcnNlKEBieXRlcyk7ICAgIGxhc3Q7IH07IAotKwkJfQot KwkgICAgfQotKwotKwkgICAgI2VtaXQKLSsJICAgIHByaW50ICIuYnl0ZVx0Iixqb2luKCcsJyxt YXAgKHNwcmludGYoIjB4JTAyeCIsJF8pLEBieXRlcykpLCJcbiI7Ci0rCSAgICBuZXh0OwotKwl9 Ci0rCSRjb25zdHM9MCBpZiAobS9MY29uc3RzOi9vKTsJIyBlbmQgb2YgdGFibGUKLSsKLSsJIyBp bnN0cnVjdGlvbnMgcHJlZml4ZWQgd2l0aCAnPycgYXJlIGVuZGlhbi1zcGVjaWZpYyBhbmQgbmVl ZAotKwkjIHRvIGJlIGFkanVzdGVkIGFjY29yZGluZ2x5Li4uCi0rCWlmICgkZmxhdm91ciA9fiAv bGUkL28pIHsJIyBsaXR0bGUtZW5kaWFuCi0rCSAgICBzL2xlXD8vL28JCW9yCi0rCSAgICBzL2Jl XD8vI2JlIy9vCW9yCi0rCSAgICBzL1w/bHZzci9sdnNsL28Jb3IKLSsJICAgIHMvXD9sdnNsL2x2 c3IvbwlvcgotKwkgICAgcy9cPyh2cGVybVxzK3ZbMC05XSssXHMqKSh2WzAtOV0rLFxzKikodlsw LTldKyxccyopKHZbMC05XSspLyQxJDMkMiQ0L28gb3IKLSsJICAgIHMvXD8odnNsZG9pXHMrdlsw LTldKyxccyopKHZbMC05XSssKVxzKih2WzAtOV0rLFxzKikoWzAtOV0rKS8kMSQzJDIgMTYtJDQv byBvcgotKwkgICAgcy9cPyh2c3BsdHdccyt2WzAtOV0rLFxzKikodlswLTldKywpXHMqKFswLTld KS8kMSQyIDMtJDMvbzsKLSsJfSBlbHNlIHsJCQkjIGJpZy1lbmRpYW4KLSsJICAgIHMvbGVcPy8j bGUjL28Jb3IKLSsJICAgIHMvYmVcPy8vbwkJb3IKLSsJICAgIHMvXD8oW2Etel0rKS8kMS9vOwot Kwl9Ci0rCi0rICAgICAgICBwcmludCAkXywiXG4iOwotK30KLSsKLStjbG9zZSBTVERPVVQ7Ci1k aWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYWVzL2FzbS92cGFlcy1wcGMucGwucHBjLWFz bSBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYWVzL2FzbS92cGFlcy1wcGMucGwKLS0tLSBvcGVuc3Ns LTEuMC4xaS9jcnlwdG8vYWVzL2FzbS92cGFlcy1wcGMucGwucHBjLWFzbQkyMDE0LTA4LTEzIDE5 OjQ2OjIxLjA5MzU3ODEyOCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9hZXMvYXNt L3ZwYWVzLXBwYy5wbAkyMDE0LTA4LTEzIDE5OjQ2OjIxLjA5MzU3ODEyOCArMDIwMAotQEAgLTAs MCArMSwxNTEyIEBACi0rIyEvdXNyL2Jpbi9lbnYgcGVybAotKwotKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsj IyBDb25zdGFudC10aW1lIFNTU0UzIEFFUyBjb3JlIGltcGxlbWVudGF0aW9uLgotKyMjIHZlcnNp b24gMC4xCi0rIyMKLSsjIyBCeSBNaWtlIEhhbWJ1cmcgKFN0YW5mb3JkIFVuaXZlcnNpdHkpLCAy MDA5Ci0rIyMgUHVibGljIGRvbWFpbi4KLSsjIwotKyMjIEZvciBkZXRhaWxzIHNlZSBodHRwOi8v c2hpZnRsZWZ0Lm9yZy9wYXBlcnMvdmVjdG9yX2Flcy8gYW5kCi0rIyMgaHR0cDovL2NyeXB0by5z dGFuZm9yZC5lZHUvdnBhZXMvLgotKwotKyMgQ0JDIGVuY3J5cHQvZGVjcnlwdCBwZXJmb3JtYW5j ZSBpbiBjeWNsZXMgcGVyIGJ5dGUgcHJvY2Vzc2VkIHdpdGgKLSsjIDEyOC1iaXQga2V5LgotKyMK LSsjCQlhZXMtcHBjLnBsCQl0aGlzCi0rIyBHNGUJCTM1LjUvNTIuMS8oMjMuOCkJMTEuOSgqKS8x NS40Ci0rIyBQT1dFUjYJNDIuNy81NC4zLygyOC4yKQk2My4wLzkyLjgoKiopCi0rIyBQT1dFUjcJ MzIuMy80Mi45LygxOC40KQkxOC41LzIzLjMKLSsjCi0rIyAoKikJVGhpcyBpcyB+MTAlIHdvcnNl IHRoYW4gcmVwb3J0ZWQgaW4gcGFwZXIuIFRoZSByZWFzb24gaXMKLSsjCXR3b2ZvbGQuIFRoaXMg bW9kdWxlIGRvZXNuJ3QgbWFrZSBhbnkgYXNzdW1wdGlvbiBhYm91dAotKyMJa2V5IHNjaGVkdWxl IChvciBkYXRhIGZvciB0aGF0IG1hdHRlcikgYWxpZ25tZW50IGFuZCBoYW5kbGVzCi0rIwlpdCBp bi1saW5lLiBTZWNvbmRseSBpdCwgYmVpbmcgdHJhbnNsaXRlcmF0ZWQgZnJvbQotKyMJdnBhZXMt eDg2XzY0LnBsLCByZWxpZXMgb24gIm5lc3RlZCBpbnZlcnNpb24iIGJldHRlciBzdWl0ZWQKLSsj CWZvciBJbnRlbCBDUFVzLgotKyMgKCoqKQlJbmFkZXF1YXRlIFBPV0VSNiBwZXJmb3JtYW5jZSBp cyBkdWUgdG8gYXN0cm9ub21pYyBBbHRpVmVjCi0rIwlsYXRlbmN5LCA5IGN5Y2xlcyBwZXIgc2lt cGxlIGxvZ2ljYWwgb3BlcmF0aW9uLgotKwotKyRmbGF2b3VyID0gc2hpZnQ7Ci0rCi0raWYgKCRm bGF2b3VyID1+IC82NC8pIHsKLSsJJFNJWkVfVAk9ODsKLSsJJExSU0FWRQk9MiokU0laRV9UOwot KwkkU1RVCT0ic3RkdSI7Ci0rCSRQT1AJPSJsZCI7Ci0rCSRQVVNICT0ic3RkIjsKLSsJJFVDTVAJ PSJjbXBsZCI7Ci0rfSBlbHNpZiAoJGZsYXZvdXIgPX4gLzMyLykgewotKwkkU0laRV9UCT00Owot KwkkTFJTQVZFCT0kU0laRV9UOwotKwkkU1RVCT0ic3R3dSI7Ci0rCSRQT1AJPSJsd3oiOwotKwkk UFVTSAk9InN0dyI7Ci0rCSRVQ01QCT0iY21wbHciOwotK30gZWxzZSB7IGRpZSAibm9uc2Vuc2Ug JGZsYXZvdXIiOyB9Ci0rCi0rJHNwPSJyMSI7Ci0rJEZSQU1FPTYqJFNJWkVfVCsxMyoxNjsJIyAx MyoxNiBpcyBmb3IgdjIwLXYzMSBvZmZsb2FkCi0rCi0rJDAgPX4gbS8oLipbXC9cXF0pW15cL1xc XSskLzsgJGRpcj0kMTsKLSsoICR4bGF0ZT0iJHtkaXJ9cHBjLXhsYXRlLnBsIiBhbmQgLWYgJHhs YXRlICkgb3IKLSsoICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS9wcGMteGxhdGUucGwiIGFu ZCAtZiAkeGxhdGUpIG9yCi0rZGllICJjYW4ndCBsb2NhdGUgcHBjLXhsYXRlLnBsIjsKLSsKLStv cGVuIFNURE9VVCwifCAkXlggJHhsYXRlICRmbGF2b3VyICIuc2hpZnQgfHwgZGllICJjYW4ndCBj YWxsICR4bGF0ZTogJCEiOwotKwotKyRjb2RlLj08PF9fXzsKLSsubWFjaGluZQkiYW55IgotKwot Ky50ZXh0Ci0rCi0rLmFsaWduCTcJIyB0b3RhbGx5IHN0cmF0ZWdpYyBhbGlnbm1lbnQKLStfdnBh ZXNfY29uc3RzOgotK0xrX21jX2ZvcndhcmQ6CSMgbWNfZm9yd2FyZAotKwkubG9uZwkweDAxMDIw MzAwLCAweDA1MDYwNzA0LCAweDA5MGEwYjA4LCAweDBkMGUwZjBjCT9pbnYKLSsJLmxvbmcJMHgw NTA2MDcwNCwgMHgwOTBhMGIwOCwgMHgwZDBlMGYwYywgMHgwMTAyMDMwMAk/aW52Ci0rCS5sb25n CTB4MDkwYTBiMDgsIDB4MGQwZTBmMGMsIDB4MDEwMjAzMDAsIDB4MDUwNjA3MDQJP2ludgotKwku bG9uZwkweDBkMGUwZjBjLCAweDAxMDIwMzAwLCAweDA1MDYwNzA0LCAweDA5MGEwYjA4CT9pbnYK LStMa19tY19iYWNrd2FyZDoJIyBtY19iYWNrd2FyZAotKwkubG9uZwkweDAzMDAwMTAyLCAweDA3 MDQwNTA2LCAweDBiMDgwOTBhLCAweDBmMGMwZDBlCT9pbnYKLSsJLmxvbmcJMHgwZjBjMGQwZSwg MHgwMzAwMDEwMiwgMHgwNzA0MDUwNiwgMHgwYjA4MDkwYQk/aW52Ci0rCS5sb25nCTB4MGIwODA5 MGEsIDB4MGYwYzBkMGUsIDB4MDMwMDAxMDIsIDB4MDcwNDA1MDYJP2ludgotKwkubG9uZwkweDA3 MDQwNTA2LCAweDBiMDgwOTBhLCAweDBmMGMwZDBlLCAweDAzMDAwMTAyCT9pbnYKLStMa19zcjoJ CSMgc3IKLSsJLmxvbmcJMHgwMDAxMDIwMywgMHgwNDA1MDYwNywgMHgwODA5MGEwYiwgMHgwYzBk MGUwZgk/aW52Ci0rCS5sb25nCTB4MDAwNTBhMGYsIDB4MDQwOTBlMDMsIDB4MDgwZDAyMDcsIDB4 MGMwMTA2MGIJP2ludgotKwkubG9uZwkweDAwMDkwMjBiLCAweDA0MGQwNjBmLCAweDA4MDEwYTAz LCAweDBjMDUwZTA3CT9pbnYKLSsJLmxvbmcJMHgwMDBkMGEwNywgMHgwNDAxMGUwYiwgMHgwODA1 MDIwZiwgMHgwYzA5MDYwMwk/aW52Ci0rCi0rIyMKLSsjIyAiSG90IiBjb25zdGFudHMKLSsjIwot K0xrX2ludjoJCSMgaW52LCBpbnZhCi0rCS5sb25nCTB4ZjAwMTA4MGQsIDB4MGYwNjA1MGUsIDB4 MDIwYzBiMGEsIDB4MDkwMzA3MDQJP3JldgotKwkubG9uZwkweGYwMDcwYjBmLCAweDA2MGEwNDAx LCAweDA5MDgwNTAyLCAweDBjMGUwZDAzCT9yZXYKLStMa19pcHQ6CQkjIGlucHV0IHRyYW5zZm9y bSAobG8sIGhpKQotKwkubG9uZwkweDAwNzAyYTVhLCAweDk4ZThiMmMyLCAweDA4NzgyMjUyLCAw eDkwZTBiYWNhCT9yZXYKLSsJLmxvbmcJMHgwMDRkN2MzMSwgMHg3ZDMwMDE0YywgMHg4MWNjZmRi MCwgMHhmY2IxODBjZAk/cmV2Ci0rTGtfc2JvOgkJIyBzYm91LCBzYm90Ci0rCS5sb25nCTB4MDBj N2JkNmYsIDB4MTc2ZGQyZDAsIDB4NzhhODAyYzUsIDB4N2FiZmFhMTUJP3JldgotKwkubG9uZwkw eDAwNmFiYjVmLCAweGE1NzRlNGNmLCAweGZhMzUyYjQxLCAweGQxOTAxZThlCT9yZXYKLStMa19z YjE6CQkjIHNiMXUsIHNiMXQKLSsJLmxvbmcJMHgwMDIzZTJmYSwgMHgxNWQ0MTgzNiwgMHhlZmQ5 MmUwZCwgMHhjMWNjZjczYgk/cmV2Ci0rCS5sb25nCTB4MDAzZTUwY2IsIDB4OGZlMTliYjEsIDB4 NDRmNTJhMTQsIDB4NmU3YWRmYTUJP3JldgotK0xrX3NiMjoJCSMgc2IydSwgc2IydAotKwkubG9u ZwkweDAwMjllMTBhLCAweDQwODhlYjY5LCAweDRhMjM4MmFiLCAweGM4NjNhMWMyCT9yZXYKLSsJ LmxvbmcJMHgwMDI0NzEwYiwgMHhjNjkzN2FlMiwgMHhjZDJmOThiYywgMHg1NWU5Yjc1ZQk/cmV2 Ci0rCi0rIyMKLSsjIyAgRGVjcnlwdGlvbiBzdHVmZgotKyMjCi0rTGtfZGlwdDoJIyBkZWNyeXB0 aW9uIGlucHV0IHRyYW5zZm9ybQotKwkubG9uZwkweDAwNWY1NDBiLCAweDA0NWI1MDBmLCAweDFh NDU0ZTExLCAweDFlNDE0YTE1CT9yZXYKLSsJLmxvbmcJMHgwMDY1MDU2MCwgMHhlNjgzZTM4Niwg MHg5NGYxOTFmNCwgMHg3MjE3NzcxMgk/cmV2Ci0rTGtfZHNibzoJIyBkZWNyeXB0aW9uIHNib3gg ZmluYWwgb3V0cHV0Ci0rCS5sb25nCTB4MDA0MGY5N2UsIDB4NTNlYTg3MTMsIDB4MmQzZTk0ZDQs IDB4Yjk2ZGFhYzcJP3JldgotKwkubG9uZwkweDAwMWQ0NDkzLCAweDBmNTZkNzEyLCAweDljOGVj NWQ4LCAweDU5ODE0YmNhCT9yZXYKLStMa19kc2I5OgkjIGRlY3J5cHRpb24gc2JveCBvdXRwdXQg KjkqdSwgKjkqdAotKwkubG9uZwkweDAwZDY4NjlhLCAweDUzMDMxYzg1LCAweGM5NGM5OTRmLCAw eDUwMWZkNWNhCT9yZXYKLSsJLmxvbmcJMHgwMDQ5ZDdlYywgMHg4OTE3M2JjMCwgMHg2NWE1ZmJi MiwgMHg5ZTJjNWU3Mgk/cmV2Ci0rTGtfZHNiZDoJIyBkZWNyeXB0aW9uIHNib3ggb3V0cHV0ICpE KnUsICpEKnQKLSsJLmxvbmcJMHgwMGEyYjFlNiwgMHhkZmNjNTc3ZCwgMHgzOTQ0MmE4OCwgMHgx MzliNmVmNQk/cmV2Ci0rCS5sb25nCTB4MDBjYmM2MjQsIDB4ZjdmYWUyM2MsIDB4ZDNlZmRlMTUs IDB4MGQxODMxMjkJP3JldgotK0xrX2RzYmI6CSMgZGVjcnlwdGlvbiBzYm94IG91dHB1dCAqQip1 LCAqQip0Ci0rCS5sb25nCTB4MDA0MmI0OTYsIDB4OTI2NDIyZDAsIDB4MDRkNGYyYjAsIDB4ZjY0 NjI2NjAJP3JldgotKwkubG9uZwkweDAwNjc1OWNkLCAweGE2OTg5NGMxLCAweDZiYWE1NTMyLCAw eDNlMGNmZmYzCT9yZXYKLStMa19kc2JlOgkjIGRlY3J5cHRpb24gc2JveCBvdXRwdXQgKkUqdSwg KkUqdAotKwkubG9uZwkweDAwZDBkNDI2LCAweDk2OTJmMjQ2LCAweGIwZjZiNDY0LCAweDA0NjA0 MjIyCT9yZXYKLSsJLmxvbmcJMHgwMGMxYWFmZiwgMHhjZGE2NTUwYywgMHgzMjNlNTk5OCwgMHg2 YmYzNjc5NAk/cmV2Ci0rCi0rIyMKLSsjIyAgS2V5IHNjaGVkdWxlIGNvbnN0YW50cwotKyMjCi0r TGtfZGtzZDoJIyBkZWNyeXB0aW9uIGtleSBzY2hlZHVsZTogaW52c2tldyB4KkQKLSsJLmxvbmcJ MHgwMDQ3ZTRhMywgMHg1ZDFhYjlmZSwgMHhmOWJlMWQ1YSwgMHhhNGUzNDAwNwk/cmV2Ci0rCS5s b25nCTB4MDA4MzM2YjUsIDB4ZjQ3N2MyNDEsIDB4MWU5ZDI4YWIsIDB4ZWE2OWRjNWYJP3Jldgot K0xrX2Rrc2I6CSMgZGVjcnlwdGlvbiBrZXkgc2NoZWR1bGU6IGludnNrZXcgeCpCCi0rCS5sb25n CTB4MDBkNTUwODUsIDB4MWZjYTRmOWEsIDB4OTk0Y2M5MWMsIDB4ODY1M2Q2MDMJP3JldgotKwku bG9uZwkweDAwNGFmY2I2LCAweGE3ZWQ1YjExLCAweGM4ODIzNDdlLCAweDZmMjU5M2Q5CT9yZXYK LStMa19ka3NlOgkjIGRlY3J5cHRpb24ga2V5IHNjaGVkdWxlOiBpbnZza2V3IHgqRSArIDB4NjMK LSsJLmxvbmcJMHgwMGQ2YzkxZiwgMHhjYTFjMDNkNSwgMHg4NjUwNGY5OSwgMHg0YzlhODU1Mwk/ cmV2Ci0rCS5sb25nCTB4ZTg3YmRjNGYsIDB4MDU5NjMxYTIsIDB4ODcxNGIzMjAsIDB4NmFmOTVl Y2QJP3JldgotK0xrX2Rrczk6CSMgZGVjcnlwdGlvbiBrZXkgc2NoZWR1bGU6IGludnNrZXcgeCo5 Ci0rCS5sb25nCTB4MDBhN2Q5N2UsIDB4Yzg2ZjExYjYsIDB4ZmM1YjI1ODIsIDB4MzQ5M2VkNGEJ P3JldgotKwkubG9uZwkweDAwMzMxNDI3LCAweDYyNTE3NjQ1LCAweGNlZmRkYWU5LCAweGFjOWZi ODhiCT9yZXYKLSsKLStMa19yY29uOgkjIHJjb24KLSsJLmxvbmcJMHhiNmVlOWRhZiwgMHhiOTkx ODMxZiwgMHg4MTdkN2M0ZCwgMHgwODk4MmE3MAk/YXNpcwotK0xrX3M2MzoKLSsJLmxvbmcJMHg1 YjViNWI1YiwgMHg1YjViNWI1YiwgMHg1YjViNWI1YiwgMHg1YjViNWI1Ygk/YXNpcwotKwotK0xr X29wdDoJCSMgb3V0cHV0IHRyYW5zZm9ybQotKwkubG9uZwkweDAwNjBiNmQ2LCAweDI5NDk5ZmZm LCAweDA4NjhiZWRlLCAweDIxNDE5N2Y3CT9yZXYKLSsJLmxvbmcJMHgwMGVjYmM1MCwgMHg1MWJk ZWQwMSwgMHhlMDBjNWNiMCwgMHhiMTVkMGRlMQk/cmV2Ci0rTGtfZGVza2V3OgkjIGRlc2tldyB0 YWJsZXM6IGludmVydHMgdGhlIHNib3gncyAic2tldyIKLSsJLmxvbmcJMHgwMGUzYTQ0NywgMHg0 MGEzZTQwNywgMHgxYWY5YmU1ZCwgMHg1YWI5ZmUxZAk/cmV2Ci0rCS5sb25nCTB4MDA2OWVhODMs IDB4ZGNiNTM2NWYsIDB4NzcxZTlkZjQsIDB4YWJjMjQxMjgJP3JldgotKy5hbGlnbgk1Ci0rTGNv bnN0czoKLSsJbWZscglyMAotKwliY2wJMjAsMzEsXCQrNAotKwltZmxyCXIxMgkjdnZ2dnYgImRp c3RhbmNlIGJldHdlZW4gLiBhbmQgX3ZwYWVzX2NvbnN0cwotKwlhZGRpCXIxMixyMTIsLTB4MzA4 Ci0rCW10bHIJcjAKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDAs MAotKy5hc2NpeiAgIlZlY3RvciBQZXJtdXRhdGlvbiBBRVMgZm9yIEFsdGlWZWMsIE1pa2UgSGFt YnVyZyAoU3RhbmZvcmQgVW5pdmVyc2l0eSkiCi0rLmFsaWduCTYKLStfX18KLSsMCi0rbXkgKCRp bnB0YWlsLCRpbnBwZXJtLCRvdXRoZWFkLCRvdXRwZXJtLCRvdXRtYXNrLCRrZXlwZXJtKSA9IG1h cCgidiRfIiwoMjYuLjMxKSk7Ci0rewotK215ICgkaW5wLCRvdXQsJGtleSkgPSBtYXAoInIkXyIs KDMuLjUpKTsKLSsKLStteSAoJGludmxvLCRpbnZoaSwkaXB0bG8sJGlwdGhpLCRzYm91LCRzYm90 KSA9IG1hcCgidiRfIiwoMTAuLjE1KSk7Ci0rbXkgKCRzYjF1LCRzYjF0LCRzYjJ1LCRzYjJ0KSA9 IG1hcCgidiRfIiwoMTYuLjE5KSk7Ci0rbXkgKCRzYjl1LCRzYjl0LCRzYmR1LCRzYmR0LCRzYmJ1 LCRzYmJ0LCRzYmV1LCRzYmV0KT1tYXAoInYkXyIsKDE2Li4yMykpOwotKwotKyRjb2RlLj08PF9f XzsKLSsjIwotKyMjICBfYWVzX3ByZWhlYXQKLSsjIwotKyMjICBGaWxscyByZWdpc3RlciAlcjEw IC0+IC5hZXNfY29uc3RzIChzbyB5b3UgY2FuIC1mUElDKQotKyMjICBhbmQgJXhtbTktJXhtbTE1 IGFzIHNwZWNpZmllZCBiZWxvdy4KLSsjIwotKy5hbGlnbgk0Ci0rX3ZwYWVzX2VuY3J5cHRfcHJl aGVhdDoKLSsJbWZscglyOAotKwlibAlMY29uc3RzCi0rCW10bHIJcjgKLSsJbGkJcjExLCAweGMw CQkjIExrX2ludgotKwlsaQlyMTAsIDB4ZDAKLSsJbGkJcjksICAweGUwCQkjIExrX2lwdAotKwls aQlyOCwgIDB4ZjAKLSsJdnhvcgl2NywgdjcsIHY3CQkjIDB4MDAuLjAwCi0rCXZzcGx0aXNiCXY4 LDQJCSMgMHgwNC4uMDQKLSsJdnNwbHRpc2IJdjksMHgwZgkJIyAweDBmLi4wZgotKwlsdngJJGlu dmxvLCByMTIsIHIxMQotKwlsaQlyMTEsIDB4MTAwCi0rCWx2eAkkaW52aGksIHIxMiwgcjEwCi0r CWxpCXIxMCwgMHgxMTAKLSsJbHZ4CSRpcHRsbywgcjEyLCByOQotKwlsaQlyOSwgIDB4MTIwCi0r CWx2eAkkaXB0aGksIHIxMiwgcjgKLSsJbGkJcjgsICAweDEzMAotKwlsdngJJHNib3UsIHIxMiwg cjExCi0rCWxpCXIxMSwgMHgxNDAKLSsJbHZ4CSRzYm90LCByMTIsIHIxMAotKwlsaQlyMTAsIDB4 MTUwCi0rCWx2eAkkc2IxdSwgcjEyLCByOQotKwlsdngJJHNiMXQsIHIxMiwgcjgKLSsJbHZ4CSRz YjJ1LCByMTIsIHIxMQotKwlsdngJJHNiMnQsIHIxMiwgcjEwCi0rCWJscgotKwkubG9uZwkwCi0r CS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKLSsKLSsjIwotKyMjICBfYWVzX2VuY3J5cHRfY29y ZQotKyMjCi0rIyMgIEFFUy1lbmNyeXB0ICV4bW0wLgotKyMjCi0rIyMgIElucHV0czoKLSsjIyAg ICAgJXhtbTAgPSBpbnB1dAotKyMjICAgICAleG1tOS0leG1tMTUgYXMgaW4gX3ZwYWVzX3ByZWhl YXQKLSsjIyAgICAoJXJkeCkgPSBzY2hlZHVsZWQga2V5cwotKyMjCi0rIyMgIE91dHB1dCBpbiAl eG1tMAotKyMjICBDbG9iYmVycyAgJXhtbTEtJXhtbTYsICVyOSwgJXIxMCwgJXIxMSwgJXJheAot KyMjCi0rIyMKLSsuYWxpZ24gNQotK192cGFlc19lbmNyeXB0X2NvcmU6Ci0rCWx3eglyOCwgMjQw KCRrZXkpCQkjIHB1bGwgcm91bmRzCi0rCWxpCXI5LCAxNgotKwlsdngJdjUsIDAsICRrZXkJCSMg dm1vdmRxdQkoJXI5KSwJJXhtbTUJCSMgcm91bmQwIGtleQotKwlsaQlyMTEsIDB4MTAKLSsJbHZ4 CXY2LCByOSwgJGtleQotKwlhZGRpCXI5LCByOSwgMTYKLSsJP3ZwZXJtCXY1LCB2NSwgdjYsICRr ZXlwZXJtCSMgYWxpZ24gcm91bmQga2V5Ci0rCWFkZGkJcjEwLCByMTEsIDB4NDAKLSsJdnNyYgl2 MSwgdjAsIHY4CQkjIHZwc3JsYglcJDQsCSV4bW0wLAkleG1tMAotKwl2cGVybQl2MCwgJGlwdGxv LCAkaXB0bG8sIHYwCSMgdnBzaHVmYgkleG1tMSwJJXhtbTIsCSV4bW0xCi0rCXZwZXJtCXYxLCAk aXB0aGksICRpcHRoaSwgdjEJIyB2cHNodWZiCSV4bW0wLAkleG1tMywJJXhtbTIKLSsJdnhvcgl2 MCwgdjAsIHY1CQkjIHZweG9yCSV4bW01LAkleG1tMSwJJXhtbTAKLSsJdnhvcgl2MCwgdjAsIHYx CQkjIHZweG9yCSV4bW0yLAkleG1tMCwJJXhtbTAKLSsJbXRjdHIJcjgKLSsJYglMZW5jX2VudHJ5 Ci0rCi0rLmFsaWduIDQKLStMZW5jX2xvb3A6Ci0rCSMgbWlkZGxlIG9mIG1pZGRsZSByb3VuZAot Kwl2cGVybQl2NCwgJHNiMXQsIHY3LCB2MgkjIHZwc2h1ZmIJJXhtbTIsCSV4bW0xMywJJXhtbTQJ IyA0ID0gc2IxdQotKwlsdngJdjEsIHIxMiwgcjExCQkjIHZtb3ZkcWEJLTB4NDAoJXIxMSwlcjEw KSwgJXhtbTEJIyAuTGtfbWNfZm9yd2FyZFtdCi0rCWFkZGkJcjExLCByMTEsIDE2Ci0rCXZwZXJt CXYwLCAkc2IxdSwgdjcsIHYzCSMgdnBzaHVmYgkleG1tMywJJXhtbTEyLAkleG1tMAkjIDAgPSBz YjF0Ci0rCXZ4b3IJdjQsIHY0LCB2NQkJIyB2cHhvcgkJJXhtbTUsCSV4bW00LAkleG1tNAkjIDQg PSBzYjF1ICsgawotKwlhbmRpLglyMTEsIHIxMSwgMHgzMAkJIyBhbmQJCVwkMHgzMCwgJXIxMQkj IC4uLiBtb2QgNAotKwl2cGVybQl2NSwgJHNiMnQsIHY3LCB2MgkjIHZwc2h1ZmIJJXhtbTIsCSV4 bW0xNSwJJXhtbTUJIyA0ID0gc2IydQotKwl2eG9yCXYwLCB2MCwgdjQJCSMgdnB4b3IJCSV4bW00 LAkleG1tMCwJJXhtbTAJIyAwID0gQQotKwl2cGVybQl2MiwgJHNiMnUsIHY3LCB2MwkjIHZwc2h1 ZmIJJXhtbTMsCSV4bW0xNCwJJXhtbTIJIyAyID0gc2IydAotKwlsdngJdjQsIHIxMiwgcjEwCQkj IHZtb3ZkcWEJKCVyMTEsJXIxMCksICV4bW00CSMgLkxrX21jX2JhY2t3YXJkW10KLSsJYWRkaQly MTAsIHIxMSwgMHg0MAotKwl2cGVybQl2MywgdjAsIHY3LCB2MQkJIyB2cHNodWZiCSV4bW0xLAkl eG1tMCwJJXhtbTMJIyAwID0gQgotKwl2eG9yCXYyLCB2MiwgdjUJCSMgdnB4b3IJCSV4bW01LAkl eG1tMiwJJXhtbTIJIyAyID0gMkEKLSsJdnBlcm0JdjAsIHYwLCB2NywgdjQJCSMgdnBzaHVmYgkl eG1tNCwJJXhtbTAsCSV4bW0wCSMgMyA9IEQKLSsJdnhvcgl2MywgdjMsIHYyCQkjIHZweG9yCQkl eG1tMiwJJXhtbTMsCSV4bW0zCSMgMCA9IDJBK0IKLSsJdnBlcm0JdjQsIHYzLCB2NywgdjEJCSMg dnBzaHVmYgkleG1tMSwJJXhtbTMsCSV4bW00CSMgMCA9IDJCK0MKLSsJdnhvcgl2MCwgdjAsIHYz CQkjIHZweG9yCQkleG1tMywJJXhtbTAsCSV4bW0wCSMgMyA9IDJBK0IrRAotKwl2eG9yCXYwLCB2 MCwgdjQJCSMgdnB4b3IJCSV4bW00LAkleG1tMCwgJXhtbTAJIyAwID0gMkErM0IrQytECi0rCi0r TGVuY19lbnRyeToKLSsJIyB0b3Agb2Ygcm91bmQKLSsJdnNyYgl2MSwgdjAsIHY4CQkjIHZwc3Js YglcJDQsCSV4bW0wLAkleG1tMAkjIDEgPSBpCi0rCXZwZXJtCXY1LCAkaW52aGksICRpbnZoaSwg djAJIyB2cHNodWZiCSV4bW0xLAkleG1tMTEsCSV4bW01CSMgMiA9IGEvawotKwl2eG9yCXYwLCB2 MCwgdjEJCSMgdnB4b3IJCSV4bW0wLAkleG1tMSwJJXhtbTEJIyAwID0gagotKwl2cGVybQl2Mywg JGludmxvLCAkaW52bG8sIHYxCSMgdnBzaHVmYgkleG1tMCwgCSV4bW0xMCwJJXhtbTMgIAkjIDMg PSAxL2kKLSsJdnBlcm0JdjQsICRpbnZsbywgJGludmxvLCB2MAkjIHZwc2h1ZmIJJXhtbTEsIAkl eG1tMTAsCSV4bW00ICAJIyA0ID0gMS9qCi0rCXZhbmQJdjAsIHYwLCB2OQotKwl2eG9yCXYzLCB2 MywgdjUJCSMgdnB4b3IJCSV4bW01LAkleG1tMywJJXhtbTMJIyAzID0gaWFrID0gMS9pICsgYS9r Ci0rCXZ4b3IJdjQsIHY0LCB2NQkJIyB2cHhvcgkJJXhtbTUsCSV4bW00LAkleG1tNCAgCSMgNCA9 IGphayA9IDEvaiArIGEvawotKwl2cGVybQl2MiwgJGludmxvLCB2NywgdjMJIyB2cHNodWZiCSV4 bW0zLAkleG1tMTAsCSV4bW0yICAJIyAyID0gMS9pYWsKLSsJdm1yCXY1LCB2NgotKwlsdngJdjYs IHI5LCAka2V5CQkjIHZtb3ZkcXUJKCVyOSksICV4bW01Ci0rCXZwZXJtCXYzLCAkaW52bG8sIHY3 LCB2NAkjIHZwc2h1ZmIJJXhtbTQsCSV4bW0xMCwJJXhtbTMJIyAzID0gMS9qYWsKLSsJYWRkaQly OSwgcjksIDE2Ci0rCXZ4b3IJdjIsIHYyLCB2MAkJIyB2cHhvcgkJJXhtbTEsCSV4bW0yLAkleG1t MiAgCSMgMiA9IGlvCi0rCT92cGVybQl2NSwgdjUsIHY2LCAka2V5cGVybQkjIGFsaWduIHJvdW5k IGtleQotKwl2eG9yCXYzLCB2MywgdjEJCSMgdnB4b3IJCSV4bW0wLAkleG1tMywJJXhtbTMJIyAz ID0gam8KLSsJYmRueglMZW5jX2xvb3AKLSsKLSsJIyBtaWRkbGUgb2YgbGFzdCByb3VuZAotKwlh ZGRpCXIxMCwgcjExLCAweDgwCi0rCQkJCQkjIHZtb3ZkcWEJLTB4NjAoJXIxMCksICV4bW00CSMg MyA6IHNib3UJLkxrX3NibwotKwkJCQkJIyB2bW92ZHFhCS0weDUwKCVyMTApLCAleG1tMAkjIDAg OiBzYm90CS5Ma19zYm8rMTYKLSsJdnBlcm0JdjQsICRzYm91LCB2NywgdjIJIyB2cHNodWZiCSV4 bW0yLAkleG1tNCwJJXhtbTQJIyA0ID0gc2JvdQotKwlsdngJdjEsIHIxMiwgcjEwCQkjIHZtb3Zk cWEJMHg0MCglcjExLCVyMTApLCAleG1tMQkjIC5Ma19zcltdCi0rCXZwZXJtCXYwLCAkc2JvdCwg djcsIHYzCSMgdnBzaHVmYgkleG1tMywJJXhtbTAsCSV4bW0wCSMgMCA9IHNiMXQKLSsJdnhvcgl2 NCwgdjQsIHY1CQkjIHZweG9yCQkleG1tNSwJJXhtbTQsCSV4bW00CSMgNCA9IHNiMXUgKyBrCi0r CXZ4b3IJdjAsIHYwLCB2NAkJIyB2cHhvcgkJJXhtbTQsCSV4bW0wLAkleG1tMAkjIDAgPSBBCi0r CXZwZXJtCXYwLCB2MCwgdjcsIHYxCQkjIHZwc2h1ZmIJJXhtbTEsCSV4bW0wLAkleG1tMAotKwli bHIKLSsJLmxvbmcJMAotKwkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0rCi0rLmdsb2JsCS52 cGFlc19lbmNyeXB0Ci0rLmFsaWduCTUKLSsudnBhZXNfZW5jcnlwdDoKLSsJJFNUVQkkc3AsLSRG UkFNRSgkc3ApCi0rCWxpCXIxMCxgMTUrNiokU0laRV9UYAotKwlsaQlyMTEsYDMxKzYqJFNJWkVf VGAKLSsJbWZscglyNgotKwltZnNwcglyNywgMjU2CQkJIyBzYXZlIHZyc2F2ZQotKwlzdHZ4CXYy MCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlzdHZ4CXYyMSxyMTEsJHNwCi0rCWFkZGkJ cjExLHIxMSwzMgotKwlzdHZ4CXYyMixyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlzdHZ4 CXYyMyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlzdHZ4CXYyNCxyMTAsJHNwCi0rCWFk ZGkJcjEwLHIxMCwzMgotKwlzdHZ4CXYyNSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlz dHZ4CXYyNixyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlzdHZ4CXYyNyxyMTEsJHNwCi0r CWFkZGkJcjExLHIxMSwzMgotKwlzdHZ4CXYyOCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgot KwlzdHZ4CXYyOSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlzdHZ4CXYzMCxyMTAsJHNw Ci0rCXN0dngJdjMxLHIxMSwkc3AKLSsJc3R3CXI3LGAkRlJBTUUtNGAoJHNwKQkjIHNhdmUgdnJz YXZlCi0rCWxpCXIwLCAtMQotKwkkUFVTSAlyNixgJEZSQU1FKyRMUlNBVkVgKCRzcCkKLSsJbXRz cHIJMjU2LCByMAkJCSMgcHJlc2VydmUgYWxsIEFsdGlWZWMgcmVnaXN0ZXJzCi0rCi0rCWJsCV92 cGFlc19lbmNyeXB0X3ByZWhlYXQKLSsKLSsJP2x2c2wJJGlucHBlcm0sIDAsICRpbnAJIyBwcmVw YXJlIGZvciB1bmFsaWduZWQgYWNjZXNzCi0rCWx2eAl2MCwgMCwgJGlucAotKwlhZGRpCSRpbnAs ICRpbnAsIDE1CQkjIDE1IGlzIG5vdCBhIHR5cG8KLSsJID9sdnNyCSRvdXRwZXJtLCAwLCAkb3V0 Ci0rCT9sdnNsCSRrZXlwZXJtLCAwLCAka2V5CSMgcHJlcGFyZSBmb3IgdW5hbGlnbmVkIGFjY2Vz cwotKwkgdm5vcgkkb3V0bWFzaywgdjcsIHY3CSMgMHhmZi4uZmYKLSsJbHZ4CSRpbnB0YWlsLCAw LCAkaW5wCSMgcmVkdW5kYW50IGluIGFsaWduZWQgY2FzZQotKwkgP3ZwZXJtCSRvdXRtYXNrLCB2 NywgJG91dG1hc2ssICRvdXRwZXJtCi0rCSBsdngJJG91dGhlYWQsIDAsICRvdXQKLSsJP3ZwZXJt CXYwLCB2MCwgJGlucHRhaWwsICRpbnBwZXJtCi0rCi0rCWJsCV92cGFlc19lbmNyeXB0X2NvcmUK LSsKLSsJdnBlcm0JdjAsIHYwLCB2MCwgJG91dHBlcm0JIyByb3RhdGUgcmlnaHQvbGVmdAotKwl2 c2VsCXYxLCAkb3V0aGVhZCwgdjAsICRvdXRtYXNrCi0rCXZtcgkkb3V0aGVhZCwgdjAKLSsJc3R2 eAl2MSwgMCwgJG91dAotKwlhZGRpCSRvdXQsICRvdXQsIDE1CQkjIDE1IGlzIG5vdCBhIHR5cG8K LSsJIyMjIyMjIyMKLSsKLSsJbHZ4CXYxLCAwLCAkb3V0CQkjIHJlZHVuZGFudCBpbiBhbGlnbmVk IGNhc2UKLSsJdnNlbAl2MSwgJG91dGhlYWQsIHYxLCAkb3V0bWFzawotKwlzdHZ4CXYxLCAwLCAk b3V0Ci0rCi0rCWxpCXIxMCxgMTUrNiokU0laRV9UYAotKwlsaQlyMTEsYDMxKzYqJFNJWkVfVGAK LSsJbXRscglyNgotKwltdHNwcgkyNTYsIHI3CQkJIyByZXN0b3JlIHZyc2F2ZQotKwlsdngJdjIw LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjEscjExLCRzcAotKwlhZGRpCXIx MSxyMTEsMzIKLSsJbHZ4CXYyMixyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlsdngJdjIz LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjQscjEwLCRzcAotKwlhZGRpCXIx MCxyMTAsMzIKLSsJbHZ4CXYyNSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjI2 LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjcscjExLCRzcAotKwlhZGRpCXIx MSxyMTEsMzIKLSsJbHZ4CXYyOCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlsdngJdjI5 LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MzAscjEwLCRzcAotKwlsdngJdjMx LHIxMSwkc3AKLSsJYWRkaQkkc3AsJHNwLCRGUkFNRQotKwlibHIKLSsJLmxvbmcJMAotKwkuYnl0 ZQkwLDEyLDB4MDQsMSwweDgwLDAsMywwCi0rCS5sb25nCTAKLSsuc2l6ZQkudnBhZXNfZW5jcnlw dCwuLS52cGFlc19lbmNyeXB0Ci0rCi0rLmFsaWduCTQKLStfdnBhZXNfZGVjcnlwdF9wcmVoZWF0 OgotKwltZmxyCXI4Ci0rCWJsCUxjb25zdHMKLSsJbXRscglyOAotKwlsaQlyMTEsIDB4YzAJCSMg TGtfaW52Ci0rCWxpCXIxMCwgMHhkMAotKwlsaQlyOSwgIDB4MTYwCQkjIExkaXB0Ci0rCWxpCXI4 LCAgMHgxNzAKLSsJdnhvcgl2NywgdjcsIHY3CQkjIDB4MDAuLjAwCi0rCXZzcGx0aXNiCXY4LDQJ CSMgMHgwNC4uMDQKLSsJdnNwbHRpc2IJdjksMHgwZgkJIyAweDBmLi4wZgotKwlsdngJJGludmxv LCByMTIsIHIxMQotKwlsaQlyMTEsIDB4MTgwCi0rCWx2eAkkaW52aGksIHIxMiwgcjEwCi0rCWxp CXIxMCwgMHgxOTAKLSsJbHZ4CSRpcHRsbywgcjEyLCByOQotKwlsaQlyOSwgIDB4MWEwCi0rCWx2 eAkkaXB0aGksIHIxMiwgcjgKLSsJbGkJcjgsICAweDFiMAotKwlsdngJJHNib3UsIHIxMiwgcjEx Ci0rCWxpCXIxMSwgMHgxYzAKLSsJbHZ4CSRzYm90LCByMTIsIHIxMAotKwlsaQlyMTAsIDB4MWQw Ci0rCWx2eAkkc2I5dSwgcjEyLCByOQotKwlsaQlyOSwgIDB4MWUwCi0rCWx2eAkkc2I5dCwgcjEy LCByOAotKwlsaQlyOCwgIDB4MWYwCi0rCWx2eAkkc2JkdSwgcjEyLCByMTEKLSsJbGkJcjExLCAw eDIwMAotKwlsdngJJHNiZHQsIHIxMiwgcjEwCi0rCWxpCXIxMCwgMHgyMTAKLSsJbHZ4CSRzYmJ1 LCByMTIsIHI5Ci0rCWx2eAkkc2JidCwgcjEyLCByOAotKwlsdngJJHNiZXUsIHIxMiwgcjExCi0r CWx2eAkkc2JldCwgcjEyLCByMTAKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiwweDE0 LDAsMCwwLDAsMAotKwotKyMjCi0rIyMgIERlY3J5cHRpb24gY29yZQotKyMjCi0rIyMgIFNhbWUg QVBJIGFzIGVuY3J5cHRpb24gY29yZS4KLSsjIwotKy5hbGlnbgk0Ci0rX3ZwYWVzX2RlY3J5cHRf Y29yZToKLSsJbHd6CXI4LCAyNDAoJGtleSkJCSMgcHVsbCByb3VuZHMKLSsJbGkJcjksIDE2Ci0r CWx2eAl2NSwgMCwgJGtleQkJIyB2bW92ZHF1CSglcjkpLAkleG1tNAkJIyByb3VuZDAga2V5Ci0r CWxpCXIxMSwgMHgzMAotKwlsdngJdjYsIHI5LCAka2V5Ci0rCWFkZGkJcjksIHI5LCAxNgotKwk/ dnBlcm0JdjUsIHY1LCB2NiwgJGtleXBlcm0JIyBhbGlnbiByb3VuZCBrZXkKLSsJdnNyYgl2MSwg djAsIHY4CQkjIHZwc3JsYglcJDQsCSV4bW0wLAkleG1tMAotKwl2cGVybQl2MCwgJGlwdGxvLCAk aXB0bG8sIHYwCSMgdnBzaHVmYgkleG1tMSwJJXhtbTIsCSV4bW0yCi0rCXZwZXJtCXYxLCAkaXB0 aGksICRpcHRoaSwgdjEJIyB2cHNodWZiCSV4bW0wLAkleG1tMSwJJXhtbTAKLSsJdnhvcgl2MCwg djAsIHY1CQkjIHZweG9yCSV4bW00LAkleG1tMiwJJXhtbTIKLSsJdnhvcgl2MCwgdjAsIHYxCQkj IHZweG9yCSV4bW0yLAkleG1tMCwJJXhtbTAKLSsJbXRjdHIJcjgKLSsJYglMZGVjX2VudHJ5Ci0r Ci0rLmFsaWduIDQKLStMZGVjX2xvb3A6Ci0rIwotKyMgIEludmVyc2UgbWl4IGNvbHVtbnMKLSsj Ci0rCWx2eAl2MCwgcjEyLCByMTEJCSMgdjUgYW5kIHYwIGFyZSBmbGlwcGVkCi0rCQkJCQkjIHZt b3ZkcWEJLTB4MjAoJXIxMCksJXhtbTQJCSMgNCA6IHNiOXUKLSsJCQkJCSMgdm1vdmRxYQktMHgx MCglcjEwKSwleG1tMQkJIyAwIDogc2I5dAotKwl2cGVybQl2NCwgJHNiOXUsIHY3LCB2MgkjIHZw c2h1ZmIJJXhtbTIsCSV4bW00LAkleG1tNAkJIyA0ID0gc2I5dQotKwlzdWJpCXIxMSwgcjExLCAx NgotKwl2cGVybQl2MSwgJHNiOXQsIHY3LCB2MwkjIHZwc2h1ZmIJJXhtbTMsCSV4bW0xLAkleG1t MQkJIyAwID0gc2I5dAotKwlhbmRpLglyMTEsIHIxMSwgMHgzMAotKwl2eG9yCXY1LCB2NSwgdjQJ CSMgdnB4b3IJCSV4bW00LAkleG1tMCwJJXhtbTAKLSsJCQkJCSMgdm1vdmRxYQkweDAwKCVyMTAp LCV4bW00CQkjIDQgOiBzYmR1Ci0rCXZ4b3IJdjUsIHY1LCB2MQkJIyB2cHhvcgkJJXhtbTEsCSV4 bW0wLAkleG1tMAkJIyAwID0gY2gKLSsJCQkJCSMgdm1vdmRxYQkweDEwKCVyMTApLCV4bW0xCQkj IDAgOiBzYmR0Ci0rCi0rCXZwZXJtCXY0LCAkc2JkdSwgdjcsIHYyCSMgdnBzaHVmYgkleG1tMiwJ JXhtbTQsCSV4bW00CQkjIDQgPSBzYmR1Ci0rCXZwZXJtIAl2NSwgdjUsIHY3LCB2MAkJIyB2cHNo dWZiCSV4bW01LAkleG1tMCwJJXhtbTAJCSMgTUMgY2gKLSsJdnBlcm0JdjEsICRzYmR0LCB2Nywg djMJIyB2cHNodWZiCSV4bW0zLAkleG1tMSwJJXhtbTEJCSMgMCA9IHNiZHQKLSsJdnhvcgl2NSwg djUsIHY0CQkjIHZweG9yCQkleG1tNCwJJXhtbTAsCSV4bW0wCQkjIDQgPSBjaAotKwkJCQkJIyB2 bW92ZHFhCTB4MjAoJXIxMCksCSV4bW00CQkjIDQgOiBzYmJ1Ci0rCXZ4b3IJdjUsIHY1LCB2MQkJ IyB2cHhvcgkJJXhtbTEsCSV4bW0wLAkleG1tMAkJIyAwID0gY2gKLSsJCQkJCSMgdm1vdmRxYQkw eDMwKCVyMTApLAkleG1tMQkJIyAwIDogc2JidAotKwotKwl2cGVybQl2NCwgJHNiYnUsIHY3LCB2 MgkjIHZwc2h1ZmIJJXhtbTIsCSV4bW00LAkleG1tNAkJIyA0ID0gc2JidQotKwl2cGVybQl2NSwg djUsIHY3LCB2MAkJIyB2cHNodWZiCSV4bW01LAkleG1tMCwJJXhtbTAJCSMgTUMgY2gKLSsJdnBl cm0JdjEsICRzYmJ0LCB2NywgdjMJIyB2cHNodWZiCSV4bW0zLAkleG1tMSwJJXhtbTEJCSMgMCA9 IHNiYnQKLSsJdnhvcgl2NSwgdjUsIHY0CQkjIHZweG9yCQkleG1tNCwJJXhtbTAsCSV4bW0wCQkj IDQgPSBjaAotKwkJCQkJIyB2bW92ZHFhCTB4NDAoJXIxMCksCSV4bW00CQkjIDQgOiBzYmV1Ci0r CXZ4b3IJdjUsIHY1LCB2MQkJIyB2cHhvcgkJJXhtbTEsCSV4bW0wLAkleG1tMAkJIyAwID0gY2gK LSsJCQkJCSMgdm1vdmRxYQkweDUwKCVyMTApLAkleG1tMQkJIyAwIDogc2JldAotKwotKwl2cGVy bQl2NCwgJHNiZXUsIHY3LCB2MgkjIHZwc2h1ZmIJJXhtbTIsCSV4bW00LAkleG1tNAkJIyA0ID0g c2JldQotKwl2cGVybQl2NSwgdjUsIHY3LCB2MAkJIyB2cHNodWZiCSV4bW01LAkleG1tMCwJJXht bTAJCSMgTUMgY2gKLSsJdnBlcm0JdjEsICRzYmV0LCB2NywgdjMJIyB2cHNodWZiCSV4bW0zLAkl eG1tMSwJJXhtbTEJCSMgMCA9IHNiZXQKLSsJdnhvcgl2MCwgdjUsIHY0CQkjIHZweG9yCQkleG1t NCwJJXhtbTAsCSV4bW0wCQkjIDQgPSBjaAotKwl2eG9yCXYwLCB2MCwgdjEJCSMgdnB4b3IJCSV4 bW0xLAkleG1tMCwJJXhtbTAJCSMgMCA9IGNoCi0rCi0rTGRlY19lbnRyeToKLSsJIyB0b3Agb2Yg cm91bmQKLSsJdnNyYgl2MSwgdjAsIHY4CQkjIHZwc3JsYglcJDQsCSV4bW0wLAkleG1tMAkjIDEg PSBpCi0rCXZwZXJtCXYyLCAkaW52aGksICRpbnZoaSwgdjAJIyB2cHNodWZiCSV4bW0xLAkleG1t MTEsCSV4bW0yCSMgMiA9IGEvawotKwl2eG9yCXYwLCB2MCwgdjEJCSMgdnB4b3IJCSV4bW0wLAkl eG1tMSwJJXhtbTEJIyAwID0gagotKwl2cGVybQl2MywgJGludmxvLCAkaW52bG8sIHYxCSMgdnBz aHVmYgkleG1tMCwgCSV4bW0xMCwJJXhtbTMJIyAzID0gMS9pCi0rCXZwZXJtCXY0LCAkaW52bG8s ICRpbnZsbywgdjAJIyB2cHNodWZiCSV4bW0xLAkleG1tMTAsCSV4bW00CSMgNCA9IDEvagotKwl2 YW5kCXYwLCB2MCwgdjkKLSsJdnhvcgl2MywgdjMsIHYyCQkjIHZweG9yCQkleG1tMiwJJXhtbTMs CSV4bW0zCSMgMyA9IGlhayA9IDEvaSArIGEvawotKwl2eG9yCXY0LCB2NCwgdjIJCSMgdnB4b3IJ CSV4bW0yLCAJJXhtbTQsCSV4bW00CSMgNCA9IGphayA9IDEvaiArIGEvawotKwl2cGVybQl2Miwg JGludmxvLCB2NywgdjMJIyB2cHNodWZiCSV4bW0zLAkleG1tMTAsCSV4bW0yCSMgMiA9IDEvaWFr Ci0rCXZtcgl2NSwgdjYKLSsJbHZ4CXY2LCByOSwgJGtleQkJIyB2bW92ZHF1CSglcjkpLAkleG1t MAotKwl2cGVybQl2MywgJGludmxvLCB2NywgdjQJIyB2cHNodWZiCSV4bW00LCAgJXhtbTEwLAkl eG1tMwkjIDMgPSAxL2phawotKwlhZGRpCXI5LCByOSwgMTYKLSsJdnhvcgl2MiwgdjIsIHYwCQkj IHZweG9yCQkleG1tMSwJJXhtbTIsCSV4bW0yCSMgMiA9IGlvCi0rCT92cGVybQl2NSwgdjUsIHY2 LCAka2V5cGVybQkjIGFsaWduIHJvdW5kIGtleQotKwl2eG9yCXYzLCB2MywgdjEJCSMgdnB4b3IJ CSV4bW0wLCAgJXhtbTMsCSV4bW0zCSMgMyA9IGpvCi0rCWJkbnoJTGRlY19sb29wCi0rCi0rCSMg bWlkZGxlIG9mIGxhc3Qgcm91bmQKLSsJYWRkaQlyMTAsIHIxMSwgMHg4MAotKwkJCQkJIyB2bW92 ZHFhCTB4NjAoJXIxMCksCSV4bW00CSMgMyA6IHNib3UKLSsJdnBlcm0JdjQsICRzYm91LCB2Nywg djIJIyB2cHNodWZiCSV4bW0yLAkleG1tNCwJJXhtbTQJIyA0ID0gc2JvdQotKwkJCQkJIyB2bW92 ZHFhCTB4NzAoJXIxMCksCSV4bW0xCSMgMCA6IHNib3QKLSsJbHZ4CXYyLCByMTIsIHIxMAkJIyB2 bW92ZHFhCS0weDE2MCglcjExKSwJJXhtbTIJIyAuTGtfc3ItLkxrX2RzYmQ9LTB4MTYwCi0rCXZw ZXJtCXYxLCAkc2JvdCwgdjcsIHYzCSMgdnBzaHVmYgkleG1tMywJJXhtbTEsCSV4bW0xCSMgMCA9 IHNiMXQKLSsJdnhvcgl2NCwgdjQsIHY1CQkjIHZweG9yCQkleG1tMCwJJXhtbTQsCSV4bW00CSMg NCA9IHNiMXUgKyBrCi0rCXZ4b3IJdjAsIHYxLCB2NAkJIyB2cHhvcgkJJXhtbTQsCSV4bW0xLAkl eG1tMAkjIDAgPSBBCi0rCXZwZXJtCXYwLCB2MCwgdjcsIHYyCQkjIHZwc2h1ZmIJJXhtbTIsCSV4 bW0wLAkleG1tMAotKwlibHIKLSsJLmxvbmcJMAotKwkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCww Ci0rCi0rLmdsb2JsCS52cGFlc19kZWNyeXB0Ci0rLmFsaWduCTUKLSsudnBhZXNfZGVjcnlwdDoK LSsJJFNUVQkkc3AsLSRGUkFNRSgkc3ApCi0rCWxpCXIxMCxgMTUrNiokU0laRV9UYAotKwlsaQly MTEsYDMxKzYqJFNJWkVfVGAKLSsJbWZscglyNgotKwltZnNwcglyNywgMjU2CQkJIyBzYXZlIHZy c2F2ZQotKwlzdHZ4CXYyMCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlzdHZ4CXYyMSxy MTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlzdHZ4CXYyMixyMTAsJHNwCi0rCWFkZGkJcjEw LHIxMCwzMgotKwlzdHZ4CXYyMyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlzdHZ4CXYy NCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlzdHZ4CXYyNSxyMTEsJHNwCi0rCWFkZGkJ cjExLHIxMSwzMgotKwlzdHZ4CXYyNixyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlzdHZ4 CXYyNyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlzdHZ4CXYyOCxyMTAsJHNwCi0rCWFk ZGkJcjEwLHIxMCwzMgotKwlzdHZ4CXYyOSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlz dHZ4CXYzMCxyMTAsJHNwCi0rCXN0dngJdjMxLHIxMSwkc3AKLSsJc3R3CXI3LGAkRlJBTUUtNGAo JHNwKQkjIHNhdmUgdnJzYXZlCi0rCWxpCXIwLCAtMQotKwkkUFVTSAlyNixgJEZSQU1FKyRMUlNB VkVgKCRzcCkKLSsJbXRzcHIJMjU2LCByMAkJCSMgcHJlc2VydmUgYWxsIEFsdGlWZWMgcmVnaXN0 ZXJzCi0rCi0rCWJsCV92cGFlc19kZWNyeXB0X3ByZWhlYXQKLSsKLSsJP2x2c2wJJGlucHBlcm0s IDAsICRpbnAJIyBwcmVwYXJlIGZvciB1bmFsaWduZWQgYWNjZXNzCi0rCWx2eAl2MCwgMCwgJGlu cAotKwlhZGRpCSRpbnAsICRpbnAsIDE1CQkjIDE1IGlzIG5vdCBhIHR5cG8KLSsJID9sdnNyCSRv dXRwZXJtLCAwLCAkb3V0Ci0rCT9sdnNsCSRrZXlwZXJtLCAwLCAka2V5Ci0rCSB2bm9yCSRvdXRt YXNrLCB2NywgdjcJIyAweGZmLi5mZgotKwlsdngJJGlucHRhaWwsIDAsICRpbnAJIyByZWR1bmRh bnQgaW4gYWxpZ25lZCBjYXNlCi0rCSA/dnBlcm0JJG91dG1hc2ssIHY3LCAkb3V0bWFzaywgJG91 dHBlcm0KLSsJIGx2eAkkb3V0aGVhZCwgMCwgJG91dAotKwk/dnBlcm0JdjAsIHYwLCAkaW5wdGFp bCwgJGlucHBlcm0KLSsKLSsJYmwJX3ZwYWVzX2RlY3J5cHRfY29yZQotKwotKwl2cGVybQl2MCwg djAsIHYwLCAkb3V0cGVybQkjIHJvdGF0ZSByaWdodC9sZWZ0Ci0rCXZzZWwJdjEsICRvdXRoZWFk LCB2MCwgJG91dG1hc2sKLSsJdm1yCSRvdXRoZWFkLCB2MAotKwlzdHZ4CXYxLCAwLCAkb3V0Ci0r CWFkZGkJJG91dCwgJG91dCwgMTUJCSMgMTUgaXMgbm90IGEgdHlwbwotKwkjIyMjIyMjIwotKwot KwlsdngJdjEsIDAsICRvdXQJCSMgcmVkdW5kYW50IGluIGFsaWduZWQgY2FzZQotKwl2c2VsCXYx LCAkb3V0aGVhZCwgdjEsICRvdXRtYXNrCi0rCXN0dngJdjEsIDAsICRvdXQKLSsKLSsJbGkJcjEw LGAxNSs2KiRTSVpFX1RgCi0rCWxpCXIxMSxgMzErNiokU0laRV9UYAotKwltdGxyCXI2Ci0rCW10 c3ByCTI1NiwgcjcJCQkjIHJlc3RvcmUgdnJzYXZlCi0rCWx2eAl2MjAscjEwLCRzcAotKwlhZGRp CXIxMCxyMTAsMzIKLSsJbHZ4CXYyMSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJ djIyLHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjMscjExLCRzcAotKwlhZGRp CXIxMSxyMTEsMzIKLSsJbHZ4CXYyNCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlsdngJ djI1LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjYscjEwLCRzcAotKwlhZGRp CXIxMCxyMTAsMzIKLSsJbHZ4CXYyNyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJ djI4LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjkscjExLCRzcAotKwlhZGRp CXIxMSxyMTEsMzIKLSsJbHZ4CXYzMCxyMTAsJHNwCi0rCWx2eAl2MzEscjExLCRzcAotKwlhZGRp CSRzcCwkc3AsJEZSQU1FCi0rCWJscgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgwNCwxLDB4 ODAsMCwzLDAKLSsJLmxvbmcJMAotKy5zaXplCS52cGFlc19kZWNyeXB0LC4tLnZwYWVzX2RlY3J5 cHQKLSsKLSsuZ2xvYmwJLnZwYWVzX2NiY19lbmNyeXB0Ci0rLmFsaWduCTUKLSsudnBhZXNfY2Jj X2VuY3J5cHQ6Ci0rCSR7VUNNUH1pIHI1LDE2Ci0rCWJsdGxyLQotKwotKwkkU1RVCSRzcCwtYCgk RlJBTUUrMiokU0laRV9UKWAoJHNwKQotKwltZmxyCXIwCi0rCWxpCXIxMCxgMTUrNiokU0laRV9U YAotKwlsaQlyMTEsYDMxKzYqJFNJWkVfVGAKLSsJbWZzcHIJcjEyLCAyNTYKLSsJc3R2eAl2MjAs cjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjEscjExLCRzcAotKwlhZGRpCXIx MSxyMTEsMzIKLSsJc3R2eAl2MjIscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2 MjMscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjQscjEwLCRzcAotKwlhZGRp CXIxMCxyMTAsMzIKLSsJc3R2eAl2MjUscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2 eAl2MjYscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjcscjExLCRzcAotKwlh ZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjgscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJ c3R2eAl2MjkscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MzAscjEwLCRzcAot KwlzdHZ4CXYzMSxyMTEsJHNwCi0rCXN0dwlyMTIsYCRGUkFNRS00YCgkc3ApCSMgc2F2ZSB2cnNh dmUKLSsJJFBVU0gJcjMwLGAkRlJBTUUrJFNJWkVfVCowYCgkc3ApCi0rCSRQVVNICXIzMSxgJEZS QU1FKyRTSVpFX1QqMWAoJHNwKQotKwlsaQlyOSwgLTE2Ci0rCSRQVVNICXIwLCBgJEZSQU1FKyRT SVpFX1QqMiskTFJTQVZFYCgkc3ApCi0rCi0rCWFuZAlyMzAsIHI1LCByOQkJIyBjb3B5IGxlbmd0 aCYtMTYKLSsJbXIJcjUsIHI2CQkJIyBjb3B5IHBvaW50ZXIgdG8ga2V5Ci0rCW1yCXIzMSwgcjcJ CQkjIGNvcHkgcG9pbnRlciB0byBpdgotKwlibHQJTGNiY19hYm9ydAotKwljbXB3aQlyOCwgMAkJ CSMgdGVzdCBkaXJlY3Rpb24KLSsJbGkJcjYsIC0xCi0rCW1yCXI3LCByMTIJCQkjIGNvcHkgdnJz YXZlCi0rCW10c3ByCTI1NiwgcjYJCQkjIHByZXNlcnZlIGFsbCBBbHRpVmVjIHJlZ2lzdGVycwot KwotKwlsdngJdjI0LCAwLCByMzEJCSMgbG9hZCBbcG90ZW50aWFsbHkgdW5hbGlnbmVkXSBpdgot KwlsaQlyOSwgMTUKLSsJP2x2c2wJJGlucHBlcm0sIDAsIHIzMQotKwlsdngJdjI1LCByOSwgcjMx Ci0rCT92cGVybQl2MjQsIHYyNCwgdjI1LCAkaW5wcGVybQotKwotKwluZWcJcjgsICRpbnAJCSMg cHJlcGFyZSBmb3IgdW5hbGlnbmVkIGFjY2VzcwotKwkgdnhvcgl2NywgdjcsIHY3Ci0rCT9sdnNs CSRrZXlwZXJtLCAwLCAka2V5Ci0rCSA/bHZzcgkkb3V0cGVybSwgMCwgJG91dAotKwk/bHZzcgkk aW5wcGVybSwgMCwgcjgJCSMgLSRpbnAKLSsJIHZub3IJJG91dG1hc2ssIHY3LCB2NwkjIDB4ZmYu LmZmCi0rCWx2eAkkaW5wdGFpbCwgMCwgJGlucAotKwkgP3ZwZXJtCSRvdXRtYXNrLCB2NywgJG91 dG1hc2ssICRvdXRwZXJtCi0rCWFkZGkJJGlucCwgJGlucCwgMTUJCSMgMTUgaXMgbm90IGEgdHlw bwotKwkgbHZ4CSRvdXRoZWFkLCAwLCAkb3V0Ci0rCi0rCWJlcQlMY2JjX2RlY3J5cHQKLSsKLSsJ YmwJX3ZwYWVzX2VuY3J5cHRfcHJlaGVhdAotKwlsaQlyMCwgMTYKLSsKLStMY2JjX2VuY19sb29w OgotKwl2bXIJdjAsICRpbnB0YWlsCi0rCWx2eAkkaW5wdGFpbCwgMCwgJGlucAotKwlhZGRpCSRp bnAsICRpbnAsIDE2Ci0rCT92cGVybQl2MCwgdjAsICRpbnB0YWlsLCAkaW5wcGVybQotKwl2eG9y CXYwLCB2MCwgdjI0CQkjIF49IGl2Ci0rCi0rCWJsCV92cGFlc19lbmNyeXB0X2NvcmUKLSsKLSsJ dm1yCXYyNCwgdjAJCQkjIHB1dCBhc2lkZSBpdgotKwlzdWIuCXIzMCwgcjMwLCByMAkJIyBsZW4g LT0gMTYKLSsJdnBlcm0JdjAsIHYwLCB2MCwgJG91dHBlcm0JIyByb3RhdGUgcmlnaHQvbGVmdAot Kwl2c2VsCXYxLCAkb3V0aGVhZCwgdjAsICRvdXRtYXNrCi0rCXZtcgkkb3V0aGVhZCwgdjAKLSsJ c3R2eAl2MSwgMCwgJG91dAotKwlhZGRpCSRvdXQsICRvdXQsIDE2Ci0rCWJuZQlMY2JjX2VuY19s b29wCi0rCi0rCWIJTGNiY19kb25lCi0rCi0rLmFsaWduCTUKLStMY2JjX2RlY3J5cHQ6Ci0rCWJs CV92cGFlc19kZWNyeXB0X3ByZWhlYXQKLSsJbGkJcjAsIDE2Ci0rCi0rTGNiY19kZWNfbG9vcDoK LSsJdm1yCXYwLCAkaW5wdGFpbAotKwlsdngJJGlucHRhaWwsIDAsICRpbnAKLSsJYWRkaQkkaW5w LCAkaW5wLCAxNgotKwk/dnBlcm0JdjAsIHYwLCAkaW5wdGFpbCwgJGlucHBlcm0KLSsJdm1yCXYy NSwgdjAJCQkjIHB1dCBhc2lkZSBpbnB1dAotKwotKwlibAlfdnBhZXNfZGVjcnlwdF9jb3JlCi0r Ci0rCXZ4b3IJdjAsIHYwLCB2MjQJCSMgXj0gaXYKLSsJdm1yCXYyNCwgdjI1Ci0rCXN1Yi4JcjMw LCByMzAsIHIwCQkjIGxlbiAtPSAxNgotKwl2cGVybQl2MCwgdjAsIHYwLCAkb3V0cGVybQkjIHJv dGF0ZSByaWdodC9sZWZ0Ci0rCXZzZWwJdjEsICRvdXRoZWFkLCB2MCwgJG91dG1hc2sKLSsJdm1y CSRvdXRoZWFkLCB2MAotKwlzdHZ4CXYxLCAwLCAkb3V0Ci0rCWFkZGkJJG91dCwgJG91dCwgMTYK LSsJYm5lCUxjYmNfZGVjX2xvb3AKLSsKLStMY2JjX2RvbmU6Ci0rCWFkZGkJJG91dCwgJG91dCwg LTEKLSsJbHZ4CXYxLCAwLCAkb3V0CQkjIHJlZHVuZGFudCBpbiBhbGlnbmVkIGNhc2UKLSsJdnNl bAl2MSwgJG91dGhlYWQsIHYxLCAkb3V0bWFzawotKwlzdHZ4CXYxLCAwLCAkb3V0Ci0rCi0rCW5l ZwlyOCwgcjMxCQkJIyB3cml0ZSBbcG90ZW50aWFsbHkgdW5hbGlnbmVkXSBpdgotKwk/bHZzbAkk b3V0cGVybSwgMCwgcjgKLSsJbGkJcjYsIDE1Ci0rCXZub3IJJG91dG1hc2ssIHY3LCB2NwkjIDB4 ZmYuLmZmCi0rCT92cGVybQkkb3V0bWFzaywgdjcsICRvdXRtYXNrLCAkb3V0cGVybQotKwlsdngJ JG91dGhlYWQsIDAsIHIzMQotKwl2cGVybQl2MjQsIHYyNCwgdjI0LCAkb3V0cGVybQkjIHJvdGF0 ZSByaWdodC9sZWZ0Ci0rCXZzZWwJdjAsICRvdXRoZWFkLCB2MjQsICRvdXRtYXNrCi0rCWx2eAl2 MSwgcjYsIHIzMQotKwlzdHZ4CXYwLCAwLCByMzEKLSsJdnNlbAl2MSwgdjI0LCB2MSwgJG91dG1h c2sKLSsJc3R2eAl2MSwgcjYsIHIzMQotKwotKwltdHNwcgkyNTYsIHI3CQkJIyByZXN0b3JlIHZy c2F2ZQotKwlsaQlyMTAsYDE1KzYqJFNJWkVfVGAKLSsJbGkJcjExLGAzMSs2KiRTSVpFX1RgCi0r CWx2eAl2MjAscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJbHZ4CXYyMSxyMTEsJHNwCi0r CWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjIyLHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0r CWx2eAl2MjMscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJbHZ4CXYyNCxyMTAsJHNwCi0r CWFkZGkJcjEwLHIxMCwzMgotKwlsdngJdjI1LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0r CWx2eAl2MjYscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJbHZ4CXYyNyxyMTEsJHNwCi0r CWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjI4LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0r CWx2eAl2MjkscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJbHZ4CXYzMCxyMTAsJHNwCi0r CWx2eAl2MzEscjExLCRzcAotK0xjYmNfYWJvcnQ6Ci0rCSRQT1AJcjAsIGAkRlJBTUUrJFNJWkVf VCoyKyRMUlNBVkVgKCRzcCkKLSsJJFBPUAlyMzAsYCRGUkFNRSskU0laRV9UKjBgKCRzcCkKLSsJ JFBPUAlyMzEsYCRGUkFNRSskU0laRV9UKjFgKCRzcCkKLSsJbXRscglyMAotKwlhZGRpCSRzcCwk c3AsYCRGUkFNRSskU0laRV9UKjJgCi0rCWJscgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgw NCwxLDB4ODAsMiw2LDAKLSsJLmxvbmcJMAotKy5zaXplCS52cGFlc19jYmNfZW5jcnlwdCwuLS52 cGFlc19jYmNfZW5jcnlwdAotK19fXwotK30MCi0rewotK215ICgkaW5wLCRiaXRzLCRvdXQpPW1h cCgiciRfIiwoMy4uNSkpOwotK215ICRkaXI9ImNyMSI7Ci0rbXkgKCRpbnZsbywkaW52aGksJGlw dGxvLCRpcHRoaSwkcmNvbikgPSBtYXAoInYkXyIsKDEwLi4xMywyNCkpOwotKwotKyRjb2RlLj08 PF9fXzsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMjCi0rIyMgICAgICAgICAgICAgICAgICBBRVMga2V5IHNjaGVkdWxlICAgICAgICAg ICAgICAgICAgIyMKLSsjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCi0rLmFsaWduCTQKLStfdnBhZXNfa2V5X3ByZWhlYXQ6Ci0rCW1mbHIJ cjgKLSsJYmwJTGNvbnN0cwotKwltdGxyCXI4Ci0rCWxpCXIxMSwgMHhjMAkJIyBMa19pbnYKLSsJ bGkJcjEwLCAweGQwCi0rCWxpCXI5LCAgMHhlMAkJIyBMX2lwdAotKwlsaQlyOCwgIDB4ZjAKLSsK LSsJdnNwbHRpc2IJdjgsNAkJIyAweDA0Li4wNAotKwl2eG9yCXY5LHY5LHY5CQkjIDB4MDAuLjAw Ci0rCWx2eAkkaW52bG8sIHIxMiwgcjExCSMgTGtfaW52Ci0rCWxpCXIxMSwgMHgxMjAKLSsJbHZ4 CSRpbnZoaSwgcjEyLCByMTAKLSsJbGkJcjEwLCAweDEzMAotKwlsdngJJGlwdGxvLCByMTIsIHI5 CQkjIExrX2lwdAotKwlsaQlyOSwgMHgyMjAKLSsJbHZ4CSRpcHRoaSwgcjEyLCByOAotKwlsaQly OCwgMHgyMzAKLSsKLSsJbHZ4CXYxNCwgcjEyLCByMTEJCSMgTGtfc2IxCi0rCWxpCXIxMSwgMHgy NDAKLSsJbHZ4CXYxNSwgcjEyLCByMTAKLSsJbGkJcjEwLCAweDI1MAotKwotKwlsdngJdjE2LCBy MTIsIHI5CQkjIExrX2Rrc2QKLSsJbGkJcjksIDB4MjYwCi0rCWx2eAl2MTcsIHIxMiwgcjgKLSsJ bGkJcjgsIDB4MjcwCi0rCWx2eAl2MTgsIHIxMiwgcjExCQkjIExrX2Rrc2IKLSsJbGkJcjExLCAw eDI4MAotKwlsdngJdjE5LCByMTIsIHIxMAotKwlsaQlyMTAsIDB4MjkwCi0rCWx2eAl2MjAsIHIx MiwgcjkJCSMgTGtfZGtzZQotKwlsaQlyOSwgMHgyYTAKLSsJbHZ4CXYyMSwgcjEyLCByOAotKwls aQlyOCwgMHgyYjAKLSsJbHZ4CXYyMiwgcjEyLCByMTEJCSMgTGtfZGtzOQotKwlsdngJdjIzLCBy MTIsIHIxMAotKwotKwlsdngJdjI0LCByMTIsIHI5CQkjIExrX3Jjb24KLSsJbHZ4CXYyNSwgMCwg cjEyCQkjIExrX21jX2ZvcndhcmRbMF0KLSsJbHZ4CXYyNiwgcjEyLCByOAkJIyBMa3M2MwotKwli bHIKLSsJLmxvbmcJMAotKwkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0rCi0rLmFsaWduCTQK LStfdnBhZXNfc2NoZWR1bGVfY29yZToKLSsJbWZscglyNwotKwotKwlibAlfdnBhZXNfa2V5X3By ZWhlYXQJIyBsb2FkIHRoZSB0YWJsZXMKLSsKLSsJI2x2eAl2MCwgMCwgJGlucAkJIyB2bW92ZHF1 CSglcmRpKSwJJXhtbTAJCSMgbG9hZCBrZXkgKHVuYWxpZ25lZCkKLSsJbmVnCXI4LCAkaW5wCQkj IHByZXBhcmUgZm9yIHVuYWxpZ25lZCBhY2Nlc3MKLSsJbHZ4CXYwLCAwLCAkaW5wCi0rCWFkZGkJ JGlucCwgJGlucCwgMTUJCSMgMTUgaXMgbm90IHR5cG8KLSsJP2x2c3IJJGlucHBlcm0sIDAsIHI4 CQkjIC0kaW5wCi0rCWx2eAl2NiwgMCwgJGlucAkJIyB2NiBzZXJ2ZXMgYXMgaW5wdGFpbAotKwlh ZGRpCSRpbnAsICRpbnAsIDgKLSsJP3ZwZXJtCXYwLCB2MCwgdjYsICRpbnBwZXJtCi0rCi0rCSMg aW5wdXQgdHJhbnNmb3JtCi0rCXZtcgl2MywgdjAJCQkjIHZtb3ZkcWEJJXhtbTAsCSV4bW0zCi0r CWJsCV92cGFlc19zY2hlZHVsZV90cmFuc2Zvcm0KLSsJdm1yCXY3LCB2MAkJCSMgdm1vdmRxYQkl eG1tMCwJJXhtbTcKLSsKLSsJYm5lCSRkaXIsIExzY2hlZHVsZV9hbV9kZWNyeXB0aW5nCi0rCi0r CSMgZW5jcnlwdGluZywgb3V0cHV0IHplcm90aCByb3VuZCBrZXkgYWZ0ZXIgdHJhbnNmb3JtCi0r CWxpCXI4LCAweDMwCQkjIG1vdglcJDB4MzAsJXI4ZAotKwlhZGRpCXIxMCwgcjEyLCAweDgwCQkj IGxlYQkuTGtfc3IoJXJpcCksJXIxMAotKwotKwk/bHZzcgkkb3V0cGVybSwgMCwgJG91dAkjIHBy ZXBhcmUgZm9yIHVuYWxpZ25lZCBhY2Nlc3MKLSsJdm5vcgkkb3V0bWFzaywgdjksIHY5CSMgMHhm Zi4uZmYKLSsJbHZ4CSRvdXRoZWFkLCAwLCAkb3V0Ci0rCT92cGVybQkkb3V0bWFzaywgdjksICRv dXRtYXNrLCAkb3V0cGVybQotKwotKwkjc3R2eAl2MCwgMCwgJG91dAkJIyB2bW92ZHF1CSV4bW0w LAkoJXJkeCkKLSsJdnBlcm0JdjEsIHYwLCB2MCwgJG91dHBlcm0JIyByb3RhdGUgcmlnaHQvbGVm dAotKwl2c2VsCXYyLCAkb3V0aGVhZCwgdjEsICRvdXRtYXNrCi0rCXZtcgkkb3V0aGVhZCwgdjEK LSsJc3R2eAl2MiwgMCwgJG91dAotKwliCUxzY2hlZHVsZV9nbwotKwotK0xzY2hlZHVsZV9hbV9k ZWNyeXB0aW5nOgotKwlzcndpCXI4LCAkYml0cywgMQkJIyBzaHIJXCQxLCVyOGQKLSsJYW5kaS4J cjgsIHI4LCAzMgkJIyBhbmQJXCQzMiwlcjhkCi0rCXhvcmkJcjgsIHI4LCAzMgkJIyB4b3IJXCQz MiwlcjhkCSMgbmJpdHM9PTE5Mj8wOjMyCi0rCWFkZGkJcjEwLCByMTIsIDB4ODAJCSMgbGVhCS5M a19zciglcmlwKSwlcjEwCi0rCSMgZGVjcnlwdGluZywgb3V0cHV0IHplcm90aCByb3VuZCBrZXkg YWZ0ZXIgc2hpZnRyb3dzCi0rCWx2eAl2MSwgcjgsIHIxMAkJIyB2bW92ZHFhCSglcjgsJXIxMCks CSV4bW0xCi0rCXZwZXJtCXY0LCB2MywgdjMsIHYxCQkjIHZwc2h1ZmIJJXhtbTEsCSV4bW0zLAkl eG1tMwotKwotKwluZWcJcjAsICRvdXQJCSMgcHJlcGFyZSBmb3IgdW5hbGlnbmVkIGFjY2Vzcwot Kwk/bHZzbAkkb3V0cGVybSwgMCwgcjAKLSsJYWRkaQkkb3V0LCAkb3V0LCAxNQkJIyAxNSBpcyBu b3QgdHlwbwotKwl2bm9yCSRvdXRtYXNrLCB2OSwgdjkJIyAweGZmLi5mZgotKwlsdngJJG91dGhl YWQsIDAsICRvdXQKLSsJP3ZwZXJtCSRvdXRtYXNrLCAkb3V0bWFzaywgdjksICRvdXRwZXJtCi0r Ci0rCSNzdHZ4CXY0LCAwLCAkb3V0CQkjIHZtb3ZkcXUJJXhtbTMsCSglcmR4KQotKwl2cGVybQl2 NCwgdjQsIHY0LCAkb3V0cGVybQkjIHJvdGF0ZSByaWdodC9sZWZ0Ci0rCXZzZWwJdjIsICRvdXRo ZWFkLCB2NCwgJG91dG1hc2sKLSsJdm1yCSRvdXRoZWFkLCB2NAotKwlzdHZ4CXYyLCAwLCAkb3V0 Ci0rCXhvcmkJcjgsIHI4LCAweDMwCQkjIHhvcglcJDB4MzAsICVyOAotKwotK0xzY2hlZHVsZV9n bzoKLSsJY21wbHdpCSRiaXRzLCAxOTIJCSMgY21wCVwkMTkyLAklZXNpCi0rCWJndAlMc2NoZWR1 bGVfMjU2Ci0rCWJlcQlMc2NoZWR1bGVfMTkyCi0rCSMgMTI4OiBmYWxsIHRob3VnaAotKwotKyMj Ci0rIyMgIC5zY2hlZHVsZV8xMjgKLSsjIwotKyMjICAxMjgtYml0IHNwZWNpZmljIHBhcnQgb2Yg a2V5IHNjaGVkdWxlLgotKyMjCi0rIyMgIFRoaXMgc2NoZWR1bGUgaXMgcmVhbGx5IHNpbXBsZSwg YmVjYXVzZSBhbGwgaXRzIHBhcnRzCi0rIyMgIGFyZSBhY2NvbXBsaXNoZWQgYnkgdGhlIHN1YnJv dXRpbmVzLgotKyMjCi0rTHNjaGVkdWxlXzEyODoKLSsJbGkJcjAsIDEwCQkJIyBtb3YJXCQxMCwg JWVzaQotKwltdGN0cglyMAotKwotK0xvb3Bfc2NoZWR1bGVfMTI4OgotKwlibCAJX3ZwYWVzX3Nj aGVkdWxlX3JvdW5kCi0rCWJkeiAJTHNjaGVkdWxlX21hbmdsZV9sYXN0CSMgZGVjCSVlc2kKLSsJ YmwJX3ZwYWVzX3NjaGVkdWxlX21hbmdsZQkjIHdyaXRlIG91dHB1dAotKwliIAlMb29wX3NjaGVk dWxlXzEyOAotKwotKyMjCi0rIyMgIC5hZXNfc2NoZWR1bGVfMTkyCi0rIyMKLSsjIyAgMTkyLWJp dCBzcGVjaWZpYyBwYXJ0IG9mIGtleSBzY2hlZHVsZS4KLSsjIwotKyMjICBUaGUgbWFpbiBib2R5 IG9mIHRoaXMgc2NoZWR1bGUgaXMgdGhlIHNhbWUgYXMgdGhlIDEyOC1iaXQKLSsjIyAgc2NoZWR1 bGUsIGJ1dCB3aXRoIG1vcmUgc21lYXJpbmcuICBUaGUgbG9uZywgaGlnaCBzaWRlIGlzCi0rIyMg IHN0b3JlZCBpbiAleG1tNyBhcyBiZWZvcmUsIGFuZCB0aGUgc2hvcnQsIGxvdyBzaWRlIGlzIGlu Ci0rIyMgIHRoZSBoaWdoIGJpdHMgb2YgJXhtbTYuCi0rIyMKLSsjIyAgVGhpcyBzY2hlZHVsZSBp cyBzb21ld2hhdCBuYXN0aWVyLCBob3dldmVyLCBiZWNhdXNlIGVhY2gKLSsjIyAgcm91bmQgcHJv ZHVjZXMgMTkyIGJpdHMgb2Yga2V5IG1hdGVyaWFsLCBvciAxLjUgcm91bmQga2V5cy4KLSsjIyAg VGhlcmVmb3JlLCBvbiBlYWNoIGN5Y2xlIHdlIGRvIDIgcm91bmRzIGFuZCBwcm9kdWNlIDMgcm91 bmQKLSsjIyAga2V5cy4KLSsjIwotKy5hbGlnbgk0Ci0rTHNjaGVkdWxlXzE5MjoKLSsJbGkJcjAs IDQJCQkjIG1vdglcJDQsCSVlc2kKLSsJbHZ4CXYwLCAwLCAkaW5wCi0rCT92cGVybQl2MCwgdjYs IHYwLCAkaW5wcGVybQotKwk/dnNsZG9pCXYwLCB2MywgdjAsIDgJCSMgdm1vdmRxdQk4KCVyZGkp LCV4bW0wCQkjIGxvYWQga2V5IHBhcnQgMiAodmVyeSB1bmFsaWduZWQpCi0rCWJsCV92cGFlc19z Y2hlZHVsZV90cmFuc2Zvcm0JIyBpbnB1dCB0cmFuc2Zvcm0KLSsJP3ZzbGRvaQl2NiwgdjAsIHY5 LCA4Ci0rCT92c2xkb2kJdjYsIHY5LCB2NiwgOAkJIyBjbG9iYmVyICJsb3ciIHNpZGUgd2l0aCB6 ZXJvcwotKwltdGN0cglyMAotKwotK0xvb3Bfc2NoZWR1bGVfMTkyOgotKwlibAlfdnBhZXNfc2No ZWR1bGVfcm91bmQKLSsJP3ZzbGRvaQl2MCwgdjYsIHYwLCA4CQkjIHZwYWxpZ25yCVwkOCwleG1t NiwleG1tMCwleG1tMAotKwlibAlfdnBhZXNfc2NoZWR1bGVfbWFuZ2xlCSMgc2F2ZSBrZXkgbgot KwlibAlfdnBhZXNfc2NoZWR1bGVfMTkyX3NtZWFyCi0rCWJsCV92cGFlc19zY2hlZHVsZV9tYW5n bGUJIyBzYXZlIGtleSBuKzEKLSsJYmwJX3ZwYWVzX3NjaGVkdWxlX3JvdW5kCi0rCWJkeiAJTHNj aGVkdWxlX21hbmdsZV9sYXN0CSMgZGVjCSVlc2kKLSsJYmwJX3ZwYWVzX3NjaGVkdWxlX21hbmds ZQkjIHNhdmUga2V5IG4rMgotKwlibAlfdnBhZXNfc2NoZWR1bGVfMTkyX3NtZWFyCi0rCWIJTG9v cF9zY2hlZHVsZV8xOTIKLSsKLSsjIwotKyMjICAuYWVzX3NjaGVkdWxlXzI1NgotKyMjCi0rIyMg IDI1Ni1iaXQgc3BlY2lmaWMgcGFydCBvZiBrZXkgc2NoZWR1bGUuCi0rIyMKLSsjIyAgVGhlIHN0 cnVjdHVyZSBoZXJlIGlzIHZlcnkgc2ltaWxhciB0byB0aGUgMTI4LWJpdAotKyMjICBzY2hlZHVs ZSwgYnV0IHdpdGggYW4gYWRkaXRpb25hbCAibG93IHNpZGUiIGluCi0rIyMgICV4bW02LiAgVGhl IGxvdyBzaWRlJ3Mgcm91bmRzIGFyZSB0aGUgc2FtZSBhcyB0aGUKLSsjIyAgaGlnaCBzaWRlJ3Ms IGV4Y2VwdCBubyByY29uIGFuZCBubyByb3RhdGlvbi4KLSsjIwotKy5hbGlnbgk0Ci0rTHNjaGVk dWxlXzI1NjoKLSsJbGkJcjAsIDcJCQkjIG1vdglcJDcsICVlc2kKLSsJYWRkaQkkaW5wLCAkaW5w LCA4Ci0rCWx2eAl2MCwgMCwgJGlucAkJIyB2bW92ZHF1CTE2KCVyZGkpLCV4bW0wCQkjIGxvYWQg a2V5IHBhcnQgMiAodW5hbGlnbmVkKQotKwk/dnBlcm0JdjAsIHY2LCB2MCwgJGlucHBlcm0KLSsJ YmwJX3ZwYWVzX3NjaGVkdWxlX3RyYW5zZm9ybQkjIGlucHV0IHRyYW5zZm9ybQotKwltdGN0cgly MAotKwotK0xvb3Bfc2NoZWR1bGVfMjU2OgotKwlibAlfdnBhZXNfc2NoZWR1bGVfbWFuZ2xlCSMg b3V0cHV0IGxvdyByZXN1bHQKLSsJdm1yCXY2LCB2MAkJCSMgdm1vdmRxYQkleG1tMCwJJXhtbTYJ CSMgc2F2ZSBjdXJfbG8gaW4geG1tNgotKwotKwkjIGhpZ2ggcm91bmQKLSsJYmwJX3ZwYWVzX3Nj aGVkdWxlX3JvdW5kCi0rCWJkeiAJTHNjaGVkdWxlX21hbmdsZV9sYXN0CSMgZGVjCSVlc2kKLSsJ YmwJX3ZwYWVzX3NjaGVkdWxlX21hbmdsZQkKLSsKLSsJIyBsb3cgcm91bmQuIHN3YXAgeG1tNyBh bmQgeG1tNgotKwk/dnNwbHR3CXYwLCB2MCwgMwkJIyB2cHNodWZkCVwkMHhGRiwJJXhtbTAsCSV4 bW0wCi0rCXZtcgl2NSwgdjcJCQkjIHZtb3ZkcWEJJXhtbTcsCSV4bW01Ci0rCXZtcgl2NywgdjYJ CQkjIHZtb3ZkcWEJJXhtbTYsCSV4bW03Ci0rCWJsCV92cGFlc19zY2hlZHVsZV9sb3dfcm91bmQK LSsJdm1yCXY3LCB2NQkJCSMgdm1vdmRxYQkleG1tNSwJJXhtbTcKLSsJCi0rCWIJTG9vcF9zY2hl ZHVsZV8yNTYKLSsjIwotKyMjICAuYWVzX3NjaGVkdWxlX21hbmdsZV9sYXN0Ci0rIyMKLSsjIyAg TWFuZ2xlciBmb3IgbGFzdCByb3VuZCBvZiBrZXkgc2NoZWR1bGUKLSsjIyAgTWFuZ2xlcyAleG1t MAotKyMjICAgIHdoZW4gZW5jcnlwdGluZywgb3V0cHV0cyBvdXQoJXhtbTApIF4gNjMKLSsjIyAg ICB3aGVuIGRlY3J5cHRpbmcsIG91dHB1dHMgdW5za2V3KCV4bW0wKQotKyMjCi0rIyMgIEFsd2F5 cyBjYWxsZWQgcmlnaHQgYmVmb3JlIHJldHVybi4uLiBqdW1wcyB0byBjbGVhbnVwIGFuZCBleGl0 cwotKyMjCi0rLmFsaWduCTQKLStMc2NoZWR1bGVfbWFuZ2xlX2xhc3Q6Ci0rCSMgc2NoZWR1bGUg bGFzdCByb3VuZCBrZXkgZnJvbSB4bW0wCi0rCWxpCXIxMSwgMHgyZTAJCSMgbGVhCS5Ma19kZXNr ZXcoJXJpcCksJXIxMQotKwlsaQlyOSwgIDB4MmYwCi0rCWJuZQkkZGlyLCBMc2NoZWR1bGVfbWFu Z2xlX2xhc3RfZGVjCi0rCi0rCSMgZW5jcnlwdGluZwotKwlsdngJdjEsIHI4LCByMTAJCSMgdm1v dmRxYQkoJXI4LCVyMTApLCV4bW0xCi0rCWxpCXIxMSwgMHgyYzAJCSMgbGVhCQkuTGtfb3B0KCVy aXApLAklcjExCSMgcHJlcGFyZSB0byBvdXRwdXQgdHJhbnNmb3JtCi0rCWxpCXI5LCAgMHgyZDAJ CSMgcHJlcGFyZSB0byBvdXRwdXQgdHJhbnNmb3JtCi0rCXZwZXJtCXYwLCB2MCwgdjAsIHYxCQkj IHZwc2h1ZmIJJXhtbTEsCSV4bW0wLAkleG1tMAkjIG91dHB1dCBwZXJtdXRlCi0rCi0rCWx2eAkk aXB0bG8sIHIxMSwgcjEyCSMgcmVsb2FkICRpcHQKLSsJbHZ4CSRpcHRoaSwgcjksIHIxMgotKwlh ZGRpCSRvdXQsICRvdXQsIDE2CQkjIGFkZAlcJDE2LAklcmR4Ci0rCXZ4b3IJdjAsIHYwLCB2MjYJ CSMgdnB4b3IJCS5Ma19zNjMoJXJpcCksCSV4bW0wLAkleG1tMAotKwlibAlfdnBhZXNfc2NoZWR1 bGVfdHJhbnNmb3JtCSMgb3V0cHV0IHRyYW5zZm9ybQotKwotKwkjc3R2eAl2MCwgcjAsICRvdXQJ CSMgdm1vdmRxdQkleG1tMCwJKCVyZHgpCQkjIHNhdmUgbGFzdCBrZXkKLSsJdnBlcm0JdjAsIHYw LCB2MCwgJG91dHBlcm0JIyByb3RhdGUgcmlnaHQvbGVmdAotKwl2c2VsCXYyLCAkb3V0aGVhZCwg djAsICRvdXRtYXNrCi0rCXZtcgkkb3V0aGVhZCwgdjAKLSsJc3R2eAl2MiwgMCwgJG91dAotKwot KwlhZGRpCSRvdXQsICRvdXQsIDE1CQkjIDE1IGlzIG5vdCB0eXBvCi0rCWx2eAl2MSwgMCwgJG91 dAkJIyByZWR1bmRhbnQgaW4gYWxpZ25lZCBjYXNlCi0rCXZzZWwJdjEsICRvdXRoZWFkLCB2MSwg JG91dG1hc2sKLSsJc3R2eAl2MSwgMCwgJG91dAotKwliCUxzY2hlZHVsZV9tYW5nbGVfZG9uZQot KwotKy5hbGlnbgk0Ci0rTHNjaGVkdWxlX21hbmdsZV9sYXN0X2RlYzoKLSsJbHZ4CSRpcHRsbywg cjExLCByMTIJIyByZWxvYWQgJGlwdAotKwlsdngJJGlwdGhpLCByOSwgIHIxMgotKwlhZGRpCSRv dXQsICRvdXQsIC0xNgkJIyBhZGQJXCQtMTYsCSVyZHggCi0rCXZ4b3IJdjAsIHYwLCB2MjYJCSMg dnB4b3IJLkxrX3M2MyglcmlwKSwJJXhtbTAsCSV4bW0wCi0rCWJsCV92cGFlc19zY2hlZHVsZV90 cmFuc2Zvcm0JIyBvdXRwdXQgdHJhbnNmb3JtCi0rCi0rCSNzdHZ4CXYwLCByMCwgJG91dAkJIyB2 bW92ZHF1CSV4bW0wLAkoJXJkeCkJCSMgc2F2ZSBsYXN0IGtleQotKwl2cGVybQl2MCwgdjAsIHYw LCAkb3V0cGVybQkjIHJvdGF0ZSByaWdodC9sZWZ0Ci0rCXZzZWwJdjIsICRvdXRoZWFkLCB2MCwg JG91dG1hc2sKLSsJdm1yCSRvdXRoZWFkLCB2MAotKwlzdHZ4CXYyLCAwLCAkb3V0Ci0rCi0rCWFk ZGkJJG91dCwgJG91dCwgLTE1CQkjIC0xNSBpcyBub3QgdHlwbwotKwlsdngJdjEsIDAsICRvdXQJ CSMgcmVkdW5kYW50IGluIGFsaWduZWQgY2FzZQotKwl2c2VsCXYxLCAkb3V0aGVhZCwgdjEsICRv dXRtYXNrCi0rCXN0dngJdjEsIDAsICRvdXQKLSsKLStMc2NoZWR1bGVfbWFuZ2xlX2RvbmU6Ci0r CW10bHIJcjcKLSsJIyBjbGVhbnVwCi0rCXZ4b3IJdjAsIHYwLCB2MAkJIyB2cHhvcgkJJXhtbTAs CSV4bW0wLAkleG1tMAotKwl2eG9yCXYxLCB2MSwgdjEJCSMgdnB4b3IJCSV4bW0xLAkleG1tMSwJ JXhtbTEKLSsJdnhvcgl2MiwgdjIsIHYyCQkjIHZweG9yCQkleG1tMiwJJXhtbTIsCSV4bW0yCi0r CXZ4b3IJdjMsIHYzLCB2MwkJIyB2cHhvcgkJJXhtbTMsCSV4bW0zLAkleG1tMwotKwl2eG9yCXY0 LCB2NCwgdjQJCSMgdnB4b3IJCSV4bW00LAkleG1tNCwJJXhtbTQKLSsJdnhvcgl2NSwgdjUsIHY1 CQkjIHZweG9yCQkleG1tNSwJJXhtbTUsCSV4bW01Ci0rCXZ4b3IJdjYsIHY2LCB2NgkJIyB2cHhv cgkJJXhtbTYsCSV4bW02LAkleG1tNgotKwl2eG9yCXY3LCB2NywgdjcJCSMgdnB4b3IJCSV4bW03 LAkleG1tNywJJXhtbTcKLSsKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiwweDE0LDAs MCwwLDAsMAotKwotKyMjCi0rIyMgIC5hZXNfc2NoZWR1bGVfMTkyX3NtZWFyCi0rIyMKLSsjIyAg U21lYXIgdGhlIHNob3J0LCBsb3cgc2lkZSBpbiB0aGUgMTkyLWJpdCBrZXkgc2NoZWR1bGUuCi0r IyMKLSsjIyAgSW5wdXRzOgotKyMjICAgICV4bW03OiBoaWdoIHNpZGUsIGIgIGEgIHggIHkKLSsj IyAgICAleG1tNjogIGxvdyBzaWRlLCBkICBjICAwICAwCi0rIyMgICAgJXhtbTEzOiAwCi0rIyMK LSsjIyAgT3V0cHV0czoKLSsjIyAgICAleG1tNjogYitjK2QgIGIrYyAgMCAgMAotKyMjICAgICV4 bW0wOiBiK2MrZCAgYitjICBiICBhCi0rIyMKLSsuYWxpZ24JNAotK192cGFlc19zY2hlZHVsZV8x OTJfc21lYXI6Ci0rCT92c3BsdHcJdjAsIHY3LCAzCi0rCT92c2xkb2kJdjEsIHY5LCB2NiwgMTIJ CSMgdnBzaHVmZAlcJDB4ODAsCSV4bW02LAkleG1tMQkjIGQgYyAwIDAgLT4gYyAwIDAgMAotKwk/ dnNsZG9pCXYwLCB2NywgdjAsIDgJCSMgdnBzaHVmZAlcJDB4RkUsCSV4bW03LAkleG1tMAkjIGIg YSBfIF8gLT4gYiBiIGIgYQotKwl2eG9yCXY2LCB2NiwgdjEJCSMgdnB4b3IJCSV4bW0xLAkleG1t NiwJJXhtbTYJIyAtPiBjK2QgYyAwIDAKLSsJdnhvcgl2NiwgdjYsIHYwCQkjIHZweG9yCQkleG1t MCwJJXhtbTYsCSV4bW02CSMgLT4gYitjK2QgYitjIGIgYQotKwl2bXIJdjAsIHY2Ci0rCT92c2xk b2kJdjYsIHY2LCB2OSwgOAotKwk/dnNsZG9pCXY2LCB2OSwgdjYsIDgJCSMgY2xvYmJlciBsb3cg c2lkZSB3aXRoIHplcm9zCi0rCWJscgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgxNCwwLDAs MCwwLDAKLSsKLSsjIwotKyMjICAuYWVzX3NjaGVkdWxlX3JvdW5kCi0rIyMKLSsjIyAgUnVucyBv bmUgbWFpbiByb3VuZCBvZiB0aGUga2V5IHNjaGVkdWxlIG9uICV4bW0wLCAleG1tNwotKyMjCi0r IyMgIFNwZWNpZmljYWxseSwgcnVucyBzdWJieXRlcyBvbiB0aGUgaGlnaCBkd29yZCBvZiAleG1t MAotKyMjICB0aGVuIHJvdGF0ZXMgaXQgYnkgb25lIGJ5dGUgYW5kIHhvcnMgaW50byB0aGUgbG93 IGR3b3JkIG9mCi0rIyMgICV4bW03LgotKyMjCi0rIyMgIEFkZHMgcmNvbiBmcm9tIGxvdyBieXRl IG9mICV4bW04LCB0aGVuIHJvdGF0ZXMgJXhtbTggZm9yCi0rIyMgIG5leHQgcmNvbi4KLSsjIwot KyMjICBTbWVhcnMgdGhlIGR3b3JkcyBvZiAleG1tNyBieSB4b3JpbmcgdGhlIGxvdyBpbnRvIHRo ZQotKyMjICBzZWNvbmQgbG93LCByZXN1bHQgaW50byB0aGlyZCwgcmVzdWx0IGludG8gaGlnaGVz dC4KLSsjIwotKyMjICBSZXR1cm5zIHJlc3VsdHMgaW4gJXhtbTcgPSAleG1tMC4KLSsjIyAgQ2xv YmJlcnMgJXhtbTEtJXhtbTQsICVyMTEuCi0rIyMKLSsuYWxpZ24JNAotK192cGFlc19zY2hlZHVs ZV9yb3VuZDoKLSsJIyBleHRyYWN0IHJjb24gZnJvbSB4bW04Ci0rCSN2eG9yCXY0LCB2NCwgdjQJ CSMgdnB4b3IJCSV4bW00LAkleG1tNCwJJXhtbTQKLSsJP3ZzbGRvaQl2MSwgJHJjb24sIHY5LCAx NQkjIHZwYWxpZ25yCVwkMTUsCSV4bW04LAkleG1tNCwJJXhtbTEKLSsJP3ZzbGRvaQkkcmNvbiwg JHJjb24sICRyY29uLCAxNQkjIHZwYWxpZ25yCVwkMTUsCSV4bW04LAkleG1tOCwJJXhtbTgKLSsJ dnhvcgl2NywgdjcsIHYxCQkjIHZweG9yCQkleG1tMSwJJXhtbTcsCSV4bW03Ci0rCi0rCSMgcm90 YXRlCi0rCT92c3BsdHcJdjAsIHYwLCAzCQkjIHZwc2h1ZmQJXCQweEZGLAkleG1tMCwJJXhtbTAK LSsJP3ZzbGRvaQl2MCwgdjAsIHYwLCAxCQkjIHZwYWxpZ25yCVwkMSwJJXhtbTAsCSV4bW0wLAkl eG1tMAotKwotKwkjIGZhbGwgdGhyb3VnaC4uLgotKwotKwkjIGxvdyByb3VuZDogc2FtZSBhcyBo aWdoIHJvdW5kLCBidXQgbm8gcm90YXRpb24gYW5kIG5vIHJjb24uCi0rX3ZwYWVzX3NjaGVkdWxl X2xvd19yb3VuZDoKLSsJIyBzbWVhciB4bW03Ci0rCT92c2xkb2kJdjEsIHY5LCB2NywgMTIJCSMg dnBzbGxkcQlcJDQsCSV4bW03LAkleG1tMQotKwl2eG9yCXY3LCB2NywgdjEJCSMgdnB4b3IJCSV4 bW0xLAkleG1tNywJJXhtbTcKLSsJdnNwbHRpc2IJdjEsIDB4MGYJIyAweDBmLi4wZgotKwk/dnNs ZG9pCXY0LCB2OSwgdjcsIDgJCSMgdnBzbGxkcQlcJDgsCSV4bW03LAkleG1tNAotKwotKwkjIHN1 YmJ5dGVzCi0rCXZhbmQJdjEsIHYxLCB2MAkJIyB2cGFuZAkJJXhtbTksCSV4bW0wLAkleG1tMQkJ IyAwID0gawotKwl2c3JiCXYwLCB2MCwgdjgJCSMgdnBzcmxiCVwkNCwJJXhtbTAsCSV4bW0wCQkj IDEgPSBpCi0rCSB2eG9yCXY3LCB2NywgdjQJCSMgdnB4b3IJCSV4bW00LAkleG1tNywJJXhtbTcK LSsJdnBlcm0JdjIsICRpbnZoaSwgdjksIHYxCSMgdnBzaHVmYgkleG1tMSwJJXhtbTExLAkleG1t MgkJIyAyID0gYS9rCi0rCXZ4b3IJdjEsIHYxLCB2MAkJIyB2cHhvcgkJJXhtbTAsCSV4bW0xLAkl eG1tMQkJIyAwID0gagotKwl2cGVybQl2MywgJGludmxvLCB2OSwgdjAJIyB2cHNodWZiCSV4bW0w LCAJJXhtbTEwLAkleG1tMwkJIyAzID0gMS9pCi0rCXZ4b3IJdjMsIHYzLCB2MgkJIyB2cHhvcgkJ JXhtbTIsCSV4bW0zLAkleG1tMwkJIyAzID0gaWFrID0gMS9pICsgYS9rCi0rCXZwZXJtCXY0LCAk aW52bG8sIHY5LCB2MQkjIHZwc2h1ZmIJJXhtbTEsCSV4bW0xMCwJJXhtbTQJCSMgNCA9IDEvagot Kwkgdnhvcgl2NywgdjcsIHYyNgkJIyB2cHhvcgkJLkxrX3M2MyglcmlwKSwJJXhtbTcsCSV4bW03 Ci0rCXZwZXJtCXYzLCAkaW52bG8sIHY5LCB2MwkjIHZwc2h1ZmIJJXhtbTMsCSV4bW0xMCwJJXht bTMJCSMgMiA9IDEvaWFrCi0rCXZ4b3IJdjQsIHY0LCB2MgkJIyB2cHhvcgkJJXhtbTIsCSV4bW00 LAkleG1tNAkJIyA0ID0gamFrID0gMS9qICsgYS9rCi0rCXZwZXJtCXYyLCAkaW52bG8sIHY5LCB2 NAkjIHZwc2h1ZmIJJXhtbTQsCSV4bW0xMCwJJXhtbTIJCSMgMyA9IDEvamFrCi0rCXZ4b3IJdjMs IHYzLCB2MQkJIyB2cHhvcgkJJXhtbTEsCSV4bW0zLAkleG1tMwkJIyAyID0gaW8KLSsJdnhvcgl2 MiwgdjIsIHYwCQkjIHZweG9yCQkleG1tMCwJJXhtbTIsCSV4bW0yCQkjIDMgPSBqbwotKwl2cGVy bQl2NCwgdjE1LCB2OSwgdjMJCSMgdnBzaHVmYgkleG1tMywJJXhtbTEzLAkleG1tNAkJIyA0ID0g c2JvdQotKwl2cGVybQl2MSwgdjE0LCB2OSwgdjIJCSMgdnBzaHVmYgkleG1tMiwJJXhtbTEyLAkl eG1tMQkJIyAwID0gc2IxdAotKwl2eG9yCXYxLCB2MSwgdjQJCSMgdnB4b3IJCSV4bW00LAkleG1t MSwJJXhtbTEJCSMgMCA9IHNib3ggb3V0cHV0Ci0rCi0rCSMgYWRkIGluIHNtZWFyZWQgc3R1ZmYK LSsJdnhvcgl2MCwgdjEsIHY3CQkjIHZweG9yCQkleG1tNywJJXhtbTEsCSV4bW0wCi0rCXZ4b3IJ djcsIHYxLCB2NwkJIyB2bW92ZHFhCSV4bW0wLAkleG1tNwotKwlibHIKLSsJLmxvbmcJMAotKwku Ynl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0rCi0rIyMKLSsjIyAgLmFlc19zY2hlZHVsZV90cmFu c2Zvcm0KLSsjIwotKyMjICBMaW5lYXItdHJhbnNmb3JtICV4bW0wIGFjY29yZGluZyB0byB0YWJs ZXMgYXQgKCVyMTEpCi0rIyMKLSsjIyAgUmVxdWlyZXMgdGhhdCAleG1tOSA9IDB4MEYwRi4uLiBh cyBpbiBwcmVoZWF0Ci0rIyMgIE91dHB1dCBpbiAleG1tMAotKyMjICBDbG9iYmVycyAleG1tMgot KyMjCi0rLmFsaWduCTQKLStfdnBhZXNfc2NoZWR1bGVfdHJhbnNmb3JtOgotKwkjdmFuZAl2MSwg djAsIHY5CQkjIHZwYW5kCQkleG1tOSwJJXhtbTAsCSV4bW0xCi0rCXZzcmIJdjIsIHYwLCB2OAkJ IyB2cHNybGIJXCQ0LAkleG1tMCwJJXhtbTAKLSsJCQkJCSMgdm1vdmRxYQkoJXIxMSksCSV4bW0y IAkjIGxvCi0rCXZwZXJtCXYwLCAkaXB0bG8sICRpcHRsbywgdjAJIyB2cHNodWZiCSV4bW0xLAkl eG1tMiwJJXhtbTIKLSsJCQkJCSMgdm1vdmRxYQkxNiglcjExKSwJJXhtbTEgIyBoaQotKwl2cGVy bQl2MiwgJGlwdGhpLCAkaXB0aGksIHYyCSMgdnBzaHVmYgkleG1tMCwJJXhtbTEsCSV4bW0wCi0r CXZ4b3IJdjAsIHYwLCB2MgkJIyB2cHhvcgkJJXhtbTIsCSV4bW0wLAkleG1tMAotKwlibHIKLSsJ LmxvbmcJMAotKwkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0rCi0rIyMKLSsjIyAgLmFlc19z Y2hlZHVsZV9tYW5nbGUKLSsjIwotKyMjICBNYW5nbGUgeG1tMCBmcm9tIChiYXNpcy10cmFuc2Zv cm1lZCkgc3RhbmRhcmQgdmVyc2lvbgotKyMjICB0byBvdXIgdmVyc2lvbi4KLSsjIwotKyMjICBP biBlbmNyeXB0LAotKyMjICAgIHhvciB3aXRoIDB4NjMKLSsjIyAgICBtdWx0aXBseSBieSBjaXJj dWxhbnQgMCwxLDEsMQotKyMjICAgIGFwcGx5IHNoaWZ0cm93cyB0cmFuc2Zvcm0KLSsjIwotKyMj ICBPbiBkZWNyeXB0LAotKyMjICAgIHhvciB3aXRoIDB4NjMKLSsjIyAgICBtdWx0aXBseSBieSAi aW52ZXJzZSBtaXhjb2x1bW5zIiBjaXJjdWxhbnQgRSxCLEQsOQotKyMjICAgIGRlc2tldwotKyMj ICAgIGFwcGx5IHNoaWZ0cm93cyB0cmFuc2Zvcm0KLSsjIwotKyMjCi0rIyMgIFdyaXRlcyBvdXQg dG8gKCVyZHgpLCBhbmQgaW5jcmVtZW50cyBvciBkZWNyZW1lbnRzIGl0Ci0rIyMgIEtlZXBzIHRy YWNrIG9mIHJvdW5kIG51bWJlciBtb2QgNCBpbiAlcjgKLSsjIyAgUHJlc2VydmVzIHhtbTAKLSsj IyAgQ2xvYmJlcnMgeG1tMS14bW01Ci0rIyMKLSsuYWxpZ24JNAotK192cGFlc19zY2hlZHVsZV9t YW5nbGU6Ci0rCSN2bXIJdjQsIHYwCQkJIyB2bW92ZHFhCSV4bW0wLAkleG1tNAkjIHNhdmUgeG1t MCBmb3IgbGF0ZXIKLSsJCQkJCSMgdm1vdmRxYQkuTGtfbWNfZm9yd2FyZCglcmlwKSwleG1tNQot KwlibmUJJGRpciwgTHNjaGVkdWxlX21hbmdsZV9kZWMKLSsKLSsJIyBlbmNyeXB0aW5nCi0rCXZ4 b3IJdjQsIHYwLCB2MjYJCSMgdnB4b3IJLkxrX3M2MyglcmlwKSwJJXhtbTAsCSV4bW00Ci0rCWFk ZGkJJG91dCwgJG91dCwgMTYJCSMgYWRkCVwkMTYsCSVyZHgKLSsJdnBlcm0JdjQsIHY0LCB2NCwg djI1CQkjIHZwc2h1ZmIJJXhtbTUsCSV4bW00LAkleG1tNAotKwl2cGVybQl2MSwgdjQsIHY0LCB2 MjUJCSMgdnBzaHVmYgkleG1tNSwJJXhtbTQsCSV4bW0xCi0rCXZwZXJtCXYzLCB2MSwgdjEsIHYy NQkJIyB2cHNodWZiCSV4bW01LAkleG1tMSwJJXhtbTMKLSsJdnhvcgl2NCwgdjQsIHYxCQkjIHZw eG9yCQkleG1tMSwJJXhtbTQsCSV4bW00Ci0rCWx2eAl2MSwgcjgsIHIxMAkJIyB2bW92ZHFhCSgl cjgsJXIxMCksCSV4bW0xCi0rCXZ4b3IJdjMsIHYzLCB2NAkJIyB2cHhvcgkJJXhtbTQsCSV4bW0z LAkleG1tMwotKwotKwl2cGVybQl2MywgdjMsIHYzLCB2MQkJIyB2cHNodWZiCSV4bW0xLAkleG1t MywJJXhtbTMKLSsJYWRkaQlyOCwgcjgsIC0xNgkJIyBhZGQJXCQtMTYsCSVyOAotKwlhbmRpLgly OCwgcjgsIDB4MzAJCSMgYW5kCVwkMHgzMCwJJXI4Ci0rCi0rCSNzdHZ4CXYzLCAwLCAkb3V0CQkj IHZtb3ZkcXUJJXhtbTMsCSglcmR4KQotKwl2cGVybQl2MSwgdjMsIHYzLCAkb3V0cGVybQkjIHJv dGF0ZSByaWdodC9sZWZ0Ci0rCXZzZWwJdjIsICRvdXRoZWFkLCB2MSwgJG91dG1hc2sKLSsJdm1y CSRvdXRoZWFkLCB2MQotKwlzdHZ4CXYyLCAwLCAkb3V0Ci0rCWJscgotKwotKy5hbGlnbgk0Ci0r THNjaGVkdWxlX21hbmdsZV9kZWM6Ci0rCSMgaW52ZXJzZSBtaXggY29sdW1ucwotKwkJCQkJIyBs ZWEJLkxrX2Rrc2QoJXJpcCksJXIxMQotKwl2c3JiCXYxLCB2MCwgdjgJCSMgdnBzcmxiCVwkNCwJ JXhtbTQsCSV4bW0xCSMgMSA9IGhpCi0rCSNhbmQJdjQsIHYwLCB2OQkJIyB2cGFuZAkJJXhtbTks CSV4bW00LAkleG1tNAkjIDQgPSBsbwotKwotKwkJCQkJIyB2bW92ZHFhCTB4MDAoJXIxMSksCSV4 bW0yCi0rCXZwZXJtCXYyLCB2MTYsIHYxNiwgdjAJIyB2cHNodWZiCSV4bW00LAkleG1tMiwJJXht bTIKLSsJCQkJCSMgdm1vdmRxYQkweDEwKCVyMTEpLAkleG1tMwotKwl2cGVybQl2MywgdjE3LCB2 MTcsIHYxCSMgdnBzaHVmYgkleG1tMSwJJXhtbTMsCSV4bW0zCi0rCXZ4b3IJdjMsIHYzLCB2MgkJ IyB2cHhvcgkJJXhtbTIsCSV4bW0zLAkleG1tMwotKwl2cGVybQl2MywgdjMsIHY5LCB2MjUJCSMg dnBzaHVmYgkleG1tNSwJJXhtbTMsCSV4bW0zCi0rCi0rCQkJCQkjIHZtb3ZkcWEJMHgyMCglcjEx KSwJJXhtbTIKLSsJdnBlcm0JdjIsIHYxOCwgdjE4LCB2MAkjIHZwc2h1ZmIJJXhtbTQsCSV4bW0y LAkleG1tMgotKwl2eG9yCXYyLCB2MiwgdjMJCSMgdnB4b3IJCSV4bW0zLAkleG1tMiwJJXhtbTIK LSsJCQkJCSMgdm1vdmRxYQkweDMwKCVyMTEpLAkleG1tMwotKwl2cGVybQl2MywgdjE5LCB2MTks IHYxCSMgdnBzaHVmYgkleG1tMSwJJXhtbTMsCSV4bW0zCi0rCXZ4b3IJdjMsIHYzLCB2MgkJIyB2 cHhvcgkJJXhtbTIsCSV4bW0zLAkleG1tMwotKwl2cGVybQl2MywgdjMsIHY5LCB2MjUJCSMgdnBz aHVmYgkleG1tNSwJJXhtbTMsCSV4bW0zCi0rCi0rCQkJCQkjIHZtb3ZkcWEJMHg0MCglcjExKSwJ JXhtbTIKLSsJdnBlcm0JdjIsIHYyMCwgdjIwLCB2MAkjIHZwc2h1ZmIJJXhtbTQsCSV4bW0yLAkl eG1tMgotKwl2eG9yCXYyLCB2MiwgdjMJCSMgdnB4b3IJCSV4bW0zLAkleG1tMiwJJXhtbTIKLSsJ CQkJCSMgdm1vdmRxYQkweDUwKCVyMTEpLAkleG1tMwotKwl2cGVybQl2MywgdjIxLCB2MjEsIHYx CSMgdnBzaHVmYgkleG1tMSwJJXhtbTMsCSV4bW0zCi0rCXZ4b3IJdjMsIHYzLCB2MgkJIyB2cHhv cgkJJXhtbTIsCSV4bW0zLAkleG1tMwotKwotKwkJCQkJIyB2bW92ZHFhCTB4NjAoJXIxMSksCSV4 bW0yCi0rCXZwZXJtCXYyLCB2MjIsIHYyMiwgdjAJIyB2cHNodWZiCSV4bW00LAkleG1tMiwJJXht bTIKLSsJdnBlcm0JdjMsIHYzLCB2OSwgdjI1CQkjIHZwc2h1ZmIJJXhtbTUsCSV4bW0zLAkleG1t MwotKwkJCQkJIyB2bW92ZHFhCTB4NzAoJXIxMSksCSV4bW00Ci0rCXZwZXJtCXY0LCB2MjMsIHYy MywgdjEJIyB2cHNodWZiCSV4bW0xLAkleG1tNCwJJXhtbTQKLSsJbHZ4CXYxLCByOCwgcjEwCQkj IHZtb3ZkcWEJKCVyOCwlcjEwKSwJJXhtbTEKLSsJdnhvcgl2MiwgdjIsIHYzCQkjIHZweG9yCQkl eG1tMywJJXhtbTIsCSV4bW0yCi0rCXZ4b3IJdjMsIHY0LCB2MgkJIyB2cHhvcgkJJXhtbTIsCSV4 bW00LAkleG1tMwotKwotKwlhZGRpCSRvdXQsICRvdXQsIC0xNgkJIyBhZGQJXCQtMTYsCSVyZHgK LSsKLSsJdnBlcm0JdjMsIHYzLCB2MywgdjEJCSMgdnBzaHVmYgkleG1tMSwJJXhtbTMsCSV4bW0z Ci0rCWFkZGkJcjgsIHI4LCAtMTYJCSMgYWRkCVwkLTE2LAklcjgKLSsJYW5kaS4JcjgsIHI4LCAw eDMwCQkjIGFuZAlcJDB4MzAsCSVyOAotKwotKwkjc3R2eAl2MywgMCwgJG91dAkJIyB2bW92ZHF1 CSV4bW0zLAkoJXJkeCkKLSsJdnBlcm0JdjEsIHYzLCB2MywgJG91dHBlcm0JIyByb3RhdGUgcmln aHQvbGVmdAotKwl2c2VsCXYyLCAkb3V0aGVhZCwgdjEsICRvdXRtYXNrCi0rCXZtcgkkb3V0aGVh ZCwgdjEKLSsJc3R2eAl2MiwgMCwgJG91dAotKwlibHIKLSsJLmxvbmcJMAotKwkuYnl0ZQkwLDEy LDB4MTQsMCwwLDAsMCwwCi0rCi0rLmdsb2JsCS52cGFlc19zZXRfZW5jcnlwdF9rZXkKLSsuYWxp Z24JNQotKy52cGFlc19zZXRfZW5jcnlwdF9rZXk6Ci0rCSRTVFUJJHNwLC0kRlJBTUUoJHNwKQot KwlsaQlyMTAsYDE1KzYqJFNJWkVfVGAKLSsJbGkJcjExLGAzMSs2KiRTSVpFX1RgCi0rCW1mbHIJ cjAKLSsJbWZzcHIJcjYsIDI1NgkJCSMgc2F2ZSB2cnNhdmUKLSsJc3R2eAl2MjAscjEwLCRzcAot KwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjEscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIK LSsJc3R2eAl2MjIscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjMscjExLCRz cAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjQscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAs MzIKLSsJc3R2eAl2MjUscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MjYscjEw LCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2MjcscjExLCRzcAotKwlhZGRpCXIxMSxy MTEsMzIKLSsJc3R2eAl2MjgscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJc3R2eAl2Mjks cjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJc3R2eAl2MzAscjEwLCRzcAotKwlzdHZ4CXYz MSxyMTEsJHNwCi0rCXN0dwlyNixgJEZSQU1FLTRgKCRzcCkJIyBzYXZlIHZyc2F2ZQotKwlsaQly NywgLTEKLSsJJFBVU0gJcjAsIGAkRlJBTUUrJExSU0FWRWAoJHNwKQotKwltdHNwcgkyNTYsIHI3 CQkJIyBwcmVzZXJ2ZSBhbGwgQWx0aVZlYyByZWdpc3RlcnMKLSsKLSsJc3J3aQlyOSwgJGJpdHMs IDUJCSMgc2hyCVwkNSwlZWF4Ci0rCWFkZGkJcjksIHI5LCA2CQkjIGFkZAlcJDUsJWVheAotKwlz dHcJcjksIDI0MCgkb3V0KQkJIyBtb3YJJWVheCwyNDAoJXJkeCkJIyBBRVNfS0VZLT5yb3VuZHMg PSBuYml0cy8zMis1OwotKwotKwljbXBsdwkkZGlyLCAkYml0cywgJGJpdHMJIyBzZXQgZW5jcnlw dCBkaXJlY3Rpb24KLSsJbGkJcjgsIDB4MzAJCSMgbW92CVwkMHgzMCwlcjhkCi0rCWJsCV92cGFl c19zY2hlZHVsZV9jb3JlCi0rCi0rCSRQT1AJcjAsIGAkRlJBTUUrJExSU0FWRWAoJHNwKQotKwls aQlyMTAsYDE1KzYqJFNJWkVfVGAKLSsJbGkJcjExLGAzMSs2KiRTSVpFX1RgCi0rCW10c3ByCTI1 NiwgcjYJCQkjIHJlc3RvcmUgdnJzYXZlCi0rCW10bHIJcjAKLSsJeG9yCXIzLCByMywgcjMKLSsJ bHZ4CXYyMCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlsdngJdjIxLHIxMSwkc3AKLSsJ YWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjIscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJ bHZ4CXYyMyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjI0LHIxMCwkc3AKLSsJ YWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjUscjExLCRzcAotKwlhZGRpCXIxMSxyMTEsMzIKLSsJ bHZ4CXYyNixyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlsdngJdjI3LHIxMSwkc3AKLSsJ YWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjgscjEwLCRzcAotKwlhZGRpCXIxMCxyMTAsMzIKLSsJ bHZ4CXYyOSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjMwLHIxMCwkc3AKLSsJ bHZ4CXYzMSxyMTEsJHNwCi0rCWFkZGkJJHNwLCRzcCwkRlJBTUUKLSsJYmxyCi0rCS5sb25nCTAK LSsJLmJ5dGUJMCwxMiwweDA0LDEsMHg4MCwwLDMsMAotKwkubG9uZwkwCi0rLnNpemUJLnZwYWVz X3NldF9lbmNyeXB0X2tleSwuLS52cGFlc19zZXRfZW5jcnlwdF9rZXkKLSsKLSsuZ2xvYmwJLnZw YWVzX3NldF9kZWNyeXB0X2tleQotKy5hbGlnbgk0Ci0rLnZwYWVzX3NldF9kZWNyeXB0X2tleToK LSsJJFNUVQkkc3AsLSRGUkFNRSgkc3ApCi0rCWxpCXIxMCxgMTUrNiokU0laRV9UYAotKwlsaQly MTEsYDMxKzYqJFNJWkVfVGAKLSsJbWZscglyMAotKwltZnNwcglyNiwgMjU2CQkJIyBzYXZlIHZy c2F2ZQotKwlzdHZ4CXYyMCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlzdHZ4CXYyMSxy MTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlzdHZ4CXYyMixyMTAsJHNwCi0rCWFkZGkJcjEw LHIxMCwzMgotKwlzdHZ4CXYyMyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlzdHZ4CXYy NCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlzdHZ4CXYyNSxyMTEsJHNwCi0rCWFkZGkJ cjExLHIxMSwzMgotKwlzdHZ4CXYyNixyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlzdHZ4 CXYyNyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlzdHZ4CXYyOCxyMTAsJHNwCi0rCWFk ZGkJcjEwLHIxMCwzMgotKwlzdHZ4CXYyOSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlz dHZ4CXYzMCxyMTAsJHNwCi0rCXN0dngJdjMxLHIxMSwkc3AKLSsJc3R3CXI2LGAkRlJBTUUtNGAo JHNwKQkjIHNhdmUgdnJzYXZlCi0rCWxpCXI3LCAtMQotKwkkUFVTSAlyMCwgYCRGUkFNRSskTFJT QVZFYCgkc3ApCi0rCW10c3ByCTI1NiwgcjcJCQkjIHByZXNlcnZlIGFsbCBBbHRpVmVjIHJlZ2lz dGVycwotKwotKwlzcndpCXI5LCAkYml0cywgNQkJIyBzaHIJXCQ1LCVlYXgKLSsJYWRkaQlyOSwg cjksIDYJCSMgYWRkCVwkNSwlZWF4Ci0rCXN0dwlyOSwgMjQwKCRvdXQpCQkjIG1vdgklZWF4LDI0 MCglcmR4KQkjIEFFU19LRVktPnJvdW5kcyA9IG5iaXRzLzMyKzU7Ci0rCi0rCXNsd2kJcjksIHI5 LCA0CQkjIHNobAlcJDQsJWVheAotKwlhZGQJJG91dCwgJG91dCwgcjkJCSMgbGVhCSglcmR4LCVy YXgpLCVyZHgKLSsKLSsJY21wbHdpCSRkaXIsICRiaXRzLCAwCQkjIHNldCBkZWNyeXB0IGRpcmVj dGlvbgotKwlzcndpCXI4LCAkYml0cywgMQkJIyBzaHIJXCQxLCVyOGQKLSsJYW5kaS4JcjgsIHI4 LCAzMgkJIyBhbmQJXCQzMiwlcjhkCi0rCXhvcmkJcjgsIHI4LCAzMgkJIyB4b3IJXCQzMiwlcjhk CSMgbmJpdHM9PTE5Mj8wOjMyCi0rCWJsCV92cGFlc19zY2hlZHVsZV9jb3JlCi0rCi0rCSRQT1AJ cjAsICBgJEZSQU1FKyRMUlNBVkVgKCRzcCkKLSsJbGkJcjEwLGAxNSs2KiRTSVpFX1RgCi0rCWxp CXIxMSxgMzErNiokU0laRV9UYAotKwltdHNwcgkyNTYsIHI2CQkJIyByZXN0b3JlIHZyc2F2ZQot KwltdGxyCXIwCi0rCXhvcglyMywgcjMsIHIzCi0rCWx2eAl2MjAscjEwLCRzcAotKwlhZGRpCXIx MCxyMTAsMzIKLSsJbHZ4CXYyMSxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjIy LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjMscjExLCRzcAotKwlhZGRpCXIx MSxyMTEsMzIKLSsJbHZ4CXYyNCxyMTAsJHNwCi0rCWFkZGkJcjEwLHIxMCwzMgotKwlsdngJdjI1 LHIxMSwkc3AKLSsJYWRkaQlyMTEscjExLDMyCi0rCWx2eAl2MjYscjEwLCRzcAotKwlhZGRpCXIx MCxyMTAsMzIKLSsJbHZ4CXYyNyxyMTEsJHNwCi0rCWFkZGkJcjExLHIxMSwzMgotKwlsdngJdjI4 LHIxMCwkc3AKLSsJYWRkaQlyMTAscjEwLDMyCi0rCWx2eAl2MjkscjExLCRzcAotKwlhZGRpCXIx MSxyMTEsMzIKLSsJbHZ4CXYzMCxyMTAsJHNwCi0rCWx2eAl2MzEscjExLCRzcAotKwlhZGRpCSRz cCwkc3AsJEZSQU1FCi0rCWJscgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgwNCwxLDB4ODAs MCwzLDAKLSsJLmxvbmcJMAotKy5zaXplCS52cGFlc19zZXRfZGVjcnlwdF9rZXksLi0udnBhZXNf c2V0X2RlY3J5cHRfa2V5Ci0rX19fCi0rfQotKwotK215ICRjb25zdHM9MTsKLStmb3JlYWNoICAo c3BsaXQoIlxuIiwkY29kZSkpIHsKLSsJcy9cYChbXlxgXSopXGAvZXZhbCAkMS9nZW87Ci0rCi0r CSMgY29uc3RhbnRzIHRhYmxlIGVuZGlhbi1zcGVjaWZpYyBjb252ZXJzaW9uCi0rCWlmICgkY29u c3RzICYmIG0vXC5sb25nXHMrKC4rKVxzKyhcP1thLXpdKikkL28pIHsKLSsJICAgIG15ICRjb252 PSQyOwotKwkgICAgbXkgQGJ5dGVzPSgpOwotKwotKwkgICAgIyBjb252ZXJ0IHRvIGVuZGlhbi1h Z25vc3RpYyBmb3JtYXQKLSsJICAgIGZvcmVhY2ggKHNwbGl0KC8sXHMrLywkMSkpIHsKLSsJCW15 ICRsID0gL14wLz9vY3Q6aW50OwotKwkJcHVzaCBAYnl0ZXMsKCRsPj4yNCkmMHhmZiwoJGw+PjE2 KSYweGZmLCgkbD4+OCkmMHhmZiwkbCYweGZmOwotKwkgICAgfQotKwotKwkgICAgIyBsaXR0bGUt ZW5kaWFuIGNvbnZlcnNpb24KLSsJICAgIGlmICgkZmxhdm91ciA9fiAvbGUkL28pIHsKLSsJCVNX SVRDSDogZm9yKCRjb252KSAgewotKwkJICAgIC9cP2ludi8gJiYgZG8gICB7IEBieXRlcz1tYXAo JF9eMHhmLEBieXRlcyk7IGxhc3Q7IH07Ci0rCQkgICAgL1w/cmV2LyAmJiBkbyAgIHsgQGJ5dGVz PXJldmVyc2UoQGJ5dGVzKTsgICAgbGFzdDsgfTsgCi0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgICAj ZW1pdAotKwkgICAgcHJpbnQgIi5ieXRlXHQiLGpvaW4oJywnLG1hcCAoc3ByaW50ZigiMHglMDJ4 IiwkXyksQGJ5dGVzKSksIlxuIjsKLSsJICAgIG5leHQ7Ci0rCX0KLSsJJGNvbnN0cz0wIGlmICht L0xjb25zdHM6L28pOwkjIGVuZCBvZiB0YWJsZQotKwotKwkjIGluc3RydWN0aW9ucyBwcmVmaXhl ZCB3aXRoICc/JyBhcmUgZW5kaWFuLXNwZWNpZmljIGFuZCBuZWVkCi0rCSMgdG8gYmUgYWRqdXN0 ZWQgYWNjb3JkaW5nbHkuLi4KLSsJaWYgKCRmbGF2b3VyID1+IC9sZSQvbykgewkjIGxpdHRsZS1l bmRpYW4KLSsJICAgIHMvXD9sdnNyL2x2c2wvbyBvcgotKwkgICAgcy9cP2x2c2wvbHZzci9vIG9y Ci0rCSAgICBzL1w/KHZwZXJtXHMrdlswLTldKyxccyopKHZbMC05XSssXHMqKSh2WzAtOV0rLFxz KikodlswLTldKykvJDEkMyQyJDQvbyBvcgotKwkgICAgcy9cPyh2c2xkb2lccyt2WzAtOV0rLFxz KikodlswLTldKywpXHMqKHZbMC05XSssXHMqKShbMC05XSspLyQxJDMkMiAxNi0kNC9vIG9yCi0r CSAgICBzL1w/KHZzcGx0d1xzK3ZbMC05XSssXHMqKSh2WzAtOV0rLClccyooWzAtOV0pLyQxJDIg My0kMy9vOwotKwl9IGVsc2UgewkJCSMgYmlnLWVuZGlhbgotKwkgICAgcy9cPyhbYS16XSspLyQx L287Ci0rCX0KLSsKLSsJcHJpbnQgJF8sIlxuIjsKLSt9Ci0rCi0rY2xvc2UgU1RET1VUOwotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2Flcy9NYWtlZmlsZS5wcGMtYXNtIG9wZW5zc2wt MS4wLjFpL2NyeXB0by9hZXMvTWFrZWZpbGUKLS0tLSBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYWVz L01ha2VmaWxlLnBwYy1hc20JMjAxNC0wOC0wNiAyMzoxODozMS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYWVzL01ha2VmaWxlCTIwMTQtMDgtMTMgMTk6NDY6MjEu MDkyNTc4MTA0ICswMjAwCi1AQCAtNzEsNiArNzEsMTAgQEAgYWVzLXNwYXJjdjkuczogYXNtL2Fl cy1zcGFyY3Y5LnBsCi0gCi0gYWVzLXBwYy5zOglhc20vYWVzLXBwYy5wbAotIAkkKFBFUkwpIGFz bS9hZXMtcHBjLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACi0rdnBhZXMtcHBjLnM6CWFzbS92cGFl cy1wcGMucGwKLSsJJChQRVJMKSBhc20vdnBhZXMtcHBjLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRA Ci0rYWVzcDgtcHBjLnM6CWFzbS9hZXNwOC1wcGMucGwKLSsJJChQRVJMKSBhc20vYWVzcDgtcHBj LnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACi0gCi0gYWVzLXBhcmlzYy5zOglhc20vYWVzLXBhcmlz Yy5wbAotIAkkKFBFUkwpIGFzbS9hZXMtcGFyaXNjLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACi1k aWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYm4vYXNtL3BwYy1tb250LnBsLnBwYy1hc20g b3BlbnNzbC0xLjAuMWkvY3J5cHRvL2JuL2FzbS9wcGMtbW9udC5wbAotLS0tIG9wZW5zc2wtMS4w LjFpL2NyeXB0by9ibi9hc20vcHBjLW1vbnQucGwucHBjLWFzbQkyMDE0LTA4LTA2IDIzOjEwOjU2 LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9ibi9hc20vcHBjLW1v bnQucGwJMjAxNC0wOC0xMyAxOTo0NjoyMS4wOTM1NzgxMjggKzAyMDAKLUBAIC0zMjUsNiArMzI1 LDcgQEAgTGNvcHk6CQkJCTsgY29weSBvciBpbi1wbGFjZSByZWZyZXNoCi0gCS5sb25nCTAKLSAJ LmJ5dGUJMCwxMiw0LDAsMHg4MCwxMiw2LDAKLSAJLmxvbmcJMAotKy5zaXplCS5ibl9tdWxfbW9u dF9pbnQsLi0uYm5fbXVsX21vbnRfaW50Ci0gCi0gLmFzY2l6ICAiTW9udGdvbWVyeSBNdWx0aXBs aWNhdGlvbiBmb3IgUFBDLCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgotIF9f XwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2JuL2FzbS9wcGMucGwucHBjLWFzbSBv cGVuc3NsLTEuMC4xaS9jcnlwdG8vYm4vYXNtL3BwYy5wbAotLS0tIG9wZW5zc2wtMS4wLjFpL2Ny eXB0by9ibi9hc20vcHBjLnBsLnBwYy1hc20JMjAxNC0wOC0wNiAyMzoxMDo1Ni4wMDAwMDAwMDAg KzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYm4vYXNtL3BwYy5wbAkyMDE0LTA4LTEz IDE5OjQ2OjIxLjA5NDU3ODE1MSArMDIwMAotQEAgLTM5Miw2ICszOTIsNyBAQCAkZGF0YT08PEVP RjsKLSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMiwwCi0gCS5sb25nCTAKLSsu c2l6ZQkuYm5fc3FyX2NvbWJhNCwuLS5ibl9zcXJfY29tYmE0Ci0gCi0gIwotICMJTk9URToJVGhl IGZvbGxvd2luZyBsYWJlbCBuYW1lIHNob3VsZCBiZSBjaGFuZ2VkIHRvCi1AQCAtODE5LDYgKzgy MCw3IEBAICRkYXRhPTw8RU9GOwotIAkubG9uZwkwCi0gCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwy LDAKLSAJLmxvbmcJMAotKy5zaXplCS5ibl9zcXJfY29tYmE4LC4tLmJuX3Nxcl9jb21iYTgKLSAK LSAjCi0gIwlOT1RFOglUaGUgZm9sbG93aW5nIGxhYmVsIG5hbWUgc2hvdWxkIGJlIGNoYW5nZWQg dG8KLUBAIC05NzIsNiArOTc0LDcgQEAgJGRhdGE9PDxFT0Y7Ci0gCS5sb25nCTAKLSAJLmJ5dGUJ MCwxMiwweDE0LDAsMCwwLDMsMAotIAkubG9uZwkwCi0rLnNpemUJLmJuX211bF9jb21iYTQsLi0u Ym5fbXVsX2NvbWJhNAotIAotICMKLSAjCU5PVEU6CVRoZSBmb2xsb3dpbmcgbGFiZWwgbmFtZSBz aG91bGQgYmUgY2hhbmdlZCB0bwotQEAgLTE1MTAsNiArMTUxMyw3IEBAICRkYXRhPTw8RU9GOwot IAkubG9uZwkwCi0gCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwzLDAKLSAJLmxvbmcJMAotKy5zaXpl CS5ibl9tdWxfY29tYmE4LC4tLmJuX211bF9jb21iYTgKLSAKLSAjCi0gIwlOT1RFOglUaGUgZm9s bG93aW5nIGxhYmVsIG5hbWUgc2hvdWxkIGJlIGNoYW5nZWQgdG8KLUBAIC0xNTYwLDYgKzE1NjQs NyBAQCBMcHBjYXNtX3N1Yl9hZGlvczoKLSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEyLDB4MTQsMCww LDAsNCwwCi0gCS5sb25nCTAKLSsuc2l6ZQkuYm5fc3ViX3dvcmRzLC4tLmJuX3N1Yl93b3Jkcwot IAotICMKLSAjCU5PVEU6CVRoZSBmb2xsb3dpbmcgbGFiZWwgbmFtZSBzaG91bGQgYmUgY2hhbmdl ZCB0bwotQEAgLTE2MDUsNiArMTYxMCw3IEBAIExwcGNhc21fYWRkX2FkaW9zOgotIAkubG9uZwkw Ci0gCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCw0LDAKLSAJLmxvbmcJMAotKy5zaXplCS5ibl9hZGRf d29yZHMsLi0uYm5fYWRkX3dvcmRzCi0gCi0gIwotICMJTk9URToJVGhlIGZvbGxvd2luZyBsYWJl bCBuYW1lIHNob3VsZCBiZSBjaGFuZ2VkIHRvCi1AQCAtMTcyMCw2ICsxNzI2LDcgQEAgTHBwY2Fz bV9kaXY5OgotIAkubG9uZwkwCi0gCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwzLDAKLSAJLmxvbmcJ MAotKy5zaXplCS5ibl9kaXZfd29yZHMsLi0uYm5fZGl2X3dvcmRzCi0gCi0gIwotICMJTk9URToJ VGhlIGZvbGxvd2luZyBsYWJlbCBuYW1lIHNob3VsZCBiZSBjaGFuZ2VkIHRvCi1AQCAtMTc2MSw2 ICsxNzY4LDcgQEAgTHBwY2FzbV9zcXJfYWRpb3M6Ci0gCS5sb25nCTAKLSAJLmJ5dGUJMCwxMiww eDE0LDAsMCwwLDMsMAotIAkubG9uZwkwCi0rLnNpemUJLmJuX3Nxcl93b3JkcywuLS5ibl9zcXJf d29yZHMKLSAKLSAjCi0gIwlOT1RFOglUaGUgZm9sbG93aW5nIGxhYmVsIG5hbWUgc2hvdWxkIGJl IGNoYW5nZWQgdG8KLUBAIC0xODY2LDYgKzE4NzQsNyBAQCBMcHBjYXNtX213X09WRVI6Ci0gCS5s b25nCTAKLSAJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDQsMAotIAkubG9uZwkwCi0rLnNpemUJYm5f bXVsX3dvcmRzLC4tYm5fbXVsX3dvcmRzCi0gCi0gIwotICMJTk9URToJVGhlIGZvbGxvd2luZyBs YWJlbCBuYW1lIHNob3VsZCBiZSBjaGFuZ2VkIHRvCi1AQCAtMTk5MSw2ICsyMDAwLDcgQEAgTHBw Y2FzbV9tYXdfYWRpb3M6Ci0gCS5sb25nCTAKLSAJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDQsMAot IAkubG9uZwkwCi0rLnNpemUJLmJuX211bF9hZGRfd29yZHMsLi0uYm5fbXVsX2FkZF93b3Jkcwot IAkuYWxpZ24JNAotIEVPRgotICRkYXRhID1+IHMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VtOwot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2JuL2FzbS9wcGM2NC1tb250LnBsLnBwYy1h c20gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL2JuL2FzbS9wcGM2NC1tb250LnBsCi0tLS0gb3BlbnNz bC0xLjAuMWkvY3J5cHRvL2JuL2FzbS9wcGM2NC1tb250LnBsLnBwYy1hc20JMjAxNC0wOC0wNiAy MzoxMDo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vYm4vYXNt L3BwYzY0LW1vbnQucGwJMjAxNC0wOC0xMyAxOTo0NjoyMS4wOTQ1NzgxNTEgKzAyMDAKLUBAIC0x LDcgKzEsNyBAQAotICMhL3Vzci9iaW4vZW52IHBlcmwKLSAKLSAjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tIyBX cml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9w ZW5TU0wKLSsjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZv ciB0aGUgT3BlblNTTAotICMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBs aWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAotICMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRp bmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKLSAjIGRldGFpbHMgc2VlIGh0 dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgotQEAgLTY1LDYgKzY1LDE0 IEBACi0gIyBvdGhlcnMgYWx0ZXJuYXRpdmUgd291bGQgYmUgdG8gYnJlYWsgZGVwZW5kZW5jZSBv biB1cHBlciBoYWx2ZXMgb2YKLSAjIEdQUnMgYnkgc3RpY2tpbmcgdG8gMzItYml0IGludGVnZXIg b3BlcmF0aW9ucy4uLgotIAotKyMgRGVjZW1iZXIgMjAxMgotKwotKyMgUmVtb3ZlIGFib3ZlIG1l bnRpb25lZCBkZXBlbmRlbmNlIG9uIEdQUnMnIHVwcGVyIGhhbHZlcyBpbiAzMi1iaXQKLSsjIGJ1 aWxkLiBObyBzaWduYWwgbWFza2luZyBvdmVyaGVhZCwgYnV0IGludGVnZXIgaW5zdHJ1Y3Rpb25z IGFyZQotKyMgKm1vcmUqIG51bWVyb3VzLi4uIEl0J3Mgc3RpbGwgInVuaXZlcnNhbGx5IiBmYXN0 ZXIgdGhhbiAzMi1iaXQKLSsjIHBwYy1tb250LnBsLCBidXQgaW1wcm92ZW1lbnQgY29lZmZpY2ll bnQgaXMgbm90IGFzIGltcHJlc3NpdmUKLSsjIGZvciBsb25nZXIga2V5cy4uLgotKwotICRmbGF2 b3VyID0gc2hpZnQ7Ci0gCi0gaWYgKCRmbGF2b3VyID1+IC8zMi8pIHsKLUBAIC0xMTAsNiArMTE4 LDkgQEAgJHRwPSJyMTAiOwotICRqPSJyMTEiOwotICRpPSJyMTIiOwotICMgbm9uLXZvbGF0aWxl IHJlZ2lzdGVycwotKyRjMT0icjE5IjsKLSskbjE9InIyMCI7Ci0rJGExPSJyMjEiOwotICRuYXBf ZD0icjIyIjsJIyBpbnRlcmxlYXZlZCBhcCBhbmQgbnAgaW4gZG91YmxlIGZvcm1hdAotICRhMD0i cjIzIjsJIyBhcFswXQotICR0MD0icjI0IjsJIyB0ZW1wb3JhcnkgcmVnaXN0ZXJzCi1AQCAtMTgw LDggKzE5MSw4IEBAICRUM2E9ImYzMCI7CSRUM2I9ImYzMSI7Ci0gIwkJLgkJCQkuCi0gIwkJKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIwkJLgkJCQkuCi0tIyAgIC0xMipzaXpl X3QJKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0tIwkJfCAxMCBzYXZlZCBncHIs IHIyMi1yMzEJCXwKLSsjICAgLTEzKnNpemVfdAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKLSsjCQl8IDEzIHNhdmVkIGdwciwgcjE5LXIzMQkJfAotICMJCS4JCQkJLgotICMJCS4J CQkJLgotICMgICAtMTIqOAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLUBAIC0y MTUsNiArMjI2LDkgQEAgJGNvZGU9PDxfX187Ci0gCW1yCSRpLCRzcAotIAkkU1RVWAkkc3AsJHNw LCR0cAk7IGFsbG9jYQotIAotKwkkUFVTSAlyMTksYC0xMio4LTEzKiRTSVpFX1RgKCRpKQotKwkk UFVTSAlyMjAsYC0xMio4LTEyKiRTSVpFX1RgKCRpKQotKwkkUFVTSAlyMjEsYC0xMio4LTExKiRT SVpFX1RgKCRpKQotIAkkUFVTSAlyMjIsYC0xMio4LTEwKiRTSVpFX1RgKCRpKQotIAkkUFVTSAly MjMsYC0xMio4LTkqJFNJWkVfVGAoJGkpCi0gCSRQVVNICXIyNCxgLTEyKjgtOCokU0laRV9UYCgk aSkKLUBAIC0yMzcsNDAgKzI1MSwyNiBAQCAkY29kZT08PF9fXzsKLSAJc3RmZAlmMjksYC0zKjhg KCRpKQotIAlzdGZkCWYzMCxgLTIqOGAoJGkpCi0gCXN0ZmQJZjMxLGAtMSo4YCgkaSkKLS1fX18K LS0kY29kZS49PDxfX18gaWYgKCRTSVpFX1Q9PTgpOwotLQlsZAkkYTAsMCgkYXApCTsgcHVsbCBh cFswXSB2YWx1ZQotLQlsZAkkbjAsMCgkbjApCTsgcHVsbCBuMFswXSB2YWx1ZQotLQlsZAkkdDMs MCgkYnApCTsgYnBbMF0KLS1fX18KLS0kY29kZS49PDxfX18gaWYgKCRTSVpFX1Q9PTQpOwotLQlt cgkkdDEsJG4wCi0tCWx3egkkYTAsMCgkYXApCTsgcHVsbCBhcFswLDFdIHZhbHVlCi0tCWx3egkk dDAsNCgkYXApCi0tCWx3egkkbjAsMCgkdDEpCTsgcHVsbCBuMFswLDFdIHZhbHVlCi0tCWx3egkk dDEsNCgkdDEpCi0tCWx3egkkdDMsMCgkYnApCTsgYnBbMCwxXQotLQlsd3oJJHQyLDQoJGJwKQot LQlpbnNyZGkJJGEwLCR0MCwzMiwwCi0tCWluc3JkaQkkbjAsJHQxLDMyLDAKLS0JaW5zcmRpCSR0 MywkdDIsMzIsMAotLV9fXwotLSRjb2RlLj08PF9fXzsKLSsKLSAJYWRkaQkkdHAsJHNwLGAkRlJB TUUrJFRSQU5TRkVSKzgrNjRgCi0gCWxpCSRpLC02NAotIAlhZGQJJG5hcF9kLCR0cCwkbnVtCi0g CWFuZAkkbmFwX2QsJG5hcF9kLCRpCTsgYWxpZ24gdG8gNjQgYnl0ZXMKLS0MCi0tCW11bGxkCSR0 NywkYTAsJHQzCTsgYXBbMF0qYnBbMF0KLSAJOyBuYXBfZCBpcyBvZmYgYnkgMSwgYmVjYXVzZSBp dCdzIHVzZWQgd2l0aCBzdGZkdS9sZmR1Ci0gCWFkZGkJJG5hcF9kLCRuYXBfZCwtOAotIAlzcndp CSRqLCRudW0sYDMrMWAJOyBjb3VudGVyIHJlZ2lzdGVyLCBudW0vMgotLQltdWxsZAkkdDcsJHQ3 LCRuMAk7IHRwWzBdKm4wCi0gCWFkZGkJJGosJGosLTEKLSAJYWRkaQkkdHAsJHNwLGAkRlJBTUUr JFRSQU5TRkVSLThgCi0gCWxpCSRjYXJyeSwwCi0gCW10Y3RyCSRqCi0rX19fCi0rDAotKyRjb2Rl Lj08PF9fXyBpZiAoJFNJWkVfVD09OCk7Ci0rCWxkCSRhMCwwKCRhcCkJCTsgcHVsbCBhcFswXSB2 YWx1ZQotKwlsZAkkdDMsMCgkYnApCQk7IGJwWzBdCi0rCWxkCSRuMCwwKCRuMCkJCTsgcHVsbCBu MFswXSB2YWx1ZQotIAotKwltdWxsZAkkdDcsJGEwLCR0MwkJOyBhcFswXSpicFswXQotIAk7IHRy YW5zZmVyIGJwWzBdIHRvIEZQVSBhcyA0eDE2LWJpdCB2YWx1ZXMKLSAJZXh0cmRpCSR0MCwkdDMs MTYsNDgKLSAJZXh0cmRpCSR0MSwkdDMsMTYsMzIKLUBAIC0yODAsNiArMjgwLDggQEAgJGNvZGUu PTw8X19fOwotIAlzdGQJJHQxLGAkRlJBTUUrOGAoJHNwKQotIAlzdGQJJHQyLGAkRlJBTUUrMTZg KCRzcCkKLSAJc3RkCSR0MyxgJEZSQU1FKzI0YCgkc3ApCi0rCi0rCW11bGxkCSR0NywkdDcsJG4w CQk7IHRwWzBdKm4wCi0gCTsgdHJhbnNmZXIgKGFwWzBdKmJwWzBdKSpuMCB0byBGUFUgYXMgNHgx Ni1iaXQgdmFsdWVzCi0gCWV4dHJkaQkkdDQsJHQ3LDE2LDQ4Ci0gCWV4dHJkaQkkdDUsJHQ3LDE2 LDMyCi1AQCAtMjg5LDIxICsyOTEsNjEgQEAgJGNvZGUuPTw8X19fOwotIAlzdGQJJHQ1LGAkRlJB TUUrNDBgKCRzcCkKLSAJc3RkCSR0NixgJEZSQU1FKzQ4YCgkc3ApCi0gCXN0ZAkkdDcsYCRGUkFN RSs1NmAoJHNwKQotLV9fXwotLSRjb2RlLj08PF9fXyBpZiAoJFNJWkVfVD09OCk7Ci0tCWx3egkk dDAsNCgkYXApCQk7IGxvYWQgYVtqXSBhcyAzMi1iaXQgd29yZCBwYWlyCi0tCWx3egkkdDEsMCgk YXApCi0tCWx3egkkdDIsMTIoJGFwKQkJOyBsb2FkIGFbaisxXSBhcyAzMi1iaXQgd29yZCBwYWly Ci0rCi0rCWV4dHJkaQkkdDAsJGEwLDMyLDMyCQk7IGx3egkkdDAsNCgkYXApCi0rCWV4dHJkaQkk dDEsJGEwLDMyLDAJCTsgbHd6CSR0MSwwKCRhcCkKLSsJbHd6CSR0MiwxMigkYXApCQk7IGxvYWQg YVsxXSBhcyAzMi1iaXQgd29yZCBwYWlyCi0gCWx3egkkdDMsOCgkYXApCi0tCWx3egkkdDQsNCgk bnApCQk7IGxvYWQgbltqXSBhcyAzMi1iaXQgd29yZCBwYWlyCi0rCWx3egkkdDQsNCgkbnApCQk7 IGxvYWQgblswXSBhcyAzMi1iaXQgd29yZCBwYWlyCi0gCWx3egkkdDUsMCgkbnApCi0tCWx3egkk dDYsMTIoJG5wKQkJOyBsb2FkIG5baisxXSBhcyAzMi1iaXQgd29yZCBwYWlyCi0rCWx3egkkdDYs MTIoJG5wKQkJOyBsb2FkIG5bMV0gYXMgMzItYml0IHdvcmQgcGFpcgotIAlsd3oJJHQ3LDgoJG5w KQotIF9fXwotICRjb2RlLj08PF9fXyBpZiAoJFNJWkVfVD09NCk7Ci0tCWx3egkkdDAsMCgkYXAp CQk7IGxvYWQgYVtqLi5qKzNdIGFzIDMyLWJpdCB3b3JkIHBhaXJzCi0tCWx3egkkdDEsNCgkYXAp Ci0tCWx3egkkdDIsOCgkYXApCi0rCWx3egkkYTAsMCgkYXApCQk7IHB1bGwgYXBbMCwxXSB2YWx1 ZQotKwltcgkkbjEsJG4wCi0rCWx3egkkYTEsNCgkYXApCi0rCWxpCSRjMSwwCi0rCWx3egkkdDEs MCgkYnApCQk7IGJwWzAsMV0KLSsJbHd6CSR0Myw0KCRicCkKLSsJbHd6CSRuMCwwKCRuMSkJCTsg cHVsbCBuMFswLDFdIHZhbHVlCi0rCWx3egkkbjEsNCgkbjEpCi0rCi0rCW11bGx3CSR0NCwkYTAs JHQxCQk7IG11bGxkIGFwWzBdKmJwWzBdCi0rCW11bGh3dQkkdDUsJGEwLCR0MQotKwltdWxsdwkk dDYsJGExLCR0MQotKwltdWxsdwkkdDcsJGEwLCR0MwotKwlhZGQJJHQ1LCR0NSwkdDYKLSsJYWRk CSR0NSwkdDUsJHQ3Ci0rCTsgdHJhbnNmZXIgYnBbMF0gdG8gRlBVIGFzIDR4MTYtYml0IHZhbHVl cwotKwlleHRyd2kJJHQwLCR0MSwxNiwxNgotKwlleHRyd2kJJHQxLCR0MSwxNiwwCi0rCWV4dHJ3 aQkkdDIsJHQzLDE2LDE2Ci0rCWV4dHJ3aQkkdDMsJHQzLDE2LDAKLSsJc3RkCSR0MCxgJEZSQU1F KzBgKCRzcCkJOyB5ZXMsIHN0ZCBpbiAzMi1iaXQgYnVpbGQKLSsJc3RkCSR0MSxgJEZSQU1FKzhg KCRzcCkKLSsJc3RkCSR0MixgJEZSQU1FKzE2YCgkc3ApCi0rCXN0ZAkkdDMsYCRGUkFNRSsyNGAo JHNwKQotKwotKwltdWxsdwkkdDAsJHQ0LCRuMAkJOyBtdWxsZCB0cFswXSpuMAotKwltdWxod3UJ JHQxLCR0NCwkbjAKLSsJbXVsbHcJJHQyLCR0NSwkbjAKLSsJbXVsbHcJJHQzLCR0NCwkbjEKLSsJ YWRkCSR0MSwkdDEsJHQyCi0rCWFkZAkkdDEsJHQxLCR0MwotKwk7IHRyYW5zZmVyIChhcFswXSpi cFswXSkqbjAgdG8gRlBVIGFzIDR4MTYtYml0IHZhbHVlcwotKwlleHRyd2kJJHQ0LCR0MCwxNiwx NgotKwlleHRyd2kJJHQ1LCR0MCwxNiwwCi0rCWV4dHJ3aQkkdDYsJHQxLDE2LDE2Ci0rCWV4dHJ3 aQkkdDcsJHQxLDE2LDAKLSsJc3RkCSR0NCxgJEZSQU1FKzMyYCgkc3ApCTsgeWVzLCBzdGQgaW4g MzItYml0IGJ1aWxkCi0rCXN0ZAkkdDUsYCRGUkFNRSs0MGAoJHNwKQotKwlzdGQJJHQ2LGAkRlJB TUUrNDhgKCRzcCkKLSsJc3RkCSR0NyxgJEZSQU1FKzU2YCgkc3ApCi0rCi0rCW1yCSR0MCwkYTAJ CQk7IGx3egkkdDAsMCgkYXApCi0rCW1yCSR0MSwkYTEJCQk7IGx3egkkdDEsNCgkYXApCi0rCWx3 egkkdDIsOCgkYXApCQk7IGxvYWQgYVtqLi5qKzNdIGFzIDMyLWJpdCB3b3JkIHBhaXJzCi0gCWx3 egkkdDMsMTIoJGFwKQotIAlsd3oJJHQ0LDAoJG5wKQkJOyBsb2FkIG5bai4uaiszXSBhcyAzMi1i aXQgd29yZCBwYWlycwotIAlsd3oJJHQ1LDQoJG5wKQotQEAgLTMxOSw3ICszNjEsNyBAQCAkY29k ZS49PDxfX187Ci0gCWxmZAkkbmIsYCRGUkFNRSs0MGAoJHNwKQotIAlsZmQJJG5jLGAkRlJBTUUr NDhgKCRzcCkKLSAJbGZkCSRuZCxgJEZSQU1FKzU2YCgkc3ApCi0tCXN0ZAkkdDAsYCRGUkFNRSs2 NGAoJHNwKQotKwlzdGQJJHQwLGAkRlJBTUUrNjRgKCRzcCkJOyB5ZXMsIHN0ZCBldmVuIGluIDMy LWJpdCBidWlsZAotIAlzdGQJJHQxLGAkRlJBTUUrNzJgKCRzcCkKLSAJc3RkCSR0MixgJEZSQU1F KzgwYCgkc3ApCi0gCXN0ZAkkdDMsYCRGUkFNRSs4OGAoJHNwKQotQEAgLTQ0MSw3ICs0ODMsNyBA QCAkY29kZS49PDxfX18gaWYgKCRTSVpFX1Q9PTQpOwotIAlsd3oJJHQ3LDEyKCRucCkKLSBfX18K LSAkY29kZS49PDxfX187Ci0tCXN0ZAkkdDAsYCRGUkFNRSs2NGAoJHNwKQotKwlzdGQJJHQwLGAk RlJBTUUrNjRgKCRzcCkJOyB5ZXMsIHN0ZCBldmVuIGluIDMyLWJpdCBidWlsZAotIAlzdGQJJHQx LGAkRlJBTUUrNzJgKCRzcCkKLSAJc3RkCSR0MixgJEZSQU1FKzgwYCgkc3ApCi0gCXN0ZAkkdDMs YCRGUkFNRSs4OGAoJHNwKQotQEAgLTQ0OSw2ICs0OTEsOSBAQCAkY29kZS49PDxfX187Ci0gCXN0 ZAkkdDUsYCRGUkFNRSsxMDRgKCRzcCkKLSAJc3RkCSR0NixgJEZSQU1FKzExMmAoJHNwKQotIAlz dGQJJHQ3LGAkRlJBTUUrMTIwYCgkc3ApCi0rX19fCi0raWYgKCRTSVpFX1Q9PTggb3IgJGZsYXZv dXIgPX4gL29zeC8pIHsKLSskY29kZS49PDxfX187Ci0gCWxkCSR0MCxgJEZSQU1FKzBgKCRzcCkK LSAJbGQJJHQxLGAkRlJBTUUrOGAoJHNwKQotIAlsZAkkdDIsYCRGUkFNRSsxNmAoJHNwKQotQEAg LTQ1Nyw2ICs1MDIsMjAgQEAgJGNvZGUuPTw8X19fOwotIAlsZAkkdDUsYCRGUkFNRSs0MGAoJHNw KQotIAlsZAkkdDYsYCRGUkFNRSs0OGAoJHNwKQotIAlsZAkkdDcsYCRGUkFNRSs1NmAoJHNwKQot K19fXwotK30gZWxzZSB7Ci0rJGNvZGUuPTw8X19fOwotKwlsd3oJJHQxLGAkRlJBTUUrMGAoJHNw KQotKwlsd3oJJHQwLGAkRlJBTUUrNGAoJHNwKQotKwlsd3oJJHQzLGAkRlJBTUUrOGAoJHNwKQot Kwlsd3oJJHQyLGAkRlJBTUUrMTJgKCRzcCkKLSsJbHd6CSR0NSxgJEZSQU1FKzE2YCgkc3ApCi0r CWx3egkkdDQsYCRGUkFNRSsyMGAoJHNwKQotKwlsd3oJJHQ3LGAkRlJBTUUrMjRgKCRzcCkKLSsJ bHd6CSR0NixgJEZSQU1FKzI4YCgkc3ApCi0rX19fCi0rfQotKyRjb2RlLj08PF9fXzsKLSAJbGZk CSRBMCxgJEZSQU1FKzY0YCgkc3ApCi0gCWxmZAkkQTEsYCRGUkFNRSs3MmAoJHNwKQotIAlsZmQJ JEEyLGAkRlJBTUUrODBgKCRzcCkKLUBAIC00ODgsNyArNTQ3LDkgQEAgJGNvZGUuPTw8X19fOwot IAlmbWFkZAkkVDBiLCRBMCwkYmIsJGRvdGIKLSAJc3RmZAkkQTIsMjQoJG5hcF9kKQkJOyBzYXZl IGFbaisxXSBpbiBkb3VibGUgZm9ybWF0Ci0gCXN0ZmQJJEEzLDMyKCRuYXBfZCkKLS0KLStfX18K LStpZiAoJFNJWkVfVD09OCBvciAkZmxhdm91ciA9fiAvb3N4LykgewotKyRjb2RlLj08PF9fXzsK LSAJZm1hZGQJJFQxYSwkQTAsJGJjLCRUMWEKLSAJZm1hZGQJJFQxYiwkQTAsJGJkLCRUMWIKLSAJ Zm1hZGQJJFQyYSwkQTEsJGJjLCRUMmEKLUBAIC01NjEsMTEgKzYyMiwxMjMgQEAgJGNvZGUuPTw8 X19fOwotIAlzdGZkCSRUM2IsYCRGUkFNRSs1NmAoJHNwKQotIAkgc3RkCSR0MCw4KCR0cCkJCTsg dHBbai0xXQotIAkgc3RkdQkkdDQsMTYoJHRwKQkJOyB0cFtqXQotK19fXwotK30gZWxzZSB7Ci0r JGNvZGUuPTw8X19fOwotKwlmbWFkZAkkVDFhLCRBMCwkYmMsJFQxYQotKwlmbWFkZAkkVDFiLCRB MCwkYmQsJFQxYgotKwkgYWRkYwkkdDAsJHQwLCRjYXJyeQotKwkgYWRkZQkkdDEsJHQxLCRjMQot Kwkgc3J3aQkkY2FycnksJHQwLDE2Ci0rCWZtYWRkCSRUMmEsJEExLCRiYywkVDJhCi0rCWZtYWRk CSRUMmIsJEExLCRiZCwkVDJiCi0rCXN0ZmQJJE4wLDQwKCRuYXBfZCkJCTsgc2F2ZSBuW2pdIGlu IGRvdWJsZSBmb3JtYXQKLSsJc3RmZAkkTjEsNDgoJG5hcF9kKQotKwkgc3J3aQkkYzEsJHQxLDE2 Ci0rCSBpbnNyd2kJJGNhcnJ5LCR0MSwxNiwwCi0rCWZtYWRkCSRUM2EsJEEyLCRiYywkVDNhCi0r CWZtYWRkCSRUM2IsJEEyLCRiZCwkVDNiCi0rCSBhZGRjCSR0MiwkdDIsJGNhcnJ5Ci0rCSBhZGRl CSR0MywkdDMsJGMxCi0rCSBzcndpCSRjYXJyeSwkdDIsMTYKLSsJZm11bAkkZG90YSwkQTMsJGJj Ci0rCWZtdWwJJGRvdGIsJEEzLCRiZAotKwlzdGZkCSROMiw1NigkbmFwX2QpCQk7IHNhdmUgbltq KzFdIGluIGRvdWJsZSBmb3JtYXQKLSsJc3RmZHUJJE4zLDY0KCRuYXBfZCkKLSsJIGluc3J3aQkk dDAsJHQyLDE2LDAJCTsgMC4uMzEgYml0cwotKwkgc3J3aQkkYzEsJHQzLDE2Ci0rCSBpbnNyd2kJ JGNhcnJ5LCR0MywxNiwwCi0rCi0rCWZtYWRkCSRUMWEsJE4xLCRuYSwkVDFhCi0rCWZtYWRkCSRU MWIsJE4xLCRuYiwkVDFiCi0rCSBsd3oJJHQzLGAkRlJBTUUrMzJgKCRzcCkJOyBwZXJtdXRlZCAk dDEKLSsJIGx3egkkdDIsYCRGUkFNRSszNmAoJHNwKQk7IHBlcm11dGVkICR0MAotKwkgYWRkYwkk dDQsJHQ0LCRjYXJyeQotKwkgYWRkZQkkdDUsJHQ1LCRjMQotKwkgc3J3aQkkY2FycnksJHQ0LDE2 Ci0rCWZtYWRkCSRUMmEsJE4yLCRuYSwkVDJhCi0rCWZtYWRkCSRUMmIsJE4yLCRuYiwkVDJiCi0r CSBzcndpCSRjMSwkdDUsMTYKLSsJIGluc3J3aQkkY2FycnksJHQ1LDE2LDAKLSsJZm1hZGQJJFQz YSwkTjMsJG5hLCRUM2EKLSsJZm1hZGQJJFQzYiwkTjMsJG5iLCRUM2IKLSsJIGFkZGMJJHQ2LCR0 NiwkY2FycnkKLSsJIGFkZGUJJHQ3LCR0NywkYzEKLSsJIHNyd2kJJGNhcnJ5LCR0NiwxNgotKwlm bWFkZAkkVDBhLCROMCwkbmEsJFQwYQotKwlmbWFkZAkkVDBiLCROMCwkbmIsJFQwYgotKwkgaW5z cndpCSR0NCwkdDYsMTYsMAkJOyAzMi4uNjMgYml0cwotKwkgc3J3aQkkYzEsJHQ3LDE2Ci0rCSBp bnNyd2kJJGNhcnJ5LCR0NywxNiwwCi0rCi0rCWZtYWRkCSRUMWEsJE4wLCRuYywkVDFhCi0rCWZt YWRkCSRUMWIsJE4wLCRuZCwkVDFiCi0rCSBsd3oJJHQ3LGAkRlJBTUUrNDBgKCRzcCkJOyBwZXJt dXRlZCAkdDMKLSsJIGx3egkkdDYsYCRGUkFNRSs0NGAoJHNwKQk7IHBlcm11dGVkICR0MgotKwkg YWRkYwkkdDIsJHQyLCRjYXJyeQotKwkgYWRkZQkkdDMsJHQzLCRjMQotKwkgc3J3aQkkY2Fycnks JHQyLDE2Ci0rCWZtYWRkCSRUMmEsJE4xLCRuYywkVDJhCi0rCWZtYWRkCSRUMmIsJE4xLCRuZCwk VDJiCi0rCSBzdHcJJHQwLDEyKCR0cCkJCTsgdHBbai0xXQotKwkgc3R3CSR0NCw4KCR0cCkKLSsJ IHNyd2kJJGMxLCR0MywxNgotKwkgaW5zcndpCSRjYXJyeSwkdDMsMTYsMAotKwlmbWFkZAkkVDNh LCROMiwkbmMsJFQzYQotKwlmbWFkZAkkVDNiLCROMiwkbmQsJFQzYgotKwkgbHd6CSR0MSxgJEZS QU1FKzQ4YCgkc3ApCTsgcGVybXV0ZWQgJHQ1Ci0rCSBsd3oJJHQwLGAkRlJBTUUrNTJgKCRzcCkJ OyBwZXJtdXRlZCAkdDQKLSsJIGFkZGMJJHQ2LCR0NiwkY2FycnkKLSsJIGFkZGUJJHQ3LCR0Nywk YzEKLSsJIHNyd2kJJGNhcnJ5LCR0NiwxNgotKwlmbWFkZAkkZG90YSwkTjMsJG5jLCRkb3RhCi0r CWZtYWRkCSRkb3RiLCROMywkbmQsJGRvdGIKLSsJIGluc3J3aQkkdDIsJHQ2LDE2LDAJCTsgNjQu Ljk1IGJpdHMKLSsJIHNyd2kJJGMxLCR0NywxNgotKwkgaW5zcndpCSRjYXJyeSwkdDcsMTYsMAot KwotKwlmY3RpZAkkVDBhLCRUMGEKLSsJZmN0aWQJJFQwYiwkVDBiCi0rCSBsd3oJJHQ1LGAkRlJB TUUrNTZgKCRzcCkJOyBwZXJtdXRlZCAkdDcKLSsJIGx3egkkdDQsYCRGUkFNRSs2MGAoJHNwKQk7 IHBlcm11dGVkICR0NgotKwkgYWRkYwkkdDAsJHQwLCRjYXJyeQotKwkgYWRkZQkkdDEsJHQxLCRj MQotKwkgc3J3aQkkY2FycnksJHQwLDE2Ci0rCWZjdGlkCSRUMWEsJFQxYQotKwlmY3RpZAkkVDFi LCRUMWIKLSsJIHNyd2kJJGMxLCR0MSwxNgotKwkgaW5zcndpCSRjYXJyeSwkdDEsMTYsMAotKwlm Y3RpZAkkVDJhLCRUMmEKLSsJZmN0aWQJJFQyYiwkVDJiCi0rCSBhZGRjCSR0NCwkdDQsJGNhcnJ5 Ci0rCSBhZGRlCSR0NSwkdDUsJGMxCi0rCSBzcndpCSRjYXJyeSwkdDQsMTYKLSsJZmN0aWQJJFQz YSwkVDNhCi0rCWZjdGlkCSRUM2IsJFQzYgotKwkgaW5zcndpCSR0MCwkdDQsMTYsMAkJOyA5Ni4u MTI3IGJpdHMKLSsJIHNyd2kJJGMxLCR0NSwxNgotKwkgaW5zcndpCSRjYXJyeSwkdDUsMTYsMAot KwotKwlzdGZkCSRUMGEsYCRGUkFNRSswYCgkc3ApCi0rCXN0ZmQJJFQwYixgJEZSQU1FKzhgKCRz cCkKLSsJc3RmZAkkVDFhLGAkRlJBTUUrMTZgKCRzcCkKLSsJc3RmZAkkVDFiLGAkRlJBTUUrMjRg KCRzcCkKLSsJc3RmZAkkVDJhLGAkRlJBTUUrMzJgKCRzcCkKLSsJc3RmZAkkVDJiLGAkRlJBTUUr NDBgKCRzcCkKLSsJc3RmZAkkVDNhLGAkRlJBTUUrNDhgKCRzcCkKLSsJc3RmZAkkVDNiLGAkRlJB TUUrNTZgKCRzcCkKLSsJIHN0dwkkdDIsMjAoJHRwKQkJOyB0cFtqXQotKwkgc3R3dQkkdDAsMTYo JHRwKQotK19fXwotK30KLSskY29kZS49PDxfX187Ci0gCWJkbnotCUwxc3QKLSAMCi0gCWZjdGlk CSRkb3RhLCRkb3RhCi0gCWZjdGlkCSRkb3RiLCRkb3RiCi0tCi0rX19fCi0raWYgKCRTSVpFX1Q9 PTggb3IgJGZsYXZvdXIgPX4gL29zeC8pIHsKLSskY29kZS49PDxfX187Ci0gCWxkCSR0MCxgJEZS QU1FKzBgKCRzcCkKLSAJbGQJJHQxLGAkRlJBTUUrOGAoJHNwKQotIAlsZAkkdDIsYCRGUkFNRSsx NmAoJHNwKQotQEAgLTYxMSwzMyArNzg0LDExNyBAQCAkY29kZS49PDxfX187Ci0gCWluc3JkaQkk dDYsJHQ3LDQ4LDAKLSAJc3JkaQkkb3ZmLCR0Nyw0OAotIAlzdGQJJHQ2LDgoJHRwKQkJOyB0cFtu dW0tMV0KLStfX18KLSt9IGVsc2UgewotKyRjb2RlLj08PF9fXzsKLSsJbHd6CSR0MSxgJEZSQU1F KzBgKCRzcCkKLSsJbHd6CSR0MCxgJEZSQU1FKzRgKCRzcCkKLSsJbHd6CSR0MyxgJEZSQU1FKzhg KCRzcCkKLSsJbHd6CSR0MixgJEZSQU1FKzEyYCgkc3ApCi0rCWx3egkkdDUsYCRGUkFNRSsxNmAo JHNwKQotKwlsd3oJJHQ0LGAkRlJBTUUrMjBgKCRzcCkKLSsJbHd6CSR0NyxgJEZSQU1FKzI0YCgk c3ApCi0rCWx3egkkdDYsYCRGUkFNRSsyOGAoJHNwKQotKwlzdGZkCSRkb3RhLGAkRlJBTUUrNjRg KCRzcCkKLSsJc3RmZAkkZG90YixgJEZSQU1FKzcyYCgkc3ApCi0gCi0rCWFkZGMJJHQwLCR0MCwk Y2FycnkKLSsJYWRkZQkkdDEsJHQxLCRjMQotKwlzcndpCSRjYXJyeSwkdDAsMTYKLSsJaW5zcndp CSRjYXJyeSwkdDEsMTYsMAotKwlzcndpCSRjMSwkdDEsMTYKLSsJYWRkYwkkdDIsJHQyLCRjYXJy eQotKwlhZGRlCSR0MywkdDMsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0MiwxNgotKwkgaW5zcndpCSR0 MCwkdDIsMTYsMAkJOyAwLi4zMSBiaXRzCi0rCWluc3J3aQkkY2FycnksJHQzLDE2LDAKLSsJc3J3 aQkkYzEsJHQzLDE2Ci0rCWFkZGMJJHQ0LCR0NCwkY2FycnkKLSsJYWRkZQkkdDUsJHQ1LCRjMQot KwlzcndpCSRjYXJyeSwkdDQsMTYKLSsJaW5zcndpCSRjYXJyeSwkdDUsMTYsMAotKwlzcndpCSRj MSwkdDUsMTYKLSsJYWRkYwkkdDYsJHQ2LCRjYXJyeQotKwlhZGRlCSR0NywkdDcsJGMxCi0rCXNy d2kJJGNhcnJ5LCR0NiwxNgotKwkgaW5zcndpCSR0NCwkdDYsMTYsMAkJOyAzMi4uNjMgYml0cwot KwlpbnNyd2kJJGNhcnJ5LCR0NywxNiwwCi0rCXNyd2kJJGMxLCR0NywxNgotKwkgc3R3CSR0MCwx MigkdHApCQk7IHRwW2otMV0KLSsJIHN0dwkkdDQsOCgkdHApCi0rCi0rCWx3egkkdDMsYCRGUkFN RSszMmAoJHNwKQk7IHBlcm11dGVkICR0MQotKwlsd3oJJHQyLGAkRlJBTUUrMzZgKCRzcCkJOyBw ZXJtdXRlZCAkdDAKLSsJbHd6CSR0NyxgJEZSQU1FKzQwYCgkc3ApCTsgcGVybXV0ZWQgJHQzCi0r CWx3egkkdDYsYCRGUkFNRSs0NGAoJHNwKQk7IHBlcm11dGVkICR0MgotKwlsd3oJJHQxLGAkRlJB TUUrNDhgKCRzcCkJOyBwZXJtdXRlZCAkdDUKLSsJbHd6CSR0MCxgJEZSQU1FKzUyYCgkc3ApCTsg cGVybXV0ZWQgJHQ0Ci0rCWx3egkkdDUsYCRGUkFNRSs1NmAoJHNwKQk7IHBlcm11dGVkICR0Nwot Kwlsd3oJJHQ0LGAkRlJBTUUrNjBgKCRzcCkJOyBwZXJtdXRlZCAkdDYKLSsKLSsJYWRkYwkkdDIs JHQyLCRjYXJyeQotKwlhZGRlCSR0MywkdDMsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0MiwxNgotKwlp bnNyd2kJJGNhcnJ5LCR0MywxNiwwCi0rCXNyd2kJJGMxLCR0MywxNgotKwlhZGRjCSR0NiwkdDYs JGNhcnJ5Ci0rCWFkZGUJJHQ3LCR0NywkYzEKLSsJc3J3aQkkY2FycnksJHQ2LDE2Ci0rCSBpbnNy d2kJJHQyLCR0NiwxNiwwCQk7IDY0Li45NSBiaXRzCi0rCWluc3J3aQkkY2FycnksJHQ3LDE2LDAK LSsJc3J3aQkkYzEsJHQ3LDE2Ci0rCWFkZGMJJHQwLCR0MCwkY2FycnkKLSsJYWRkZQkkdDEsJHQx LCRjMQotKwlzcndpCSRjYXJyeSwkdDAsMTYKLSsJaW5zcndpCSRjYXJyeSwkdDEsMTYsMAotKwlz cndpCSRjMSwkdDEsMTYKLSsJYWRkYwkkdDQsJHQ0LCRjYXJyeQotKwlhZGRlCSR0NSwkdDUsJGMx Ci0rCXNyd2kJJGNhcnJ5LCR0NCwxNgotKwkgaW5zcndpCSR0MCwkdDQsMTYsMAkJOyA5Ni4uMTI3 IGJpdHMKLSsJaW5zcndpCSRjYXJyeSwkdDUsMTYsMAotKwlzcndpCSRjMSwkdDUsMTYKLSsJIHN0 dwkkdDIsMjAoJHRwKQkJOyB0cFtqXQotKwkgc3R3dQkkdDAsMTYoJHRwKQotKwotKwlsd3oJJHQ3 LGAkRlJBTUUrNjRgKCRzcCkKLSsJbHd6CSR0NixgJEZSQU1FKzY4YCgkc3ApCi0rCWx3egkkdDUs YCRGUkFNRSs3MmAoJHNwKQotKwlsd3oJJHQ0LGAkRlJBTUUrNzZgKCRzcCkKLSsKLSsJYWRkYwkk dDYsJHQ2LCRjYXJyeQotKwlhZGRlCSR0NywkdDcsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0NiwxNgot KwlpbnNyd2kJJGNhcnJ5LCR0NywxNiwwCi0rCXNyd2kJJGMxLCR0NywxNgotKwlhZGRjCSR0NCwk dDQsJGNhcnJ5Ci0rCWFkZGUJJHQ1LCR0NSwkYzEKLSsKLSsJaW5zcndpCSR0NiwkdDQsMTYsMAot KwlzcndpCSR0NCwkdDQsMTYKLSsJaW5zcndpCSR0NCwkdDUsMTYsMAotKwlzcndpCSRvdmYsJHQ1 LDE2Ci0rCXN0dwkkdDYsMTIoJHRwKQkJOyB0cFtudW0tMV0KLSsJc3R3CSR0NCw4KCR0cCkKLStf X18KLSt9Ci0rJGNvZGUuPTw8X19fOwotIAlzbHdpCSR0NywkbnVtLDIKLSAJc3ViZgkkbmFwX2Qs JHQ3LCRuYXBfZAk7IHJld2luZCBwb2ludGVyCi0gDAotIAlsaQkkaSw4CQkJOyBpPTEKLSAuYWxp Z24JNQotIExvdXRlcjoKLS1fX18KLS0kY29kZS49PDxfX18gaWYgKCRTSVpFX1Q9PTgpOwotLQls ZHgJJHQzLCRicCwkaQk7IGJwW2ldCi0tX19fCi0tJGNvZGUuPTw8X19fIGlmICgkU0laRV9UPT00 KTsKLS0JYWRkCSR0MCwkYnAsJGkKLS0JbHd6CSR0MywwKCR0MCkJCTsgYnBbaSxpKzFdCi0tCWx3 egkkdDAsNCgkdDApCi0tCWluc3JkaQkkdDMsJHQwLDMyLDAKLS1fX18KLS0kY29kZS49PDxfX187 Ci0tCWxkCSR0NixgJEZSQU1FKyRUUkFOU0ZFUis4YCgkc3ApCTsgdHBbMF0KLS0JbXVsbGQJJHQ3 LCRhMCwkdDMJOyBhcFswXSpicFtpXQotLQotIAlhZGRpCSR0cCwkc3AsYCRGUkFNRSskVFJBTlNG RVJgCi0tCWFkZAkkdDcsJHQ3LCR0Ngk7IGFwWzBdKmJwW2ldK3RwWzBdCi0gCWxpCSRjYXJyeSww Ci0tCW11bGxkCSR0NywkdDcsJG4wCTsgdHBbMF0qbjAKLSAJbXRjdHIJJGoKLStfX18KLSskY29k ZS49PDxfX18gaWYgKCRTSVpFX1Q9PTgpOwotKwlsZHgJJHQzLCRicCwkaQkJOyBicFtpXQotIAot KwlsZAkkdDYsYCRGUkFNRSskVFJBTlNGRVIrOGAoJHNwKQk7IHRwWzBdCi0rCW11bGxkCSR0Nywk YTAsJHQzCQk7IGFwWzBdKmJwW2ldCi0rCWFkZAkkdDcsJHQ3LCR0NgkJOyBhcFswXSpicFtpXSt0 cFswXQotIAk7IHRyYW5zZmVyIGJwW2ldIHRvIEZQVSBhcyA0eDE2LWJpdCB2YWx1ZXMKLSAJZXh0 cmRpCSR0MCwkdDMsMTYsNDgKLSAJZXh0cmRpCSR0MSwkdDMsMTYsMzIKLUBAIC02NDcsNiArOTA0 LDggQEAgJGNvZGUuPTw8X19fOwotIAlzdGQJJHQxLGAkRlJBTUUrOGAoJHNwKQotIAlzdGQJJHQy LGAkRlJBTUUrMTZgKCRzcCkKLSAJc3RkCSR0MyxgJEZSQU1FKzI0YCgkc3ApCi0rCi0rCW11bGxk CSR0NywkdDcsJG4wCQk7IHRwWzBdKm4wCi0gCTsgdHJhbnNmZXIgKGFwWzBdKmJwW2ldK3RwWzBd KSpuMCB0byBGUFUgYXMgNHgxNi1iaXQgdmFsdWVzCi0gCWV4dHJkaQkkdDQsJHQ3LDE2LDQ4Ci0g CWV4dHJkaQkkdDUsJHQ3LDE2LDMyCi1AQCAtNjU2LDcgKzkxNSw1MCBAQCAkY29kZS49PDxfX187 Ci0gCXN0ZAkkdDUsYCRGUkFNRSs0MGAoJHNwKQotIAlzdGQJJHQ2LGAkRlJBTUUrNDhgKCRzcCkK LSAJc3RkCSR0NyxgJEZSQU1FKzU2YCgkc3ApCi0rX19fCi0rJGNvZGUuPTw8X19fIGlmICgkU0la RV9UPT00KTsKLSsJYWRkCSR0MCwkYnAsJGkKLSsJbGkJJGMxLDAKLSsJbHd6CSR0MSwwKCR0MCkJ CTsgYnBbaSxpKzFdCi0rCWx3egkkdDMsNCgkdDApCi0rCi0rCW11bGx3CSR0NCwkYTAsJHQxCQk7 IGFwWzBdKmJwW2ldCi0rCWx3egkkdDAsYCRGUkFNRSskVFJBTlNGRVIrOCs0YCgkc3ApCTsgdHBb MF0KLSsJbXVsaHd1CSR0NSwkYTAsJHQxCi0rCWx3egkkdDIsYCRGUkFNRSskVFJBTlNGRVIrOGAo JHNwKQk7IHRwWzBdCi0rCW11bGx3CSR0NiwkYTEsJHQxCi0rCW11bGx3CSR0NywkYTAsJHQzCi0r CWFkZAkkdDUsJHQ1LCR0NgotKwlhZGQJJHQ1LCR0NSwkdDcKLSsJYWRkYwkkdDQsJHQ0LCR0MAkJ OyBhcFswXSpicFtpXSt0cFswXQotKwlhZGRlCSR0NSwkdDUsJHQyCi0rCTsgdHJhbnNmZXIgYnBb aV0gdG8gRlBVIGFzIDR4MTYtYml0IHZhbHVlcwotKwlleHRyd2kJJHQwLCR0MSwxNiwxNgotKwll eHRyd2kJJHQxLCR0MSwxNiwwCi0rCWV4dHJ3aQkkdDIsJHQzLDE2LDE2Ci0rCWV4dHJ3aQkkdDMs JHQzLDE2LDAKLSsJc3RkCSR0MCxgJEZSQU1FKzBgKCRzcCkJOyB5ZXMsIHN0ZCBpbiAzMi1iaXQg YnVpbGQKLSsJc3RkCSR0MSxgJEZSQU1FKzhgKCRzcCkKLSsJc3RkCSR0MixgJEZSQU1FKzE2YCgk c3ApCi0rCXN0ZAkkdDMsYCRGUkFNRSsyNGAoJHNwKQotIAotKwltdWxsdwkkdDAsJHQ0LCRuMAkJ OyBtdWxsZCB0cFswXSpuMAotKwltdWxod3UJJHQxLCR0NCwkbjAKLSsJbXVsbHcJJHQyLCR0NSwk bjAKLSsJbXVsbHcJJHQzLCR0NCwkbjEKLSsJYWRkCSR0MSwkdDEsJHQyCi0rCWFkZAkkdDEsJHQx LCR0MwotKwk7IHRyYW5zZmVyIChhcFswXSpicFtpXSt0cFswXSkqbjAgdG8gRlBVIGFzIDR4MTYt Yml0IHZhbHVlcwotKwlleHRyd2kJJHQ0LCR0MCwxNiwxNgotKwlleHRyd2kJJHQ1LCR0MCwxNiww Ci0rCWV4dHJ3aQkkdDYsJHQxLDE2LDE2Ci0rCWV4dHJ3aQkkdDcsJHQxLDE2LDAKLSsJc3RkCSR0 NCxgJEZSQU1FKzMyYCgkc3ApCTsgeWVzLCBzdGQgaW4gMzItYml0IGJ1aWxkCi0rCXN0ZAkkdDUs YCRGUkFNRSs0MGAoJHNwKQotKwlzdGQJJHQ2LGAkRlJBTUUrNDhgKCRzcCkKLSsJc3RkCSR0Nyxg JEZSQU1FKzU2YCgkc3ApCi0rX19fCi0rJGNvZGUuPTw8X19fOwotIAlsZmQJJEEwLDgoJG5hcF9k KQkJOyBsb2FkIGFbal0gaW4gZG91YmxlIGZvcm1hdAotIAlsZmQJJEExLDE2KCRuYXBfZCkKLSAJ bGZkCSRBMiwyNCgkbmFwX2QpCQk7IGxvYWQgYVtqKzFdIGluIGRvdWJsZSBmb3JtYXQKLUBAIC03 NjksNyArMTA3MSw5IEBAIExpbm5lcjoKLSAJZm11bAkkZG90YiwkQTMsJGJkCi0gCSBsZmQJJEEy LDI0KCRuYXBfZCkJCTsgbG9hZCBhW2orMV0gaW4gZG91YmxlIGZvcm1hdAotIAkgbGZkCSRBMywz MigkbmFwX2QpCi0tCi0rX19fCi0raWYgKCRTSVpFX1Q9PTggb3IgJGZsYXZvdXIgPX4gL29zeC8p IHsKLSskY29kZS49PDxfX187Ci0gCWZtYWRkCSRUMWEsJE4xLCRuYSwkVDFhCi0gCWZtYWRkCSRU MWIsJE4xLCRuYiwkVDFiCi0gCSBsZAkkdDAsYCRGUkFNRSswYCgkc3ApCi1AQCAtODU2LDEwICsx MTYwLDEzMSBAQCAkY29kZS49PDxfX187Ci0gCSBhZGR6ZQkkY2FycnksJGNhcnJ5Ci0gCSBzdGQJ JHQzLC0xNigkdHApCQk7IHRwW2otMV0KLSAJIHN0ZAkkdDUsLTgoJHRwKQkJOyB0cFtqXQotK19f XwotK30gZWxzZSB7Ci0rJGNvZGUuPTw8X19fOwotKwlmbWFkZAkkVDFhLCROMSwkbmEsJFQxYQot KwlmbWFkZAkkVDFiLCROMSwkbmIsJFQxYgotKwkgbHd6CSR0MSxgJEZSQU1FKzBgKCRzcCkKLSsJ IGx3egkkdDAsYCRGUkFNRSs0YCgkc3ApCi0rCWZtYWRkCSRUMmEsJE4yLCRuYSwkVDJhCi0rCWZt YWRkCSRUMmIsJE4yLCRuYiwkVDJiCi0rCSBsd3oJJHQzLGAkRlJBTUUrOGAoJHNwKQotKwkgbHd6 CSR0MixgJEZSQU1FKzEyYCgkc3ApCi0rCWZtYWRkCSRUM2EsJE4zLCRuYSwkVDNhCi0rCWZtYWRk CSRUM2IsJE4zLCRuYiwkVDNiCi0rCSBsd3oJJHQ1LGAkRlJBTUUrMTZgKCRzcCkKLSsJIGx3egkk dDQsYCRGUkFNRSsyMGAoJHNwKQotKwkgYWRkYwkkdDAsJHQwLCRjYXJyeQotKwkgYWRkZQkkdDEs JHQxLCRjMQotKwkgc3J3aQkkY2FycnksJHQwLDE2Ci0rCWZtYWRkCSRUMGEsJE4wLCRuYSwkVDBh Ci0rCWZtYWRkCSRUMGIsJE4wLCRuYiwkVDBiCi0rCSBsd3oJJHQ3LGAkRlJBTUUrMjRgKCRzcCkK LSsJIGx3egkkdDYsYCRGUkFNRSsyOGAoJHNwKQotKwkgc3J3aQkkYzEsJHQxLDE2Ci0rCSBpbnNy d2kJJGNhcnJ5LCR0MSwxNiwwCi0rCi0rCWZtYWRkCSRUMWEsJE4wLCRuYywkVDFhCi0rCWZtYWRk CSRUMWIsJE4wLCRuZCwkVDFiCi0rCSBhZGRjCSR0MiwkdDIsJGNhcnJ5Ci0rCSBhZGRlCSR0Mywk dDMsJGMxCi0rCSBzcndpCSRjYXJyeSwkdDIsMTYKLSsJZm1hZGQJJFQyYSwkTjEsJG5jLCRUMmEK LSsJZm1hZGQJJFQyYiwkTjEsJG5kLCRUMmIKLSsJIGluc3J3aQkkdDAsJHQyLDE2LDAJCTsgMC4u MzEgYml0cwotKwkgc3J3aQkkYzEsJHQzLDE2Ci0rCSBpbnNyd2kJJGNhcnJ5LCR0MywxNiwwCi0r CWZtYWRkCSRUM2EsJE4yLCRuYywkVDNhCi0rCWZtYWRkCSRUM2IsJE4yLCRuZCwkVDNiCi0rCSBs d3oJJHQyLDEyKCR0cCkJCTsgdHBbal0KLSsJIGx3egkkdDMsOCgkdHApCi0rCSBhZGRjCSR0NCwk dDQsJGNhcnJ5Ci0rCSBhZGRlCSR0NSwkdDUsJGMxCi0rCSBzcndpCSRjYXJyeSwkdDQsMTYKLSsJ Zm1hZGQJJGRvdGEsJE4zLCRuYywkZG90YQotKwlmbWFkZAkkZG90YiwkTjMsJG5kLCRkb3RiCi0r CSBzcndpCSRjMSwkdDUsMTYKLSsJIGluc3J3aQkkY2FycnksJHQ1LDE2LDAKLSsKLSsJZmN0aWQJ JFQwYSwkVDBhCi0rCSBhZGRjCSR0NiwkdDYsJGNhcnJ5Ci0rCSBhZGRlCSR0NywkdDcsJGMxCi0r CSBzcndpCSRjYXJyeSwkdDYsMTYKLSsJZmN0aWQJJFQwYiwkVDBiCi0rCSBpbnNyd2kJJHQ0LCR0 NiwxNiwwCQk7IDMyLi42MyBiaXRzCi0rCSBzcndpCSRjMSwkdDcsMTYKLSsJIGluc3J3aQkkY2Fy cnksJHQ3LDE2LDAKLSsJZmN0aWQJJFQxYSwkVDFhCi0rCSBhZGRjCSR0MCwkdDAsJHQyCi0rCSBh ZGRlCSR0NCwkdDQsJHQzCi0rCSBsd3oJJHQzLGAkRlJBTUUrMzJgKCRzcCkJOyBwZXJtdXRlZCAk dDEKLSsJIGx3egkkdDIsYCRGUkFNRSszNmAoJHNwKQk7IHBlcm11dGVkICR0MAotKwlmY3RpZAkk VDFiLCRUMWIKLSsJIGFkZHplCSRjYXJyeSwkY2FycnkKLSsJIGFkZHplCSRjMSwkYzEKLSsJIHN0 dwkkdDAsNCgkdHApCQk7IHRwW2otMV0KLSsJIHN0dwkkdDQsMCgkdHApCi0rCWZjdGlkCSRUMmEs JFQyYQotKwkgYWRkYwkkdDIsJHQyLCRjYXJyeQotKwkgYWRkZQkkdDMsJHQzLCRjMQotKwkgc3J3 aQkkY2FycnksJHQyLDE2Ci0rCSBsd3oJJHQ3LGAkRlJBTUUrNDBgKCRzcCkJOyBwZXJtdXRlZCAk dDMKLSsJIGx3egkkdDYsYCRGUkFNRSs0NGAoJHNwKQk7IHBlcm11dGVkICR0MgotKwlmY3RpZAkk VDJiLCRUMmIKLSsJIHNyd2kJJGMxLCR0MywxNgotKwkgaW5zcndpCSRjYXJyeSwkdDMsMTYsMAot KwkgbHd6CSR0MSxgJEZSQU1FKzQ4YCgkc3ApCTsgcGVybXV0ZWQgJHQ1Ci0rCSBsd3oJJHQwLGAk RlJBTUUrNTJgKCRzcCkJOyBwZXJtdXRlZCAkdDQKLSsJZmN0aWQJJFQzYSwkVDNhCi0rCSBhZGRj CSR0NiwkdDYsJGNhcnJ5Ci0rCSBhZGRlCSR0NywkdDcsJGMxCi0rCSBzcndpCSRjYXJyeSwkdDYs MTYKLSsJIGx3egkkdDUsYCRGUkFNRSs1NmAoJHNwKQk7IHBlcm11dGVkICR0NwotKwkgbHd6CSR0 NCxgJEZSQU1FKzYwYCgkc3ApCTsgcGVybXV0ZWQgJHQ2Ci0rCWZjdGlkCSRUM2IsJFQzYgotKwot KwkgaW5zcndpCSR0MiwkdDYsMTYsMAkJOyA2NC4uOTUgYml0cwotKwlpbnNyd2kJJGNhcnJ5LCR0 NywxNiwwCi0rCXNyd2kJJGMxLCR0NywxNgotKwkgbHd6CSR0NiwyMCgkdHApCi0rCSBsd3p1CSR0 NywxNigkdHApCi0rCWFkZGMJJHQwLCR0MCwkY2FycnkKLSsJIHN0ZmQJJFQwYSxgJEZSQU1FKzBg KCRzcCkKLSsJYWRkZQkkdDEsJHQxLCRjMQotKwlzcndpCSRjYXJyeSwkdDAsMTYKLSsJIHN0ZmQJ JFQwYixgJEZSQU1FKzhgKCRzcCkKLSsJaW5zcndpCSRjYXJyeSwkdDEsMTYsMAotKwlzcndpCSRj MSwkdDEsMTYKLSsJYWRkYwkkdDQsJHQ0LCRjYXJyeQotKwkgc3RmZAkkVDFhLGAkRlJBTUUrMTZg KCRzcCkKLSsJYWRkZQkkdDUsJHQ1LCRjMQotKwlzcndpCSRjYXJyeSwkdDQsMTYKLSsJIGluc3J3 aQkkdDAsJHQ0LDE2LDAJCTsgOTYuLjEyNyBiaXRzCi0rCSBzdGZkCSRUMWIsYCRGUkFNRSsyNGAo JHNwKQotKwlpbnNyd2kJJGNhcnJ5LCR0NSwxNiwwCi0rCXNyd2kJJGMxLCR0NSwxNgotKwotKwlh ZGRjCSR0MiwkdDIsJHQ2Ci0rCSBzdGZkCSRUMmEsYCRGUkFNRSszMmAoJHNwKQotKwlhZGRlCSR0 MCwkdDAsJHQ3Ci0rCSBzdGZkCSRUMmIsYCRGUkFNRSs0MGAoJHNwKQotKwlhZGR6ZQkkY2Fycnks JGNhcnJ5Ci0rCSBzdGZkCSRUM2EsYCRGUkFNRSs0OGAoJHNwKQotKwlhZGR6ZQkkYzEsJGMxCi0r CSBzdGZkCSRUM2IsYCRGUkFNRSs1NmAoJHNwKQotKwkgc3R3CSR0MiwtNCgkdHApCQk7IHRwW2pd Ci0rCSBzdHcJJHQwLC04KCR0cCkKLStfX18KLSt9Ci0rJGNvZGUuPTw8X19fOwotIAliZG56LQlM aW5uZXIKLSAMCi0gCWZjdGlkCSRkb3RhLCRkb3RhCi0gCWZjdGlkCSRkb3RiLCRkb3RiCi0rX19f Ci0raWYgKCRTSVpFX1Q9PTggb3IgJGZsYXZvdXIgPX4gL29zeC8pIHsKLSskY29kZS49PDxfX187 Ci0gCWxkCSR0MCxgJEZSQU1FKzBgKCRzcCkKLSAJbGQJJHQxLGAkRlJBTUUrOGAoJHNwKQotIAls ZAkkdDIsYCRGUkFNRSsxNmAoJHNwKQotQEAgLTkyNiw3ICsxMzUxLDExNiBAQCAkY29kZS49PDxf X187Ci0gCWluc3JkaQkkdDYsJHQ3LDQ4LDAKLSAJc3JkaQkkb3ZmLCR0Nyw0OAotIAlzdGQJJHQ2 LDAoJHRwKQkJOyB0cFtudW0tMV0KLStfX18KLSt9IGVsc2UgewotKyRjb2RlLj08PF9fXzsKLSsJ bHd6CSR0MSxgJEZSQU1FKzBgKCRzcCkKLSsJbHd6CSR0MCxgJEZSQU1FKzRgKCRzcCkKLSsJbHd6 CSR0MyxgJEZSQU1FKzhgKCRzcCkKLSsJbHd6CSR0MixgJEZSQU1FKzEyYCgkc3ApCi0rCWx3egkk dDUsYCRGUkFNRSsxNmAoJHNwKQotKwlsd3oJJHQ0LGAkRlJBTUUrMjBgKCRzcCkKLSsJbHd6CSR0 NyxgJEZSQU1FKzI0YCgkc3ApCi0rCWx3egkkdDYsYCRGUkFNRSsyOGAoJHNwKQotKwlzdGZkCSRk b3RhLGAkRlJBTUUrNjRgKCRzcCkKLSsJc3RmZAkkZG90YixgJEZSQU1FKzcyYCgkc3ApCi0gCi0r CWFkZGMJJHQwLCR0MCwkY2FycnkKLSsJYWRkZQkkdDEsJHQxLCRjMQotKwlzcndpCSRjYXJyeSwk dDAsMTYKLSsJaW5zcndpCSRjYXJyeSwkdDEsMTYsMAotKwlzcndpCSRjMSwkdDEsMTYKLSsJYWRk YwkkdDIsJHQyLCRjYXJyeQotKwlhZGRlCSR0MywkdDMsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0Miwx NgotKwkgaW5zcndpCSR0MCwkdDIsMTYsMAkJOyAwLi4zMSBiaXRzCi0rCSBsd3oJJHQyLDEyKCR0 cCkJCTsgdHBbal0KLSsJaW5zcndpCSRjYXJyeSwkdDMsMTYsMAotKwlzcndpCSRjMSwkdDMsMTYK LSsJIGx3egkkdDMsOCgkdHApCi0rCWFkZGMJJHQ0LCR0NCwkY2FycnkKLSsJYWRkZQkkdDUsJHQ1 LCRjMQotKwlzcndpCSRjYXJyeSwkdDQsMTYKLSsJaW5zcndpCSRjYXJyeSwkdDUsMTYsMAotKwlz cndpCSRjMSwkdDUsMTYKLSsJYWRkYwkkdDYsJHQ2LCRjYXJyeQotKwlhZGRlCSR0NywkdDcsJGMx Ci0rCXNyd2kJJGNhcnJ5LCR0NiwxNgotKwkgaW5zcndpCSR0NCwkdDYsMTYsMAkJOyAzMi4uNjMg Yml0cwotKwlpbnNyd2kJJGNhcnJ5LCR0NywxNiwwCi0rCXNyd2kJJGMxLCR0NywxNgotKwotKwlh ZGRjCSR0MCwkdDAsJHQyCi0rCWFkZGUJJHQ0LCR0NCwkdDMKLSsJYWRkemUJJGNhcnJ5LCRjYXJy eQotKwlhZGR6ZQkkYzEsJGMxCi0rCSBzdHcJJHQwLDQoJHRwKQkJOyB0cFtqLTFdCi0rCSBzdHcJ JHQ0LDAoJHRwKQotKwotKwlsd3oJJHQzLGAkRlJBTUUrMzJgKCRzcCkJOyBwZXJtdXRlZCAkdDEK LSsJbHd6CSR0MixgJEZSQU1FKzM2YCgkc3ApCTsgcGVybXV0ZWQgJHQwCi0rCWx3egkkdDcsYCRG UkFNRSs0MGAoJHNwKQk7IHBlcm11dGVkICR0MwotKwlsd3oJJHQ2LGAkRlJBTUUrNDRgKCRzcCkJ OyBwZXJtdXRlZCAkdDIKLSsJbHd6CSR0MSxgJEZSQU1FKzQ4YCgkc3ApCTsgcGVybXV0ZWQgJHQ1 Ci0rCWx3egkkdDAsYCRGUkFNRSs1MmAoJHNwKQk7IHBlcm11dGVkICR0NAotKwlsd3oJJHQ1LGAk RlJBTUUrNTZgKCRzcCkJOyBwZXJtdXRlZCAkdDcKLSsJbHd6CSR0NCxgJEZSQU1FKzYwYCgkc3Ap CTsgcGVybXV0ZWQgJHQ2Ci0rCi0rCWFkZGMJJHQyLCR0MiwkY2FycnkKLSsJYWRkZQkkdDMsJHQz LCRjMQotKwlzcndpCSRjYXJyeSwkdDIsMTYKLSsJaW5zcndpCSRjYXJyeSwkdDMsMTYsMAotKwlz cndpCSRjMSwkdDMsMTYKLSsJYWRkYwkkdDYsJHQ2LCRjYXJyeQotKwlhZGRlCSR0NywkdDcsJGMx Ci0rCXNyd2kJJGNhcnJ5LCR0NiwxNgotKwkgaW5zcndpCSR0MiwkdDYsMTYsMAkJOyA2NC4uOTUg Yml0cwotKwkgbHd6CSR0NiwyMCgkdHApCi0rCWluc3J3aQkkY2FycnksJHQ3LDE2LDAKLSsJc3J3 aQkkYzEsJHQ3LDE2Ci0rCSBsd3p1CSR0NywxNigkdHApCi0rCWFkZGMJJHQwLCR0MCwkY2FycnkK LSsJYWRkZQkkdDEsJHQxLCRjMQotKwlzcndpCSRjYXJyeSwkdDAsMTYKLSsJaW5zcndpCSRjYXJy eSwkdDEsMTYsMAotKwlzcndpCSRjMSwkdDEsMTYKLSsJYWRkYwkkdDQsJHQ0LCRjYXJyeQotKwlh ZGRlCSR0NSwkdDUsJGMxCi0rCXNyd2kJJGNhcnJ5LCR0NCwxNgotKwkgaW5zcndpCSR0MCwkdDQs MTYsMAkJOyA5Ni4uMTI3IGJpdHMKLSsJaW5zcndpCSRjYXJyeSwkdDUsMTYsMAotKwlzcndpCSRj MSwkdDUsMTYKLSsKLSsJYWRkYwkkdDIsJHQyLCR0NgotKwlhZGRlCSR0MCwkdDAsJHQ3Ci0rCSBs d3oJJHQ3LGAkRlJBTUUrNjRgKCRzcCkKLSsJIGx3egkkdDYsYCRGUkFNRSs2OGAoJHNwKQotKwlh ZGR6ZQkkY2FycnksJGNhcnJ5Ci0rCWFkZHplCSRjMSwkYzEKLSsJIGx3egkkdDUsYCRGUkFNRSs3 MmAoJHNwKQotKwkgbHd6CSR0NCxgJEZSQU1FKzc2YCgkc3ApCi0rCi0rCWFkZGMJJHQ2LCR0Niwk Y2FycnkKLSsJYWRkZQkkdDcsJHQ3LCRjMQotKwkgc3R3CSR0MiwtNCgkdHApCQk7IHRwW2pdCi0r CSBzdHcJJHQwLC04KCR0cCkKLSsJYWRkYwkkdDYsJHQ2LCRvdmYKLSsJYWRkemUJJHQ3LCR0Nwot KwlzcndpCSRjYXJyeSwkdDYsMTYKLSsJaW5zcndpCSRjYXJyeSwkdDcsMTYsMAotKwlzcndpCSRj MSwkdDcsMTYKLSsJYWRkYwkkdDQsJHQ0LCRjYXJyeQotKwlhZGRlCSR0NSwkdDUsJGMxCi0rCi0r CWluc3J3aQkkdDYsJHQ0LDE2LDAKLSsJc3J3aQkkdDQsJHQ0LDE2Ci0rCWluc3J3aQkkdDQsJHQ1 LDE2LDAKLSsJc3J3aQkkb3ZmLCR0NSwxNgotKwlzdHcJJHQ2LDQoJHRwKQkJOyB0cFtudW0tMV0K LSsJc3R3CSR0NCwwKCR0cCkKLStfX18KLSt9Ci0rJGNvZGUuPTw8X19fOwotIAlzbHdpCSR0Nywk bnVtLDIKLSAJYWRkaQkkaSwkaSw4Ci0gCXN1YmYJJG5hcF9kLCR0NywkbmFwX2QJOyByZXdpbmQg cG9pbnRlcgotQEAgLTk5NCwxNCArMTUyOCwxNCBAQCAkY29kZS49PDxfX18gaWYgKCRTSVpFX1Q9 PTQpOwotIAltdGN0cgkkagotIAotIC5hbGlnbgk0Ci0tTHN1YjoJbGQJJHQwLDgoJHRwKQk7IGxv YWQgdHBbai4uaiszXSBpbiA2NC1iaXQgd29yZCBvcmRlcgotLQlsZHUJJHQyLDE2KCR0cCkKLStM c3ViOglsd3oJJHQwLDEyKCR0cCkJOyBsb2FkIHRwW2ouLmorM10gaW4gNjQtYml0IHdvcmQgb3Jk ZXIKLSsJbHd6CSR0MSw4KCR0cCkKLSsJbHd6CSR0MiwyMCgkdHApCi0rCWx3enUJJHQzLDE2KCR0 cCkKLSAJbHd6CSR0NCw0KCRucCkJOyBsb2FkIG5wW2ouLmorM10gaW4gMzItYml0IHdvcmQgb3Jk ZXIKLSAJbHd6CSR0NSw4KCRucCkKLSAJbHd6CSR0NiwxMigkbnApCi0gCWx3enUJJHQ3LDE2KCRu cCkKLS0JZXh0cmRpCSR0MSwkdDAsMzIsMAotLQlleHRyZGkJJHQzLCR0MiwzMiwwCi0gCXN1YmZl CSR0NCwkdDQsJHQwCTsgdHBbal0tbnBbal0KLSAJIHN0dwkkdDAsNCgkYXApCTsgc2F2ZSB0cFtq Li5qKzNdIGluIDMyLWJpdCB3b3JkIG9yZGVyCi0gCXN1YmZlCSR0NSwkdDUsJHQxCTsgdHBbaisx XS1ucFtqKzFdCi1AQCAtMTA1Miw2ICsxNTg2LDkgQEAgX19fCi0gJGNvZGUuPTw8X19fOwotIAkk UE9QCSRpLDAoJHNwKQotIAlsaQlyMywxCTsgc2lnbmFsICJoYW5kbGVkIgotKwkkUE9QCXIxOSxg LTEyKjgtMTMqJFNJWkVfVGAoJGkpCi0rCSRQT1AJcjIwLGAtMTIqOC0xMiokU0laRV9UYCgkaSkK LSsJJFBPUAlyMjEsYC0xMio4LTExKiRTSVpFX1RgKCRpKQotIAkkUE9QCXIyMixgLTEyKjgtMTAq JFNJWkVfVGAoJGkpCi0gCSRQT1AJcjIzLGAtMTIqOC05KiRTSVpFX1RgKCRpKQotIAkkUE9QCXIy NCxgLTEyKjgtOCokU0laRV9UYCgkaSkKLUBAIC0xMDc3LDggKzE2MTQsOSBAQCAkY29kZS49PDxf X187Ci0gCW1yCSRzcCwkaQotIAlibHIKLSAJLmxvbmcJMAotLQkuYnl0ZQkwLDEyLDQsMCwweDhj LDEwLDYsMAotKwkuYnl0ZQkwLDEyLDQsMCwweDhjLDEzLDYsMAotIAkubG9uZwkwCi0rLnNpemUJ LiRmbmFtZSwuLS4kZm5hbWUKLSAKLSAuYXNjaXogICJNb250Z29tZXJ5IE11bHRpcGxpY2F0aW9u IGZvciBQUEM2NCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKLSBfX18KLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9ldnAvZV9hZXMuYy5wcGMtYXNtIG9wZW5zc2wt MS4wLjFpL2NyeXB0by9ldnAvZV9hZXMuYwotLS0tIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9ldnAv ZV9hZXMuYy5wcGMtYXNtCTIwMTQtMDgtMDYgMjM6MTA6NTYuMDAwMDAwMDAwICswMjAwCi0rKysg b3BlbnNzbC0xLjAuMWkvY3J5cHRvL2V2cC9lX2Flcy5jCTIwMTQtMDgtMTMgMTk6NDY6MjEuMDk0 NTc4MTUxICswMjAwCi1AQCAtMTUzLDYgKzE1MywyMCBAQCB2b2lkIEFFU194dHNfZGVjcnlwdChj b25zdCBjaGFyICppbnAsY2hhCi0gCQkJY29uc3QgdW5zaWduZWQgY2hhciBpdlsxNl0pOwotICNl bmRpZgotIAotKyNpZglkZWZpbmVkKE9QRU5TU0xfQ1BVSURfT0JKKSAmJiAoZGVmaW5lZChfX3Bv d2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9BUkNIX1BQQykpCi0rIyBp bmNsdWRlICJwcGNfYXJjaC5oIgotKyMgaWZkZWYgVlBBRVNfQVNNCi0rIyAgZGVmaW5lIFZQQUVT X0NBUEFCTEUJKE9QRU5TU0xfcHBjY2FwX1AgJiBQUENfQUxUSVZFQykKLSsjIGVuZGlmCi0rIyBk ZWZpbmUgSFdBRVNfQ0FQQUJMRQkoT1BFTlNTTF9wcGNjYXBfUCAmIFBQQ19DUllQVE8yMDcpCi0r IyBkZWZpbmUgSFdBRVNfc2V0X2VuY3J5cHRfa2V5IGFlc19wOF9zZXRfZW5jcnlwdF9rZXkKLSsj IGRlZmluZSBIV0FFU19zZXRfZGVjcnlwdF9rZXkgYWVzX3A4X3NldF9kZWNyeXB0X2tleQotKyMg ZGVmaW5lIEhXQUVTX2VuY3J5cHQgYWVzX3A4X2VuY3J5cHQKLSsjIGRlZmluZSBIV0FFU19kZWNy eXB0IGFlc19wOF9kZWNyeXB0Ci0rIyBkZWZpbmUgSFdBRVNfY2JjX2VuY3J5cHQgYWVzX3A4X2Ni Y19lbmNyeXB0Ci0rIyBkZWZpbmUgSFdBRVNfY3RyMzJfZW5jcnlwdF9ibG9ja3MgYWVzX3A4X2N0 cjMyX2VuY3J5cHRfYmxvY2tzCi0rI2VuZGlmCi0rCi0gI2lmCWRlZmluZWQoQUVTX0FTTSkgJiYg IWRlZmluZWQoSTM4Nl9PTkxZKSAmJgkoICBcCi0gCSgoZGVmaW5lZChfX2kzODYpCXx8IGRlZmlu ZWQoX19pMzg2X18pCXx8IFwKLSAJICBkZWZpbmVkKF9NX0lYODYpKSAmJiBkZWZpbmVkKE9QRU5T U0xfSUEzMl9TU0UyKSl8fCBcCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vbW9kZXMv YXNtL2doYXNocDgtcHBjLnBsLnBwYy1hc20gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL21vZGVzL2Fz bS9naGFzaHA4LXBwYy5wbAotLS0tIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9tb2Rlcy9hc20vZ2hh c2hwOC1wcGMucGwucHBjLWFzbQkyMDE0LTA4LTEzIDE5OjQ2OjIxLjA5NTU3ODE3NCArMDIwMAot KysrIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2hwOC1wcGMucGwJMjAxNC0w OC0xMyAxOTo0NjoyMS4wOTU1NzgxNzQgKzAyMDAKLUBAIC0wLDAgKzEsMjM0IEBACi0rIyEvdXNy L2Jpbi9lbnYgcGVybAotKyMKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyBXcml0dGVuIGJ5IEFuZHkgUG9s eWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKLSsjIHByb2plY3QuIFRo ZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKLSsj IENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZv ciBmdXJ0aGVyCi0rIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9j cnlwdG9nYW1zLy4KLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIwotKyMgR0hBU0ggZm9yIGZvciBQb3dlcklT QSB2Mi4wNy4KLSsjCi0rIyBKdWx5IDIwMTQKLSsjCi0rIyBBY2N1cmF0ZSBwZXJmb3JtYW5jZSBt ZWFzdXJlbWVudHMgYXJlIHByb2JsZW1hdGljLCBiZWNhdXNlIGl0J3MKLSsjIGFsd2F5cyB2aXJ0 dWFsaXplZCBzZXR1cCB3aXRoIHBvc3NpYmx5IHRocm90dGxlZCBwcm9jZXNzb3IuCi0rIyBSZWxh dGl2ZSBjb21wYXJpc29uIGlzIHRoZXJlZm9yZSBtb3JlIGluZm9ybWF0aXZlLiBUaGlzIGluaXRp YWwKLSsjIHZlcnNpb24gaXMgfjIuMXggc2xvd2VyIHRoYW4gaGFyZHdhcmUtYXNzaXN0ZWQgQUVT LTEyOC1DVFIsIH4xMngKLSsjIGZhc3RlciB0aGFuICI0LWJpdCIgaW50ZWdlci1vbmx5IGNvbXBp bGVyLWdlbmVyYXRlZCA2NC1iaXQgY29kZS4KLSsjICJJbml0aWFsIHZlcnNpb24iIG1lYW5zIHRo YXQgdGhlcmUgaXMgcm9vbSBmb3IgZnV0aGVyIGltcHJvdmVtZW50LgotKwotKyRmbGF2b3VyPXNo aWZ0OwotKyRvdXRwdXQgPXNoaWZ0OwotKwotK2lmICgkZmxhdm91ciA9fiAvNjQvKSB7Ci0rCSRT SVpFX1Q9ODsKLSsJJExSU0FWRT0yKiRTSVpFX1Q7Ci0rCSRTVFU9InN0ZHUiOwotKwkkUE9QPSJs ZCI7Ci0rCSRQVVNIPSJzdGQiOwotK30gZWxzaWYgKCRmbGF2b3VyID1+IC8zMi8pIHsKLSsJJFNJ WkVfVD00OwotKwkkTFJTQVZFPSRTSVpFX1Q7Ci0rCSRTVFU9InN0d3UiOwotKwkkUE9QPSJsd3oi OwotKwkkUFVTSD0ic3R3IjsKLSt9IGVsc2UgeyBkaWUgIm5vbnNlbnNlICRmbGF2b3VyIjsgfQot KwotKyQwID1+IG0vKC4qW1wvXFxdKVteXC9cXF0rJC87ICRkaXI9JDE7Ci0rKCAkeGxhdGU9IiR7 ZGlyfXBwYy14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSApIG9yCi0rKCAkeGxhdGU9IiR7ZGlyfS4u Ly4uL3Blcmxhc20vcHBjLXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlKSBvcgotK2RpZSAiY2FuJ3Qg bG9jYXRlIHBwYy14bGF0ZS5wbCI7Ci0rCi0rb3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAkZmxh dm91ciAkb3V0cHV0IiB8fCBkaWUgImNhbid0IGNhbGwgJHhsYXRlOiAkISI7Ci0rCi0rbXkgKCRY aXAsJEh0YmwsJGlucCwkbGVuKT1tYXAoInIkXyIsKDMuLjYpKTsJIyBhcmd1bWVudCBibG9jawot KwotK215ICgkWGwsJFhtLCRYaCwkSU4pPW1hcCgidiRfIiwoMC4uMykpOwotK215ICgkemVybywk dDAsJHQxLCR0MiwkeEMyLCRILCRIaCwkSGwsJGxlbWFzayk9bWFwKCJ2JF8iLCg0Li4xMikpOwot K215ICR2cnNhdmU9InIxMiI7Ci0rCi0rJGNvZGU9PDxfX187Ci0rLm1hY2hpbmUJImFueSIKLSsK LSsudGV4dAotKwotKy5nbG9ibAkuZ2NtX2luaXRfcDgKLSsuYWxpZ24JNQotKy5nY21faW5pdF9w ODoKLSsJbGlzCQlyMCwweGZmZjAKLSsJbGkJCXI4LDB4MTAKLSsJbWZzcHIJCSR2cnNhdmUsMjU2 Ci0rCWxpCQlyOSwweDIwCi0rCW10c3ByCQkyNTYscjAKLSsJbGkJCXIxMCwweDMwCi0rCWx2eF91 CQkkSCwwLHI0CQkJIyBsb2FkIEgKLSsKLSsJdnNwbHRpc2IJJHhDMiwtMTYJCSMgMHhmMAotKwl2 c3BsdGlzYgkkdDAsMQkJCSMgb25lCi0rCXZhZGR1Ym0JCSR4QzIsJHhDMiwkeEMyCQkjIDB4ZTAK LSsJdnhvcgkJJHplcm8sJHplcm8sJHplcm8KLSsJdm9yCQkkeEMyLCR4QzIsJHQwCQkjIDB4ZTEK LSsJdnNsZG9pCQkkeEMyLCR4QzIsJHplcm8sMTUJIyAweGUxLi4uCi0rCXZzbGRvaQkJJHQxLCR6 ZXJvLCR0MCwxCQkjIC4uLjEKLSsJdmFkZHVibQkJJHhDMiwkeEMyLCR4QzIJCSMgMHhjMi4uLgot Kwl2c3BsdGlzYgkkdDIsNwotKwl2b3IJCSR4QzIsJHhDMiwkdDEJCSMgMHhjMi4uLi4wMQotKwl2 c3BsdGIJCSR0MSwkSCwwCQkjIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZQotKwl2c2wJCSRILCRILCR0 MAkJIyBIPDw9MQotKwl2c3JhYgkJJHQxLCR0MSwkdDIJCSMgYnJvYWRjYXN0IGNhcnJ5IGJpdAot Kwl2YW5kCQkkdDEsJHQxLCR4QzIKLSsJdnhvcgkJJEgsJEgsJHQxCQkjIHR3aXN0ZWQgSAotKwot Kwl2c2xkb2kJCSRILCRILCRILDgJCSMgdHdpc3QgZXZlbiBtb3JlIC4uLgotKwl2c2xkb2kJCSR4 QzIsJHplcm8sJHhDMiw4CSMgMHhjMi4wCi0rCXZzbGRvaQkJJEhsLCR6ZXJvLCRILDgJCSMgLi4u IGFuZCBzcGxpdAotKwl2c2xkb2kJCSRIaCwkSCwkemVybyw4Ci0rCi0rCXN0dnhfdQkJJHhDMiww LHIzCQkjIHNhdmUgcHJlLWNvbXB1dGVkIHRhYmxlCi0rCXN0dnhfdQkJJEhsLHI4LHIzCi0rCXN0 dnhfdQkJJEgsIHI5LHIzCi0rCXN0dnhfdQkJJEhoLHIxMCxyMwotKwotKwltdHNwcgkJMjU2LCR2 cnNhdmUKLSsJYmxyCi0rCS5sb25nCQkwCi0rCS5ieXRlCQkwLDEyLDB4MTQsMCwwLDAsMiwwCi0r CS5sb25nCQkwCi0rLnNpemUJLmdjbV9pbml0X3A4LC4tLmdjbV9pbml0X3A4Ci0rCi0rLmdsb2Js CS5nY21fZ211bHRfcDgKLSsuYWxpZ24JNQotKy5nY21fZ211bHRfcDg6Ci0rCWxpcwkJcjAsMHhm ZmY4Ci0rCWxpCQlyOCwweDEwCi0rCW1mc3ByCQkkdnJzYXZlLDI1NgotKwlsaQkJcjksMHgyMAot KwltdHNwcgkJMjU2LHIwCi0rCWxpCQlyMTAsMHgzMAotKwlsdnhfdQkJJElOLDAsJFhpcAkJIyBs b2FkIFhpCi0rCi0rCWx2eF91CQkkSGwscjgsJEh0YmwJCSMgbG9hZCBwcmUtY29tcHV0ZWQgdGFi bGUKLSsJIGxlP2x2c2wJJGxlbWFzayxyMCxyMAotKwlsdnhfdQkJJEgsIHI5LCRIdGJsCi0rCSBs ZT92c3BsdGlzYgkkdDAsMHgwNwotKwlsdnhfdQkJJEhoLHIxMCwkSHRibAotKwkgbGU/dnhvcgkk bGVtYXNrLCRsZW1hc2ssJHQwCi0rCWx2eF91CQkkeEMyLDAsJEh0YmwKLSsJIGxlP3ZwZXJtCSRJ TiwkSU4sJElOLCRsZW1hc2sKLSsJdnhvcgkJJHplcm8sJHplcm8sJHplcm8KLSsKLSsJdnBtc3Vt ZAkJJFhsLCRJTiwkSGwJCSMgSC5sb++/vVhpLmxvCi0rCXZwbXN1bWQJCSRYbSwkSU4sJEgJCSMg SC5oae+/vVhpLmxvK0gubG/vv71YaS5oaQotKwl2cG1zdW1kCQkkWGgsJElOLCRIaAkJIyBILmhp 77+9WGkuaGkKLSsKLSsJdnBtc3VtZAkJJHQyLCRYbCwkeEMyCQkjIDFzdCBwaGFzZQotKwotKwl2 c2xkb2kJCSR0MCwkWG0sJHplcm8sOAotKwl2c2xkb2kJCSR0MSwkemVybywkWG0sOAotKwl2eG9y CQkkWGwsJFhsLCR0MAotKwl2eG9yCQkkWGgsJFhoLCR0MQotKwotKwl2c2xkb2kJCSRYbCwkWGws JFhsLDgKLSsJdnhvcgkJJFhsLCRYbCwkdDIKLSsKLSsJdnNsZG9pCQkkdDEsJFhsLCRYbCw4CQkj IDJuZCBwaGFzZQotKwl2cG1zdW1kCQkkWGwsJFhsLCR4QzIKLSsJdnhvcgkJJHQxLCR0MSwkWGgK LSsJdnhvcgkJJFhsLCRYbCwkdDEKLSsKLSsJbGU/dnBlcm0JJFhsLCRYbCwkWGwsJGxlbWFzawot KwlzdHZ4X3UJCSRYbCwwLCRYaXAJCSMgd3JpdGUgb3V0IFhpCi0rCi0rCW10c3ByCQkyNTYsJHZy c2F2ZQotKwlibHIKLSsJLmxvbmcJCTAKLSsJLmJ5dGUJCTAsMTIsMHgxNCwwLDAsMCwyLDAKLSsJ LmxvbmcJCTAKLSsuc2l6ZQkuZ2NtX2dtdWx0X3A4LC4tLmdjbV9nbXVsdF9wOAotKwotKy5nbG9i bAkuZ2NtX2doYXNoX3A4Ci0rLmFsaWduCTUKLSsuZ2NtX2doYXNoX3A4OgotKwlsaXMJCXIwLDB4 ZmZmOAotKwlsaQkJcjgsMHgxMAotKwltZnNwcgkJJHZyc2F2ZSwyNTYKLSsJbGkJCXI5LDB4MjAK LSsJbXRzcHIJCTI1NixyMAotKwlsaQkJcjEwLDB4MzAKLSsJbHZ4X3UJCSRYbCwwLCRYaXAJCSMg bG9hZCBYaQotKwotKwlsdnhfdQkJJEhsLHI4LCRIdGJsCQkjIGxvYWQgcHJlLWNvbXB1dGVkIHRh YmxlCi0rCSBsZT9sdnNsCSRsZW1hc2sscjAscjAKLSsJbHZ4X3UJCSRILCByOSwkSHRibAotKwkg bGU/dnNwbHRpc2IJJHQwLDB4MDcKLSsJbHZ4X3UJCSRIaCxyMTAsJEh0YmwKLSsJIGxlP3Z4b3IJ JGxlbWFzaywkbGVtYXNrLCR0MAotKwlsdnhfdQkJJHhDMiwwLCRIdGJsCi0rCSBsZT92cGVybQkk WGwsJFhsLCRYbCwkbGVtYXNrCi0rCXZ4b3IJCSR6ZXJvLCR6ZXJvLCR6ZXJvCi0rCi0rCWx2eF91 CQkkSU4sMCwkaW5wCi0rCWFkZGkJCSRpbnAsJGlucCwxNgotKwlzdWJpCQkkbGVuLCRsZW4sMTYK LSsJIGxlP3ZwZXJtCSRJTiwkSU4sJElOLCRsZW1hc2sKLSsJdnhvcgkJJElOLCRJTiwkWGwKLSsJ YgkJTG9vcAotKwotKy5hbGlnbgk1Ci0rTG9vcDoKLSsJIHN1YmljCQkkbGVuLCRsZW4sMTYKLSsJ dnBtc3VtZAkJJFhsLCRJTiwkSGwJCSMgSC5sb++/vVhpLmxvCi0rCSBzdWJmZS4JCXIwLHIwLHIw CQkjIGJvcnJvdz8tMTowCi0rCXZwbXN1bWQJCSRYbSwkSU4sJEgJCSMgSC5oae+/vVhpLmxvK0gu bG/vv71YaS5oaQotKwkgYW5kCQlyMCxyMCwkbGVuCi0rCXZwbXN1bWQJCSRYaCwkSU4sJEhoCQkj IEguaGnvv71YaS5oaQotKwkgYWRkCQkkaW5wLCRpbnAscjAKLSsKLSsJdnBtc3VtZAkJJHQyLCRY bCwkeEMyCQkjIDFzdCBwaGFzZQotKwotKwl2c2xkb2kJCSR0MCwkWG0sJHplcm8sOAotKwl2c2xk b2kJCSR0MSwkemVybywkWG0sOAotKwl2eG9yCQkkWGwsJFhsLCR0MAotKwl2eG9yCQkkWGgsJFho LCR0MQotKwotKwl2c2xkb2kJCSRYbCwkWGwsJFhsLDgKLSsJdnhvcgkJJFhsLCRYbCwkdDIKLSsJ IGx2eF91CQkkSU4sMCwkaW5wCi0rCSBhZGRpCQkkaW5wLCRpbnAsMTYKLSsKLSsJdnNsZG9pCQkk dDEsJFhsLCRYbCw4CQkjIDJuZCBwaGFzZQotKwl2cG1zdW1kCQkkWGwsJFhsLCR4QzIKLSsJIGxl P3ZwZXJtCSRJTiwkSU4sJElOLCRsZW1hc2sKLSsJdnhvcgkJJHQxLCR0MSwkWGgKLSsJdnhvcgkJ JElOLCRJTiwkdDEKLSsJdnhvcgkJJElOLCRJTiwkWGwKLSsJYmVxCQlMb29wCQkJIyBkaWQgJGxl bi09MTYgYm9ycm93PwotKwotKwl2eG9yCQkkWGwsJFhsLCR0MQotKwlsZT92cGVybQkkWGwsJFhs LCRYbCwkbGVtYXNrCi0rCXN0dnhfdQkJJFhsLDAsJFhpcAkJIyB3cml0ZSBvdXQgWGkKLSsKLSsJ bXRzcHIJCTI1NiwkdnJzYXZlCi0rCWJscgotKwkubG9uZwkJMAotKwkuYnl0ZQkJMCwxMiwweDE0 LDAsMCwwLDQsMAotKwkubG9uZwkJMAotKy5zaXplCS5nY21fZ2hhc2hfcDgsLi0uZ2NtX2doYXNo X3A4Ci0rCi0rLmFzY2l6ICAiR0hBU0ggZm9yIFBvd2VySVNBIDIuMDcsIENSWVBUT0dBTVMgYnkg PGFwcHJvXEBvcGVuc3NsLm9yZz4iCi0rLmFsaWduICAyCi0rX19fCi0rCi0rZm9yZWFjaCAoc3Bs aXQoIlxuIiwkY29kZSkpIHsKLSsJaWYgKCRmbGF2b3VyID1+IC9sZSQvbykgewkjIGxpdHRsZS1l bmRpYW4KLSsJICAgIHMvbGVcPy8vbwkJb3IKLSsJICAgIHMvYmVcPy8jYmUjL287Ci0rCX0gZWxz ZSB7Ci0rCSAgICBzL2xlXD8vI2xlIy9vCW9yCi0rCSAgICBzL2JlXD8vL287Ci0rCX0KLSsJcHJp bnQgJF8sIlxuIjsKLSt9Ci0rCi0rY2xvc2UgU1RET1VUOyAjIGVuZm9yY2UgZmx1c2gKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9tb2Rlcy9nY20xMjguYy5wcGMtYXNtIG9wZW5zc2wt MS4wLjFpL2NyeXB0by9tb2Rlcy9nY20xMjguYwotLS0tIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9t b2Rlcy9nY20xMjguYy5wcGMtYXNtCTIwMTQtMDgtMDYgMjM6MTA6NTYuMDAwMDAwMDAwICswMjAw Ci0rKysgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL21vZGVzL2djbTEyOC5jCTIwMTQtMDgtMTMgMTk6 NDY6MjEuMDk1NTc4MTc0ICswMjAwCi1AQCAtNjcxLDYgKzY3MSwyMSBAQCB2b2lkIGdjbV9naGFz aF80Yml0X3g4Nih1NjQgWGlbMl0sY29uc3QKLSB2b2lkIGdjbV9nbXVsdF9uZW9uKHU2NCBYaVsy XSxjb25zdCB1MTI4IEh0YWJsZVsxNl0pOwotIHZvaWQgZ2NtX2doYXNoX25lb24odTY0IFhpWzJd LGNvbnN0IHUxMjggSHRhYmxlWzE2XSxjb25zdCB1OCAqaW5wLHNpemVfdCBsZW4pOwotICMgIGVu ZGlmCi0rIyBlbGlmIGRlZmluZWQoX19zcGFyY19fKSB8fCBkZWZpbmVkKF9fc3BhcmMpCi0rIyAg aW5jbHVkZSAic3BhcmNfYXJjaC5oIgotKyMgIGRlZmluZSBHSEFTSF9BU01fU1BBUkMKLSsjICBk ZWZpbmUgR0NNX0ZVTkNSRUZfNEJJVAotK2V4dGVybiB1bnNpZ25lZCBpbnQgT1BFTlNTTF9zcGFy Y3Y5Y2FwX1BbXTsKLSt2b2lkIGdjbV9pbml0X3ZpczModTEyOCBIdGFibGVbMTZdLGNvbnN0IHU2 NCBYaVsyXSk7Ci0rdm9pZCBnY21fZ211bHRfdmlzMyh1NjQgWGlbMl0sY29uc3QgdTEyOCBIdGFi bGVbMTZdKTsKLSt2b2lkIGdjbV9naGFzaF92aXMzKHU2NCBYaVsyXSxjb25zdCB1MTI4IEh0YWJs ZVsxNl0sY29uc3QgdTggKmlucCxzaXplX3QgbGVuKTsKLSsjZWxpZiBkZWZpbmVkKE9QRU5TU0xf Q1BVSURfT0JKKSAmJiAoZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8 fCBkZWZpbmVkKF9BUkNIX1BQQykpCi0rIyAgaW5jbHVkZSAicHBjX2FyY2guaCIKLSsjICBkZWZp bmUgR0hBU0hfQVNNX1BQQwotKyMgIGRlZmluZSBHQ01fRlVOQ1JFRl80QklUCi0rdm9pZCBnY21f aW5pdF9wOCh1MTI4IEh0YWJsZVsxNl0sY29uc3QgdTY0IFhpWzJdKTsKLSt2b2lkIGdjbV9nbXVs dF9wOCh1NjQgWGlbMl0sY29uc3QgdTEyOCBIdGFibGVbMTZdKTsKLSt2b2lkIGdjbV9naGFzaF9w OCh1NjQgWGlbMl0sY29uc3QgdTEyOCBIdGFibGVbMTZdLGNvbnN0IHU4ICppbnAsc2l6ZV90IGxl bik7Ci0gIyBlbmRpZgotICNlbmRpZgotIAotQEAgLTc0NSw2ICs3NjAsMTYgQEAgdm9pZCBDUllQ VE9fZ2NtMTI4X2luaXQoR0NNMTI4X0NPTlRFWFQgKgotIAl9IGVsc2UgewotIAkJZ2NtX2luaXRf NGJpdChjdHgtPkh0YWJsZSxjdHgtPkgudSk7Ci0gCQljdHgtPmdtdWx0ID0gZ2NtX2dtdWx0XzRi aXQ7Ci0rCQljdHgtPmdoYXNoID0gZ2NtX2doYXNoXzRiaXQ7Ci0rCX0KLSsjIGVsaWYJZGVmaW5l ZChHSEFTSF9BU01fUFBDKQotKwlpZiAoT1BFTlNTTF9wcGNjYXBfUCAmIFBQQ19DUllQVE8yMDcp IHsKLSsJCWdjbV9pbml0X3A4KGN0eC0+SHRhYmxlLGN0eC0+SC51KTsKLSsJCWN0eC0+Z211bHQg PSBnY21fZ211bHRfcDg7Ci0rCQljdHgtPmdoYXNoID0gZ2NtX2doYXNoX3A4OwotKwl9IGVsc2Ug ewotKwkJZ2NtX2luaXRfNGJpdChjdHgtPkh0YWJsZSxjdHgtPkgudSk7Ci0rCQljdHgtPmdtdWx0 ID0gZ2NtX2dtdWx0XzRiaXQ7Ci0gCQljdHgtPmdoYXNoID0gZ2NtX2doYXNoXzRiaXQ7Ci0gCX0K LSAjIGVsc2UKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9tb2Rlcy9NYWtlZmlsZS5w cGMtYXNtIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9tb2Rlcy9NYWtlZmlsZQotLS0tIG9wZW5zc2wt MS4wLjFpL2NyeXB0by9tb2Rlcy9NYWtlZmlsZS5wcGMtYXNtCTIwMTQtMDgtMTMgMTk6NDg6Mjgu NDM1NTExMTAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL21vZGVzL01ha2VmaWxl CTIwMTQtMDgtMTMgMTk6NDg6MDQuNjQxOTYzMDgyICswMjAwCi1AQCAtNTksNiArNTksOCBAQCBn aGFzaC1hbHBoYS5zOglhc20vZ2hhc2gtYWxwaGEucGwKLSAKLSBnaGFzaC1wYXJpc2MuczoJYXNt L2doYXNoLXBhcmlzYy5wbAotIAkkKFBFUkwpIGFzbS9naGFzaC1wYXJpc2MucGwgJChQRVJMQVNN X1NDSEVNRSkgJEAKLStnaGFzaHA4LXBwYy5zOglhc20vZ2hhc2hwOC1wcGMucGwKLSsJJChQRVJM KSBhc20vZ2hhc2hwOC1wcGMucGwgJChQRVJMQVNNX1NDSEVNRSkgJEAKLSAKLSAjIEdOVSBtYWtl ICJjYXRjaCBhbGwiCi0gZ2hhc2gtJS5TOglhc20vZ2hhc2gtJS5wbDsJJChQRVJMKSAkPCAkKFBF UkxBU01fU0NIRU1FKSAkQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3Blcmxhc20v cHBjLXhsYXRlLnBsLnBwYy1hc20gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3Blcmxhc20vcHBjLXhs YXRlLnBsCi0tLS0gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3Blcmxhc20vcHBjLXhsYXRlLnBsLnBw Yy1hc20JMjAxNC0wOC0wNiAyMzoxMDo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEu MC4xaS9jcnlwdG8vcGVybGFzbS9wcGMteGxhdGUucGwJMjAxNC0wOC0xMyAxOTo0NjoyMS4wOTU1 NzgxNzQgKzAyMDAKLUBAIC0yNyw3ICsyNyw4IEBAIG15ICRnbG9ibCA9IHN1YiB7Ci0gCS9vc3gv CQkmJiBkbyB7ICRuYW1lID0gIl8kbmFtZSI7Ci0gCQkJCWxhc3Q7Ci0gCQkJICAgICAgfTsKLS0J L2xpbnV4LiozMi8JJiYgZG8gewkkcmV0IC49ICIuZ2xvYmwJJG5hbWVcbiI7Ci0rCS9saW51eC4q KDMyfDY0bGUpLwotKwkJCSYmIGRvIHsJJHJldCAuPSAiLmdsb2JsCSRuYW1lXG4iOwotIAkJCQkk cmV0IC49ICIudHlwZQkkbmFtZSxcQGZ1bmN0aW9uIjsKLSAJCQkJbGFzdDsKLSAJCQkgICAgICB9 OwotQEAgLTM3LDcgKzM4LDYgQEAgbXkgJGdsb2JsID0gc3ViIHsKLSAJCQkJJHJldCAuPSAiLmFs aWduCTNcbiI7Ci0gCQkJCSRyZXQgLj0gIiRuYW1lOlxuIjsKLSAJCQkJJHJldCAuPSAiLnF1YWQJ LiRuYW1lLC5UT0MuXEB0b2NiYXNlLDBcbiI7Ci0tCQkJCSRyZXQgLj0gIi5zaXplCSRuYW1lLDI0 XG4iOwotIAkJCQkkcmV0IC49ICIucHJldmlvdXNcbiI7Ci0gCi0gCQkJCSRuYW1lID0gIi4kbmFt ZSI7Ci1AQCAtNTAsNyArNTAsOSBAQCBteSAkZ2xvYmwgPSBzdWIgewotICAgICAkcmV0OwotIH07 Ci0gbXkgJHRleHQgPSBzdWIgewotLSAgICAoJGZsYXZvdXIgPX4gL2FpeC8pID8gIi5jc2VjdCIg OiAiLnRleHQiOwotKyAgICBteSAkcmV0ID0gKCRmbGF2b3VyID1+IC9haXgvKSA/ICIuY3NlY3Rc dC50ZXh0W1BSXSw3IiA6ICIudGV4dCI7Ci0rICAgICRyZXQgPSAiLmFiaXZlcnNpb24JMlxuIi4k cmV0CWlmICgkZmxhdm91ciA9fiAvbGludXguKjY0bGUvKTsKLSsgICAgJHJldDsKLSB9OwotIG15 ICRtYWNoaW5lID0gc3ViIHsKLSAgICAgbXkgJGp1bmsgPSBzaGlmdDsKLUBAIC02Miw5ICs2NCwx MiBAQCBteSAkbWFjaGluZSA9IHN1YiB7Ci0gICAgICIubWFjaGluZQkkYXJjaCI7Ci0gfTsKLSBt eSAkc2l6ZSA9IHN1YiB7Ci0tICAgIGlmICgkZmxhdm91ciA9fiAvbGludXguKjMyLykKLSsgICAg aWYgKCRmbGF2b3VyID1+IC9saW51eC8pCi0gICAgIHsJc2hpZnQ7Ci0tCSIuc2l6ZQkiIC4gam9p bigiLCIsQF8pOwotKwlteSAkbmFtZSA9IHNoaWZ0OyAkbmFtZSA9fiBzfF5bXC5cX118fDsKLSsJ bXkgJHJldCAgPSAiLnNpemUJJG5hbWUsLi0iLigkZmxhdm91cj1+LzY0JC8/Ii4iOiIiKS4kbmFt ZTsKLSsJJHJldCAuPSAiXG4uc2l6ZQkuJG5hbWUsLi0uJG5hbWUiIGlmICgkZmxhdm91cj1+LzY0 JC8pOwotKwkkcmV0OwotICAgICB9Ci0gICAgIGVsc2UKLSAgICAgewkiIjsJfQotQEAgLTc3LDYg KzgyLDI1IEBAIG15ICRhc2NpeiA9IHN1YiB7Ci0gICAgIGVsc2UKLSAgICAgewkiIjsJfQotIH07 Ci0rbXkgJHF1YWQgPSBzdWIgewotKyAgICBzaGlmdDsKLSsgICAgbXkgQHJldDsKLSsgICAgbXkg KCRoaSwkbG8pOwotKyAgICBmb3IgKEBfKSB7Ci0rCWlmICgvXjB4KFswLTlhLWZdKj8pKFswLTlh LWZdezEsOH0pJC9pbykKLSsJeyAgJGhpPSQxPyIweCQxIjoiMCI7ICRsbz0iMHgkMiI7ICB9Ci0r CWVsc2lmICgvXihbMC05XSspJC9vKQotKwl7ICAkaGk9JDE+PjMyOyAkbG89JDEmMHhmZmZmZmZm ZjsgIH0gIyBlcnJvci1wcm9uZSB3aXRoIDMyLWJpdCBwZXJsCi0rCWVsc2UKLSsJeyAgJGhpPXVu ZGVmOyAkbG89JF87IH0KLSsKLSsJaWYgKGRlZmluZWQoJGhpKSkKLSsJeyAgcHVzaChAcmV0LCRm bGF2b3VyPX4vbGUkL28/Ii5sb25nXHQkbG8sJGhpIjoiLmxvbmdcdCRoaSwkbG8iKTsgIH0KLSsJ ZWxzZQotKwl7ICBwdXNoKEByZXQsIi5xdWFkCSRsbyIpOyAgfQotKyAgICB9Ci0rICAgIGpvaW4o IlxuIixAcmV0KTsKLSt9OwotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIHNpbXBsaWZpZWQgbW5lbW9uaWNzIG5v dCBoYW5kbGVkIGJ5IGF0IGxlYXN0IG9uZSBhc3NlbWJsZXIKLUBAIC0xMjIsNiArMTQ2LDQ2IEBA IG15ICRleHRyZGkgPSBzdWIgewotICAgICAkYiA9ICgkYiskbikmNjM7ICRuID0gNjQtJG47Ci0g ICAgICIJcmxkaWNsCSRyYSwkcnMsJGIsJG4iOwotIH07Ci0rbXkgJHZtciA9IHN1YiB7Ci0rICAg IG15ICgkZiwkdngsJHZ5KSA9IEBfOwotKyAgICAiCXZvcgkkdngsJHZ5LCR2eSI7Ci0rfTsKLSsK LSsjIFBvd2VySVNBIDIuMDYgc3R1ZmYKLStzdWIgdnN4bWVtX29wIHsKLSsgICAgbXkgKCRmLCAk dnJ0LCAkcmEsICRyYiwgJG9wKSA9IEBfOwotKyAgICAiCS5sb25nCSIuc3ByaW50ZiAiMHglWCIs KDMxPDwyNil8KCR2cnQ8PDIxKXwoJHJhPDwxNil8KCRyYjw8MTEpfCgkb3AqMisxKTsKLSt9Ci0r IyBtYWRlLXVwIHVuYWxpZ25lZCBtZW1vcnkgcmVmZXJlbmNlIEFsdGlWZWMvVk1YIGluc3RydWN0 aW9ucwotK215ICRsdnhfdQk9IHN1YiB7CXZzeG1lbV9vcChAXywgODQ0KTsgfTsJIyBseHZkMngK LStteSAkc3R2eF91CT0gc3ViIHsJdnN4bWVtX29wKEBfLCA5NzIpOyB9OwkjIHN0eHZkMngKLStt eSAkbHZkeF91CT0gc3ViIHsJdnN4bWVtX29wKEBfLCA1ODgpOyB9OwkjIGx4c2R4Ci0rbXkgJHN0 dmR4X3UJPSBzdWIgewl2c3htZW1fb3AoQF8sIDcxNik7IH07CSMgc3R4c2R4Ci0rbXkgJGx2eF80 dwk9IHN1YiB7IHZzeG1lbV9vcChAXywgNzgwKTsgfTsJIyBseHZ3NHgKLStteSAkc3R2eF80dwk9 IHN1YiB7IHZzeG1lbV9vcChAXywgOTA4KTsgfTsJIyBzdHh2dzR4Ci0rCi0rIyBQb3dlcklTQSAy LjA3IHN0dWZmCi0rc3ViIHZjcnlwdG9fb3AgewotKyAgICBteSAoJGYsICR2cnQsICR2cmEsICR2 cmIsICRvcCkgPSBAXzsKLSsgICAgIgkubG9uZwkiLnNwcmludGYgIjB4JVgiLCg0PDwyNil8KCR2 cnQ8PDIxKXwoJHZyYTw8MTYpfCgkdnJiPDwxMSl8JG9wOwotK30KLStteSAkdmNpcGhlcgk9IHN1 YiB7IHZjcnlwdG9fb3AoQF8sIDEyODgpOyB9OwotK215ICR2Y2lwaGVybGFzdAk9IHN1YiB7IHZj cnlwdG9fb3AoQF8sIDEyODkpOyB9OwotK215ICR2bmNpcGhlcgk9IHN1YiB7IHZjcnlwdG9fb3Ao QF8sIDEzNTIpOyB9OwotK215ICR2bmNpcGhlcmxhc3Q9IHN1YiB7IHZjcnlwdG9fb3AoQF8sIDEz NTMpOyB9OwotK215ICR2c2JveAk9IHN1YiB7IHZjcnlwdG9fb3AoQF8sIDAsIDE0ODApOyB9Owot K215ICR2c2hhc2lnbWFkCT0gc3ViIHsgbXkgKCRzdCwkc2l4KT1zcGxpY2UoQF8sLTIpOyB2Y3J5 cHRvX29wKEBfLCAkc3Q8PDR8JHNpeCwgMTczMCk7IH07Ci0rbXkgJHZzaGFzaWdtYXcJPSBzdWIg eyBteSAoJHN0LCRzaXgpPXNwbGljZShAXywtMik7IHZjcnlwdG9fb3AoQF8sICRzdDw8NHwkc2l4 LCAxNjY2KTsgfTsKLStteSAkdnBtc3VtYgk9IHN1YiB7IHZjcnlwdG9fb3AoQF8sIDEwMzIpOyB9 OwotK215ICR2cG1zdW1kCT0gc3ViIHsgdmNyeXB0b19vcChAXywgMTIyNCk7IH07Ci0rbXkgJHZw bXN1YmgJPSBzdWIgeyB2Y3J5cHRvX29wKEBfLCAxMDk2KTsgfTsKLStteSAkdnBtc3Vtdwk9IHN1 YiB7IHZjcnlwdG9fb3AoQF8sIDExNjApOyB9OwotK215ICR2YWRkdWRtCT0gc3ViIHsgdmNyeXB0 b19vcChAXywgMTkyKTsgIH07Ci0rCi0rbXkgJG10c2xlCT0gc3ViIHsKLSsgICAgbXkgKCRmLCAk YXJnKSA9IEBfOwotKyAgICAiCS5sb25nCSIuc3ByaW50ZiAiMHglWCIsKDMxPDwyNil8KCRhcmc8 PDIxKXwoMTQ3KjIpOwotK307Ci0gCi0gd2hpbGUoJGxpbmU9PD4pIHsKLSAKLUBAIC0xMzgsNyAr MjAyLDEwIEBAIHdoaWxlKCRsaW5lPTw+KSB7Ci0gICAgIHsKLSAJJGxpbmUgPX4gc3woXltcLlx3 XSspXDpccyp8fDsKLSAJbXkgJGxhYmVsID0gJDE7Ci0tCXByaW50ZiAiJXM6IiwoJEdMT0JBTFN7 JGxhYmVsfSBvciAkbGFiZWwpIGlmICgkbGFiZWwpOwotKwlpZiAoJGxhYmVsKSB7Ci0rCSAgICBw cmludGYgIiVzOiIsKCRHTE9CQUxTeyRsYWJlbH0gb3IgJGxhYmVsKTsKLSsJICAgIHByaW50ZiAi XG4ubG9jYWxlbnRyeVx0JEdMT0JBTFN7JGxhYmVsfSwwIglpZiAoJEdMT0JBTFN7JGxhYmVsfSAm JiAkZmxhdm91ciA9fiAvbGludXguKjY0bGUvKTsKLSsJfQotICAgICB9Ci0gCi0gICAgIHsKLUBA IC0xNDcsNyArMjE0LDcgQEAgd2hpbGUoJGxpbmU9PD4pIHsKLSAJbXkgJG1uZW1vbmljID0gJDI7 Ci0gCW15ICRmID0gJDM7Ci0gCW15ICRvcGNvZGUgPSBldmFsKCJcJCRtbmVtb25pYyIpOwotLQkk bGluZSA9fiBzfFxiYz9bcmZdKFswLTldKylcYnwkMXxnIGlmICgkYyBuZSAiLiIgYW5kICRmbGF2 b3VyICF+IC9vc3gvKTsKLSsJJGxpbmUgPX4gcy9cYihjP1tyZl18dnx2cykoWzAtOV0rKVxiLyQy L2cgaWYgKCRjIG5lICIuIiBhbmQgJGZsYXZvdXIgIX4gL29zeC8pOwotIAlpZiAocmVmKCRvcGNv ZGUpIGVxICdDT0RFJykgeyAkbGluZSA9ICYkb3Bjb2RlKCRmLHNwbGl0KCcsJywkbGluZSkpOyB9 Ci0gCWVsc2lmICgkbW5lbW9uaWMpICAgICAgICAgICB7ICRsaW5lID0gJGMuJG1uZW1vbmljLiRm LiJcdCIuJGxpbmU7IH0KLSAgICAgfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3Bw Y19hcmNoLmgucHBjLWFzbSBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vcHBjX2FyY2guaAotLS0tIG9w ZW5zc2wtMS4wLjFpL2NyeXB0by9wcGNfYXJjaC5oLnBwYy1hc20JMjAxNC0wOC0xMyAxOTo0Njoy MS4wOTU1NzgxNzQgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vcHBjX2FyY2guaAky MDE0LTA4LTEzIDE5OjQ2OjIxLjA5NTU3ODE3NCArMDIwMAotQEAgLTAsMCArMSwxMCBAQAotKyNp Zm5kZWYgX19QUENfQVJDSF9IX18KLSsjZGVmaW5lIF9fUFBDX0FSQ0hfSF9fCi0rCi0rZXh0ZXJu IHVuc2lnbmVkIGludCBPUEVOU1NMX3BwY2NhcF9QOwotKwotKyNkZWZpbmUgUFBDX0ZQVTY0CSgx PDwwKQotKyNkZWZpbmUgUFBDX0FMVElWRUMJKDE8PDEpCi0rI2RlZmluZSBQUENfQ1JZUFRPMjA3 CSgxPDwyKQotKwotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3BwY2Nh cC5jLnBwYy1hc20gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3BwY2NhcC5jCi0tLS0gb3BlbnNzbC0x LjAuMWkvY3J5cHRvL3BwY2NhcC5jLnBwYy1hc20JMjAxNC0wOC0wNiAyMzoxMDo1Ni4wMDAwMDAw MDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vcHBjY2FwLmMJMjAxNC0wOC0xMyAx OTo0NjoyMS4wOTU1NzgxNzQgKzAyMDAKLUBAIC00LDEzICs0LDE1IEBACi0gI2luY2x1ZGUgPHNl dGptcC5oPgotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2lm IGRlZmluZWQoX19saW51eCkgfHwgZGVmaW5lZChfQUlYKQotKyNpbmNsdWRlIDxzeXMvdXRzbmFt ZS5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxjcnlwdG8uaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9i bi5oPgotIAotLSNkZWZpbmUgUFBDX0ZQVTY0CSgxPDwwKQotLSNkZWZpbmUgUFBDX0FMVElWRUMJ KDE8PDEpCi0rI2luY2x1ZGUgInBwY19hcmNoLmgiCi0gCi0tc3RhdGljIGludCBPUEVOU1NMX3Bw Y2NhcF9QID0gMDsKLSt1bnNpZ25lZCBpbnQgT1BFTlNTTF9wcGNjYXBfUCA9IDA7Ci0gCi0gc3Rh dGljIHNpZ3NldF90IGFsbF9tYXNrZWQ7Ci0gCi1AQCAtMjIsNyArMjQsNyBAQCBpbnQgYm5fbXVs X21vbnQoQk5fVUxPTkcgKnJwLCBjb25zdCBCTl9VCi0gCi0gCWlmIChzaXplb2Yoc2l6ZV90KT09 NCkKLSAJCXsKLS0jaWYgKGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKF9fTUFDSF9fKSkK LSsjaWYgMSB8fCAoZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19NQUNIX18pKQotIAkJ aWYgKG51bT49OCAmJiAobnVtJjMpPT0wICYmIChPUEVOU1NMX3BwY2NhcF9QJlBQQ19GUFU2NCkp Ci0gCQkJcmV0dXJuIGJuX211bF9tb250X2ZwdTY0KHJwLGFwLGJwLG5wLG4wLG51bSk7Ci0gI2Vs c2UKLUBAIC01MCwxMSArNTIsMjggQEAgaW50IGJuX211bF9tb250KEJOX1VMT05HICpycCwgY29u c3QgQk5fVQotIAl9Ci0gI2VuZGlmCi0gCi0rdm9pZCBzaGEyNTZfYmxvY2tfcDgodm9pZCAqY3R4 LGNvbnN0IHZvaWQgKmlucCxzaXplX3QgbGVuKTsKLSt2b2lkIHNoYTI1Nl9ibG9ja19wcGModm9p ZCAqY3R4LGNvbnN0IHZvaWQgKmlucCxzaXplX3QgbGVuKTsKLSt2b2lkIHNoYTI1Nl9ibG9ja19k YXRhX29yZGVyKHZvaWQgKmN0eCxjb25zdCB2b2lkICppbnAsc2l6ZV90IGxlbikKLSsJewotKwlP UEVOU1NMX3BwY2NhcF9QJlBQQ19DUllQVE8yMDc/CXNoYTI1Nl9ibG9ja19wOChjdHgsaW5wLGxl bik6Ci0rCQkJCQlzaGEyNTZfYmxvY2tfcHBjKGN0eCxpbnAsbGVuKTsKLSsJfQotKwotK3ZvaWQg c2hhNTEyX2Jsb2NrX3A4KHZvaWQgKmN0eCxjb25zdCB2b2lkICppbnAsc2l6ZV90IGxlbik7Ci0r dm9pZCBzaGE1MTJfYmxvY2tfcHBjKHZvaWQgKmN0eCxjb25zdCB2b2lkICppbnAsc2l6ZV90IGxl bik7Ci0rdm9pZCBzaGE1MTJfYmxvY2tfZGF0YV9vcmRlcih2b2lkICpjdHgsY29uc3Qgdm9pZCAq aW5wLHNpemVfdCBsZW4pCi0rCXsKLSsJT1BFTlNTTF9wcGNjYXBfUCZQUENfQ1JZUFRPMjA3Pwlz aGE1MTJfYmxvY2tfcDgoY3R4LGlucCxsZW4pOgotKwkJCQkJc2hhNTEyX2Jsb2NrX3BwYyhjdHgs aW5wLGxlbik7Ci0rCX0KLSsKLSBzdGF0aWMgc2lnam1wX2J1ZiBpbGxfam1wOwotIHN0YXRpYyB2 b2lkIGlsbF9oYW5kbGVyIChpbnQgc2lnKSB7IHNpZ2xvbmdqbXAoaWxsX2ptcCxzaWcpOyB9Ci0g Ci0gdm9pZCBPUEVOU1NMX3BwYzY0X3Byb2JlKHZvaWQpOwotIHZvaWQgT1BFTlNTTF9hbHRpdmVj X3Byb2JlKHZvaWQpOwotK3ZvaWQgT1BFTlNTTF9jcnlwdG8yMDdfcHJvYmUodm9pZCk7Ci0gCi0g dm9pZCBPUEVOU1NMX2NwdWlkX3NldHVwKHZvaWQpCi0gCXsKLUBAIC04NSwxMiArMTA0LDE0IEBA IHZvaWQgT1BFTlNTTF9jcHVpZF9zZXR1cCh2b2lkKQotIAlPUEVOU1NMX3BwY2NhcF9QID0gMDsK LSAKLSAjaWYgZGVmaW5lZChfQUlYKQotLQlpZiAoc2l6ZW9mKHNpemVfdCk9PTQKLSsJaWYgKHNp emVvZihzaXplX3QpPT00KQotKwkJewotKwkJc3RydWN0IHV0c25hbWUgdXRzOwotICMgaWYgZGVm aW5lZChfU0NfQUlYX0tFUk5FTF9CSVRNT0RFKQotLQkgICAgJiYgc3lzY29uZihfU0NfQUlYX0tF Uk5FTF9CSVRNT0RFKSE9NjQKLSsJCWlmIChzeXNjb25mKF9TQ19BSVhfS0VSTkVMX0JJVE1PREUp IT02NCkJcmV0dXJuOwotICMgZW5kaWYKLS0JICAgKQotLQkJcmV0dXJuOwotKwkJaWYgKHVuYW1l KCZ1dHMpIT0wIHx8IGF0b2kodXRzLnZlcnNpb24pPDYpCXJldHVybjsKLSsJCX0KLSAjZW5kaWYK LSAKLSAJbWVtc2V0KCZpbGxfYWN0LDAsc2l6ZW9mKGlsbF9hY3QpKTsKLUBAIC0xMDIsNiArMTIz LDEwIEBAIHZvaWQgT1BFTlNTTF9jcHVpZF9zZXR1cCh2b2lkKQotIAotIAlpZiAoc2l6ZW9mKHNp emVfdCk9PTQpCi0gCQl7Ci0rI2lmZGVmIF9fbGludXgKLSsJCXN0cnVjdCB1dHNuYW1lIHV0czsK LSsJCWlmICh1bmFtZSgmdXRzKT09MCAmJiBzdHJjbXAodXRzLm1hY2hpbmUsInBwYzY0Iik9PTAp Ci0rI2VuZGlmCi0gCQlpZiAoc2lnc2V0am1wKGlsbF9qbXAsMSkgPT0gMCkKLSAJCQl7Ci0gCQkJ T1BFTlNTTF9wcGM2NF9wcm9iZSgpOwotQEAgLTExOSw2ICsxNDQsMTEgQEAgdm9pZCBPUEVOU1NM X2NwdWlkX3NldHVwKHZvaWQpCi0gCQl7Ci0gCQlPUEVOU1NMX2FsdGl2ZWNfcHJvYmUoKTsKLSAJ CU9QRU5TU0xfcHBjY2FwX1AgfD0gUFBDX0FMVElWRUM7Ci0rCQlpZiAoc2lnc2V0am1wKGlsbF9q bXAsMSkgPT0gMCkKLSsJCQl7Ci0rCQkJT1BFTlNTTF9jcnlwdG8yMDdfcHJvYmUoKTsKLSsJCQlP UEVOU1NMX3BwY2NhcF9QIHw9IFBQQ19DUllQVE8yMDc7Ci0rCQkJfQotIAkJfQotIAotIAlzaWdh Y3Rpb24gKFNJR0lMTCwmaWxsX29hY3QsTlVMTCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9j cnlwdG8vcHBjY3B1aWQucGwucHBjLWFzbSBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vcHBjY3B1aWQu cGwKLS0tLSBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vcHBjY3B1aWQucGwucHBjLWFzbQkyMDE0LTA4 LTA2IDIzOjEwOjU2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9w cGNjcHVpZC5wbAkyMDE0LTA4LTEzIDE5OjQ2OjIxLjA5NjU3ODE5NiArMDIwMAotQEAgLTMxLDYg KzMxLDcgQEAgJGNvZGU9PDxfX187Ci0gCWJscgotIAkubG9uZwkwCi0gCS5ieXRlCTAsMTIsMHgx NCwwLDAsMCwwLDAKLSsuc2l6ZQkuT1BFTlNTTF9wcGM2NF9wcm9iZSwuLS5PUEVOU1NMX3BwYzY0 X3Byb2JlCi0gCi0gLmdsb2JsCS5PUEVOU1NMX2FsdGl2ZWNfcHJvYmUKLSAuYWxpZ24JNAotQEAg LTM5LDYgKzQwLDE3IEBAICRjb2RlPTw8X19fOwotIAlibHIKLSAJLmxvbmcJMAotIAkuYnl0ZQkw LDEyLDB4MTQsMCwwLDAsMCwwCi0rLnNpemUJLk9QRU5TU0xfYWx0aXZlY19wcm9iZSwuLS4uT1BF TlNTTF9hbHRpdmVjX3Byb2JlCi0rCi0rLmdsb2JsCS5PUEVOU1NMX2NyeXB0bzIwN19wcm9iZQot Ky5hbGlnbgk0Ci0rLk9QRU5TU0xfY3J5cHRvMjA3X3Byb2JlOgotKwlsdnhfdQl2MCwwLHIxCi0r CXZjaXBoZXIJdjAsdjAsdjAKLSsJYmxyCi0rCS5sb25nCTAKLSsJLmJ5dGUJMCwxMiwweDE0LDAs MCwwLDAsMAotKy5zaXplCS5PUEVOU1NMX2NyeXB0bzIwN19wcm9iZSwuLS5PUEVOU1NMX2NyeXB0 bzIwN19wcm9iZQotIAotIC5nbG9ibAkuT1BFTlNTTF93aXBlX2NwdQotIC5hbGlnbgk0Ci1AQCAt NzEsNiArODMsNyBAQCAkY29kZT08PF9fXzsKLSAJYmxyCi0gCS5sb25nCTAKLSAJLmJ5dGUJMCwx MiwweDE0LDAsMCwwLDAsMAotKy5zaXplCS5PUEVOU1NMX3dpcGVfY3B1LC4tLk9QRU5TU0xfd2lw ZV9jcHUKLSAKLSAuZ2xvYmwJLk9QRU5TU0xfYXRvbWljX2FkZAotIC5hbGlnbgk0Ci1AQCAtODQs NiArOTcsNyBAQCBMYWRkOglsd2FyeAlyNSwwLHIzCi0gCS5sb25nCTAKLSAJLmJ5dGUJMCwxMiww eDE0LDAsMCwwLDIsMAotIAkubG9uZwkwCi0rLnNpemUJLk9QRU5TU0xfYXRvbWljX2FkZCwuLS5P UEVOU1NMX2F0b21pY19hZGQKLSAKLSAuZ2xvYmwJLk9QRU5TU0xfcmR0c2MKLSAuYWxpZ24JNAot QEAgLTkzLDYgKzEwNyw3IEBAIExhZGQ6CWx3YXJ4CXI1LDAscjMKLSAJYmxyCi0gCS5sb25nCTAK LSAJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDAsMAotKy5zaXplCS5PUEVOU1NMX3JkdHNjLC4tLk9Q RU5TU0xfcmR0c2MKLSAKLSAuZ2xvYmwJLk9QRU5TU0xfY2xlYW5zZQotIC5hbGlnbgk0Ci1AQCAt MTI1LDcgKzE0MCw5OSBAQCBMYWxpZ25lZDoKLSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEyLDB4MTQs MCwwLDAsMiwwCi0gCS5sb25nCTAKLSsuc2l6ZQkuT1BFTlNTTF9jbGVhbnNlLC4tLk9QRU5TU0xf Y2xlYW5zZQotK19fXwotK3sKLStteSAoJG91dCwkY250LCRtYXgpPSgicjMiLCJyNCIsInI1Iik7 Ci0rbXkgKCR0aWNrLCRsYXN0dGljayk9KCJyNiIsInI3Iik7Ci0rbXkgKCRkaWZmLCRsYXN0ZGlm Zik9KCJyOCIsInI5Iik7Ci0rCi0rJGNvZGUuPTw8X19fOwotKy5nbG9ibAkuT1BFTlNTTF9pbnN0 cnVtZW50X2J1cwotKy5hbGlnbgk0Ci0rLk9QRU5TU0xfaW5zdHJ1bWVudF9idXM6Ci0rCW10Y3Ry CSRjbnQKLSsKLSsJbWZ0YgkkbGFzdHRpY2sJCSMgY29sbGVjdCAxc3QgdGljawotKwlsaQkkZGlm ZiwwCi0rCi0rCWRjYmYJMCwkb3V0CQkJIyBmbHVzaCBjYWNoZSBsaW5lCi0rCWx3YXJ4CSR0aWNr LDAsJG91dAkJIyBsb2FkIGFuZCBsb2NrCi0rCWFkZAkkdGljaywkdGljaywkZGlmZgotKwlzdHdj eC4JJHRpY2ssMCwkb3V0Ci0rCXN0d3gJJHRpY2ssMCwkb3V0Ci0rCi0rTG9vcDoJbWZ0YgkkdGlj awotKwlzdWIJJGRpZmYsJHRpY2ssJGxhc3R0aWNrCi0rCW1yCSRsYXN0dGljaywkdGljawotKwlk Y2JmCTAsJG91dAkJCSMgZmx1c2ggY2FjaGUgbGluZQotKwlsd2FyeAkkdGljaywwLCRvdXQJCSMg bG9hZCBhbmQgbG9jawotKwlhZGQJJHRpY2ssJHRpY2ssJGRpZmYKLSsJc3R3Y3guCSR0aWNrLDAs JG91dAotKwlzdHd4CSR0aWNrLDAsJG91dAotKwlhZGRpCSRvdXQsJG91dCw0CQkjICsrJG91dAot KwliZG56CUxvb3AKLSsKLSsJbXIJcjMsJGNudAotKwlibHIKLSsJLmxvbmcJMAotKwkuYnl0ZQkw LDEyLDB4MTQsMCwwLDAsMiwwCi0rCS5sb25nCTAKLSsuc2l6ZQkuT1BFTlNTTF9pbnN0cnVtZW50 X2J1cywuLS5PUEVOU1NMX2luc3RydW1lbnRfYnVzCi0rCi0rLmdsb2JsCS5PUEVOU1NMX2luc3Ry dW1lbnRfYnVzMgotKy5hbGlnbgk0Ci0rLk9QRU5TU0xfaW5zdHJ1bWVudF9idXMyOgotKwltcgly MCwkY250Ci0rCXNsd2kJJGNudCwkY250LDIKLSsKLSsJbWZ0YgkkbGFzdHRpY2sJCSMgY29sbGVj dCAxc3QgdGljawotKwlsaQkkZGlmZiwwCi0rCi0rCWRjYmYJMCwkb3V0CQkJIyBmbHVzaCBjYWNo ZSBsaW5lCi0rCWx3YXJ4CSR0aWNrLDAsJG91dAkJIyBsb2FkIGFuZCBsb2NrCi0rCWFkZAkkdGlj aywkdGljaywkZGlmZgotKwlzdHdjeC4JJHRpY2ssMCwkb3V0Ci0rCXN0d3gJJHRpY2ssMCwkb3V0 Ci0rCi0rCW1mdGIJJHRpY2sJCQkjIGNvbGxlY3QgMXN0IGRpZmYKLSsJc3ViCSRkaWZmLCR0aWNr LCRsYXN0dGljawotKwltcgkkbGFzdHRpY2ssJHRpY2sKLSsJbXIJJGxhc3RkaWZmLCRkaWZmCi0r TG9vcDI6Ci0rCWRjYmYJMCwkb3V0CQkJIyBmbHVzaCBjYWNoZSBsaW5lCi0rCWx3YXJ4CSR0aWNr LDAsJG91dAkJIyBsb2FkIGFuZCBsb2NrCi0rCWFkZAkkdGljaywkdGljaywkZGlmZgotKwlzdHdj eC4JJHRpY2ssMCwkb3V0Ci0rCXN0d3gJJHRpY2ssMCwkb3V0Ci0rCi0rCWFkZGljLgkkbWF4LCRt YXgsLTEKLSsJYmVxCUxkb25lMgotKwotKwltZnRiCSR0aWNrCi0rCXN1YgkkZGlmZiwkdGljaywk bGFzdHRpY2sKLSsJbXIJJGxhc3R0aWNrLCR0aWNrCi0rCWNtcGx3CTcsJGRpZmYsJGxhc3RkaWZm Ci0rCW1yCSRsYXN0ZGlmZiwkZGlmZgotKwotKwltZmNyCSR0aWNrCQkJIyBwdWxsIGNyCi0rCW5v dAkkdGljaywkdGljawkJIyBmbGlwIGJpdHMKLSsJcmx3aW5tCSR0aWNrLCR0aWNrLDEsMjksMjkJ IyBpc29sYXRlIGZsaXBwZWQgZXEgYml0IGFuZCBzY2FsZQotKwotKwlzdWIuCSRjbnQsJGNudCwk dGljawkJIyBjb25kaXRpb25hbCAtLSRjbnQKLSsJYWRkCSRvdXQsJG91dCwkdGljawkJIyBjb25k aXRpb25hbCArKyRvdXQKLSsJYm5lCUxvb3AyCi0rCi0rTGRvbmUyOgotKwlzcndpCSRjbnQsJGNu dCwyCi0rCXN1YglyMyxyMCwkY250Ci0rCWJscgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgx NCwwLDAsMCwzLDAKLSsJLmxvbmcJMAotKy5zaXplCS5PUEVOU1NMX2luc3RydW1lbnRfYnVzMiwu LS5PUEVOU1NMX2luc3RydW1lbnRfYnVzMgotIF9fXwotK30KLSAKLSAkY29kZSA9fiBzL1xgKFte XGBdKilcYC9ldmFsICQxL2dlbTsKLSBwcmludCAkY29kZTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4w LjFpL2NyeXB0by9zaGEvYXNtL3NoYTEtcHBjLnBsLnBwYy1hc20gb3BlbnNzbC0xLjAuMWkvY3J5 cHRvL3NoYS9hc20vc2hhMS1wcGMucGwKLS0tLSBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vc2hhL2Fz bS9zaGExLXBwYy5wbC5wcGMtYXNtCTIwMTQtMDgtMDYgMjM6MTA6NTYuMDAwMDAwMDAwICswMjAw Ci0rKysgb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3NoYS9hc20vc2hhMS1wcGMucGwJMjAxNC0wOC0x MyAxOTo0NjoyMS4wOTY1NzgxOTYgKzAyMDAKLUBAIC05LDggKzksNyBAQAotIAotICMgSSBsZXQg aGFyZHdhcmUgaGFuZGxlIHVuYWxpZ25lZCBpbnB1dCgqKSwgZXhjZXB0IG9uIHBhZ2UgYm91bmRh cmllcwotICMgKHNlZSBiZWxvdyBmb3IgZGV0YWlscykuIE90aGVyd2lzZSBzdHJhaWdodGZvcndh cmQgaW1wbGVtZW50YXRpb24KLS0jIHdpdGggWCB2ZWN0b3IgaW4gcmVnaXN0ZXIgYmFuay4gVGhl IG1vZHVsZSBpcyBiaWctZW5kaWFuIFt3aGljaCBpcwotLSMgbm90IGJpZyBkZWFsIGFzIHRoZXJl J3JlIG5vIGxpdHRsZS1lbmRpYW4gdGFyZ2V0cyBsZWZ0IGFyb3VuZF0uCi0rIyB3aXRoIFggdmVj dG9yIGluIHJlZ2lzdGVyIGJhbmsuCi0gIwotICMgKCopIHRoaXMgbWVhbnMgdGhhdCB0aGlzIG1v ZHVsZSBpcyBpbmFwcHJvcHJpYXRlIGZvciBQUEM0MDM/IERvZXMKLSAjICAgICBhbnlib2R5IGtu b3cgaWYgcHJlLVBPV0VSMyBjYW4gc3VzdGFpbiB1bmFsaWduZWQgbG9hZD8KLUBAIC0zOCw2ICsz NywxMCBAQCBpZiAoJGZsYXZvdXIgPX4gLzY0LykgewotIAkkUFVTSAk9InN0dyI7Ci0gfSBlbHNl IHsgZGllICJub25zZW5zZSAkZmxhdm91ciI7IH0KLSAKLSsjIERlZmluZSBlbmRpYW5lc3MgYmFz ZWQgb24gZmxhdm91cgotKyMgaS5lLjogbGludXg2NGxlCi0rJExJVFRMRV9FTkRJQU4gPSAoJGZs YXZvdXI9fi9sZSQvKSA/ICRTSVpFX1QgOiAwOwotKwotICQwID1+IG0vKC4qW1wvXFxdKVteXC9c XF0rJC87ICRkaXI9JDE7Ci0gKCAkeGxhdGU9IiR7ZGlyfXBwYy14bGF0ZS5wbCIgYW5kIC1mICR4 bGF0ZSApIG9yCi0gKCAkeGxhdGU9IiR7ZGlyfS4uLy4uL3Blcmxhc20vcHBjLXhsYXRlLnBsIiBh bmQgLWYgJHhsYXRlKSBvcgotQEAgLTY4LDE0ICs3MSwyOCBAQCAkVCAgPSJyMTIiOwotIEBYPSgi cjE2IiwicjE3IiwicjE4IiwicjE5IiwicjIwIiwicjIxIiwicjIyIiwicjIzIiwKLSAgICAgInIy NCIsInIyNSIsInIyNiIsInIyNyIsInIyOCIsInIyOSIsInIzMCIsInIzMSIpOwotIAotK3N1YiBs b2FkYmUgewotK215ICgkZHN0LCAkc3JjLCAkdGVtcF9yZWcpID0gQF87Ci0rJGNvZGUuPTw8X19f IGlmICghJExJVFRMRV9FTkRJQU4pOwotKwlsd3oJJGRzdCwkc3JjCi0rX19fCi0rJGNvZGUuPTw8 X19fIGlmICgkTElUVExFX0VORElBTik7Ci0rCWx3egkkdGVtcF9yZWcsJHNyYwotKwlyb3Rsd2kJ JGRzdCwkdGVtcF9yZWcsOAotKwlybHdpbWkJJGRzdCwkdGVtcF9yZWcsMjQsMCw3Ci0rCXJsd2lt aQkkZHN0LCR0ZW1wX3JlZywyNCwxNiwyMwotK19fXwotK30KLSsKLSBzdWIgQk9EWV8wMF8xOSB7 Ci0gbXkgKCRpLCRhLCRiLCRjLCRkLCRlLCRmKT1AXzsKLSBteSAkaj0kaSsxOwotLSRjb2RlLj08 PF9fXyBpZiAoJGk9PTApOwotLQlsd3oJQFhbJGldLGAkaSo0YCgkaW5wKQotLV9fXwotKwotKwkj IFNpbmNlIHRoZSBsYXN0IHZhbHVlIG9mICRmIGlzIGRpc2NhcmRlZCwgd2UgY2FuIHVzZQotKwkj IGl0IGFzIGEgdGVtcCByZWcgdG8gc3dhcCBieXRlLW9yZGVyIHdoZW4gbmVlZGVkLgotKwlsb2Fk YmUoIkBYWyRpXSIsImAkaSo0YCgkaW5wKSIsJGYpIGlmICgkaT09MCk7Ci0rCWxvYWRiZSgiQFhb JGpdIiwiYCRqKjRgKCRpbnApIiwkZikgaWYgKCRpPDE1KTsKLSAkY29kZS49PDxfX18gaWYgKCRp PDE1KTsKLS0JbHd6CUBYWyRqXSxgJGoqNGAoJGlucCkKLSAJYWRkCSRmLCRLLCRlCi0gCXJvdGx3 aQkkZSwkYSw1Ci0gCWFkZAkkZiwkZixAWFskaV0KLUBAIC0xMDgsMzEgKzEyNSwzMSBAQCBteSAo JGksJGEsJGIsJGMsJGQsJGUsJGYpPUBfOwotIG15ICRqPSRpKzE7Ci0gJGNvZGUuPTw8X19fIGlm ICgkaTw3OSk7Ci0gCWFkZAkkZiwkSywkZQotKwl4b3IJJHQwLCRiLCRkCi0gCXJvdGx3aQkkZSwk YSw1Ci0gCXhvcglAWFskaiUxNl0sQFhbJGolMTZdLEBYWygkaisyKSUxNl0KLSAJYWRkCSRmLCRm LEBYWyRpJTE2XQotLQl4b3IJJHQwLCRiLCRjCi0rCXhvcgkkdDAsJHQwLCRjCi0gCXhvcglAWFsk aiUxNl0sQFhbJGolMTZdLEBYWygkais4KSUxNl0KLS0JYWRkCSRmLCRmLCRlCi0rCWFkZAkkZiwk ZiwkdDAKLSAJcm90bHdpCSRiLCRiLDMwCi0tCXhvcgkkdDAsJHQwLCRkCi0gCXhvcglAWFskaiUx Nl0sQFhbJGolMTZdLEBYWygkaisxMyklMTZdCi0tCWFkZAkkZiwkZiwkdDAKLSsJYWRkCSRmLCRm LCRlCi0gCXJvdGx3aQlAWFskaiUxNl0sQFhbJGolMTZdLDEKLSBfX18KLSAkY29kZS49PDxfX18g aWYgKCRpPT03OSk7Ci0gCWFkZAkkZiwkSywkZQotKwl4b3IJJHQwLCRiLCRkCi0gCXJvdGx3aQkk ZSwkYSw1Ci0gCWx3eglyMTYsMCgkY3R4KQotIAlhZGQJJGYsJGYsQFhbJGklMTZdCi0tCXhvcgkk dDAsJGIsJGMKLSsJeG9yCSR0MCwkdDAsJGMKLSAJbHd6CXIxNyw0KCRjdHgpCi0tCWFkZAkkZiwk ZiwkZQotKwlhZGQJJGYsJGYsJHQwCi0gCXJvdGx3aQkkYiwkYiwzMAotIAlsd3oJcjE4LDgoJGN0 eCkKLS0JeG9yCSR0MCwkdDAsJGQKLSAJbHd6CXIxOSwxMigkY3R4KQotLQlhZGQJJGYsJGYsJHQw Ci0rCWFkZAkkZiwkZiwkZQotIAlsd3oJcjIwLDE2KCRjdHgpCi0gX19fCi0gfQotQEAgLTMxNiw2 ICszMzMsNyBAQCAkY29kZS49PDxfX187Ci0gCWJscgotIAkubG9uZwkwCi0gCS5ieXRlCTAsMTIs MHgxNCwwLDAsMCwwLDAKLSsuc2l6ZQkuc2hhMV9ibG9ja19kYXRhX29yZGVyLC4tLnNoYTFfYmxv Y2tfZGF0YV9vcmRlcgotIF9fXwotICRjb2RlLj08PF9fXzsKLSAuYXNjaXoJIlNIQTEgYmxvY2sg dHJhbnNmb3JtIGZvciBQUEMsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBmeS5jaGFsbWVycy5zZT4i Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vc2hhL2FzbS9zaGE1MTItcHBjLnBsLnBw Yy1hc20gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3NoYS9hc20vc2hhNTEyLXBwYy5wbAotLS0tIG9w ZW5zc2wtMS4wLjFpL2NyeXB0by9zaGEvYXNtL3NoYTUxMi1wcGMucGwucHBjLWFzbQkyMDE0LTA4 LTA2IDIzOjEwOjU2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9z aGEvYXNtL3NoYTUxMi1wcGMucGwJMjAxNC0wOC0xMyAxOTo0NjoyMS4wOTY1NzgxOTYgKzAyMDAK LUBAIC0xLDcgKzEsNyBAQAotICMhL3Vzci9iaW4vZW52IHBlcmwKLSAKLSAjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3Ig dGhlIE9wZW5TU0wKLSsjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5v cmc+IGZvciB0aGUgT3BlblNTTAotICMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwg ZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAotICMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBk ZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKLSAjIGRldGFpbHMg c2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgotQEAgLTksOCAr OSw3IEBACi0gCi0gIyBJIGxldCBoYXJkd2FyZSBoYW5kbGUgdW5hbGlnbmVkIGlucHV0LCBleGNl cHQgb24gcGFnZSBib3VuZGFyaWVzCi0gIyAoc2VlIGJlbG93IGZvciBkZXRhaWxzKS4gT3RoZXJ3 aXNlIHN0cmFpZ2h0Zm9yd2FyZCBpbXBsZW1lbnRhdGlvbgotLSMgd2l0aCBYIHZlY3RvciBpbiBy ZWdpc3RlciBiYW5rLiBUaGUgbW9kdWxlIGlzIGJpZy1lbmRpYW4gW3doaWNoIGlzCi0tIyBub3Qg YmlnIGRlYWwgYXMgdGhlcmUncmUgbm8gbGl0dGxlLWVuZGlhbiB0YXJnZXRzIGxlZnQgYXJvdW5k XS4KLSsjIHdpdGggWCB2ZWN0b3IgaW4gcmVnaXN0ZXIgYmFuay4KLSAKLSAjCQkJc2hhMjU2CQl8 CXNoYTUxMgotICMgCQkJLW02NAktbTMyCXwJLW02NAktbTMyCi1AQCAtNTYsNiArNTUsOCBAQCBp ZiAoJGZsYXZvdXIgPX4gLzY0LykgewotIAkkUFVTSD0ic3R3IjsKLSB9IGVsc2UgeyBkaWUgIm5v bnNlbnNlICRmbGF2b3VyIjsgfQotIAotKyRMSVRUTEVfRU5ESUFOID0gKCRmbGF2b3VyPX4vbGUk LykgPyAkU0laRV9UIDogMDsKLSsKLSAkMCA9fiBtLyguKltcL1xcXSlbXlwvXFxdKyQvOyAkZGly PSQxOwotICggJHhsYXRlPSIke2Rpcn1wcGMteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUgKSBvcgot ICggJHhsYXRlPSIke2Rpcn0uLi8uLi9wZXJsYXNtL3BwYy14bGF0ZS5wbCIgYW5kIC1mICR4bGF0 ZSkgb3IKLUBAIC02NCw3ICs2NSw3IEBAIGRpZSAiY2FuJ3QgbG9jYXRlIHBwYy14bGF0ZS5wbCI7 Ci0gb3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAkZmxhdm91ciAkb3V0cHV0IiB8fCBkaWUgImNh bid0IGNhbGwgJHhsYXRlOiAkISI7Ci0gCi0gaWYgKCRvdXRwdXQgPX4gLzUxMi8pIHsKLS0JJGZ1 bmM9InNoYTUxMl9ibG9ja19kYXRhX29yZGVyIjsKLSsJJGZ1bmM9InNoYTUxMl9ibG9ja19wcGMi OwotIAkkU1o9ODsKLSAJQFNpZ21hMD0oMjgsMzQsMzkpOwotIAlAU2lnbWExPSgxNCwxOCw0MSk7 Ci1AQCAtNzYsNyArNzcsNyBAQCBpZiAoJG91dHB1dCA9fiAvNTEyLykgewotIAkkUk9SPSJyb3Ry ZGkiOwotIAkkU0hSPSJzcmRpIjsKLSB9IGVsc2UgewotLQkkZnVuYz0ic2hhMjU2X2Jsb2NrX2Rh dGFfb3JkZXIiOwotKwkkZnVuYz0ic2hhMjU2X2Jsb2NrX3BwYyI7Ci0gCSRTWj00OwotIAlAU2ln bWEwPSggMiwxMywyMik7Ci0gCUBTaWdtYTE9KCA2LDExLDI1KTsKLUBAIC0xMTAsNyArMTExLDcg QEAgJEIgID0icjkiOwotICRDICA9InIxMCI7Ci0gJEQgID0icjExIjsKLSAkRSAgPSJyMTIiOwot LSRGICA9InIxMyI7CSRGPSJyMiIgaWYgKCRTSVpFX1Q9PTgpOyMgcmVhc3NpZ25lZCB0byBleGVt cHQgVExTIHBvaW50ZXIKLSskRiAgPSR0MTsJJHQxID0gInIwIjsJIyBzdGF5IGF3YXkgZnJvbSAi cjEzIjsKLSAkRyAgPSJyMTQiOwotICRIICA9InIxNSI7Ci0gCi1AQCAtMTE4LDI0ICsxMTksMjMg QEAgJEggID0icjE1IjsKLSBAWD0oInIxNiIsInIxNyIsInIxOCIsInIxOSIsInIyMCIsInIyMSIs InIyMiIsInIyMyIsCi0gICAgICJyMjQiLCJyMjUiLCJyMjYiLCJyMjciLCJyMjgiLCJyMjkiLCJy MzAiLCJyMzEiKTsKLSAKLS0kaW5wPSJyMzEiOwkjIHJlYXNzaWduZWQgJGlucCEgYWxpYXNlcyB3 aXRoIEBYWzE1XQotKyRpbnA9InIzMSIgaWYoJFNaPT00IHx8ICRTSVpFX1Q9PTgpOwkjIHJlYXNz aWduZWQgJGlucCEgYWxpYXNlcyB3aXRoIEBYWzE1XQotIAotIHN1YiBST1VORF8wMF8xNSB7Ci0g bXkgKCRpLCRhLCRiLCRjLCRkLCRlLCRmLCRnLCRoKT1AXzsKLSAkY29kZS49PDxfX187Ci0tCSRM RAkkVCxgJGkqJFNaYCgkVGJsKQotIAkkUk9SCSRhMCwkZSwkU2lnbWExWzBdCi0gCSRST1IJJGEx LCRlLCRTaWdtYTFbMV0KLSAJYW5kCSR0MCwkZiwkZQotLQlhbmRjCSR0MSwkZywkZQotLQlhZGQJ JFQsJFQsJGgKLSAJeG9yCSRhMCwkYTAsJGExCi0rCWFkZAkkaCwkaCwkdDEKLSsJYW5kYwkkdDEs JGcsJGUKLSAJJFJPUgkkYTEsJGExLGAkU2lnbWExWzJdLSRTaWdtYTFbMV1gCi0gCW9yCSR0MCwk dDAsJHQxCQk7IENoKGUsZixnKQotLQlhZGQJJFQsJFQsQFhbJGldCi0rCWFkZAkkaCwkaCxAWFsk aSUxNl0KLSAJeG9yCSRhMCwkYTAsJGExCQk7IFNpZ21hMShlKQotLQlhZGQJJFQsJFQsJHQwCi0t CWFkZAkkVCwkVCwkYTAKLSsJYWRkCSRoLCRoLCR0MAotKwlhZGQJJGgsJGgsJGEwCi0gCi0gCSRS T1IJJGEwLCRhLCRTaWdtYTBbMF0KLSAJJFJPUgkkYTEsJGEsJFNpZ21hMFsxXQotQEAgLTE0Niw5 ICsxNDYsMTQgQEAgJGNvZGUuPTw8X19fOwotIAl4b3IJJHQwLCR0MCwkdDEKLSAJYW5kCSR0MSwk YiwkYwotIAl4b3IJJGEwLCRhMCwkYTEJCTsgU2lnbWEwKGEpCi0tCWFkZAkkZCwkZCwkVAotKwlh ZGQJJGQsJGQsJGgKLSAJeG9yCSR0MCwkdDAsJHQxCQk7IE1haihhLGIsYykKLS0JYWRkCSRoLCRU LCRhMAotK19fXwotKyRjb2RlLj08PF9fXyBpZiAoJGk8MTUpOwotKwkkTEQJJHQxLGAoJGkrMSkq JFNaYCgkVGJsKQotK19fXwotKyRjb2RlLj08PF9fXzsKLSsJYWRkCSRoLCRoLCRhMAotIAlhZGQJ JGgsJGgsJHQwCi0gCi0gX19fCi1AQCAtMTY5LDEwICsxNzQsMTEgQEAgJGNvZGUuPTw8X19fOwot IAlhZGQJQFhbJGldLEBYWyRpXSxAWFsoJGkrOSklMTZdCi0gCXhvcgkkYTAsJGEwLCRhMQkJOyBz aWdtYTAoWFsoaSsxKSYweDBmXSkKLSAJeG9yCSR0MCwkdDAsJHQxCQk7IHNpZ21hMShYWyhpKzE0 KSYweDBmXSkKLSsJJExECSR0MSxgJGkqJFNaYCgkVGJsKQotIAlhZGQJQFhbJGldLEBYWyRpXSwk YTAKLSAJYWRkCUBYWyRpXSxAWFskaV0sJHQwCi0gX19fCi0tJlJPVU5EXzAwXzE1KCRpLCRhLCRi LCRjLCRkLCRlLCRmLCRnLCRoKTsKLSsmUk9VTkRfMDBfMTUoJGkrMTYsJGEsJGIsJGMsJGQsJGUs JGYsJGcsJGgpOwotIH0KLSAKLSAkY29kZT08PF9fXzsKLUBAIC0xODgsOCArMTk0LDYgQEAgJGZ1 bmM6Ci0gCi0gCSRQVVNICSRjdHgsYCRGUkFNRS0kU0laRV9UKjIyYCgkc3ApCi0gCi0tCSRQVVNI CSR0b2MsYCRGUkFNRS0kU0laRV9UKjIwYCgkc3ApCi0tCSRQVVNICXIxMyxgJEZSQU1FLSRTSVpF X1QqMTlgKCRzcCkKLSAJJFBVU0gJcjE0LGAkRlJBTUUtJFNJWkVfVCoxOGAoJHNwKQotIAkkUFVT SAlyMTUsYCRGUkFNRS0kU0laRV9UKjE3YCgkc3ApCi0gCSRQVVNICXIxNixgJEZSQU1FLSRTSVpF X1QqMTZgKCRzcCkKLUBAIC0yMDksNyArMjEzLDEwIEBAICRmdW5jOgotIAkkUFVTSAlyMzAsYCRG UkFNRS0kU0laRV9UKjJgKCRzcCkKLSAJJFBVU0gJcjMxLGAkRlJBTUUtJFNJWkVfVCoxYCgkc3Ap Ci0gCSRQVVNICXIwLGAkRlJBTUUrJExSU0FWRWAoJHNwKQotK19fXwotIAotK2lmICgkU1o9PTQg fHwgJFNJWkVfVD09OCkgewotKyRjb2RlLj08PF9fXzsKLSAJJExECSRBLGAwKiRTWmAoJGN0eCkK LSAJbXIJJGlucCxyNAkJCQk7IGluY2FybmF0ZSAkaW5wCi0gCSRMRAkkQixgMSokU1pgKCRjdHgp Ci1AQCAtMjE5LDcgKzIyNiwxNiBAQCAkZnVuYzoKLSAJJExECSRGLGA1KiRTWmAoJGN0eCkKLSAJ JExECSRHLGA2KiRTWmAoJGN0eCkKLSAJJExECSRILGA3KiRTWmAoJGN0eCkKLStfX18KLSt9IGVs c2UgewotKyAgZm9yICgkaT0xNjskaTwzMjskaSsrKSB7Ci0rICAgICRjb2RlLj08PF9fXzsKLSsJ bHd6CXIkaSxgJExJVFRMRV9FTkRJQU5eKDQqKCRpLTE2KSlgKCRjdHgpCi0rX19fCi0rICB9Ci0r fQotIAotKyRjb2RlLj08PF9fXzsKLSAJYmwJTFBJQ21ldXAKLSBMUElDZWR1cDoKLSAJYW5kaS4J cjAsJGlucCwzCi1AQCAtMjU1LDYgKzI3MSw5IEBAIEx1bmFsaWduZWQ6Ci0gTGNyb3NzX3BhZ2U6 Ci0gCWxpCSR0MSxgMTYqJFNaLzRgCi0gCW10Y3RyCSR0MQotK19fXwotK2lmICgkU1o9PTQgfHwg JFNJWkVfVD09OCkgewotKyRjb2RlLj08PF9fXzsKLSAJYWRkaQlyMjAsJHNwLCRMT0NBTFMJCQk7 IGFsaWduZWQgc3BvdCBiZWxvdyB0aGUgZnJhbWUKLSBMbWVtY3B5OgotIAlsYnoJcjE2LDAoJGlu cCkKLUBAIC0yNjgsNyArMjg3LDI2IEBAIExtZW1jcHk6Ci0gCXN0YglyMTksMyhyMjApCi0gCWFk ZGkJcjIwLHIyMCw0Ci0gCWJkbnoJTG1lbWNweQotK19fXwotK30gZWxzZSB7Ci0rJGNvZGUuPTw8 X19fOwotKwlhZGRpCXIxMiwkc3AsJExPQ0FMUwkJCTsgYWxpZ25lZCBzcG90IGJlbG93IHRoZSBm cmFtZQotK0xtZW1jcHk6Ci0rCWxieglyOCwwKCRpbnApCi0rCWxieglyOSwxKCRpbnApCi0rCWxi eglyMTAsMigkaW5wKQotKwlsYnoJcjExLDMoJGlucCkKLSsJYWRkaQkkaW5wLCRpbnAsNAotKwlz dGIJcjgsMChyMTIpCi0rCXN0YglyOSwxKHIxMikKLSsJc3RiCXIxMCwyKHIxMikKLSsJc3RiCXIx MSwzKHIxMikKLSsJYWRkaQlyMTIscjEyLDQKLSsJYmRueglMbWVtY3B5Ci0rX19fCi0rfQotIAot KyRjb2RlLj08PF9fXzsKLSAJJFBVU0gJJGlucCxgJEZSQU1FLSRTSVpFX1QqMjZgKCRzcCkJOyBz YXZlIHJlYWwgaW5wCi0gCWFkZGkJJHQxLCRzcCxgJExPQ0FMUysxNiokU1pgCTsgZmljdGl0aW91 cyBlbmQgcG9pbnRlcgotIAlhZGRpCSRpbnAsJHNwLCRMT0NBTFMJCTsgZmljdGl0aW91cyBpbnAg cG9pbnRlcgotQEAgLTI4Myw4ICszMjEsNiBAQCBMbWVtY3B5OgotIAotIExkb25lOgotIAkkUE9Q CXIwLGAkRlJBTUUrJExSU0FWRWAoJHNwKQotLQkkUE9QCSR0b2MsYCRGUkFNRS0kU0laRV9UKjIw YCgkc3ApCi0tCSRQT1AJcjEzLGAkRlJBTUUtJFNJWkVfVCoxOWAoJHNwKQotIAkkUE9QCXIxNCxg JEZSQU1FLSRTSVpFX1QqMThgKCRzcCkKLSAJJFBPUAlyMTUsYCRGUkFNRS0kU0laRV9UKjE3YCgk c3ApCi0gCSRQT1AJcjE2LGAkRlJBTUUtJFNJWkVfVCoxNmAoJHNwKQotQEAgLTMwOSwyNyArMzQ1 LDQ4IEBAIExkb25lOgotIAkubG9uZwkwCi0gCS5ieXRlCTAsMTIsNCwxLDB4ODAsMTgsMywwCi0g CS5sb25nCTAKLStfX18KLSAKLStpZiAoJFNaPT00IHx8ICRTSVpFX1Q9PTgpIHsKLSskY29kZS49 PDxfX187Ci0gLmFsaWduCTQKLSBMc2hhMl9ibG9ja19wcml2YXRlOgotKwkkTEQJJHQxLDAoJFRi bCkKLSBfX18KLSBmb3IoJGk9MDskaTwxNjskaSsrKSB7Ci0tJGNvZGUuPTw8X19fIGlmICgkU1o9 PTQpOwotKyRjb2RlLj08PF9fXyBpZiAoJFNaPT00ICYmICEkTElUVExFX0VORElBTik7Ci0gCWx3 eglAWFskaV0sYCRpKiRTWmAoJGlucCkKLSBfX18KLSskY29kZS49PDxfX18gaWYgKCRTWj09NCAm JiAkTElUVExFX0VORElBTik7Ci0rCWx3egkkYTAsYCRpKiRTWmAoJGlucCkKLSsJcm90bHdpCUBY WyRpXSwkYTAsOAotKwlybHdpbWkJQFhbJGldLCRhMCwyNCwwLDcKLSsJcmx3aW1pCUBYWyRpXSwk YTAsMjQsMTYsMjMKLStfX18KLSAjIDY0LWJpdCBsb2FkcyBhcmUgc3BsaXQgdG8gMngzMi1iaXQg b25lcywgYXMgQ1BVIGNhbid0IGhhbmRsZQotICMgdW5hbGlnbmVkIDY0LWJpdCBsb2Fkcywgb25s eSAzMi1iaXQgb25lcy4uLgotLSRjb2RlLj08PF9fXyBpZiAoJFNaPT04KTsKLSskY29kZS49PDxf X18gaWYgKCRTWj09OCAmJiAhJExJVFRMRV9FTkRJQU4pOwotIAlsd3oJJHQwLGAkaSokU1pgKCRp bnApCi0gCWx3eglAWFskaV0sYCRpKiRTWis0YCgkaW5wKQotIAlpbnNyZGkJQFhbJGldLCR0MCwz MiwwCi0gX19fCi0rJGNvZGUuPTw8X19fIGlmICgkU1o9PTggJiYgJExJVFRMRV9FTkRJQU4pOwot Kwlsd3oJJGEwLGAkaSokU1pgKCRpbnApCi0rCSBsd3oJJGExLGAkaSokU1orNGAoJGlucCkKLSsJ cm90bHdpCSR0MCwkYTAsOAotKwkgcm90bHdpCUBYWyRpXSwkYTEsOAotKwlybHdpbWkJJHQwLCRh MCwyNCwwLDcKLSsJIHJsd2ltaQlAWFskaV0sJGExLDI0LDAsNwotKwlybHdpbWkJJHQwLCRhMCwy NCwxNiwyMwotKwkgcmx3aW1pCUBYWyRpXSwkYTEsMjQsMTYsMjMKLSsJaW5zcmRpCUBYWyRpXSwk dDAsMzIsMAotK19fXwotIAkmUk9VTkRfMDBfMTUoJGksQFYpOwotIAl1bnNoaWZ0KEBWLHBvcChA VikpOwotIH0KLSAkY29kZS49PDxfX187Ci0tCWxpCSRULGAkcm91bmRzLzE2LTFgCi0tCW10Y3Ry CSRUCi0rCWxpCSR0MCxgJHJvdW5kcy8xNi0xYAotKwltdGN0cgkkdDAKLSAuYWxpZ24JNAotIExy b3VuZHM6Ci0gCWFkZGkJJFRibCwkVGJsLGAxNiokU1pgCi1AQCAtMzc3LDcgKzQzNCwyODIgQEAg JGNvZGUuPTw8X19fOwotIAlibHIKLSAJLmxvbmcJMAotIAkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAs MCwwCi0rLnNpemUJJGZ1bmMsLi0kZnVuYwotK19fXwotK30gZWxzZSB7Ci0rIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCi0rIyBTSEE1MTIgZm9yIFBQQzMyLCBYIHZlY3RvciBpcyBvZmYtbG9hZGVkIHRvIHN0YWNr Li4uCi0rIwotKyMJCQl8CXNoYTUxMgotKyMJCQl8CS1tMzIKLSsjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIFBQQzc0eDAsZ2NjLTQuMC4xCXwJKzQ4 JQotKyMgUE9XRVI2LGdjYy00LjQuNgl8CSsxMjQlKCopCi0rIyBQT1dFUjcsZ2NjLTQuNC42CXwJ Kzc5JSgqKQotKyMgZTMwMCxnY2MtNC4xLjAJfAkrMTY3JQotKyMKLSsjICgqKQl+MS8zIG9mIC1t NjQgcmVzdWx0IFthbmQgfjIwJSBiZXR0ZXIgdGhhbiAtbTMyIGNvZGUgZ2VuZXJhdGVkCi0rIwli eSB4bGMtMTIuMV0KLSsKLStteSAkWE9GRj0kTE9DQUxTOwotKwotK215IEBWPW1hcCgiciRfIiwo MTYuLjMxKSk7CSMgQS4uSAotKwotK215ICgkczAsJHMxLCR0MCwkdDEsJHQyLCR0MywkYTAsJGEx LCRhMiwkYTMpPW1hcCgiciRfIiwoMCw1LDYsOC4uMTIsMTQsMTUpKTsKLStteSAoJHgwLCR4MSk9 KCJyMyIsInI0Iik7CSMgemFwcyAkY3R4IGFuZCAkaW5wCi0rCi0rc3ViIFJPVU5EXzAwXzE1X3Bw YzMyIHsKLStteSAoJGksCSRhaGksJGFsbywkYmhpLCRibG8sJGNoaSwkY2xvLCRkaGksJGRsbywK LSsJJGVoaSwkZWxvLCRmaGksJGZsbywkZ2hpLCRnbG8sJGhoaSwkaGxvKT1AXzsKLSsKLSskY29k ZS49PDxfX187Ci0rCWx3egkkdDIsYCRTWiooJGklMTYpKygkTElUVExFX0VORElBTl40KWAoJFRi bCkKLSsJIHhvcgkkYTAsJGZsbywkZ2xvCi0rCWx3egkkdDMsYCRTWiooJGklMTYpKygkTElUVExF X0VORElBTl4wKWAoJFRibCkKLSsJIHhvcgkkYTEsJGZoaSwkZ2hpCi0rCWFkZGMJJGhsbywkaGxv LCR0MAkJCTsgaCs9eFtpXQotKwlzdHcJJHQwLGAkWE9GRiswKyRTWiooJGklMTYpYCgkc3ApCTsg c2F2ZSB4W2ldCi0rCi0rCXNyd2kJJHMwLCRlbG8sJFNpZ21hMVswXQotKwlzcndpCSRzMSwkZWhp LCRTaWdtYTFbMF0KLSsJIGFuZAkkYTAsJGEwLCRlbG8KLSsJYWRkZQkkaGhpLCRoaGksJHQxCi0r CSBhbmQJJGExLCRhMSwkZWhpCi0rCXN0dwkkdDEsYCRYT0ZGKzQrJFNaKigkaSUxNilgKCRzcCkK LSsJc3J3aQkkdDAsJGVsbywkU2lnbWExWzFdCi0rCXNyd2kJJHQxLCRlaGksJFNpZ21hMVsxXQot KwkgYWRkYwkkaGxvLCRobG8sJHQyCQkJOyBoKz1LNTEyW2ldCi0rCWluc3J3aQkkczAsJGVoaSwk U2lnbWExWzBdLDAKLSsJaW5zcndpCSRzMSwkZWxvLCRTaWdtYTFbMF0sMAotKwkgeG9yCSRhMCwk YTAsJGdsbwkJCTsgQ2goZSxmLGcpCi0rCSBhZGRlCSRoaGksJGhoaSwkdDMKLSsJIHhvcgkkYTEs JGExLCRnaGkKLSsJaW5zcndpCSR0MCwkZWhpLCRTaWdtYTFbMV0sMAotKwlpbnNyd2kJJHQxLCRl bG8sJFNpZ21hMVsxXSwwCi0rCSBhZGRjCSRobG8sJGhsbywkYTAJCQk7IGgrPUNoKGUsZixnKQot KwlzcndpCSR0MiwkZWhpLCRTaWdtYTFbMl0tMzIKLSsJc3J3aQkkdDMsJGVsbywkU2lnbWExWzJd LTMyCi0rCXhvcgkkczAsJHMwLCR0MAotKwl4b3IJJHMxLCRzMSwkdDEKLSsJaW5zcndpCSR0Miwk ZWxvLCRTaWdtYTFbMl0tMzIsMAotKwlpbnNyd2kJJHQzLCRlaGksJFNpZ21hMVsyXS0zMiwwCi0r CSB4b3IJJGEwLCRhbG8sJGJsbwkJCTsgYV5iLCBiXmMgaW4gbmV4dCByb3VuZAotKwkgYWRkZQkk aGhpLCRoaGksJGExCi0rCSB4b3IJJGExLCRhaGksJGJoaQotKwl4b3IJJHMwLCRzMCwkdDIJCQk7 IFNpZ21hMShlKQotKwl4b3IJJHMxLCRzMSwkdDMKLSsKLSsJc3J3aQkkdDAsJGFsbywkU2lnbWEw WzBdCi0rCSBhbmQJJGEyLCRhMiwkYTAKLSsJIGFkZGMJJGhsbywkaGxvLCRzMAkJCTsgaCs9U2ln bWExKGUpCi0rCSBhbmQJJGEzLCRhMywkYTEKLSsJc3J3aQkkdDEsJGFoaSwkU2lnbWEwWzBdCi0r CXNyd2kJJHMwLCRhaGksJFNpZ21hMFsxXS0zMgotKwkgYWRkZQkkaGhpLCRoaGksJHMxCi0rCXNy d2kJJHMxLCRhbG8sJFNpZ21hMFsxXS0zMgotKwlpbnNyd2kJJHQwLCRhaGksJFNpZ21hMFswXSww Ci0rCWluc3J3aQkkdDEsJGFsbywkU2lnbWEwWzBdLDAKLSsJIHhvcgkkYTIsJGEyLCRibG8JCQk7 IE1haihhLGIsYykKLSsJIGFkZGMJJGRsbywkZGxvLCRobG8JCQk7IGQrPWgKLSsJIHhvcgkkYTMs JGEzLCRiaGkKLSsJaW5zcndpCSRzMCwkYWxvLCRTaWdtYTBbMV0tMzIsMAotKwlpbnNyd2kJJHMx LCRhaGksJFNpZ21hMFsxXS0zMiwwCi0rCSBhZGRlCSRkaGksJGRoaSwkaGhpCi0rCXNyd2kJJHQy LCRhaGksJFNpZ21hMFsyXS0zMgotKwlzcndpCSR0MywkYWxvLCRTaWdtYTBbMl0tMzIKLSsJeG9y CSRzMCwkczAsJHQwCi0rCSBhZGRjCSRobG8sJGhsbywkYTIJCQk7IGgrPU1haihhLGIsYykKLSsJ eG9yCSRzMSwkczEsJHQxCi0rCWluc3J3aQkkdDIsJGFsbywkU2lnbWEwWzJdLTMyLDAKLSsJaW5z cndpCSR0MywkYWhpLCRTaWdtYTBbMl0tMzIsMAotKwkgYWRkZQkkaGhpLCRoaGksJGEzCi0rX19f Ci0rJGNvZGUuPTw8X19fIGlmICgkaT49MTUpOwotKwlsd3oJJHQwLGAkWE9GRiswKyRTWiooKCRp KzIpJTE2KWAoJHNwKQotKwlsd3oJJHQxLGAkWE9GRis0KyRTWiooKCRpKzIpJTE2KWAoJHNwKQot K19fXwotKyRjb2RlLj08PF9fXyBpZiAoJGk8MTUgJiYgISRMSVRUTEVfRU5ESUFOKTsKLSsJbHd6 CSR0MSxgJFNaKigkaSsxKSswYCgkaW5wKQotKwlsd3oJJHQwLGAkU1oqKCRpKzEpKzRgKCRpbnAp Ci0gX19fCi0rJGNvZGUuPTw8X19fIGlmICgkaTwxNSAmJiAkTElUVExFX0VORElBTik7Ci0rCWx3 egkkYTIsYCRTWiooJGkrMSkrMGAoJGlucCkKLSsJIGx3egkkYTMsYCRTWiooJGkrMSkrNGAoJGlu cCkKLSsJcm90bHdpCSR0MSwkYTIsOAotKwkgcm90bHdpCSR0MCwkYTMsOAotKwlybHdpbWkJJHQx LCRhMiwyNCwwLDcKLSsJIHJsd2ltaQkkdDAsJGEzLDI0LDAsNwotKwlybHdpbWkJJHQxLCRhMiwy NCwxNiwyMwotKwkgcmx3aW1pCSR0MCwkYTMsMjQsMTYsMjMKLStfX18KLSskY29kZS49PDxfX187 Ci0rCXhvcgkkczAsJHMwLCR0MgkJCTsgU2lnbWEwKGEpCi0rCXhvcgkkczEsJHMxLCR0MwotKwlh ZGRjCSRobG8sJGhsbywkczAJCQk7IGgrPVNpZ21hMChhKQotKwlhZGRlCSRoaGksJGhoaSwkczEK LStfX18KLSskY29kZS49PDxfX18gaWYgKCRpPT0xNSk7Ci0rCWx3egkkeDAsYCRYT0ZGKzArJFNa KigoJGkrMSklMTYpYCgkc3ApCi0rCWx3egkkeDEsYCRYT0ZGKzQrJFNaKigoJGkrMSklMTYpYCgk c3ApCi0rX19fCi0rfQotK3N1YiBST1VORF8xNl94eF9wcGMzMiB7Ci0rbXkgKCRpLAkkYWhpLCRh bG8sJGJoaSwkYmxvLCRjaGksJGNsbywkZGhpLCRkbG8sCi0rCSRlaGksJGVsbywkZmhpLCRmbG8s JGdoaSwkZ2xvLCRoaGksJGhsbyk9QF87Ci0rCi0rJGNvZGUuPTw8X19fOwotKwlzcndpCSRzMCwk dDAsJHNpZ21hMFswXQotKwlzcndpCSRzMSwkdDEsJHNpZ21hMFswXQotKwlzcndpCSR0MiwkdDAs JHNpZ21hMFsxXQotKwlzcndpCSR0MywkdDEsJHNpZ21hMFsxXQotKwlpbnNyd2kJJHMwLCR0MSwk c2lnbWEwWzBdLDAKLSsJaW5zcndpCSRzMSwkdDAsJHNpZ21hMFswXSwwCi0rCXNyd2kJJGEwLCR0 MCwkc2lnbWEwWzJdCi0rCWluc3J3aQkkdDIsJHQxLCRzaWdtYTBbMV0sMAotKwlpbnNyd2kJJHQz LCR0MCwkc2lnbWEwWzFdLDAKLSsJaW5zcndpCSRhMCwkdDEsJHNpZ21hMFsyXSwwCi0rCXhvcgkk czAsJHMwLCR0MgotKwkgbHd6CSR0MixgJFhPRkYrMCskU1oqKCgkaSsxNCklMTYpYCgkc3ApCi0r CXNyd2kJJGExLCR0MSwkc2lnbWEwWzJdCi0rCXhvcgkkczEsJHMxLCR0MwotKwkgbHd6CSR0Myxg JFhPRkYrNCskU1oqKCgkaSsxNCklMTYpYCgkc3ApCi0rCXhvcgkkYTAsJGEwLCRzMAotKwkgc3J3 aQkkczAsJHQyLCRzaWdtYTFbMF0KLSsJeG9yCSRhMSwkYTEsJHMxCi0rCSBzcndpCSRzMSwkdDMs JHNpZ21hMVswXQotKwlhZGRjCSR4MCwkeDAsJGEwCQkJOyB4W2ldKz1zaWdtYTAoeFtpKzFdKQot Kwkgc3J3aQkkYTAsJHQzLCRzaWdtYTFbMV0tMzIKLSsJaW5zcndpCSRzMCwkdDMsJHNpZ21hMVsw XSwwCi0rCWluc3J3aQkkczEsJHQyLCRzaWdtYTFbMF0sMAotKwlhZGRlCSR4MSwkeDEsJGExCi0r CSBzcndpCSRhMSwkdDIsJHNpZ21hMVsxXS0zMgotKwotKwlpbnNyd2kJJGEwLCR0Miwkc2lnbWEx WzFdLTMyLDAKLSsJc3J3aQkkdDIsJHQyLCRzaWdtYTFbMl0KLSsJaW5zcndpCSRhMSwkdDMsJHNp Z21hMVsxXS0zMiwwCi0rCWluc3J3aQkkdDIsJHQzLCRzaWdtYTFbMl0sMAotKwl4b3IJJHMwLCRz MCwkYTAKLSsJIGx3egkkYTAsYCRYT0ZGKzArJFNaKigoJGkrOSklMTYpYCgkc3ApCi0rCXNyd2kJ JHQzLCR0Mywkc2lnbWExWzJdCi0rCXhvcgkkczEsJHMxLCRhMQotKwkgbHd6CSRhMSxgJFhPRkYr NCskU1oqKCgkaSs5KSUxNilgKCRzcCkKLSsJeG9yCSRzMCwkczAsJHQyCi0rCSBhZGRjCSR4MCwk eDAsJGEwCQkJOyB4W2ldKz14W2krOV0KLSsJeG9yCSRzMSwkczEsJHQzCi0rCSBhZGRlCSR4MSwk eDEsJGExCi0rCWFkZGMJJHgwLCR4MCwkczAJCQk7IHhbaV0rPXNpZ21hMSh4W2krMTRdKQotKwlh ZGRlCSR4MSwkeDEsJHMxCi0rX19fCi0rCSgkdDAsJHQxLCR4MCwkeDEpID0gKCR4MCwkeDEsJHQw LCR0MSk7Ci0rCSZST1VORF8wMF8xNV9wcGMzMihAXyk7Ci0rfQotKwotKyRjb2RlLj08PF9fXzsK LSsuYWxpZ24JNAotK0xzaGEyX2Jsb2NrX3ByaXZhdGU6Ci0rX19fCi0rJGNvZGUuPTw8X19fIGlm ICghJExJVFRMRV9FTkRJQU4pOwotKwlsd3oJJHQxLDAoJGlucCkKLSsJeG9yCSRhMixAVlszXSxA Vls1XQkJOyBCXkMsIG1hZ2ljIHNlZWQKLSsJbHd6CSR0MCw0KCRpbnApCi0rCXhvcgkkYTMsQFZb Ml0sQFZbNF0KLStfX18KLSskY29kZS49PDxfX18gaWYgKCRMSVRUTEVfRU5ESUFOKTsKLSsJbHd6 CSRhMSwwKCRpbnApCi0rCXhvcgkkYTIsQFZbM10sQFZbNV0JCTsgQl5DLCBtYWdpYyBzZWVkCi0r CWx3egkkYTAsNCgkaW5wKQotKwl4b3IJJGEzLEBWWzJdLEBWWzRdCi0rCXJvdGx3aQkkdDEsJGEx LDgKLSsJIHJvdGx3aQkkdDAsJGEwLDgKLSsJcmx3aW1pCSR0MSwkYTEsMjQsMCw3Ci0rCSBybHdp bWkJJHQwLCRhMCwyNCwwLDcKLSsJcmx3aW1pCSR0MSwkYTEsMjQsMTYsMjMKLSsJIHJsd2ltaQkk dDAsJGEwLDI0LDE2LDIzCi0rX19fCi0rZm9yKCRpPTA7JGk8MTY7JGkrKykgewotKwkmUk9VTkRf MDBfMTVfcHBjMzIoJGksQFYpOwotKwl1bnNoaWZ0KEBWLHBvcChAVikpOwl1bnNoaWZ0KEBWLHBv cChAVikpOwotKwkoJGEwLCRhMSwkYTIsJGEzKSA9ICgkYTIsJGEzLCRhMCwkYTEpOwotK30KLSsk Y29kZS49PDxfX187Ci0rCWxpCSRhMCxgJHJvdW5kcy8xNi0xYAotKwltdGN0cgkkYTAKLSsuYWxp Z24JNAotK0xyb3VuZHM6Ci0rCWFkZGkJJFRibCwkVGJsLGAxNiokU1pgCi0rX19fCi0rZm9yKDsk aTwzMjskaSsrKSB7Ci0rCSZST1VORF8xNl94eF9wcGMzMigkaSxAVik7Ci0rCXVuc2hpZnQoQFYs cG9wKEBWKSk7CXVuc2hpZnQoQFYscG9wKEBWKSk7Ci0rCSgkYTAsJGExLCRhMiwkYTMpID0gKCRh MiwkYTMsJGEwLCRhMSk7Ci0rfQotKyRjb2RlLj08PF9fXzsKLSsJYmRuei0JTHJvdW5kcwotKwot KwkkUE9QCSRjdHgsYCRGUkFNRS0kU0laRV9UKjIyYCgkc3ApCi0rCSRQT1AJJGlucCxgJEZSQU1F LSRTSVpFX1QqMjNgKCRzcCkJOyBpbnAgcG9pbnRlcgotKwkkUE9QCSRudW0sYCRGUkFNRS0kU0la RV9UKjI0YCgkc3ApCTsgZW5kIHBvaW50ZXIKLSsJc3ViaQkkVGJsLCRUYmwsYCgkcm91bmRzLTE2 KSokU1pgCTsgcmV3aW5kIFRibAotKwotKwlsd3oJJHQwLGAkTElUVExFX0VORElBTl4wYCgkY3R4 KQotKwlsd3oJJHQxLGAkTElUVExFX0VORElBTl40YCgkY3R4KQotKwlsd3oJJHQyLGAkTElUVExF X0VORElBTl44YCgkY3R4KQotKwlsd3oJJHQzLGAkTElUVExFX0VORElBTl4xMmAoJGN0eCkKLSsJ bHd6CSRhMCxgJExJVFRMRV9FTkRJQU5eMTZgKCRjdHgpCi0rCWx3egkkYTEsYCRMSVRUTEVfRU5E SUFOXjIwYCgkY3R4KQotKwlsd3oJJGEyLGAkTElUVExFX0VORElBTl4yNGAoJGN0eCkKLSsJYWRk YwlAVlsxXSxAVlsxXSwkdDEKLSsJbHd6CSRhMyxgJExJVFRMRV9FTkRJQU5eMjhgKCRjdHgpCi0r CWFkZGUJQFZbMF0sQFZbMF0sJHQwCi0rCWx3egkkdDAsYCRMSVRUTEVfRU5ESUFOXjMyYCgkY3R4 KQotKwlhZGRjCUBWWzNdLEBWWzNdLCR0MwotKwlsd3oJJHQxLGAkTElUVExFX0VORElBTl4zNmAo JGN0eCkKLSsJYWRkZQlAVlsyXSxAVlsyXSwkdDIKLSsJbHd6CSR0MixgJExJVFRMRV9FTkRJQU5e NDBgKCRjdHgpCi0rCWFkZGMJQFZbNV0sQFZbNV0sJGExCi0rCWx3egkkdDMsYCRMSVRUTEVfRU5E SUFOXjQ0YCgkY3R4KQotKwlhZGRlCUBWWzRdLEBWWzRdLCRhMAotKwlsd3oJJGEwLGAkTElUVExF X0VORElBTl40OGAoJGN0eCkKLSsJYWRkYwlAVls3XSxAVls3XSwkYTMKLSsJbHd6CSRhMSxgJExJ VFRMRV9FTkRJQU5eNTJgKCRjdHgpCi0rCWFkZGUJQFZbNl0sQFZbNl0sJGEyCi0rCWx3egkkYTIs YCRMSVRUTEVfRU5ESUFOXjU2YCgkY3R4KQotKwlhZGRjCUBWWzldLEBWWzldLCR0MQotKwlsd3oJ JGEzLGAkTElUVExFX0VORElBTl42MGAoJGN0eCkKLSsJYWRkZQlAVls4XSxAVls4XSwkdDAKLSsJ c3R3CUBWWzBdLGAkTElUVExFX0VORElBTl4wYCgkY3R4KQotKwlzdHcJQFZbMV0sYCRMSVRUTEVf RU5ESUFOXjRgKCRjdHgpCi0rCWFkZGMJQFZbMTFdLEBWWzExXSwkdDMKLSsJc3R3CUBWWzJdLGAk TElUVExFX0VORElBTl44YCgkY3R4KQotKwlzdHcJQFZbM10sYCRMSVRUTEVfRU5ESUFOXjEyYCgk Y3R4KQotKwlhZGRlCUBWWzEwXSxAVlsxMF0sJHQyCi0rCXN0dwlAVls0XSxgJExJVFRMRV9FTkRJ QU5eMTZgKCRjdHgpCi0rCXN0dwlAVls1XSxgJExJVFRMRV9FTkRJQU5eMjBgKCRjdHgpCi0rCWFk ZGMJQFZbMTNdLEBWWzEzXSwkYTEKLSsJc3R3CUBWWzZdLGAkTElUVExFX0VORElBTl4yNGAoJGN0 eCkKLSsJc3R3CUBWWzddLGAkTElUVExFX0VORElBTl4yOGAoJGN0eCkKLSsJYWRkZQlAVlsxMl0s QFZbMTJdLCRhMAotKwlzdHcJQFZbOF0sYCRMSVRUTEVfRU5ESUFOXjMyYCgkY3R4KQotKwlzdHcJ QFZbOV0sYCRMSVRUTEVfRU5ESUFOXjM2YCgkY3R4KQotKwlhZGRjCUBWWzE1XSxAVlsxNV0sJGEz Ci0rCXN0dwlAVlsxMF0sYCRMSVRUTEVfRU5ESUFOXjQwYCgkY3R4KQotKwlzdHcJQFZbMTFdLGAk TElUVExFX0VORElBTl40NGAoJGN0eCkKLSsJYWRkZQlAVlsxNF0sQFZbMTRdLCRhMgotKwlzdHcJ QFZbMTJdLGAkTElUVExFX0VORElBTl40OGAoJGN0eCkKLSsJc3R3CUBWWzEzXSxgJExJVFRMRV9F TkRJQU5eNTJgKCRjdHgpCi0rCXN0dwlAVlsxNF0sYCRMSVRUTEVfRU5ESUFOXjU2YCgkY3R4KQot KwlzdHcJQFZbMTVdLGAkTElUVExFX0VORElBTl42MGAoJGN0eCkKLSsKLSsJYWRkaQkkaW5wLCRp bnAsYDE2KiRTWmAJCTsgYWR2YW5jZSBpbnAKLSsJJFBVU0gJJGlucCxgJEZSQU1FLSRTSVpFX1Qq MjNgKCRzcCkKLSsJJFVDTVAJJGlucCwkbnVtCi0rCWJuZQlMc2hhMl9ibG9ja19wcml2YXRlCi0r CWJscgotKwkubG9uZwkwCi0rCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKLSsuc2l6ZQkkZnVu YywuLSRmdW5jCi0rX19fCi0rfQotIAotICMgVWdseSBoYWNrIGhlcmUsIGJlY2F1c2UgUFBDIGFz c2VtYmxlciBzeW50YXggc2VlbSB0byB2YXJ5IHRvbwotICMgbXVjaCBmcm9tIHBsYXRmb3JtcyB0 byBwbGF0Zm9ybS4uLgotQEAgLTM5NSw0NiArNzI3LDQ2IEBAIExQSUNtZXVwOgotIAkuc3BhY2UJ YDY0LTkqNGAKLSBfX18KLSAkY29kZS49PDxfX18gaWYgKCRTWj09OCk7Ci0tCS5sb25nCTB4NDI4 YTJmOTgsMHhkNzI4YWUyMiwweDcxMzc0NDkxLDB4MjNlZjY1Y2QKLS0JLmxvbmcJMHhiNWMwZmJj ZiwweGVjNGQzYjJmLDB4ZTliNWRiYTUsMHg4MTg5ZGJiYwotLQkubG9uZwkweDM5NTZjMjViLDB4 ZjM0OGI1MzgsMHg1OWYxMTFmMSwweGI2MDVkMDE5Ci0tCS5sb25nCTB4OTIzZjgyYTQsMHhhZjE5 NGY5YiwweGFiMWM1ZWQ1LDB4ZGE2ZDgxMTgKLS0JLmxvbmcJMHhkODA3YWE5OCwweGEzMDMwMjQy LDB4MTI4MzViMDEsMHg0NTcwNmZiZQotLQkubG9uZwkweDI0MzE4NWJlLDB4NGVlNGIyOGMsMHg1 NTBjN2RjMywweGQ1ZmZiNGUyCi0tCS5sb25nCTB4NzJiZTVkNzQsMHhmMjdiODk2ZiwweDgwZGVi MWZlLDB4M2IxNjk2YjEKLS0JLmxvbmcJMHg5YmRjMDZhNywweDI1YzcxMjM1LDB4YzE5YmYxNzQs MHhjZjY5MjY5NAotLQkubG9uZwkweGU0OWI2OWMxLDB4OWVmMTRhZDIsMHhlZmJlNDc4NiwweDM4 NGYyNWUzCi0tCS5sb25nCTB4MGZjMTlkYzYsMHg4YjhjZDViNSwweDI0MGNhMWNjLDB4NzdhYzlj NjUKLS0JLmxvbmcJMHgyZGU5MmM2ZiwweDU5MmIwMjc1LDB4NGE3NDg0YWEsMHg2ZWE2ZTQ4Mwot LQkubG9uZwkweDVjYjBhOWRjLDB4YmQ0MWZiZDQsMHg3NmY5ODhkYSwweDgzMTE1M2I1Ci0tCS5s b25nCTB4OTgzZTUxNTIsMHhlZTY2ZGZhYiwweGE4MzFjNjZkLDB4MmRiNDMyMTAKLS0JLmxvbmcJ MHhiMDAzMjdjOCwweDk4ZmIyMTNmLDB4YmY1OTdmYzcsMHhiZWVmMGVlNAotLQkubG9uZwkweGM2 ZTAwYmYzLDB4M2RhODhmYzIsMHhkNWE3OTE0NywweDkzMGFhNzI1Ci0tCS5sb25nCTB4MDZjYTYz NTEsMHhlMDAzODI2ZiwweDE0MjkyOTY3LDB4MGEwZTZlNzAKLS0JLmxvbmcJMHgyN2I3MGE4NSww eDQ2ZDIyZmZjLDB4MmUxYjIxMzgsMHg1YzI2YzkyNgotLQkubG9uZwkweDRkMmM2ZGZjLDB4NWFj NDJhZWQsMHg1MzM4MGQxMywweDlkOTViM2RmCi0tCS5sb25nCTB4NjUwYTczNTQsMHg4YmFmNjNk ZSwweDc2NmEwYWJiLDB4M2M3N2IyYTgKLS0JLmxvbmcJMHg4MWMyYzkyZSwweDQ3ZWRhZWU2LDB4 OTI3MjJjODUsMHgxNDgyMzUzYgotLQkubG9uZwkweGEyYmZlOGExLDB4NGNmMTAzNjQsMHhhODFh NjY0YiwweGJjNDIzMDAxCi0tCS5sb25nCTB4YzI0YjhiNzAsMHhkMGY4OTc5MSwweGM3NmM1MWEz LDB4MDY1NGJlMzAKLS0JLmxvbmcJMHhkMTkyZTgxOSwweGQ2ZWY1MjE4LDB4ZDY5OTA2MjQsMHg1 NTY1YTkxMAotLQkubG9uZwkweGY0MGUzNTg1LDB4NTc3MTIwMmEsMHgxMDZhYTA3MCwweDMyYmJk MWI4Ci0tCS5sb25nCTB4MTlhNGMxMTYsMHhiOGQyZDBjOCwweDFlMzc2YzA4LDB4NTE0MWFiNTMK LS0JLmxvbmcJMHgyNzQ4Nzc0YywweGRmOGVlYjk5LDB4MzRiMGJjYjUsMHhlMTliNDhhOAotLQku bG9uZwkweDM5MWMwY2IzLDB4YzVjOTVhNjMsMHg0ZWQ4YWE0YSwweGUzNDE4YWNiCi0tCS5sb25n CTB4NWI5Y2NhNGYsMHg3NzYzZTM3MywweDY4MmU2ZmYzLDB4ZDZiMmI4YTMKLS0JLmxvbmcJMHg3 NDhmODJlZSwweDVkZWZiMmZjLDB4NzhhNTYzNmYsMHg0MzE3MmY2MAotLQkubG9uZwkweDg0Yzg3 ODE0LDB4YTFmMGFiNzIsMHg4Y2M3MDIwOCwweDFhNjQzOWVjCi0tCS5sb25nCTB4OTBiZWZmZmEs MHgyMzYzMWUyOCwweGE0NTA2Y2ViLDB4ZGU4MmJkZTkKLS0JLmxvbmcJMHhiZWY5YTNmNywweGIy YzY3OTE1LDB4YzY3MTc4ZjIsMHhlMzcyNTMyYgotLQkubG9uZwkweGNhMjczZWNlLDB4ZWEyNjYx OWMsMHhkMTg2YjhjNywweDIxYzBjMjA3Ci0tCS5sb25nCTB4ZWFkYTdkZDYsMHhjZGUwZWIxZSww eGY1N2Q0ZjdmLDB4ZWU2ZWQxNzgKLS0JLmxvbmcJMHgwNmYwNjdhYSwweDcyMTc2ZmJhLDB4MGE2 MzdkYzUsMHhhMmM4OThhNgotLQkubG9uZwkweDExM2Y5ODA0LDB4YmVmOTBkYWUsMHgxYjcxMGIz NSwweDEzMWM0NzFiCi0tCS5sb25nCTB4MjhkYjc3ZjUsMHgyMzA0N2Q4NCwweDMyY2FhYjdiLDB4 NDBjNzI0OTMKLS0JLmxvbmcJMHgzYzllYmUwYSwweDE1YzliZWJjLDB4NDMxZDY3YzQsMHg5YzEw MGQ0YwotLQkubG9uZwkweDRjYzVkNGJlLDB4Y2IzZTQyYjYsMHg1OTdmMjk5YywweGZjNjU3ZTJh Ci0tCS5sb25nCTB4NWZjYjZmYWIsMHgzYWQ2ZmFlYywweDZjNDQxOThjLDB4NGE0NzU4MTcKLSsJ LnF1YWQJMHg0MjhhMmY5OGQ3MjhhZTIyLDB4NzEzNzQ0OTEyM2VmNjVjZAotKwkucXVhZAkweGI1 YzBmYmNmZWM0ZDNiMmYsMHhlOWI1ZGJhNTgxODlkYmJjCi0rCS5xdWFkCTB4Mzk1NmMyNWJmMzQ4 YjUzOCwweDU5ZjExMWYxYjYwNWQwMTkKLSsJLnF1YWQJMHg5MjNmODJhNGFmMTk0ZjliLDB4YWIx YzVlZDVkYTZkODExOAotKwkucXVhZAkweGQ4MDdhYTk4YTMwMzAyNDIsMHgxMjgzNWIwMTQ1NzA2 ZmJlCi0rCS5xdWFkCTB4MjQzMTg1YmU0ZWU0YjI4YywweDU1MGM3ZGMzZDVmZmI0ZTIKLSsJLnF1 YWQJMHg3MmJlNWQ3NGYyN2I4OTZmLDB4ODBkZWIxZmUzYjE2OTZiMQotKwkucXVhZAkweDliZGMw NmE3MjVjNzEyMzUsMHhjMTliZjE3NGNmNjkyNjk0Ci0rCS5xdWFkCTB4ZTQ5YjY5YzE5ZWYxNGFk MiwweGVmYmU0Nzg2Mzg0ZjI1ZTMKLSsJLnF1YWQJMHgwZmMxOWRjNjhiOGNkNWI1LDB4MjQwY2Ex Y2M3N2FjOWM2NQotKwkucXVhZAkweDJkZTkyYzZmNTkyYjAyNzUsMHg0YTc0ODRhYTZlYTZlNDgz Ci0rCS5xdWFkCTB4NWNiMGE5ZGNiZDQxZmJkNCwweDc2Zjk4OGRhODMxMTUzYjUKLSsJLnF1YWQJ MHg5ODNlNTE1MmVlNjZkZmFiLDB4YTgzMWM2NmQyZGI0MzIxMAotKwkucXVhZAkweGIwMDMyN2M4 OThmYjIxM2YsMHhiZjU5N2ZjN2JlZWYwZWU0Ci0rCS5xdWFkCTB4YzZlMDBiZjMzZGE4OGZjMiww eGQ1YTc5MTQ3OTMwYWE3MjUKLSsJLnF1YWQJMHgwNmNhNjM1MWUwMDM4MjZmLDB4MTQyOTI5Njcw YTBlNmU3MAotKwkucXVhZAkweDI3YjcwYTg1NDZkMjJmZmMsMHgyZTFiMjEzODVjMjZjOTI2Ci0r CS5xdWFkCTB4NGQyYzZkZmM1YWM0MmFlZCwweDUzMzgwZDEzOWQ5NWIzZGYKLSsJLnF1YWQJMHg2 NTBhNzM1NDhiYWY2M2RlLDB4NzY2YTBhYmIzYzc3YjJhOAotKwkucXVhZAkweDgxYzJjOTJlNDdl ZGFlZTYsMHg5MjcyMmM4NTE0ODIzNTNiCi0rCS5xdWFkCTB4YTJiZmU4YTE0Y2YxMDM2NCwweGE4 MWE2NjRiYmM0MjMwMDEKLSsJLnF1YWQJMHhjMjRiOGI3MGQwZjg5NzkxLDB4Yzc2YzUxYTMwNjU0 YmUzMAotKwkucXVhZAkweGQxOTJlODE5ZDZlZjUyMTgsMHhkNjk5MDYyNDU1NjVhOTEwCi0rCS5x dWFkCTB4ZjQwZTM1ODU1NzcxMjAyYSwweDEwNmFhMDcwMzJiYmQxYjgKLSsJLnF1YWQJMHgxOWE0 YzExNmI4ZDJkMGM4LDB4MWUzNzZjMDg1MTQxYWI1MwotKwkucXVhZAkweDI3NDg3NzRjZGY4ZWVi OTksMHgzNGIwYmNiNWUxOWI0OGE4Ci0rCS5xdWFkCTB4MzkxYzBjYjNjNWM5NWE2MywweDRlZDhh YTRhZTM0MThhY2IKLSsJLnF1YWQJMHg1YjljY2E0Zjc3NjNlMzczLDB4NjgyZTZmZjNkNmIyYjhh MwotKwkucXVhZAkweDc0OGY4MmVlNWRlZmIyZmMsMHg3OGE1NjM2ZjQzMTcyZjYwCi0rCS5xdWFk CTB4ODRjODc4MTRhMWYwYWI3MiwweDhjYzcwMjA4MWE2NDM5ZWMKLSsJLnF1YWQJMHg5MGJlZmZm YTIzNjMxZTI4LDB4YTQ1MDZjZWJkZTgyYmRlOQotKwkucXVhZAkweGJlZjlhM2Y3YjJjNjc5MTUs MHhjNjcxNzhmMmUzNzI1MzJiCi0rCS5xdWFkCTB4Y2EyNzNlY2VlYTI2NjE5YywweGQxODZiOGM3 MjFjMGMyMDcKLSsJLnF1YWQJMHhlYWRhN2RkNmNkZTBlYjFlLDB4ZjU3ZDRmN2ZlZTZlZDE3OAot KwkucXVhZAkweDA2ZjA2N2FhNzIxNzZmYmEsMHgwYTYzN2RjNWEyYzg5OGE2Ci0rCS5xdWFkCTB4 MTEzZjk4MDRiZWY5MGRhZSwweDFiNzEwYjM1MTMxYzQ3MWIKLSsJLnF1YWQJMHgyOGRiNzdmNTIz MDQ3ZDg0LDB4MzJjYWFiN2I0MGM3MjQ5MwotKwkucXVhZAkweDNjOWViZTBhMTVjOWJlYmMsMHg0 MzFkNjdjNDljMTAwZDRjCi0rCS5xdWFkCTB4NGNjNWQ0YmVjYjNlNDJiNiwweDU5N2YyOTljZmM2 NTdlMmEKLSsJLnF1YWQJMHg1ZmNiNmZhYjNhZDZmYWVjLDB4NmM0NDE5OGM0YTQ3NTgxNwotIF9f XwotICRjb2RlLj08PF9fXyBpZiAoJFNaPT00KTsKLSAJLmxvbmcJMHg0MjhhMmY5OCwweDcxMzc0 NDkxLDB4YjVjMGZiY2YsMHhlOWI1ZGJhNQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRv L3NoYS9hc20vc2hhNTEycDgtcHBjLnBsLnBwYy1hc20gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3No YS9hc20vc2hhNTEycDgtcHBjLnBsCi0tLS0gb3BlbnNzbC0xLjAuMWkvY3J5cHRvL3NoYS9hc20v c2hhNTEycDgtcHBjLnBsLnBwYy1hc20JMjAxNC0wOC0xMyAxOTo0NjoyMS4wOTY1NzgxOTYgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vc2hhL2FzbS9zaGE1MTJwOC1wcGMucGwJMjAx NC0wOC0xMyAxOTo0NjoyMS4wOTY1NzgxOTYgKzAyMDAKLUBAIC0wLDAgKzEsNDIzIEBACi0rIyEv dXNyL2Jpbi9lbnYgcGVybAotKwotKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjIFdyaXR0ZW4gYnkgQW5keSBQ b2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0aGUgT3BlblNTTAotKyMgcHJvamVjdC4g VGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAot KyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4g Rm9yIGZ1cnRoZXIKLSsjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJv L2NyeXB0b2dhbXMvLgotKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsKLSsjIFNIQTI1Ni81MTIgZm9yIFBvd2Vy SVNBIHYyLjA3LgotKyMKLSsjIEFjY3VyYXRlIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50cyBhcmUg cHJvYmxlbWF0aWMsIGJlY2F1c2UgaXQncwotKyMgYWx3YXlzIHZpcnR1YWxpemVkIHNldHVwIHdp dGggcG9zc2libHkgdGhyb3R0bGVkIHByb2Nlc3Nvci4KLSsjIFJlbGF0aXZlIGNvbXBhcmlzb24g aXMgdGhlcmVmb3JlIG1vcmUgaW5mb3JtYXRpdmUuIFRoaXMgbW9kdWxlIGlzCi0rIyB+NjAlIGZh c3RlciB0aGFuIGludGVnZXItb25seSBzaGE1MTItcHBjLnBsLiBUbyBhbmNob3IgdG8gc29tZXRo aW5nCi0rIyBlbHNlLCBTSEEyNTYgaXMgMjQlIHNsb3dlciB0aGFuIHNoYTEtcHBjLnBsIGFuZCAy LjV4IHNsb3dlciB0aGFuCi0rIyBoYXJkd2FyZS1hc3Npc3RlZCBhZXMtMTI4LWNiYyBlbmNyeXB0 LiBTSEE1MTIgaXMgMjAlIGZhc3RlciB0aGFuCi0rIyBzaGExLXBwYy5wbCBhbmQgMS42eCBzbG93 ZXIgdGhhbiBhZXMtMTI4LWNiYy4gQW5vdGhlciBpbnRlcmVzdGluZwotKyMgcmVzdWx0IGlzIGRl Z3JlZSBvZiBjb21wdXRhdGlvbmFsIHJlc291cmNlcycgdXRpbGl6YXRpb24uIFBPV0VSOCBpcwot KyMgIm1hc3NpdmVseSBtdWx0aS10aHJlYWRlZCBjaGlwIiBhbmQgZGlmZmVyZW5jZSBiZXR3ZWVu IHNpbmdsZS0gYW5kCi0rIyBtYXhpbXVtIG11bHRpLXByb2Nlc3MgYmVuY2htYXJrIHJlc3VsdHMg dGVsbHMgdGhhdCB1dGxpemF0aW9uIGlzCi0rIyB3aG9vcGluZyA5NCUuIEZvciBzaGE1MTItcHBj LnBsIHdlIGdldCBbbm90IHVuaW1wcmVzc2l2ZV0gODQlIGFuZAotKyMgZm9yIHNoYTEtcHBjLnBs IC0gNzMlLiAxMDAlIG1lYW5zIHRoYXQgbXVsdGktcHJvY2VzcyByZXN1bHQgZXF1YWxzCi0rIyB0 byBzaW5nbGUtcHJvY2VzcyBvbmUsIGdpdmVuIHRoYXQgYWxsIHRocmVhZHMgZW5kIHVwIG9uIHRo ZSBzYW1lCi0rIyBwaHlzaWNhbCBjb3JlLgotKwotKyRmbGF2b3VyPXNoaWZ0OwotKyRvdXRwdXQg PXNoaWZ0OwotKwotK2lmICgkZmxhdm91ciA9fiAvNjQvKSB7Ci0rCSRTSVpFX1Q9ODsKLSsJJExS U0FWRT0yKiRTSVpFX1Q7Ci0rCSRTVFU9InN0ZHUiOwotKwkkUE9QPSJsZCI7Ci0rCSRQVVNIPSJz dGQiOwotK30gZWxzaWYgKCRmbGF2b3VyID1+IC8zMi8pIHsKLSsJJFNJWkVfVD00OwotKwkkTFJT QVZFPSRTSVpFX1Q7Ci0rCSRTVFU9InN0d3UiOwotKwkkUE9QPSJsd3oiOwotKwkkUFVTSD0ic3R3 IjsKLSt9IGVsc2UgeyBkaWUgIm5vbnNlbnNlICRmbGF2b3VyIjsgfQotKwotKyRMRU5ESUFOPSgk Zmxhdm91cj1+L2xlLyk7Ci0rCi0rJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0k MTsKLSsoICR4bGF0ZT0iJHtkaXJ9cHBjLXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlICkgb3IKLSso ICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS9wcGMteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUp IG9yCi0rZGllICJjYW4ndCBsb2NhdGUgcHBjLXhsYXRlLnBsIjsKLSsKLStvcGVuIFNURE9VVCwi fCAkXlggJHhsYXRlICRmbGF2b3VyICRvdXRwdXQiIHx8IGRpZSAiY2FuJ3QgY2FsbCAkeGxhdGU6 ICQhIjsKLSsKLStpZiAoJG91dHB1dCA9fiAvNTEyLykgewotKwkkYml0cz01MTI7Ci0rCSRTWj04 OwotKwkkc3o9ImQiOwotKwkkcm91bmRzPTgwOwotK30gZWxzZSB7Ci0rCSRiaXRzPTI1NjsKLSsJ JFNaPTQ7Ci0rCSRzej0idyI7Ci0rCSRyb3VuZHM9NjQ7Ci0rfQotKwotKyRmdW5jPSJzaGEke2Jp dHN9X2Jsb2NrX3A4IjsKLSskRlJBTUU9OCokU0laRV9UOwotKwotKyRzcCA9InIxIjsKLSskdG9j PSJyMiI7Ci0rJGN0eD0icjMiOwotKyRpbnA9InI0IjsKLSskbnVtPSJyNSI7Ci0rJFRibD0icjYi OwotKyRpZHg9InI3IjsKLSskbHJzYXZlPSJyOCI7Ci0rJG9mZmxvYWQ9InIxMSI7Ci0rJHZyc2F2 ZT0icjEyIjsKLSsoJHgwMCwkeDEwLCR4MjAsJHgzMCwkeDQwLCR4NTAsJHg2MCwkeDcwKT1tYXAo InIkXyIsKDAsMTAsMjYuLjMxKSk7Ci0rCi0rQFY9KCRBLCRCLCRDLCRELCRFLCRGLCRHLCRIKT1t YXAoInYkXyIsKDAuLjcpKTsKLStAWD1tYXAoInYkXyIsKDguLjIzKSk7Ci0rKCRLaSwkRnVuYywk UzAsJFMxLCRzMCwkczEsJGxlbWFzayk9bWFwKCJ2JF8iLCgyNC4uMzEpKTsKLSsKLStzdWIgUk9V TkQgewotK215ICgkaSwkYSwkYiwkYywkZCwkZSwkZiwkZywkaCk9QF87Ci0rbXkgJGo9KCRpKzEp JTE2OwotKwotKyRjb2RlLj08PF9fXwkJaWYgKCRpPDE1ICYmICgkaSUoMTYvJFNaKSk9PSgxNi8k U1otMSkpOwotKwlsdnhfdQkJQFhbJGkrMV0sMCwkaW5wCQk7IGxvYWQgWFtpXSBpbiBhZHZhbmNl Ci0rCWFkZGkJCSRpbnAsJGlucCwxNgotK19fXwotKyRjb2RlLj08PF9fXwkJaWYgKCRpPDE2ICYm ICgkaSUoMTYvJFNaKSkpOwotKwl2c2xkb2kJCUBYWyRpXSxAWFskaS0xXSxAWFskaS0xXSwkU1oK LStfX18KLSskY29kZS49PDxfX18JCWlmICgkTEVORElBTiAmJiAkaTwxNiAmJiAoJGklKDE2LyRT WikpPT0wKTsKLSsJdnBlcm0JCUBYWyRpXSxAWFskaV0sQFhbJGldLCRsZW1hc2sKLStfX18KLSsk Y29kZS49PDxfX187Ci0rCWAidnNoYXNpZ21hJHtzen0JJHMwLEBYWygkaisxKSUxNl0sMCwwIgkJ aWYgKCRpPj0xNSlgCi0rCXZzZWwJCSRGdW5jLCRnLCRmLCRlCQk7IENoKGUsZixnKQotKwl2c2hh c2lnbWEke3N6fQkkUzEsJGUsMSwxNQkJOyBTaWdtYTEoZSkKLSsJdmFkZHUke3N6fW0JJGgsJGgs QFhbJGklMTZdCQk7IGgrPVhbaV0KLSsJdnNoYXNpZ21hJHtzen0JJFMwLCRhLDEsMAkJOyBTaWdt YTAoYSkKLSsJYCJ2c2hhc2lnbWEke3N6fQkkczEsQFhbKCRqKzE0KSUxNl0sMCwxNSIJaWYgKCRp Pj0xNSlgCi0rCXZhZGR1JHtzen1tCSRoLCRoLCRGdW5jCQk7IGgrPUNoKGUsZixnKQotKwl2eG9y CQkkRnVuYywkYSwkYgotKwlgInZhZGR1JHtzen1tCQlAWFskal0sQFhbJGpdLEBYWygkais5KSUx Nl0iCWlmICgkaT49MTUpYAotKwl2YWRkdSR7c3p9bQkkaCwkaCwkUzEJCTsgaCs9U2lnbWExKGUp Ci0rCXZzZWwJCSRGdW5jLCRiLCRjLCRGdW5jCTsgTWFqKGEsYixjKQotKwl2YWRkdSR7c3p9bQkk ZywkZywkS2kJCTsgZnV0dXJlIGgrPUtbaV0KLSsJdmFkZHUke3N6fW0JJGQsJGQsJGgJCTsgZCs9 aAotKwl2YWRkdSR7c3p9bQkkUzAsJFMwLCRGdW5jCQk7IFNpZ21hMChhKStNYWooYSxiLGMpCi0r CWAidmFkZHUke3N6fW0JCUBYWyRqXSxAWFskal0sJHMwIgkJaWYgKCRpPj0xNSlgCi0rCWx2eAkJ JEtpLCRpZHgsJFRibAkJOyBsb2FkIG5leHQgS1tpXQotKwlhZGRpCQkkaWR4LCRpZHgsMTYKLSsJ dmFkZHUke3N6fW0JJGgsJGgsJFMwCQk7IGgrPVNpZ21hMChhKStNYWooYSxiLGMpCi0rCWAidmFk ZHUke3N6fW0JCUBYWyRqXSxAWFskal0sJHMxIgkJaWYgKCRpPj0xNSlgCi0rX19fCi0rfQotKwot KyRjb2RlPTw8X19fOwotKy5tYWNoaW5lCSJhbnkiCi0rLnRleHQKLSsKLSsuZ2xvYmwJJGZ1bmMK LSsuYWxpZ24JNgotKyRmdW5jOgotKwkkU1RVCQkkc3AsLWAoJEZSQU1FKzIxKjE2KzYqJFNJWkVf VClgKCRzcCkKLSsJbWZscgkJJGxyc2F2ZQotKwlsaQkJcjEwLGAkRlJBTUUrOCoxNisxNWAKLSsJ bGkJCXIxMSxgJEZSQU1FKzgqMTYrMzFgCi0rCXN0dngJCXYyMCxyMTAsJHNwCQkjIEFCSSBzYXlz IHNvCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJbWZzcHIJCSR2cnNhdmUsMjU2Ci0rCXN0dngJCXYy MSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2eAkJdjIyLHIxMCwkc3AKLSsJYWRk aQkJcjEwLHIxMCwzMgotKwlzdHZ4CQl2MjMscjExLCRzcAotKwlhZGRpCQlyMTEscjExLDMyCi0r CXN0dngJCXYyNCxyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJc3R2eAkJdjI1LHIxMSwk c3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlzdHZ4CQl2MjYscjEwLCRzcAotKwlhZGRpCQlyMTAs cjEwLDMyCi0rCXN0dngJCXYyNyxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJc3R2eAkJ djI4LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlzdHZ4CQl2MjkscjExLCRzcAotKwlh ZGRpCQlyMTEscjExLDMyCi0rCXN0dngJCXYzMCxyMTAsJHNwCi0rCXN0dngJCXYzMSxyMTEsJHNw Ci0rCWxpCQlyMTEsLTEKLSsJc3R3CQkkdnJzYXZlLGAkRlJBTUUrMjEqMTYtNGAoJHNwKQkjIHNh dmUgdnJzYXZlCi0rCWxpCQkkeDEwLDB4MTAKLSsJJFBVU0gJCXIyNixgJEZSQU1FKzIxKjE2KzAq JFNJWkVfVGAoJHNwKQotKwlsaQkJJHgyMCwweDIwCi0rCSRQVVNICQlyMjcsYCRGUkFNRSsyMSox NisxKiRTSVpFX1RgKCRzcCkKLSsJbGkJCSR4MzAsMHgzMAotKwkkUFVTSAkJcjI4LGAkRlJBTUUr MjEqMTYrMiokU0laRV9UYCgkc3ApCi0rCWxpCQkkeDQwLDB4NDAKLSsJJFBVU0gJCXIyOSxgJEZS QU1FKzIxKjE2KzMqJFNJWkVfVGAoJHNwKQotKwlsaQkJJHg1MCwweDUwCi0rCSRQVVNICQlyMzAs YCRGUkFNRSsyMSoxNis0KiRTSVpFX1RgKCRzcCkKLSsJbGkJCSR4NjAsMHg2MAotKwkkUFVTSAkJ cjMxLGAkRlJBTUUrMjEqMTYrNSokU0laRV9UYCgkc3ApCi0rCWxpCQkkeDcwLDB4NzAKLSsJJFBV U0gJCSRscnNhdmUsYCRGUkFNRSsyMSoxNis2KiRTSVpFX1QrJExSU0FWRWAoJHNwKQotKwltdHNw cgkJMjU2LHIxMQotKwotKwlibAkJTFBJQ21ldXAKLSsJYWRkaQkJJG9mZmxvYWQsJHNwLCRGUkFN RSsxNQotK19fXwotKyRjb2RlLj08PF9fXwkJaWYgKCRMRU5ESUFOKTsKLSsJbGkJCSRpZHgsOAot KwlsdnNsCQkkbGVtYXNrLDAsJGlkeAotKwl2c3BsdGlzYgkkS2ksMHgwZgotKwl2eG9yCQkkbGVt YXNrLCRsZW1hc2ssJEtpCi0rX19fCi0rJGNvZGUuPTw8X19fCQlpZiAoJFNaPT00KTsKLSsJbHZ4 XzR3CQkkQSwkeDAwLCRjdHgKLSsJbHZ4XzR3CQkkRSwkeDEwLCRjdHgKLSsJdnNsZG9pCQkkQiwk QSwkQSw0CQkjIHVucGFjawotKwl2c2xkb2kJCSRDLCRBLCRBLDgKLSsJdnNsZG9pCQkkRCwkQSwk QSwxMgotKwl2c2xkb2kJCSRGLCRFLCRFLDQKLSsJdnNsZG9pCQkkRywkRSwkRSw4Ci0rCXZzbGRv aQkJJEgsJEUsJEUsMTIKLStfX18KLSskY29kZS49PDxfX18JCWlmICgkU1o9PTgpOwotKwlsdnhf dQkJJEEsJHgwMCwkY3R4Ci0rCWx2eF91CQkkQywkeDEwLCRjdHgKLSsJbHZ4X3UJCSRFLCR4MjAs JGN0eAotKwl2c2xkb2kJCSRCLCRBLCRBLDgJCSMgdW5wYWNrCi0rCWx2eF91CQkkRywkeDMwLCRj dHgKLSsJdnNsZG9pCQkkRCwkQywkQyw4Ci0rCXZzbGRvaQkJJEYsJEUsJEUsOAotKwl2c2xkb2kJ CSRILCRHLCRHLDgKLStfX18KLSskY29kZS49PDxfX187Ci0rCWxpCQlyMCxgKCRyb3VuZHMtMTYp LzE2YAkjIGlubmVyIGxvb3AgY291bnRlcgotKwliCQlMb29wCi0rLmFsaWduCTUKLStMb29wOgot KwlsdngJCSRLaSwkeDAwLCRUYmwKLSsJbGkJCSRpZHgsMTYKLSsJbHZ4X3UJCUBYWzBdLDAsJGlu cAotKwlhZGRpCQkkaW5wLCRpbnAsMTYKLSsJc3R2eAkJJEEsJHgwMCwkb2ZmbG9hZAkjIG9mZmxv YWQgJEEtJEgKLSsJc3R2eAkJJEIsJHgxMCwkb2ZmbG9hZAotKwlzdHZ4CQkkQywkeDIwLCRvZmZs b2FkCi0rCXN0dngJCSRELCR4MzAsJG9mZmxvYWQKLSsJc3R2eAkJJEUsJHg0MCwkb2ZmbG9hZAot KwlzdHZ4CQkkRiwkeDUwLCRvZmZsb2FkCi0rCXN0dngJCSRHLCR4NjAsJG9mZmxvYWQKLSsJc3R2 eAkJJEgsJHg3MCwkb2ZmbG9hZAotKwl2YWRkdSR7c3p9bQkkSCwkSCwkS2kJCSMgaCtLW2ldCi0r CWx2eAkJJEtpLCRpZHgsJFRibAotKwlhZGRpCQkkaWR4LCRpZHgsMTYKLStfX18KLStmb3IgKCRp PTA7JGk8MTY7JGkrKykJeyAmUk9VTkQoJGksQFYpOyB1bnNoaWZ0KEBWLHBvcChAVikpOyB9Ci0r JGNvZGUuPTw8X19fOwotKwltdGN0cgkJcjAKLSsJYgkJTDE2X3h4Ci0rLmFsaWduCTUKLStMMTZf eHg6Ci0rX19fCi0rZm9yICg7JGk8MzI7JGkrKykJeyAmUk9VTkQoJGksQFYpOyB1bnNoaWZ0KEBW LHBvcChAVikpOyB9Ci0rJGNvZGUuPTw8X19fOwotKwliZG56CQlMMTZfeHgKLSsKLSsJbHZ4CQlA WFsyXSwkeDAwLCRvZmZsb2FkCi0rCXN1YmljLgkJJG51bSwkbnVtLDEKLSsJbHZ4CQlAWFszXSwk eDEwLCRvZmZsb2FkCi0rCXZhZGR1JHtzen1tCSRBLCRBLEBYWzJdCi0rCWx2eAkJQFhbNF0sJHgy MCwkb2ZmbG9hZAotKwl2YWRkdSR7c3p9bQkkQiwkQixAWFszXQotKwlsdngJCUBYWzVdLCR4MzAs JG9mZmxvYWQKLSsJdmFkZHUke3N6fW0JJEMsJEMsQFhbNF0KLSsJbHZ4CQlAWFs2XSwkeDQwLCRv ZmZsb2FkCi0rCXZhZGR1JHtzen1tCSRELCRELEBYWzVdCi0rCWx2eAkJQFhbN10sJHg1MCwkb2Zm bG9hZAotKwl2YWRkdSR7c3p9bQkkRSwkRSxAWFs2XQotKwlsdngJCUBYWzhdLCR4NjAsJG9mZmxv YWQKLSsJdmFkZHUke3N6fW0JJEYsJEYsQFhbN10KLSsJbHZ4CQlAWFs5XSwkeDcwLCRvZmZsb2Fk Ci0rCXZhZGR1JHtzen1tCSRHLCRHLEBYWzhdCi0rCXZhZGR1JHtzen1tCSRILCRILEBYWzldCi0r CWJuZQkJTG9vcAotK19fXwotKyRjb2RlLj08PF9fXwkJaWYgKCRTWj09NCk7Ci0rCWx2eAkJQFhb MF0sJGlkeCwkVGJsCi0rCWFkZGkJCSRpZHgsJGlkeCwxNgotKwl2cGVybQkJJEEsJEEsJEIsJEtp CQkjIHBhY2sgdGhlIGFuc3dlcgotKwlsdngJCUBYWzFdLCRpZHgsJFRibAotKwl2cGVybQkJJEUs JEUsJEYsJEtpCi0rCXZwZXJtCQkkQSwkQSwkQyxAWFswXQotKwl2cGVybQkJJEUsJEUsJEcsQFhb MF0KLSsJdnBlcm0JCSRBLCRBLCRELEBYWzFdCi0rCXZwZXJtCQkkRSwkRSwkSCxAWFsxXQotKwlz dHZ4XzR3CQkkQSwkeDAwLCRjdHgKLSsJc3R2eF80dwkJJEUsJHgxMCwkY3R4Ci0rX19fCi0rJGNv ZGUuPTw8X19fCQlpZiAoJFNaPT04KTsKLSsJdnBlcm0JCSRBLCRBLCRCLCRLaQkJIyBwYWNrIHRo ZSBhbnN3ZXIKLSsJdnBlcm0JCSRDLCRDLCRELCRLaQotKwl2cGVybQkJJEUsJEUsJEYsJEtpCi0r CXZwZXJtCQkkRywkRywkSCwkS2kKLSsJc3R2eF91CQkkQSwkeDAwLCRjdHgKLSsJc3R2eF91CQkk QywkeDEwLCRjdHgKLSsJc3R2eF91CQkkRSwkeDIwLCRjdHgKLSsJc3R2eF91CQkkRywkeDMwLCRj dHgKLStfX18KLSskY29kZS49PDxfX187Ci0rCWxpCQlyMTAsYCRGUkFNRSs4KjE2KzE1YAotKwlt dGxyCQkkbHJzYXZlCi0rCWxpCQlyMTEsYCRGUkFNRSs4KjE2KzMxYAotKwltdHNwcgkJMjU2LCR2 cnNhdmUKLSsJbHZ4CQl2MjAscjEwLCRzcAkJIyBBQkkgc2F5cyBzbwotKwlhZGRpCQlyMTAscjEw LDMyCi0rCWx2eAkJdjIxLHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgotKwlsdngJCXYyMixy MTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjMscjExLCRzcAotKwlhZGRpCQly MTEscjExLDMyCi0rCWx2eAkJdjI0LHIxMCwkc3AKLSsJYWRkaQkJcjEwLHIxMCwzMgotKwlsdngJ CXYyNSxyMTEsJHNwCi0rCWFkZGkJCXIxMSxyMTEsMzIKLSsJbHZ4CQl2MjYscjEwLCRzcAotKwlh ZGRpCQlyMTAscjEwLDMyCi0rCWx2eAkJdjI3LHIxMSwkc3AKLSsJYWRkaQkJcjExLHIxMSwzMgot KwlsdngJCXYyOCxyMTAsJHNwCi0rCWFkZGkJCXIxMCxyMTAsMzIKLSsJbHZ4CQl2MjkscjExLCRz cAotKwlhZGRpCQlyMTEscjExLDMyCi0rCWx2eAkJdjMwLHIxMCwkc3AKLSsJbHZ4CQl2MzEscjEx LCRzcAotKwkkUE9QCQlyMjYsYCRGUkFNRSsyMSoxNiswKiRTSVpFX1RgKCRzcCkKLSsJJFBPUAkJ cjI3LGAkRlJBTUUrMjEqMTYrMSokU0laRV9UYCgkc3ApCi0rCSRQT1AJCXIyOCxgJEZSQU1FKzIx KjE2KzIqJFNJWkVfVGAoJHNwKQotKwkkUE9QCQlyMjksYCRGUkFNRSsyMSoxNiszKiRTSVpFX1Rg KCRzcCkKLSsJJFBPUAkJcjMwLGAkRlJBTUUrMjEqMTYrNCokU0laRV9UYCgkc3ApCi0rCSRQT1AJ CXIzMSxgJEZSQU1FKzIxKjE2KzUqJFNJWkVfVGAoJHNwKQotKwlhZGRpCQkkc3AsJHNwLGAkRlJB TUUrMjEqMTYrNiokU0laRV9UYAotKwlibHIKLSsJLmxvbmcJCTAKLSsJLmJ5dGUJCTAsMTIsNCwx LDB4ODAsNiwzLDAKLSsJLmxvbmcJCTAKLSsuc2l6ZQkkZnVuYywuLSRmdW5jCi0rX19fCi0rCi0r IyBVZ2x5IGhhY2sgaGVyZSwgYmVjYXVzZSBQUEMgYXNzZW1ibGVyIHN5bnRheCBzZWVtIHRvIHZh cnkgdG9vCi0rIyBtdWNoIGZyb20gcGxhdGZvcm1zIHRvIHBsYXRmb3JtLi4uCi0rJGNvZGUuPTw8 X19fOwotKy5hbGlnbgk2Ci0rTFBJQ21ldXA6Ci0rCW1mbHIJcjAKLSsJYmNsCTIwLDMxLFwkKzQK LSsJbWZscgkkVGJsCTsgdnZ2dnZ2ICJkaXN0YW5jZSIgYmV0d2VlbiAuIGFuZCAxc3QgZGF0YSBl bnRyeQotKwlhZGRpCSRUYmwsJFRibCxgNjQtOGAKLSsJbXRscglyMAotKwlibHIKLSsJLmxvbmcJ MAotKwkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCi0rCS5zcGFjZQlgNjQtOSo0YAotK19fXwot KwotK2lmICgkU1o9PTgpIHsKLSsgICAgbG9jYWwgKnRhYmxlID0gc3ViIHsKLSsJZm9yZWFjaChA XykgeyAkY29kZS49Ii5xdWFkCSRfLCRfXG4iOyB9Ci0rICAgIH07Ci0rICAgIHRhYmxlKAotKwki MHg0MjhhMmY5OGQ3MjhhZTIyIiwiMHg3MTM3NDQ5MTIzZWY2NWNkIiwKLSsJIjB4YjVjMGZiY2Zl YzRkM2IyZiIsIjB4ZTliNWRiYTU4MTg5ZGJiYyIsCi0rCSIweDM5NTZjMjViZjM0OGI1MzgiLCIw eDU5ZjExMWYxYjYwNWQwMTkiLAotKwkiMHg5MjNmODJhNGFmMTk0ZjliIiwiMHhhYjFjNWVkNWRh NmQ4MTE4IiwKLSsJIjB4ZDgwN2FhOThhMzAzMDI0MiIsIjB4MTI4MzViMDE0NTcwNmZiZSIsCi0r CSIweDI0MzE4NWJlNGVlNGIyOGMiLCIweDU1MGM3ZGMzZDVmZmI0ZTIiLAotKwkiMHg3MmJlNWQ3 NGYyN2I4OTZmIiwiMHg4MGRlYjFmZTNiMTY5NmIxIiwKLSsJIjB4OWJkYzA2YTcyNWM3MTIzNSIs IjB4YzE5YmYxNzRjZjY5MjY5NCIsCi0rCSIweGU0OWI2OWMxOWVmMTRhZDIiLCIweGVmYmU0Nzg2 Mzg0ZjI1ZTMiLAotKwkiMHgwZmMxOWRjNjhiOGNkNWI1IiwiMHgyNDBjYTFjYzc3YWM5YzY1IiwK LSsJIjB4MmRlOTJjNmY1OTJiMDI3NSIsIjB4NGE3NDg0YWE2ZWE2ZTQ4MyIsCi0rCSIweDVjYjBh OWRjYmQ0MWZiZDQiLCIweDc2Zjk4OGRhODMxMTUzYjUiLAotKwkiMHg5ODNlNTE1MmVlNjZkZmFi IiwiMHhhODMxYzY2ZDJkYjQzMjEwIiwKLSsJIjB4YjAwMzI3Yzg5OGZiMjEzZiIsIjB4YmY1OTdm YzdiZWVmMGVlNCIsCi0rCSIweGM2ZTAwYmYzM2RhODhmYzIiLCIweGQ1YTc5MTQ3OTMwYWE3MjUi LAotKwkiMHgwNmNhNjM1MWUwMDM4MjZmIiwiMHgxNDI5Mjk2NzBhMGU2ZTcwIiwKLSsJIjB4Mjdi NzBhODU0NmQyMmZmYyIsIjB4MmUxYjIxMzg1YzI2YzkyNiIsCi0rCSIweDRkMmM2ZGZjNWFjNDJh ZWQiLCIweDUzMzgwZDEzOWQ5NWIzZGYiLAotKwkiMHg2NTBhNzM1NDhiYWY2M2RlIiwiMHg3NjZh MGFiYjNjNzdiMmE4IiwKLSsJIjB4ODFjMmM5MmU0N2VkYWVlNiIsIjB4OTI3MjJjODUxNDgyMzUz YiIsCi0rCSIweGEyYmZlOGExNGNmMTAzNjQiLCIweGE4MWE2NjRiYmM0MjMwMDEiLAotKwkiMHhj MjRiOGI3MGQwZjg5NzkxIiwiMHhjNzZjNTFhMzA2NTRiZTMwIiwKLSsJIjB4ZDE5MmU4MTlkNmVm NTIxOCIsIjB4ZDY5OTA2MjQ1NTY1YTkxMCIsCi0rCSIweGY0MGUzNTg1NTc3MTIwMmEiLCIweDEw NmFhMDcwMzJiYmQxYjgiLAotKwkiMHgxOWE0YzExNmI4ZDJkMGM4IiwiMHgxZTM3NmMwODUxNDFh YjUzIiwKLSsJIjB4Mjc0ODc3NGNkZjhlZWI5OSIsIjB4MzRiMGJjYjVlMTliNDhhOCIsCi0rCSIw eDM5MWMwY2IzYzVjOTVhNjMiLCIweDRlZDhhYTRhZTM0MThhY2IiLAotKwkiMHg1YjljY2E0Zjc3 NjNlMzczIiwiMHg2ODJlNmZmM2Q2YjJiOGEzIiwKLSsJIjB4NzQ4ZjgyZWU1ZGVmYjJmYyIsIjB4 NzhhNTYzNmY0MzE3MmY2MCIsCi0rCSIweDg0Yzg3ODE0YTFmMGFiNzIiLCIweDhjYzcwMjA4MWE2 NDM5ZWMiLAotKwkiMHg5MGJlZmZmYTIzNjMxZTI4IiwiMHhhNDUwNmNlYmRlODJiZGU5IiwKLSsJ IjB4YmVmOWEzZjdiMmM2NzkxNSIsIjB4YzY3MTc4ZjJlMzcyNTMyYiIsCi0rCSIweGNhMjczZWNl ZWEyNjYxOWMiLCIweGQxODZiOGM3MjFjMGMyMDciLAotKwkiMHhlYWRhN2RkNmNkZTBlYjFlIiwi MHhmNTdkNGY3ZmVlNmVkMTc4IiwKLSsJIjB4MDZmMDY3YWE3MjE3NmZiYSIsIjB4MGE2MzdkYzVh MmM4OThhNiIsCi0rCSIweDExM2Y5ODA0YmVmOTBkYWUiLCIweDFiNzEwYjM1MTMxYzQ3MWIiLAot KwkiMHgyOGRiNzdmNTIzMDQ3ZDg0IiwiMHgzMmNhYWI3YjQwYzcyNDkzIiwKLSsJIjB4M2M5ZWJl MGExNWM5YmViYyIsIjB4NDMxZDY3YzQ5YzEwMGQ0YyIsCi0rCSIweDRjYzVkNGJlY2IzZTQyYjYi LCIweDU5N2YyOTljZmM2NTdlMmEiLAotKwkiMHg1ZmNiNmZhYjNhZDZmYWVjIiwiMHg2YzQ0MTk4 YzRhNDc1ODE3IiwiMCIpOwotKyRjb2RlLj08PF9fXwlpZiAoISRMRU5ESUFOKTsKLSsucXVhZAkw eDAwMDEwMjAzMDQwNTA2MDcsMHgxMDExMTIxMzE0MTUxNjE3Ci0rX19fCi0rJGNvZGUuPTw8X19f CWlmICgkTEVORElBTik7CSMgcXVhZC1zd2FwcGVkCi0rLnF1YWQJMHgxMDExMTIxMzE0MTUxNjE3 LDB4MDAwMTAyMDMwNDA1MDYwNwotK19fXwotK30gZWxzZSB7Ci0rICAgIGxvY2FsICp0YWJsZSA9 IHN1YiB7Ci0rCWZvcmVhY2goQF8pIHsgJGNvZGUuPSIubG9uZwkkXywkXywkXywkX1xuIjsgfQot KyAgICB9OwotKyAgICB0YWJsZSgKLSsJIjB4NDI4YTJmOTgiLCIweDcxMzc0NDkxIiwiMHhiNWMw ZmJjZiIsIjB4ZTliNWRiYTUiLAotKwkiMHgzOTU2YzI1YiIsIjB4NTlmMTExZjEiLCIweDkyM2Y4 MmE0IiwiMHhhYjFjNWVkNSIsCi0rCSIweGQ4MDdhYTk4IiwiMHgxMjgzNWIwMSIsIjB4MjQzMTg1 YmUiLCIweDU1MGM3ZGMzIiwKLSsJIjB4NzJiZTVkNzQiLCIweDgwZGViMWZlIiwiMHg5YmRjMDZh NyIsIjB4YzE5YmYxNzQiLAotKwkiMHhlNDliNjljMSIsIjB4ZWZiZTQ3ODYiLCIweDBmYzE5ZGM2 IiwiMHgyNDBjYTFjYyIsCi0rCSIweDJkZTkyYzZmIiwiMHg0YTc0ODRhYSIsIjB4NWNiMGE5ZGMi LCIweDc2Zjk4OGRhIiwKLSsJIjB4OTgzZTUxNTIiLCIweGE4MzFjNjZkIiwiMHhiMDAzMjdjOCIs IjB4YmY1OTdmYzciLAotKwkiMHhjNmUwMGJmMyIsIjB4ZDVhNzkxNDciLCIweDA2Y2E2MzUxIiwi MHgxNDI5Mjk2NyIsCi0rCSIweDI3YjcwYTg1IiwiMHgyZTFiMjEzOCIsIjB4NGQyYzZkZmMiLCIw eDUzMzgwZDEzIiwKLSsJIjB4NjUwYTczNTQiLCIweDc2NmEwYWJiIiwiMHg4MWMyYzkyZSIsIjB4 OTI3MjJjODUiLAotKwkiMHhhMmJmZThhMSIsIjB4YTgxYTY2NGIiLCIweGMyNGI4YjcwIiwiMHhj NzZjNTFhMyIsCi0rCSIweGQxOTJlODE5IiwiMHhkNjk5MDYyNCIsIjB4ZjQwZTM1ODUiLCIweDEw NmFhMDcwIiwKLSsJIjB4MTlhNGMxMTYiLCIweDFlMzc2YzA4IiwiMHgyNzQ4Nzc0YyIsIjB4MzRi MGJjYjUiLAotKwkiMHgzOTFjMGNiMyIsIjB4NGVkOGFhNGEiLCIweDViOWNjYTRmIiwiMHg2ODJl NmZmMyIsCi0rCSIweDc0OGY4MmVlIiwiMHg3OGE1NjM2ZiIsIjB4ODRjODc4MTQiLCIweDhjYzcw MjA4IiwKLSsJIjB4OTBiZWZmZmEiLCIweGE0NTA2Y2ViIiwiMHhiZWY5YTNmNyIsIjB4YzY3MTc4 ZjIiLCIwIik7Ci0rJGNvZGUuPTw8X19fCWlmICghJExFTkRJQU4pOwotKy5sb25nCTB4MDAwMTAy MDMsMHgxMDExMTIxMywweDEwMTExMjEzLDB4MTAxMTEyMTMKLSsubG9uZwkweDAwMDEwMjAzLDB4 MDQwNTA2MDcsMHgxMDExMTIxMywweDEwMTExMjEzCi0rLmxvbmcJMHgwMDAxMDIwMywweDA0MDUw NjA3LDB4MDgwOTBhMGIsMHgxMDExMTIxMwotK19fXwotKyRjb2RlLj08PF9fXwlpZiAoJExFTkRJ QU4pOwkjIHdvcmQtc3dhcHBlZAotKy5sb25nCTB4MTAxMTEyMTMsMHgxMDExMTIxMywweDEwMTEx MjEzLDB4MDAwMTAyMDMKLSsubG9uZwkweDEwMTExMjEzLDB4MTAxMTEyMTMsMHgwNDA1MDYwNyww eDAwMDEwMjAzCi0rLmxvbmcJMHgxMDExMTIxMywweDA4MDkwYTBiLDB4MDQwNTA2MDcsMHgwMDAx MDIwMwotK19fXwotK30KLSskY29kZS49PDxfX187Ci0rLmFzY2l6CSJTSEEke2JpdHN9IGZvciBQ b3dlcklTQSAyLjA3LCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+IgotKy5hbGln bgkyCi0rX19fCi0rCi0rJGNvZGUgPX4gcy9cYChbXlxgXSopXGAvZXZhbCAkMS9nZW07Ci0rcHJp bnQgJGNvZGU7Ci0rY2xvc2UgU1RET1VUOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWkvY3J5cHRv L3NoYS9NYWtlZmlsZS5wcGMtYXNtIG9wZW5zc2wtMS4wLjFpL2NyeXB0by9zaGEvTWFrZWZpbGUK LS0tLSBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vc2hhL01ha2VmaWxlLnBwYy1hc20JMjAxNC0wOC0w NiAyMzoxODozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xaS9jcnlwdG8vc2hh L01ha2VmaWxlCTIwMTQtMDgtMTMgMTk6NDY6MjEuMDk2NTc4MTk2ICswMjAwCi1AQCAtNzUsNiAr NzUsOCBAQCBzaGE1MTItc3BhcmN2OS5zOmFzbS9zaGE1MTItc3BhcmN2OS5wbDsKLSBzaGExLXBw Yy5zOglhc20vc2hhMS1wcGMucGw7CSQoUEVSTCkgYXNtL3NoYTEtcHBjLnBsICQoUEVSTEFTTV9T Q0hFTUUpICRACi0gc2hhMjU2LXBwYy5zOglhc20vc2hhNTEyLXBwYy5wbDsJJChQRVJMKSBhc20v c2hhNTEyLXBwYy5wbCAkKFBFUkxBU01fU0NIRU1FKSAkQAotIHNoYTUxMi1wcGMuczoJYXNtL3No YTUxMi1wcGMucGw7CSQoUEVSTCkgYXNtL3NoYTUxMi1wcGMucGwgJChQRVJMQVNNX1NDSEVNRSkg JEAKLStzaGEyNTZwOC1wcGMuczoJYXNtL3NoYTUxMnA4LXBwYy5wbDsJJChQRVJMKSBhc20vc2hh NTEycDgtcHBjLnBsICQoUEVSTEFTTV9TQ0hFTUUpICRACi0rc2hhNTEycDgtcHBjLnM6CWFzbS9z aGE1MTJwOC1wcGMucGw7CSQoUEVSTCkgYXNtL3NoYTUxMnA4LXBwYy5wbCAkKFBFUkxBU01fU0NI RU1FKSAkQAotIAotIHNoYTEtcGFyaXNjLnM6CWFzbS9zaGExLXBhcmlzYy5wbDsJJChQRVJMKSBh c20vc2hhMS1wYXJpc2MucGwgJChQRVJMQVNNX1NDSEVNRSkgJEAKLSBzaGEyNTYtcGFyaXNjLnM6 YXNtL3NoYTUxMi1wYXJpc2MucGw7CSQoUEVSTCkgYXNtL3NoYTUxMi1wYXJpc2MucGwgJChQRVJM QVNNX1NDSEVNRSkgJEAKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xai1ldnAtd3JhcC5wYXRj aCBiL29wZW5zc2wtMS4wLjFqLWV2cC13cmFwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBiOTBjYWVhLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjFqLWV2cC13cmFwLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI0MiArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEu MC4xai9jcnlwdG8vYWVzL2Flc193cmFwLmMud3JhcCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vYWVz L2Flc193cmFwLmMKLS0tLSBvcGVuc3NsLTEuMC4xai9jcnlwdG8vYWVzL2Flc193cmFwLmMud3Jh cAkyMDE0LTEwLTE1IDEzOjE1OjI5LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFq L2NyeXB0by9hZXMvYWVzX3dyYXAuYwkyMDE0LTEwLTE2IDEzOjMwOjEwLjY3OTY1NDkyNyArMDIw MAotQEAgLTUzLDIwNyArNTMsMTggQEAKLSAKLSAjaW5jbHVkZSAiY3J5cHRsaWIuaCIKLSAjaW5j bHVkZSA8b3BlbnNzbC9hZXMuaD4KLS0jaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KLS0KLS1zdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBkZWZhdWx0X2l2W10gPSB7Ci0tICAweEE2LCAweEE2LCAw eEE2LCAweEE2LCAweEE2LCAweEE2LCAweEE2LCAweEE2LAotLX07Ci0rI2luY2x1ZGUgPG9wZW5z c2wvbW9kZXMuaD4KLSAKLSBpbnQgQUVTX3dyYXBfa2V5KEFFU19LRVkgKmtleSwgY29uc3QgdW5z aWduZWQgY2hhciAqaXYsCi0gCQl1bnNpZ25lZCBjaGFyICpvdXQsCi0gCQljb25zdCB1bnNpZ25l ZCBjaGFyICppbiwgdW5zaWduZWQgaW50IGlubGVuKQotIAl7Ci0tCXVuc2lnbmVkIGNoYXIgKkEs IEJbMTZdLCAqUjsKLS0JdW5zaWduZWQgaW50IGksIGosIHQ7Ci0tCWlmICgoaW5sZW4gJiAweDcp IHx8IChpbmxlbiA8IDgpKQotLQkJcmV0dXJuIC0xOwotLQlBID0gQjsKLS0JdCA9IDE7Ci0tCW1l bWNweShvdXQgKyA4LCBpbiwgaW5sZW4pOwotLQlpZiAoIWl2KQotLQkJaXYgPSBkZWZhdWx0X2l2 OwotLQotLQltZW1jcHkoQSwgaXYsIDgpOwotLQotLQlmb3IgKGogPSAwOyBqIDwgNjsgaisrKQot LQkJewotLQkJUiA9IG91dCArIDg7Ci0tCQlmb3IgKGkgPSAwOyBpIDwgaW5sZW47IGkgKz0gOCwg dCsrLCBSICs9IDgpCi0tCQkJewotLQkJCW1lbWNweShCICsgOCwgUiwgOCk7Ci0tCQkJQUVTX2Vu Y3J5cHQoQiwgQiwga2V5KTsKLS0JCQlBWzddIF49ICh1bnNpZ25lZCBjaGFyKSh0ICYgMHhmZik7 Ci0tCQkJaWYgKHQgPiAweGZmKQkKLS0JCQkJewotLQkJCQlBWzZdIF49ICh1bnNpZ25lZCBjaGFy KSgodCA+PiA4KSAmIDB4ZmYpOwotLQkJCQlBWzVdIF49ICh1bnNpZ25lZCBjaGFyKSgodCA+PiAx NikgJiAweGZmKTsKLS0JCQkJQVs0XSBePSAodW5zaWduZWQgY2hhcikoKHQgPj4gMjQpICYgMHhm Zik7Ci0tCQkJCX0KLS0JCQltZW1jcHkoUiwgQiArIDgsIDgpOwotLQkJCX0KLS0JCX0KLS0JbWVt Y3B5KG91dCwgQSwgOCk7Ci0tCXJldHVybiBpbmxlbiArIDg7Ci0rCXJldHVybiBDUllQVE9fMTI4 X3dyYXAoa2V5LCBpdiwgb3V0LCBpbiwgaW5sZW4sIChibG9jazEyOF9mKUFFU19lbmNyeXB0KTsK LSAJfQotIAotIGludCBBRVNfdW53cmFwX2tleShBRVNfS0VZICprZXksIGNvbnN0IHVuc2lnbmVk IGNoYXIgKml2LAotIAkJdW5zaWduZWQgY2hhciAqb3V0LAotIAkJY29uc3QgdW5zaWduZWQgY2hh ciAqaW4sIHVuc2lnbmVkIGludCBpbmxlbikKLSAJewotLQl1bnNpZ25lZCBjaGFyICpBLCBCWzE2 XSwgKlI7Ci0tCXVuc2lnbmVkIGludCBpLCBqLCB0OwotLQlpbmxlbiAtPSA4OwotLQlpZiAoaW5s ZW4gJiAweDcpCi0tCQlyZXR1cm4gLTE7Ci0tCWlmIChpbmxlbiA8IDgpCi0tCQlyZXR1cm4gLTE7 Ci0tCUEgPSBCOwotLQl0ID0gIDYgKiAoaW5sZW4gPj4gMyk7Ci0tCW1lbWNweShBLCBpbiwgOCk7 Ci0tCW1lbWNweShvdXQsIGluICsgOCwgaW5sZW4pOwotLQlmb3IgKGogPSAwOyBqIDwgNjsgaisr KQotLQkJewotLQkJUiA9IG91dCArIGlubGVuIC0gODsKLS0JCWZvciAoaSA9IDA7IGkgPCBpbmxl bjsgaSArPSA4LCB0LS0sIFIgLT0gOCkKLS0JCQl7Ci0tCQkJQVs3XSBePSAodW5zaWduZWQgY2hh cikodCAmIDB4ZmYpOwotLQkJCWlmICh0ID4gMHhmZikJCi0tCQkJCXsKLS0JCQkJQVs2XSBePSAo dW5zaWduZWQgY2hhcikoKHQgPj4gOCkgJiAweGZmKTsKLS0JCQkJQVs1XSBePSAodW5zaWduZWQg Y2hhcikoKHQgPj4gMTYpICYgMHhmZik7Ci0tCQkJCUFbNF0gXj0gKHVuc2lnbmVkIGNoYXIpKCh0 ID4+IDI0KSAmIDB4ZmYpOwotLQkJCQl9Ci0tCQkJbWVtY3B5KEIgKyA4LCBSLCA4KTsKLS0JCQlB RVNfZGVjcnlwdChCLCBCLCBrZXkpOwotLQkJCW1lbWNweShSLCBCICsgOCwgOCk7Ci0tCQkJfQot LQkJfQotLQlpZiAoIWl2KQotLQkJaXYgPSBkZWZhdWx0X2l2OwotLQlpZiAobWVtY21wKEEsIGl2 LCA4KSkKLS0JCXsKLS0JCU9QRU5TU0xfY2xlYW5zZShvdXQsIGlubGVuKTsKLS0JCXJldHVybiAw OwotLQkJfQotLQlyZXR1cm4gaW5sZW47Ci0tCX0KLS0KLS0jaWZkZWYgQUVTX1dSQVBfVEVTVAot LQotLWludCBBRVNfd3JhcF91bndyYXBfdGVzdChjb25zdCB1bnNpZ25lZCBjaGFyICprZWssIGlu dCBrZXliaXRzLAotLQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwKLS0JCQkgY29uc3QgdW5z aWduZWQgY2hhciAqZW91dCwKLS0JCQkgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LCBpbnQga2V5 bGVuKQotLQl7Ci0tCXVuc2lnbmVkIGNoYXIgKm90bXAgPSBOVUxMLCAqcHRtcCA9IE5VTEw7Ci0t CWludCByLCByZXQgPSAwOwotLQlBRVNfS0VZIHdjdHg7Ci0tCW90bXAgPSBPUEVOU1NMX21hbGxv YyhrZXlsZW4gKyA4KTsKLS0JcHRtcCA9IE9QRU5TU0xfbWFsbG9jKGtleWxlbik7Ci0tCWlmICgh b3RtcCB8fCAhcHRtcCkKLS0JCXJldHVybiAwOwotLQlpZiAoQUVTX3NldF9lbmNyeXB0X2tleShr ZWssIGtleWJpdHMsICZ3Y3R4KSkKLS0JCWdvdG8gZXJyOwotLQlyID0gQUVTX3dyYXBfa2V5KCZ3 Y3R4LCBpdiwgb3RtcCwga2V5LCBrZXlsZW4pOwotLQlpZiAociA8PSAwKQotLQkJZ290byBlcnI7 Ci0tCi0tCWlmIChlb3V0ICYmIG1lbWNtcChlb3V0LCBvdG1wLCBrZXlsZW4pKQotLQkJZ290byBl cnI7Ci0tCQkKLS0JaWYgKEFFU19zZXRfZGVjcnlwdF9rZXkoa2VrLCBrZXliaXRzLCAmd2N0eCkp Ci0tCQlnb3RvIGVycjsKLS0JciA9IEFFU191bndyYXBfa2V5KCZ3Y3R4LCBpdiwgcHRtcCwgb3Rt cCwgcik7Ci0tCi0tCWlmIChtZW1jbXAoa2V5LCBwdG1wLCBrZXlsZW4pKQotLQkJZ290byBlcnI7 Ci0tCi0tCXJldCA9IDE7Ci0tCi0tCWVycjoKLS0JaWYgKG90bXApCi0tCQlPUEVOU1NMX2ZyZWUo b3RtcCk7Ci0tCWlmIChwdG1wKQotLQkJT1BFTlNTTF9mcmVlKHB0bXApOwotLQotLQlyZXR1cm4g cmV0OwotLQotKwlyZXR1cm4gQ1JZUFRPXzEyOF91bndyYXAoa2V5LCBpdiwgb3V0LCBpbiwgaW5s ZW4sIChibG9jazEyOF9mKUFFU19kZWNyeXB0KTsKLSAJfQotLQotLQotLQotLWludCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKLS17Ci0tCi0tc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg a2VrW10gPSB7Ci0tICAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAw eDA3LAotLSAgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiwK LS0gIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsCi0tICAw eDE4LCAweDE5LCAweDFhLCAweDFiLCAweDFjLCAweDFkLCAweDFlLCAweDFmCi0tfTsKLS0KLS1z dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrZXlbXSA9IHsKLS0gIDB4MDAsIDB4MTEsIDB4MjIs IDB4MzMsIDB4NDQsIDB4NTUsIDB4NjYsIDB4NzcsCi0tICAweDg4LCAweDk5LCAweGFhLCAweGJi LCAweGNjLCAweGRkLCAweGVlLCAweGZmLAotLSAgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgw NCwgMHgwNSwgMHgwNiwgMHgwNywKLS0gIDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4MGMsIDB4 MGQsIDB4MGUsIDB4MGYKLS19OwotLQotLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGUxW10g PSB7Ci0tICAweDFmLCAweGE2LCAweDhiLCAweDBhLCAweDgxLCAweDEyLCAweGI0LCAweDQ3LAot LSAgMHhhZSwgMHhmMywgMHg0YiwgMHhkOCwgMHhmYiwgMHg1YSwgMHg3YiwgMHg4MiwKLS0gIDB4 OWQsIDB4M2UsIDB4ODYsIDB4MjMsIDB4NzEsIDB4ZDIsIDB4Y2YsIDB4ZTUKLS19OwotLQotLXN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGUyW10gPSB7Ci0tICAweDk2LCAweDc3LCAweDhiLCAw eDI1LCAweGFlLCAweDZjLCAweGE0LCAweDM1LAotLSAgMHhmOSwgMHgyYiwgMHg1YiwgMHg5Nywg MHhjMCwgMHg1MCwgMHhhZSwgMHhkMiwKLS0gIDB4NDYsIDB4OGEsIDB4YjgsIDB4YTEsIDB4N2Es IDB4ZDgsIDB4NGUsIDB4NWQKLS19OwotLQotLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGUz W10gPSB7Ci0tICAweDY0LCAweGU4LCAweGMzLCAweGY5LCAweGNlLCAweDBmLCAweDViLCAweGEy LAotLSAgMHg2MywgMHhlOSwgMHg3NywgMHg3OSwgMHgwNSwgMHg4MSwgMHg4YSwgMHgyYSwKLS0g IDB4OTMsIDB4YzgsIDB4MTksIDB4MWUsIDB4N2QsIDB4NmUsIDB4OGEsIDB4ZTcKLS19OwotLQot LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGU0W10gPSB7Ci0tICAweDAzLCAweDFkLCAweDMz LCAweDI2LCAweDRlLCAweDE1LCAweGQzLCAweDMyLAotLSAgMHg2OCwgMHhmMiwgMHg0ZSwgMHhj MiwgMHg2MCwgMHg3NCwgMHgzZSwgMHhkYywKLS0gIDB4ZTEsIDB4YzYsIDB4YzcsIDB4ZGQsIDB4 ZWUsIDB4NzIsIDB4NWEsIDB4OTMsCi0tICAweDZiLCAweGE4LCAweDE0LCAweDkxLCAweDVjLCAw eDY3LCAweDYyLCAweGQyCi0tfTsKLS0KLS1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBlNVtd ID0gewotLSAgMHhhOCwgMHhmOSwgMHhiYywgMHgxNiwgMHgxMiwgMHhjNiwgMHg4YiwgMHgzZiwK LS0gIDB4ZjYsIDB4ZTYsIDB4ZjQsIDB4ZmIsIDB4ZTMsIDB4MGUsIDB4NzEsIDB4ZTQsCi0tICAw eDc2LCAweDljLCAweDhiLCAweDgwLCAweGEzLCAweDJjLCAweGI4LCAweDk1LAotLSAgMHg4Yywg MHhkNSwgMHhkMSwgMHg3ZCwgMHg2YiwgMHgyNSwgMHg0ZCwgMHhhMQotLX07Ci0tCi0tc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgZTZbXSA9IHsKLS0gIDB4MjgsIDB4YzksIDB4ZjQsIDB4MDQs IDB4YzQsIDB4YjgsIDB4MTAsIDB4ZjQsCi0tICAweGNiLCAweGNjLCAweGIzLCAweDVjLCAweGZi LCAweDg3LCAweGY4LCAweDI2LAotLSAgMHgzZiwgMHg1NywgMHg4NiwgMHhlMiwgMHhkOCwgMHgw ZSwgMHhkMywgMHgyNiwKLS0gIDB4Y2IsIDB4YzcsIDB4ZjAsIDB4ZTcsIDB4MWEsIDB4OTksIDB4 ZjQsIDB4M2IsCi0tICAweGZiLCAweDk4LCAweDhiLCAweDliLCAweDdhLCAweDAyLCAweGRkLCAw eDIxCi0tfTsKLS0KLS0JQUVTX0tFWSB3Y3R4LCB4Y3R4OwotLQlpbnQgcmV0OwotLQlyZXQgPSBB RVNfd3JhcF91bndyYXBfdGVzdChrZWssIDEyOCwgTlVMTCwgZTEsIGtleSwgMTYpOwotLQlmcHJp bnRmKHN0ZGVyciwgIktleSB0ZXN0IHJlc3VsdCAlZFxuIiwgcmV0KTsKLS0JcmV0ID0gQUVTX3dy YXBfdW53cmFwX3Rlc3Qoa2VrLCAxOTIsIE5VTEwsIGUyLCBrZXksIDE2KTsKLS0JZnByaW50Zihz dGRlcnIsICJLZXkgdGVzdCByZXN1bHQgJWRcbiIsIHJldCk7Ci0tCXJldCA9IEFFU193cmFwX3Vu d3JhcF90ZXN0KGtlaywgMjU2LCBOVUxMLCBlMywga2V5LCAxNik7Ci0tCWZwcmludGYoc3RkZXJy LCAiS2V5IHRlc3QgcmVzdWx0ICVkXG4iLCByZXQpOwotLQlyZXQgPSBBRVNfd3JhcF91bndyYXBf dGVzdChrZWssIDE5MiwgTlVMTCwgZTQsIGtleSwgMjQpOwotLQlmcHJpbnRmKHN0ZGVyciwgIktl eSB0ZXN0IHJlc3VsdCAlZFxuIiwgcmV0KTsKLS0JcmV0ID0gQUVTX3dyYXBfdW53cmFwX3Rlc3Qo a2VrLCAyNTYsIE5VTEwsIGU1LCBrZXksIDI0KTsKLS0JZnByaW50ZihzdGRlcnIsICJLZXkgdGVz dCByZXN1bHQgJWRcbiIsIHJldCk7Ci0tCXJldCA9IEFFU193cmFwX3Vud3JhcF90ZXN0KGtlaywg MjU2LCBOVUxMLCBlNiwga2V5LCAzMik7Ci0tCWZwcmludGYoc3RkZXJyLCAiS2V5IHRlc3QgcmVz dWx0ICVkXG4iLCByZXQpOwotLX0KLS0JCi0tCQotLSNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0x LjAuMWovY3J5cHRvL2V2cC9jX2FsbGMuYy53cmFwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAv Y19hbGxjLmMKLS0tLSBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZXZwL2NfYWxsYy5jLndyYXAJMjAx NC0xMC0xNiAxMzozMDoxMC41ODM2NTI3NjAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xai9jcnlw dG8vZXZwL2NfYWxsYy5jCTIwMTQtMTAtMTYgMTM6MzA6MTAuNjc5NjU0OTI3ICswMjAwCi1AQCAt OTgsNiArOTgsNyBAQCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzKHZvaWQpCi0gCUVWUF9h ZGRfY2lwaGVyKEVWUF9kZXNfZWNiKCkpOwotIAlFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZSgp KTsKLSAJRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUzKCkpOwotKwlFVlBfYWRkX2NpcGhlcihF VlBfZGVzX2VkZTNfd3JhcCgpKTsKLSAjZW5kaWYKLSAKLSAjaWZuZGVmIE9QRU5TU0xfTk9fUkM0 Ci1AQCAtMTc3LDYgKzE3OCw4IEBAIHZvaWQgT3BlblNTTF9hZGRfYWxsX2NpcGhlcnModm9pZCkK LSAJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY3RyKCkpOwotIAlFVlBfYWRkX2NpcGhlcihF VlBfYWVzXzEyOF9nY20oKSk7Ci0gCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X3h0cygpKTsK LSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfd3JhcCgpKTsKLSsJRVZQX2FkZF9jaXBoZXIo RVZQX2Flc18xMjhfd3JhcF9wYWQoKSk7Ci0gCUVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18x MjhfY2JjLCJBRVMxMjgiKTsKLSAJRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzEyOF9jYmMs ImFlczEyOCIpOwotIAlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9lY2IoKSk7Ci1AQCAtMTg3 LDYgKzE5MCw4IEBAIHZvaWQgT3BlblNTTF9hZGRfYWxsX2NpcGhlcnModm9pZCkKLSAJRVZQX2Fk ZF9jaXBoZXIoRVZQX2Flc18xOTJfb2ZiKCkpOwotIAlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5 Ml9jdHIoKSk7Ci0gCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2djbSgpKTsKLSsJRVZQX2Fk ZF9jaXBoZXIoRVZQX2Flc18xOTJfd3JhcCgpKTsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18x OTJfd3JhcF9wYWQoKSk7Ci0gCUVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xOTJfY2JjLCJB RVMxOTIiKTsKLSAJRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzE5Ml9jYmMsImFlczE5MiIp OwotIAlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9lY2IoKSk7Ci1AQCAtMTk4LDYgKzIwMyw4 IEBAIHZvaWQgT3BlblNTTF9hZGRfYWxsX2NpcGhlcnModm9pZCkKLSAJRVZQX2FkZF9jaXBoZXIo RVZQX2Flc18yNTZfY3RyKCkpOwotIAlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9nY20oKSk7 Ci0gCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X3h0cygpKTsKLSsJRVZQX2FkZF9jaXBoZXIo RVZQX2Flc18yNTZfd3JhcCgpKTsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfd3JhcF9w YWQoKSk7Ci0gCUVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18yNTZfY2JjLCJBRVMyNTYiKTsK LSAJRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzI1Nl9jYmMsImFlczI1NiIpOwotICNpZiAh ZGVmaW5lZChPUEVOU1NMX05PX1NIQSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEExKQotQEAg LTI1MCw2ICsyNTcsNyBAQCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzKHZvaWQpCi0gCi0g CUVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlKCkpOwotIAlFVlBfYWRkX2NpcGhlcihFVlBfZGVz X2VkZTMoKSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlM193cmFwKCkpOwotICNlbmRp ZgotIAotICNpZm5kZWYgT1BFTlNTTF9OT19BRVMKLUBAIC0yNjIsNiArMjcwLDggQEAgdm9pZCBP cGVuU1NMX2FkZF9hbGxfY2lwaGVycyh2b2lkKQotIAlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEy OF9jdHIoKSk7Ci0gCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2djbSgpKTsKLSAJRVZQX2Fk ZF9jaXBoZXIoRVZQX2Flc18xMjhfeHRzKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEy OF93cmFwKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF93cmFwX3BhZCgpKTsKLSAJ RVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzEyOF9jYmMsIkFFUzEyOCIpOwotIAlFVlBfYWRk X2NpcGhlcl9hbGlhcyhTTl9hZXNfMTI4X2NiYywiYWVzMTI4Iik7Ci0gCUVWUF9hZGRfY2lwaGVy KEVWUF9hZXNfMTkyX2VjYigpKTsKLUBAIC0yNzIsNiArMjgyLDggQEAgdm9pZCBPcGVuU1NMX2Fk ZF9hbGxfY2lwaGVycyh2b2lkKQotIAlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9vZmIoKSk7 Ci0gCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2N0cigpKTsKLSAJRVZQX2FkZF9jaXBoZXIo RVZQX2Flc18xOTJfZ2NtKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml93cmFwKCkp OwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml93cmFwX3BhZCgpKTsKLSAJRVZQX2FkZF9j aXBoZXJfYWxpYXMoU05fYWVzXzE5Ml9jYmMsIkFFUzE5MiIpOwotIAlFVlBfYWRkX2NpcGhlcl9h bGlhcyhTTl9hZXNfMTkyX2NiYywiYWVzMTkyIik7Ci0gCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNf MjU2X2VjYigpKTsKLUBAIC0yODMsNiArMjk1LDggQEAgdm9pZCBPcGVuU1NMX2FkZF9hbGxfY2lw aGVycyh2b2lkKQotIAlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9jdHIoKSk7Ci0gCUVWUF9h ZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2djbSgpKTsKLSAJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18y NTZfeHRzKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl93cmFwKCkpOwotKwlFVlBf YWRkX2NpcGhlcihFVlBfYWVzXzI1Nl93cmFwX3BhZCgpKTsKLSAJRVZQX2FkZF9jaXBoZXJfYWxp YXMoU05fYWVzXzI1Nl9jYmMsIkFFUzI1NiIpOwotIAlFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9h ZXNfMjU2X2NiYywiYWVzMjU2Iik7Ci0gI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9j cnlwdG8vZXZwL2VfYWVzLmMud3JhcCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZXZwL2VfYWVzLmMK LS0tLSBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZXZwL2VfYWVzLmMud3JhcAkyMDE0LTEwLTE2IDEz OjMwOjEwLjU4NDY1Mjc4MiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAvZV9h ZXMuYwkyMDE0LTEwLTE2IDEzOjMwOjEwLjY3OTY1NDkyNyArMDIwMAotQEAgLTEsNSArMSw1IEBA Ci0gLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0gKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMSBUaGUgT3BlblNT TCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDEt MjAxNCBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAgKgotICAq IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dAotICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotQEAgLTEzODQsNCArMTM4NCwxODAgQEAgQkxPQ0tf Q0lQSEVSX2N1c3RvbShOSURfYWVzLDEyOCwxLDEyLGNjbQotIEJMT0NLX0NJUEhFUl9jdXN0b20o TklEX2FlcywxOTIsMSwxMixjY20sQ0NNLEVWUF9DSVBIX0ZMQUdfRklQU3xDVVNUT01fRkxBR1Mp Ci0gQkxPQ0tfQ0lQSEVSX2N1c3RvbShOSURfYWVzLDI1NiwxLDEyLGNjbSxDQ00sRVZQX0NJUEhf RkxBR19GSVBTfENVU1RPTV9GTEFHUykKLSAKLSt0eXBlZGVmIHN0cnVjdAotKwl7Ci0rCXVuaW9u IHsgZG91YmxlIGFsaWduOyBBRVNfS0VZIGtzOyB9IGtzOwotKwkvKiBJbmRpY2F0ZXMgaWYgSVYg aGFzIGJlZW4gc2V0ICovCi0rCXVuc2lnbmVkIGNoYXIgKml2OwotKwl9IEVWUF9BRVNfV1JBUF9D VFg7Ci0rCi0rc3RhdGljIGludCBhZXNfd3JhcF9pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAqY3R4 LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCi0rICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgdW5zaWduZWQgY2hhciAqaXYsIGludCBlbmMpCi0rCXsKLSsJRVZQX0FFU19XUkFQX0NUWCAq d2N0eCA9IGN0eC0+Y2lwaGVyX2RhdGE7Ci0rCWlmICghaXYgJiYgIWtleSkKLSsJCXJldHVybiAx OwotKwlpZiAoa2V5KQotKwkJewotKwkJaWYgKGN0eC0+ZW5jcnlwdCkKLSsJCQlBRVNfc2V0X2Vu Y3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogOCwgJndjdHgtPmtzLmtzKTsKLSsJCWVsc2UK LSsJCQlBRVNfc2V0X2RlY3J5cHRfa2V5KGtleSwgY3R4LT5rZXlfbGVuICogOCwgJndjdHgtPmtz LmtzKTsKLSsJCWlmICghaXYpCi0rCQkJd2N0eC0+aXYgPSBOVUxMOwotKwkJfQotKwlpZiAoaXYp Ci0rCQl7Ci0rCQltZW1jcHkoY3R4LT5pdiwgaXYsIEVWUF9DSVBIRVJfQ1RYX2l2X2xlbmd0aChj dHgpKTsKLSsJCXdjdHgtPml2ID0gY3R4LT5pdjsKLSsJCX0KLSsJcmV0dXJuIDE7Ci0rCX0KLSsK LStzdGF0aWMgaW50IGFlc193cmFwX2NpcGhlcihFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25l ZCBjaGFyICpvdXQsCi0rCQljb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubGVuKQot Kwl7Ci0rCUVWUF9BRVNfV1JBUF9DVFggKndjdHggPSBjdHgtPmNpcGhlcl9kYXRhOwotKwlzaXpl X3QgcnY7Ci0rCS8qIEFFUyB3cmFwIHdpdGggcGFkZGluZyBoYXMgSVYgbGVuZ3RoIG9mIDQsIHdp dGhvdXQgcGFkZGluZyA4ICovCi0rCWludCBwYWQgPSBFVlBfQ0lQSEVSX0NUWF9pdl9sZW5ndGgo Y3R4KSA9PSA0OwotKwkvKiBObyBmaW5hbCBvcGVyYXRpb24gc28gYWx3YXlzIHJldHVybiB6ZXJv IGxlbmd0aCAqLwotKwlpZiAoIWluKQotKwkJcmV0dXJuIDA7Ci0rCS8qIElucHV0IGxlbmd0aCBt dXN0IGFsd2F5cyBiZSBub24temVybyAqLwotKwlpZiAoIWlubGVuKQotKwkJcmV0dXJuIC0xOwot KwkvKiBJZiBkZWNyeXB0aW5nIG5lZWQgYXQgbGVhc3QgMTYgYnl0ZXMgYW5kIG11bHRpcGxlIG9m IDggKi8KLSsJaWYgKCFjdHgtPmVuY3J5cHQgJiYgKGlubGVuIDwgMTYgfHwgaW5sZW4gJiAweDcp KQotKwkJcmV0dXJuIC0xOwotKwkvKiBJZiBub3QgcGFkZGluZyBpbnB1dCBtdXN0IGJlIG11bHRp cGxlIG9mIDggKi8KLSsJaWYgKCFwYWQgJiYgaW5sZW4gJiAweDcpCi0rCQlyZXR1cm4gLTE7Ci0r CWlmICghb3V0KQotKwkJewotKwkJaWYgKGN0eC0+ZW5jcnlwdCkKLSsJCQl7Ci0rCQkJLyogSWYg cGFkZGluZyByb3VuZCB1cCB0byBtdWx0aXBsZSBvZiA4ICovCi0rCQkJaWYgKHBhZCkKLSsJCQkJ aW5sZW4gPSAoaW5sZW4gKyA3KS84ICogODsKLSsJCQkvKiA4IGJ5dGUgcHJlZml4ICovCi0rCQkJ cmV0dXJuIGlubGVuICsgODsKLSsJCQl9Ci0rCQllbHNlCi0rCQkJewotKwkJCS8qIElmIG5vdCBw YWRkaW5nIG91dHB1dCB3aWxsIGJlIGV4YWN0bHkgOCBieXRlcwotKwkJCSAqIHNtYWxsZXIgdGhh biBpbnB1dC4gSWYgcGFkZGluZyBpdCB3aWxsIGJlIGF0Ci0rCQkJICogbGVhc3QgOCBieXRlcyBz bWFsbGVyIGJ1dCB3ZSBkb24ndCBrbm93IGhvdwotKwkJCSAqIG11Y2guCi0rCQkJICovCi0rCQkJ cmV0dXJuIGlubGVuIC0gODsKLSsJCQl9Ci0rCQl9Ci0rCWlmIChwYWQpCi0rCQl7Ci0rCQlpZiAo Y3R4LT5lbmNyeXB0KQotKwkJCXJ2ID0gQ1JZUFRPXzEyOF93cmFwX3BhZCgmd2N0eC0+a3Mua3Ms IHdjdHgtPml2LAotKwkJCQkJCW91dCwgaW4sIGlubGVuLAotKwkJCQkJCShibG9jazEyOF9mKUFF U19lbmNyeXB0KTsKLSsJCWVsc2UKLSsJCQlydiA9IENSWVBUT18xMjhfdW53cmFwX3BhZCgmd2N0 eC0+a3Mua3MsIHdjdHgtPml2LAotKwkJCQkJCW91dCwgaW4sIGlubGVuLAotKwkJCQkJCShibG9j azEyOF9mKUFFU19kZWNyeXB0KTsKLSsJCX0KLSsJZWxzZQotKwkJewotKwkJaWYgKGN0eC0+ZW5j cnlwdCkKLSsJCQlydiA9IENSWVBUT18xMjhfd3JhcCgmd2N0eC0+a3Mua3MsIHdjdHgtPml2LAot KwkJCQkJCW91dCwgaW4sIGlubGVuLAotKwkJCQkJCShibG9jazEyOF9mKUFFU19lbmNyeXB0KTsK LSsJCWVsc2UKLSsJCQlydiA9IENSWVBUT18xMjhfdW53cmFwKCZ3Y3R4LT5rcy5rcywgd2N0eC0+ aXYsCi0rCQkJCQkJb3V0LCBpbiwgaW5sZW4sCi0rCQkJCQkJKGJsb2NrMTI4X2YpQUVTX2RlY3J5 cHQpOwotKwkJfQotKwlyZXR1cm4gcnYgPyAoaW50KXJ2IDogLTE7Ci0rCX0KLSsKLSsjZGVmaW5l IFdSQVBfRkxBR1MJKEVWUF9DSVBIX1dSQVBfTU9ERSB8IEVWUF9DSVBIX0ZMQUdfRklQUyBcCi0r CQl8IEVWUF9DSVBIX0NVU1RPTV9JViB8IEVWUF9DSVBIX0ZMQUdfQ1VTVE9NX0NJUEhFUiBcCi0r CQl8IEVWUF9DSVBIX0FMV0FZU19DQUxMX0lOSVQgfCBFVlBfQ0lQSF9GTEFHX0RFRkFVTFRfQVNO MSkKLSsKLStzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiBhZXNfMTI4X3dyYXAgPSB7Ci0rCU5JRF9p ZF9hZXMxMjhfd3JhcCwKLSsJOCwgMTYsIDgsIFdSQVBfRkxBR1MsCi0rCWFlc193cmFwX2luaXRf a2V5LCBhZXNfd3JhcF9jaXBoZXIsCi0rCU5VTEwsCi0rCXNpemVvZihFVlBfQUVTX1dSQVBfQ1RY KSwKLSsJTlVMTCxOVUxMLE5VTEwsTlVMTCB9OwotKwotK2NvbnN0IEVWUF9DSVBIRVIgKkVWUF9h ZXNfMTI4X3dyYXAodm9pZCkKLSsJewotKwlyZXR1cm4gJmFlc18xMjhfd3JhcDsKLSsJfQotKwot K3N0YXRpYyBjb25zdCBFVlBfQ0lQSEVSIGFlc18xOTJfd3JhcCA9IHsKLSsJTklEX2lkX2FlczE5 Ml93cmFwLAotKwk4LCAyNCwgOCwgV1JBUF9GTEFHUywKLSsJYWVzX3dyYXBfaW5pdF9rZXksIGFl c193cmFwX2NpcGhlciwKLSsJTlVMTCwKLSsJc2l6ZW9mKEVWUF9BRVNfV1JBUF9DVFgpLAotKwlO VUxMLE5VTEwsTlVMTCxOVUxMIH07Ci0rCi0rY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xOTJf d3JhcCh2b2lkKQotKwl7Ci0rCXJldHVybiAmYWVzXzE5Ml93cmFwOwotKwl9Ci0rCi0rc3RhdGlj IGNvbnN0IEVWUF9DSVBIRVIgYWVzXzI1Nl93cmFwID0gewotKwlOSURfaWRfYWVzMjU2X3dyYXAs Ci0rCTgsIDMyLCA4LCBXUkFQX0ZMQUdTLAotKwlhZXNfd3JhcF9pbml0X2tleSwgYWVzX3dyYXBf Y2lwaGVyLAotKwlOVUxMLAotKwlzaXplb2YoRVZQX0FFU19XUkFQX0NUWCksCi0rCU5VTEwsTlVM TCxOVUxMLE5VTEwgfTsKLSsKLStjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzI1Nl93cmFwKHZv aWQpCi0rCXsKLSsJcmV0dXJuICZhZXNfMjU2X3dyYXA7Ci0rCX0KLSsKLStzdGF0aWMgY29uc3Qg RVZQX0NJUEhFUiBhZXNfMTI4X3dyYXBfcGFkID0gewotKwlOSURfaWRfYWVzMTI4X3dyYXBfcGFk LAotKwk4LCAxNiwgNCwgV1JBUF9GTEFHUywKLSsJYWVzX3dyYXBfaW5pdF9rZXksIGFlc193cmFw X2NpcGhlciwKLSsJTlVMTCwKLSsJc2l6ZW9mKEVWUF9BRVNfV1JBUF9DVFgpLAotKwlOVUxMLE5V TEwsTlVMTCxOVUxMIH07Ci0rCi0rY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xMjhfd3JhcF9w YWQodm9pZCkKLSsJewotKwlyZXR1cm4gJmFlc18xMjhfd3JhcF9wYWQ7Ci0rCX0KLSsKLStzdGF0 aWMgY29uc3QgRVZQX0NJUEhFUiBhZXNfMTkyX3dyYXBfcGFkID0gewotKwlOSURfaWRfYWVzMTky X3dyYXBfcGFkLAotKwk4LCAyNCwgNCwgV1JBUF9GTEFHUywKLSsJYWVzX3dyYXBfaW5pdF9rZXks IGFlc193cmFwX2NpcGhlciwKLSsJTlVMTCwKLSsJc2l6ZW9mKEVWUF9BRVNfV1JBUF9DVFgpLAot KwlOVUxMLE5VTEwsTlVMTCxOVUxMIH07Ci0rCi0rY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18x OTJfd3JhcF9wYWQodm9pZCkKLSsJewotKwlyZXR1cm4gJmFlc18xOTJfd3JhcF9wYWQ7Ci0rCX0K LSsKLStzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiBhZXNfMjU2X3dyYXBfcGFkID0gewotKwlOSURf aWRfYWVzMjU2X3dyYXBfcGFkLAotKwk4LCAzMiwgNCwgV1JBUF9GTEFHUywKLSsJYWVzX3dyYXBf aW5pdF9rZXksIGFlc193cmFwX2NpcGhlciwKLSsJTlVMTCwKLSsJc2l6ZW9mKEVWUF9BRVNfV1JB UF9DVFgpLAotKwlOVUxMLE5VTEwsTlVMTCxOVUxMIH07Ci0rCi0rY29uc3QgRVZQX0NJUEhFUiAq RVZQX2Flc18yNTZfd3JhcF9wYWQodm9pZCkKLSsJewotKwlyZXR1cm4gJmFlc18yNTZfd3JhcF9w YWQ7Ci0rCX0KLSsKLSAjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAv ZV9kZXMzLmMud3JhcCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZXZwL2VfZGVzMy5jCi0tLS0gb3Bl bnNzbC0xLjAuMWovY3J5cHRvL2V2cC9lX2RlczMuYy53cmFwCTIwMTQtMTAtMTYgMTM6MzA6MTAu NTg0NjUyNzgyICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2V2cC9lX2RlczMuYwky MDE0LTEwLTE2IDEzOjMwOjEwLjY3OTY1NDkyNyArMDIwMAotQEAgLTMxMCw0ICszMTAsMTEyIEBA IGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9kZXNfZWRlMyh2b2lkKQotIHsKLSAJcmV0dXJuICZkZXNf ZWRlM19lY2I7Ci0gfQotKwotKyNpZm5kZWYgT1BFTlNTTF9OT19TSEEKLSsKLSsjaW5jbHVkZSA8 b3BlbnNzbC9zaGEuaD4KLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB3cmFwX2l2Wzhd ID0gezB4NGEsMHhkZCwweGEyLDB4MmMsMHg3OSwweGU4LDB4MjEsMHgwNX07Ci0rCi0rc3RhdGlj IGludCBkZXNfZWRlM191bndyYXAoRVZQX0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAq b3V0LAotKwkJCQljb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCkKLSsJewotKwl1 bnNpZ25lZCBjaGFyIGljdls4XSwgaXZbOF0sIHNoYTF0bXBbU0hBX0RJR0VTVF9MRU5HVEhdOwot KwlpbnQgcnYgPSAtMTsKLSsJaWYgKGlubCA8IDI0KQotKwkJcmV0dXJuIC0xOwotKwlpZiAoIW91 dCkKLSsJCXJldHVybiBpbmwgLSAxNjsKLSsJbWVtY3B5KGN0eC0+aXYsIHdyYXBfaXYsIDgpOwot KwkvKiBEZWNyeXB0IGZpcnN0IGJsb2NrIHdoaWNoIHdpbGwgZW5kIHVwIGFzIGljdiAqLwotKwlk ZXNfZWRlX2NiY19jaXBoZXIoY3R4LCBpY3YsIGluLCA4KTsKLSsJLyogRGVjcnlwdCBjZW50cmFs IGJsb2NrcyAqLwotKwkvKiBJZiBkZWNyeXB0aW5nIGluIHBsYWNlIG1vdmUgd2hvbGUgb3V0cHV0 IGFsb25nIGEgYmxvY2sKLSsJICogc28gdGhlIG5leHQgZGVzX2VkZV9jYmNfY2lwaGVyIGlzIGlu IHBsYWNlLgotKwkgKi8KLSsJaWYgKG91dCA9PSBpbikKLSsJCXsKLSsJCW1lbW1vdmUob3V0LCBv dXQgKyA4LCBpbmwgLSA4KTsKLSsJCWluIC09IDg7Ci0rCQl9Ci0rCWRlc19lZGVfY2JjX2NpcGhl cihjdHgsIG91dCwgaW4gKyA4LCBpbmwgLSAxNik7Ci0rCS8qIERlY3J5cHQgZmluYWwgYmxvY2sg d2hpY2ggd2lsbCBiZSBJViAqLwotKwlkZXNfZWRlX2NiY19jaXBoZXIoY3R4LCBpdiwgaW4gKyBp bmwgLSA4LCA4KTsKLSsJLyogUmV2ZXJzZSBvcmRlciBvZiBldmVyeXRoaW5nICovCi0rCUJVRl9y ZXZlcnNlKGljdiwgTlVMTCwgOCk7Ci0rCUJVRl9yZXZlcnNlKG91dCwgTlVMTCwgaW5sIC0gMTYp OwotKwlCVUZfcmV2ZXJzZShjdHgtPml2LCBpdiwgOCk7Ci0rCS8qIERlY3J5cHQgYWdhaW4gdXNp bmcgbmV3IElWICovCi0rCWRlc19lZGVfY2JjX2NpcGhlcihjdHgsIG91dCwgb3V0LCBpbmwgLSAx Nik7Ci0rCWRlc19lZGVfY2JjX2NpcGhlcihjdHgsIGljdiwgaWN2LCA4KTsKLSsJLyogV29yayBv dXQgU0hBMSBoYXNoIG9mIGZpcnN0IHBvcnRpb24gKi8KLSsJU0hBMShvdXQsIGlubCAtIDE2LCBz aGExdG1wKTsKLSsKLSsJaWYgKCFDUllQVE9fbWVtY21wKHNoYTF0bXAsIGljdiwgOCkpCi0rCQly diA9IGlubCAtIDE2OwotKwlPUEVOU1NMX2NsZWFuc2UoaWN2LCA4KTsKLSsJT1BFTlNTTF9jbGVh bnNlKHNoYTF0bXAsIFNIQV9ESUdFU1RfTEVOR1RIKTsKLSsJT1BFTlNTTF9jbGVhbnNlKGl2LCA4 KTsKLSsJT1BFTlNTTF9jbGVhbnNlKGN0eC0+aXYsIDgpOwotKwlpZiAocnYgPT0gLTEpCi0rCQlP UEVOU1NMX2NsZWFuc2Uob3V0LCBpbmwgLSAxNik7Ci0rCQotKwlyZXR1cm4gcnY7Ci0rCX0KLSsK LStzdGF0aWMgaW50IGRlc19lZGUzX3dyYXAoRVZQX0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQg Y2hhciAqb3V0LAotKwkJCQljb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCkKLSsJ ewotKwl1bnNpZ25lZCBjaGFyIHNoYTF0bXBbU0hBX0RJR0VTVF9MRU5HVEhdOwotKwlpZiAoIW91 dCkKLSsJCXJldHVybiBpbmwgKyAxNjsKLSsJLyogQ29weSBpbnB1dCB0byBvdXRwdXQgYnVmZmVy ICsgOCBzbyB3ZSBoYXZlIHNwYWNlIGZvciBJViAqLwotKwltZW1tb3ZlKG91dCArIDgsIGluLCBp bmwpOwotKwkvKiBXb3JrIG91dCBJQ1YgKi8KLSsJU0hBMShpbiwgaW5sLCBzaGExdG1wKTsKLSsJ bWVtY3B5KG91dCArIGlubCArIDgsIHNoYTF0bXAsIDgpOwotKwlPUEVOU1NMX2NsZWFuc2Uoc2hh MXRtcCwgU0hBX0RJR0VTVF9MRU5HVEgpOwotKwkvKiBHZW5lcmF0ZSByYW5kb20gSVYgKi8KLSsJ UkFORF9ieXRlcyhjdHgtPml2LCA4KTsKLSsJbWVtY3B5KG91dCwgY3R4LT5pdiwgOCk7Ci0rCS8q IEVuY3J5cHQgZXZlcnl0aGluZyBhZnRlciBJViBpbiBwbGFjZSAqLwotKwlkZXNfZWRlX2NiY19j aXBoZXIoY3R4LCBvdXQgKyA4LCBvdXQgKyA4LCBpbmwgKyA4KTsKLSsJQlVGX3JldmVyc2Uob3V0 LCBOVUxMLCBpbmwgKyAxNik7Ci0rCW1lbWNweShjdHgtPml2LCB3cmFwX2l2LCA4KTsKLSsJZGVz X2VkZV9jYmNfY2lwaGVyKGN0eCwgb3V0LCBvdXQsIGlubCArIDE2KTsKLSsJcmV0dXJuIGlubCAr IDE2OwotKwl9Ci0rCi0rc3RhdGljIGludCBkZXNfZWRlM193cmFwX2NpcGhlcihFVlBfQ0lQSEVS X0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCi0rCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIg KmluLCBzaXplX3QgaW5sKQotKwl7Ci0rCS8qIFNhbml0eSBjaGVjayBpbnB1dCBsZW5ndGg6IHdl IHR5cGljYWxseSBvbmx5IHdyYXAga2V5cwotKwkgKiBzbyBFVlBfTUFYQ0hVTksgaXMgbW9yZSB0 aGFuIHdpbGwgZXZlciBiZSBuZWVkZWQuIEFsc28KLSsJICogaW5wdXQgbGVuZ3RoIG11c3QgYmUg YSBtdWx0aXBsZSBvZiA4IGJpdHMuCi0rCSAqLwotKwlpZiAoaW5sID49IEVWUF9NQVhDSFVOSyB8 fCBpbmwgJSA4KQotKwkJcmV0dXJuIC0xOwotKwlpZiAoY3R4LT5lbmNyeXB0KQotKwkJcmV0dXJu IGRlc19lZGUzX3dyYXAoY3R4LCBvdXQsIGluLCBpbmwpOwotKwllbHNlCi0rCQlyZXR1cm4gZGVz X2VkZTNfdW53cmFwKGN0eCwgb3V0LCBpbiwgaW5sKTsKLSsJfQotKwotK3N0YXRpYyBjb25zdCBF VlBfQ0lQSEVSIGRlczNfd3JhcCA9IHsKLSsJTklEX2lkX3NtaW1lX2FsZ19DTVMzREVTd3JhcCwK LSsJOCwgMjQsIDAsCi0rCUVWUF9DSVBIX1dSQVBfTU9ERXxFVlBfQ0lQSF9DVVNUT01fSVZ8RVZQ X0NJUEhfRkxBR19DVVNUT01fQ0lQSEVSCi0rCQl8RVZQX0NJUEhfRkxBR19ERUZBVUxUX0FTTjF8 RVZQX0NJUEhfRkxBR19GSVBTLAotKwlkZXNfZWRlM19pbml0X2tleSwgZGVzX2VkZTNfd3JhcF9j aXBoZXIsCi0rCU5VTEwsCQotKwlzaXplb2YoREVTX0VERV9LRVkpLAotKwlOVUxMLE5VTEwsTlVM TCxOVUxMIH07Ci0rCi0rCi0rY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Rlc19lZGUzX3dyYXAodm9p ZCkKLSsJewotKwlyZXR1cm4gJmRlczNfd3JhcDsKLSsJfQotKwotKyMgZW5kaWYKLSAjZW5kaWYK LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAvZXZwX2VuYy5jLndyYXAgb3BlbnNz bC0xLjAuMWovY3J5cHRvL2V2cC9ldnBfZW5jLmMKLS0tLSBvcGVuc3NsLTEuMC4xai9jcnlwdG8v ZXZwL2V2cF9lbmMuYy53cmFwCTIwMTQtMTAtMTYgMTM6MzA6MTAuNTg0NjUyNzgyICswMjAwCi0r Kysgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2V2cC9ldnBfZW5jLmMJMjAxNC0xMC0xNiAxMzozMDox MC42ODA2NTQ5NDkgKzAyMDAKLUBAIC0yMzQsNyArMjM0LDggQEAgaW50IEVWUF9DaXBoZXJJbml0 X2V4KEVWUF9DSVBIRVJfQ1RYICpjdAotIAkJCWN0eC0+Y2lwaGVyX2RhdGEgPSBOVUxMOwotIAkJ CX0KLSAJCWN0eC0+a2V5X2xlbiA9IGNpcGhlci0+a2V5X2xlbjsKLS0JCWN0eC0+ZmxhZ3MgPSAw OwotKwkJLyogUHJlc2VydmUgd3JhcCBlbmFibGUgZmxhZywgemVybyBldmVyeXRoaW5nIGVsc2Ug Ki8KLSsJCWN0eC0+ZmxhZ3MgJj0gRVZQX0NJUEhFUl9DVFhfRkxBR19XUkFQX0FMTE9XOwotIAkJ aWYoY3R4LT5jaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfQ1RSTF9JTklUKQotIAkJCXsKLSAJCQlp ZighRVZQX0NJUEhFUl9DVFhfY3RybChjdHgsIEVWUF9DVFJMX0lOSVQsIDAsIE5VTEwpKQotQEAg LTI1Nyw2ICsyNTgsMTMgQEAgc2tpcF90b19pbml0OgotIAkgICAgfHwgY3R4LT5jaXBoZXItPmJs b2NrX3NpemUgPT0gOAotIAkgICAgfHwgY3R4LT5jaXBoZXItPmJsb2NrX3NpemUgPT0gMTYpOwot IAotKwlpZighKGN0eC0+ZmxhZ3MgJiBFVlBfQ0lQSEVSX0NUWF9GTEFHX1dSQVBfQUxMT1cpCi0r CQkmJiBFVlBfQ0lQSEVSX0NUWF9tb2RlKGN0eCkgPT0gRVZQX0NJUEhfV1JBUF9NT0RFKQotKwkJ ewotKwkJRVZQZXJyKEVWUF9GX0VWUF9DSVBIRVJJTklUX0VYLCBFVlBfUl9XUkFQX01PREVfTk9U X0FMTE9XRUQpOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCi0gCWlmKCEoRVZQX0NJUEhFUl9DVFhf ZmxhZ3MoY3R4KSAmIEVWUF9DSVBIX0NVU1RPTV9JVikpIHsKLSAJCXN3aXRjaChFVlBfQ0lQSEVS X0NUWF9tb2RlKGN0eCkpIHsKLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAv ZXZwX2Vyci5jLndyYXAgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2V2cC9ldnBfZXJyLmMKLS0tLSBv cGVuc3NsLTEuMC4xai9jcnlwdG8vZXZwL2V2cF9lcnIuYy53cmFwCTIwMTQtMTAtMTUgMTQ6NTM6 MzkuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2V2cC9ldnBfZXJy LmMJMjAxNC0xMC0xNiAxMzozMDoxMC42ODA2NTQ5NDkgKzAyMDAKLUBAIC0xLDYgKzEsNiBAQAot IC8qIGNyeXB0by9ldnAvZXZwX2Vyci5jICovCi0gLyogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0gKiBDb3B5cmln aHQgKGMpIDE5OTktMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZl ZC4KLSsgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAxMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxs IHJpZ2h0cyByZXNlcnZlZC4KLSAgKgotICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICAqIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotQEAg LTIyMCw2ICsyMjAsNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIEVWUF9zdHJfcmVhc29uc1td Ci0ge0VSUl9SRUFTT04oRVZQX1JfVU5TVVBQT1JURURfUFJGKSAgICAgICAsInVuc3VwcG9ydGVk IHByZiJ9LAotIHtFUlJfUkVBU09OKEVWUF9SX1VOU1VQUE9SVEVEX1BSSVZBVEVfS0VZX0FMR09S SVRITSksInVuc3VwcG9ydGVkIHByaXZhdGUga2V5IGFsZ29yaXRobSJ9LAotIHtFUlJfUkVBU09O KEVWUF9SX1VOU1VQUE9SVEVEX1NBTFRfVFlQRSkgLCJ1bnN1cHBvcnRlZCBzYWx0IHR5cGUifSwK LSt7RVJSX1JFQVNPTihFVlBfUl9XUkFQX01PREVfTk9UX0FMTE9XRUQpICwid3JhcCBtb2RlIG5v dCBhbGxvd2VkIn0sCi0ge0VSUl9SRUFTT04oRVZQX1JfV1JPTkdfRklOQUxfQkxPQ0tfTEVOR1RI KSwid3JvbmcgZmluYWwgYmxvY2sgbGVuZ3RoIn0sCi0ge0VSUl9SRUFTT04oRVZQX1JfV1JPTkdf UFVCTElDX0tFWV9UWVBFKSAsIndyb25nIHB1YmxpYyBrZXkgdHlwZSJ9LAotIHswLE5VTEx9Ci1k aWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZXZwL2V2cC5oLndyYXAgb3BlbnNzbC0xLjAu MWovY3J5cHRvL2V2cC9ldnAuaAotLS0tIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAvZXZwLmgu d3JhcAkyMDE0LTEwLTE2IDEzOjMwOjEwLjU4NTY1MjgwNSArMDIwMAotKysrIG9wZW5zc2wtMS4w LjFqL2NyeXB0by9ldnAvZXZwLmgJMjAxNC0xMC0xNiAxMzozMDoxMC42ODA2NTQ5NDkgKzAyMDAK LUBAIC0zMzYsNiArMzM2LDcgQEAgc3RydWN0IGV2cF9jaXBoZXJfc3QKLSAjZGVmaW5lCQlFVlBf Q0lQSF9HQ01fTU9ERQkJMHg2Ci0gI2RlZmluZQkJRVZQX0NJUEhfQ0NNX01PREUJCTB4NwotICNk ZWZpbmUJCUVWUF9DSVBIX1hUU19NT0RFCQkweDEwMDAxCi0rI2RlZmluZQkJRVZQX0NJUEhfV1JB UF9NT0RFCQkweDEwMDAyCi0gI2RlZmluZSAJRVZQX0NJUEhfTU9ERQkJCTB4RjAwMDcKLSAvKiBT ZXQgaWYgdmFyaWFibGUgbGVuZ3RoIGNpcGhlciAqLwotICNkZWZpbmUgCUVWUF9DSVBIX1ZBUklB QkxFX0xFTkdUSAkweDgKLUBAIC0zNjcsNiArMzY4LDEzIEBAIHN0cnVjdCBldnBfY2lwaGVyX3N0 Ci0gI2RlZmluZSAJRVZQX0NJUEhfRkxBR19DVVNUT01fQ0lQSEVSCTB4MTAwMDAwCi0gI2RlZmlu ZQkJRVZQX0NJUEhfRkxBR19BRUFEX0NJUEhFUgkweDIwMDAwMAotIAotKy8qIENpcGhlciBjb250 ZXh0IGZsYWcgdG8gaW5kaWNhdGUgd2UgY2FuIGhhbmRsZQotKyAqIHdyYXAgbW9kZTogaWYgYWxs b3dlZCBpbiBvbGRlciBhcHBsaWNhdGlvbnMgaXQgY291bGQKLSsgKiBvdmVyZmxvdyBidWZmZXJz LgotKyAqLwotKwotKyNkZWZpbmUgCUVWUF9DSVBIRVJfQ1RYX0ZMQUdfV1JBUF9BTExPVwkweDEK LSsKLSAvKiBjdHJsKCkgdmFsdWVzICovCi0gCi0gI2RlZmluZQkJRVZQX0NUUkxfSU5JVAkJCTB4 MAotQEAgLTcyOSw2ICs3MzcsNyBAQCBjb25zdCBFVlBfQ0lQSEVSICpFVlBfZGVzX2NiYyh2b2lk KTsKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfZGVzX2VkZV9jYmModm9pZCk7Ci0gY29uc3QgRVZQ X0NJUEhFUiAqRVZQX2Rlc19lZGUzX2NiYyh2b2lkKTsKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBf ZGVzeF9jYmModm9pZCk7Ci0rY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Rlc19lZGUzX3dyYXAodm9p ZCk7Ci0gLyogVGhpcyBzaG91bGQgbm93IGJlIHN1cHBvcnRlZCB0aHJvdWdoIHRoZSBkZXZfY3J5 cHRvIEVOR0lORS4gQnV0IGFsc28sIHdoeSBhcmUKLSAgKiByYzQgYW5kIG1kNSBkZWNsYXJhdGlv bnMgbWFkZSBoZXJlIGluc2lkZSBhICJOT19ERVMiIHByZWNvbXBpbGVyIGJyYW5jaD8gKi8KLSAj aWYgMAotQEAgLTc4OCw2ICs3OTcsOCBAQCBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzEyOF9j dHIodm9pZCk7Ci0gY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xMjhfY2NtKHZvaWQpOwotIGNv bnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTI4X2djbSh2b2lkKTsKLSBjb25zdCBFVlBfQ0lQSEVS ICpFVlBfYWVzXzEyOF94dHModm9pZCk7Ci0rY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xMjhf d3JhcCh2b2lkKTsKLStjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzEyOF93cmFwX3BhZCh2b2lk KTsKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzE5Ml9lY2Iodm9pZCk7Ci0gY29uc3QgRVZQ X0NJUEhFUiAqRVZQX2Flc18xOTJfY2JjKHZvaWQpOwotIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9h ZXNfMTkyX2NmYjEodm9pZCk7Ci1AQCAtNzk4LDYgKzgwOSw4IEBAIGNvbnN0IEVWUF9DSVBIRVIg KkVWUF9hZXNfMTkyX29mYih2b2lkKTsKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzE5Ml9j dHIodm9pZCk7Ci0gY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xOTJfY2NtKHZvaWQpOwotIGNv bnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTkyX2djbSh2b2lkKTsKLStjb25zdCBFVlBfQ0lQSEVS ICpFVlBfYWVzXzE5Ml93cmFwKHZvaWQpOwotK2NvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTky X3dyYXBfcGFkKHZvaWQpOwotIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMjU2X2VjYih2b2lk KTsKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzI1Nl9jYmModm9pZCk7Ci0gY29uc3QgRVZQ X0NJUEhFUiAqRVZQX2Flc18yNTZfY2ZiMSh2b2lkKTsKLUBAIC04MDksNiArODIyLDggQEAgY29u c3QgRVZQX0NJUEhFUiAqRVZQX2Flc18yNTZfY3RyKHZvaWQpOwotIGNvbnN0IEVWUF9DSVBIRVIg KkVWUF9hZXNfMjU2X2NjbSh2b2lkKTsKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzI1Nl9n Y20odm9pZCk7Ci0gY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18yNTZfeHRzKHZvaWQpOwotK2Nv bnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMjU2X3dyYXAodm9pZCk7Ci0rY29uc3QgRVZQX0NJUEhF UiAqRVZQX2Flc18yNTZfd3JhcF9wYWQodm9pZCk7Ci0gI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9f U0hBKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQTEpCi0gY29uc3QgRVZQX0NJUEhFUiAqRVZQ X2Flc18xMjhfY2JjX2htYWNfc2hhMSh2b2lkKTsKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVz XzI1Nl9jYmNfaG1hY19zaGExKHZvaWQpOwotQEAgLTEzOTcsNiArMTQxMiw3IEBAIHZvaWQgRVJS X2xvYWRfRVZQX3N0cmluZ3Modm9pZCk7Ci0gI2RlZmluZSBFVlBfUl9VTlNVUFBPUlRFRF9QUkYJ CQkJIDEyNQotICNkZWZpbmUgRVZQX1JfVU5TVVBQT1JURURfUFJJVkFURV9LRVlfQUxHT1JJVEhN CQkgMTE4Ci0gI2RlZmluZSBFVlBfUl9VTlNVUFBPUlRFRF9TQUxUX1RZUEUJCQkgMTI2Ci0rI2Rl ZmluZSBFVlBfUl9XUkFQX01PREVfTk9UX0FMTE9XRUQJCQkgMTcwCi0gI2RlZmluZSBFVlBfUl9X Uk9OR19GSU5BTF9CTE9DS19MRU5HVEgJCQkgMTA5Ci0gI2RlZmluZSBFVlBfUl9XUk9OR19QVUJM SUNfS0VZX1RZUEUJCQkgMTEwCi0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZXZw L2V2cF9saWIuYy53cmFwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAvZXZwX2xpYi5jCi0tLS0g b3BlbnNzbC0xLjAuMWovY3J5cHRvL2V2cC9ldnBfbGliLmMud3JhcAkyMDE0LTEwLTE2IDEzOjMw OjEwLjU4NTY1MjgwNSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAvZXZwX2xp Yi5jCTIwMTQtMTAtMTYgMTM6MzA6MTAuNjgwNjU0OTQ5ICswMjAwCi1AQCAtNjgsNyArNjgsMTUg QEAgaW50IEVWUF9DSVBIRVJfcGFyYW1fdG9fYXNuMShFVlBfQ0lQSEVSXwotIAlpZiAoYy0+Y2lw aGVyLT5zZXRfYXNuMV9wYXJhbWV0ZXJzICE9IE5VTEwpCi0gCQlyZXQ9Yy0+Y2lwaGVyLT5zZXRf YXNuMV9wYXJhbWV0ZXJzKGMsdHlwZSk7Ci0gCWVsc2UgaWYgKGMtPmNpcGhlci0+ZmxhZ3MgJiBF VlBfQ0lQSF9GTEFHX0RFRkFVTFRfQVNOMSkKLS0JCXJldD1FVlBfQ0lQSEVSX3NldF9hc24xX2l2 KGMsIHR5cGUpOwotKwkJewotKwkJaWYgKEVWUF9DSVBIRVJfQ1RYX21vZGUoYykgPT0gRVZQX0NJ UEhfV1JBUF9NT0RFKQotKwkJCXsKLSsJCQlBU04xX1RZUEVfc2V0KHR5cGUsIFZfQVNOMV9OVUxM LCBOVUxMKTsKLSsJCQlyZXQgPSAxOwotKwkJCX0KLSsJCWVsc2UKLSsJCQlyZXQ9RVZQX0NJUEhF Ul9zZXRfYXNuMV9pdihjLCB0eXBlKTsKLSsJCX0KLSAJZWxzZQotIAkJcmV0PS0xOwotIAlyZXR1 cm4ocmV0KTsKLUBAIC04MSw3ICs4OSwxMSBAQCBpbnQgRVZQX0NJUEhFUl9hc24xX3RvX3BhcmFt KEVWUF9DSVBIRVJfCi0gCWlmIChjLT5jaXBoZXItPmdldF9hc24xX3BhcmFtZXRlcnMgIT0gTlVM TCkKLSAJCXJldD1jLT5jaXBoZXItPmdldF9hc24xX3BhcmFtZXRlcnMoYyx0eXBlKTsKLSAJZWxz ZSBpZiAoYy0+Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xKQotKwkJ ewotKwkJaWYgKEVWUF9DSVBIRVJfQ1RYX21vZGUoYykgPT0gRVZQX0NJUEhfV1JBUF9NT0RFKQot KwkJCXJldHVybiAxOwotIAkJcmV0PUVWUF9DSVBIRVJfZ2V0X2FzbjFfaXYoYywgdHlwZSk7Ci0r CQl9Ci0gCWVsc2UKLSAJCXJldD0tMTsKLSAJcmV0dXJuKHJldCk7Ci1kaWZmIC11cCBvcGVuc3Ns LTEuMC4xai9jcnlwdG8vZXZwL2V2cF90ZXN0LmMud3JhcCBvcGVuc3NsLTEuMC4xai9jcnlwdG8v ZXZwL2V2cF90ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZXZwL2V2cF90ZXN0LmMu d3JhcAkyMDE0LTEwLTE1IDE0OjUxOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4w LjFqL2NyeXB0by9ldnAvZXZwX3Rlc3QuYwkyMDE0LTEwLTE2IDEzOjMwOjEwLjY4MDY1NDk0OSAr MDIwMAotQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0MShjb25zdCBFVlBfQ0lQ SEVSICpjLGNvCi0gICAgIHsKLSAgICAgRVZQX0NJUEhFUl9DVFggY3R4OwotICAgICB1bnNpZ25l ZCBjaGFyIG91dFs0MDk2XTsKLS0gICAgaW50IG91dGwsb3V0bDI7Ci0rICAgIGludCBvdXRsLG91 dGwyLG1vZGU7Ci0gCi0gICAgIHByaW50ZigiVGVzdGluZyBjaXBoZXIgJXMlc1xuIixFVlBfQ0lQ SEVSX25hbWUoYyksCi0gCSAgIChlbmNkZWMgPT0gMSA/ICIoZW5jcnlwdCkiIDogKGVuY2RlYyA9 PSAwID8gIihkZWNyeXB0KSIgOiAiKGVuY3J5cHQvZGVjcnlwdCkiKSkpOwotQEAgLTE1MSw2ICsx NTEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0MShjb25zdCBFVlBfQ0lQSEVSICpjLGNvCi0gICAgIGhl eGR1bXAoc3Rkb3V0LCJQbGFpbnRleHQiLHBsYWludGV4dCxwbik7Ci0gICAgIGhleGR1bXAoc3Rk b3V0LCJDaXBoZXJ0ZXh0IixjaXBoZXJ0ZXh0LGNuKTsKLSAgICAgCi0rICAgIG1vZGUgPSBFVlBf Q0lQSEVSX21vZGUoYyk7IAotICAgICBpZihrbiAhPSBjLT5rZXlfbGVuKQotIAl7Ci0gCWZwcmlu dGYoc3RkZXJyLCJLZXkgbGVuZ3RoIGRvZXNuJ3QgbWF0Y2gsIGdvdCAlZCBleHBlY3RlZCAlbHVc biIsa24sCi1AQCAtMTU4LDkgKzE1OSwxOSBAQCBzdGF0aWMgdm9pZCB0ZXN0MShjb25zdCBFVlBf Q0lQSEVSICpjLGNvCi0gCXRlc3QxX2V4aXQoNSk7Ci0gCX0KLSAgICAgRVZQX0NJUEhFUl9DVFhf aW5pdCgmY3R4KTsKLSsgICAgRVZQX0NJUEhFUl9DVFhfc2V0X2ZsYWdzKCZjdHgsRVZQX0NJUEhF Ul9DVFhfRkxBR19XUkFQX0FMTE9XKTsKLSAgICAgaWYgKGVuY2RlYyAhPSAwKQotICAgICAgICAg ewotLQlpZighRVZQX0VuY3J5cHRJbml0X2V4KCZjdHgsYyxOVUxMLGtleSxpdikpCi0rCWlmICht b2RlID09IEVWUF9DSVBIX1dSQVBfTU9ERSkKLSsJICAgIHsKLSsJICAgIGlmKCFFVlBfRW5jcnlw dEluaXRfZXgoJmN0eCxjLE5VTEwsa2V5LGluID8gaXYgOiBOVUxMKSkKLSsJICAgICAgICB7Ci0r CQlmcHJpbnRmKHN0ZGVyciwiRW5jcnlwdEluaXQgZmFpbGVkXG4iKTsKLSsJCUVSUl9wcmludF9l cnJvcnNfZnAoc3RkZXJyKTsKLSsJCXRlc3QxX2V4aXQoMTApOwotKwkJfQotKwkgICAgfQotKwll bHNlIGlmKCFFVlBfRW5jcnlwdEluaXRfZXgoJmN0eCxjLE5VTEwsa2V5LGl2KSkKLSAJICAgIHsK LSAJICAgIGZwcmludGYoc3RkZXJyLCJFbmNyeXB0SW5pdCBmYWlsZWRcbiIpOwotIAkgICAgRVJS X3ByaW50X2Vycm9yc19mcChzdGRlcnIpOwotQEAgLTE5OSw3ICsyMTAsMTYgQEAgc3RhdGljIHZv aWQgdGVzdDEoY29uc3QgRVZQX0NJUEhFUiAqYyxjbwotIAotICAgICBpZiAoZW5jZGVjIDw9IDAp Ci0gICAgICAgICB7Ci0tCWlmKCFFVlBfRGVjcnlwdEluaXRfZXgoJmN0eCxjLE5VTEwsa2V5LGl2 KSkKLSsJaWYgKG1vZGUgPT0gRVZQX0NJUEhfV1JBUF9NT0RFKQotKwkgICAgewotKwkgICAgaWYo IUVWUF9EZWNyeXB0SW5pdF9leCgmY3R4LGMsTlVMTCxrZXksaW4gPyBpdiA6IE5VTEwpKQotKwkg ICAgICAgIHsKLSsJCWZwcmludGYoc3RkZXJyLCJFbmNyeXB0SW5pdCBmYWlsZWRcbiIpOwotKwkJ RVJSX3ByaW50X2Vycm9yc19mcChzdGRlcnIpOwotKwkJdGVzdDFfZXhpdCgxMCk7Ci0rCQl9Ci0r CSAgICB9Ci0rCWVsc2UgaWYoIUVWUF9EZWNyeXB0SW5pdF9leCgmY3R4LGMsTlVMTCxrZXksaXYp KQotIAkgICAgewotIAkgICAgZnByaW50ZihzdGRlcnIsIkRlY3J5cHRJbml0IGZhaWxlZFxuIik7 Ci0gCSAgICBFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZGVycik7Ci1AQCAtMzM5LDcgKzM1OSw3IEBA IGludCBtYWluKGludCBhcmdjLGNoYXIgKiphcmd2KQotIAlwZXJyb3Ioc3pUZXN0RmlsZSk7Ci0g CUVYSVQoMik7Ci0gCX0KLS0KLSsgICAgRVJSX2xvYWRfY3J5cHRvX3N0cmluZ3MoKTsKLSAgICAg LyogTG9hZCB1cCB0aGUgc29mdHdhcmUgRVZQX0NJUEhFUiBhbmQgRVZQX01EIGRlZmluaXRpb25z ICovCi0gICAgIE9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzKCk7Ci0gICAgIE9wZW5TU0xfYWRkX2Fs bF9kaWdlc3RzKCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZXZwL2V2cHRlc3Rz LnR4dC53cmFwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAvZXZwdGVzdHMudHh0Ci0tLS0gb3Bl bnNzbC0xLjAuMWovY3J5cHRvL2V2cC9ldnB0ZXN0cy50eHQud3JhcAkyMDE0LTEwLTE1IDE0OjUz OjM5LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAvZXZwdGVz dHMudHh0CTIwMTQtMTAtMTYgMTM6MzA6MTAuNjgxNjU0OTcyICswMjAwCi1AQCAtMzMyLDMgKzMz MiwxNSBAQCBTRUVELUVDQjowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0gU0VFRC1F Q0I6MDAwMTAyMDMwNDA1MDYwNzA4MDkwQTBCMEMwRDBFMEY6OjAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwOkMxMUYyMkYyMDE0MDUwNTA4NDQ4MzU5N0U0MzcwRjQzOjEKLSBTRUVELUVD Qjo0NzA2NDgwODUxRTYxQkU4NUQ3NEJGQjNGRDk1NjE4NTo6ODNBMkY4QTI4ODY0MUZCOUE0RTlB NUNDMkYxMzFDN0Q6RUU1NEQxM0VCQ0FFNzA2RDIyNkJDMzE0MkNENDBENEE6MQotIFNFRUQtRUNC OjI4REJDM0JDNDlGRkQ4N0RDRkE1MDlCMTFENDIyQkU3OjpCNDFFNkJFMkVCQTg0QTE0OEUyRUVE ODQ1OTNDNUVDNzo5QjlCN0JGQ0QxODEzQ0I5NUQwQjM2MThGNDBGNTEyMjoxCi0rCi0rIyBBRVMg d3JhcCB0ZXN0cyBmcm9tIFJGQzMzOTQKLStpZC1hZXMxMjgtd3JhcDowMDAxMDIwMzA0MDUwNjA3 MDgwOTBBMEIwQzBEMEUwRjo6MDAxMTIyMzM0NDU1NjY3Nzg4OTlBQUJCQ0NEREVFRkY6MUZBNjhC MEE4MTEyQjQ0N0FFRjM0QkQ4RkI1QTdCODI5RDNFODYyMzcxRDJDRkU1Ci0raWQtYWVzMTkyLXdy YXA6MDAwMTAyMDMwNDA1MDYwNzA4MDkwQTBCMEMwRDBFMEYxMDExMTIxMzE0MTUxNjE3OjowMDEx MjIzMzQ0NTU2Njc3ODg5OUFBQkJDQ0RERUVGRjo5Njc3OEIyNUFFNkNBNDM1RjkyQjVCOTdDMDUw QUVEMjQ2OEFCOEExN0FEODRFNUQKLStpZC1hZXMyNTYtd3JhcDowMDAxMDIwMzA0MDUwNjA3MDgw OTBBMEIwQzBEMEUwRjEwMTExMjEzMTQxNTE2MTcxODE5MUExQjFDMUQxRTFGOjowMDExMjIzMzQ0 NTU2Njc3ODg5OUFBQkJDQ0RERUVGRjo2NEU4QzNGOUNFMEY1QkEyNjNFOTc3NzkwNTgxOEEyQTkz QzgxOTFFN0Q2RThBRTcKLStpZC1hZXMxOTItd3JhcDowMDAxMDIwMzA0MDUwNjA3MDgwOTBBMEIw QzBEMEUwRjEwMTExMjEzMTQxNTE2MTc6OjAwMTEyMjMzNDQ1NTY2Nzc4ODk5QUFCQkNDRERFRUZG MDAwMTAyMDMwNDA1MDYwNzowMzFEMzMyNjRFMTVEMzMyNjhGMjRFQzI2MDc0M0VEQ0UxQzZDN0RE RUU3MjVBOTM2QkE4MTQ5MTVDNjc2MkQyCi0raWQtYWVzMjU2LXdyYXA6MDAwMTAyMDMwNDA1MDYw NzA4MDkwQTBCMEMwRDBFMEYxMDExMTIxMzE0MTUxNjE3MTgxOTFBMUIxQzFEMUUxRjo6MDAxMTIy MzM0NDU1NjY3Nzg4OTlBQUJCQ0NEREVFRkYwMDAxMDIwMzA0MDUwNjA3OkE4RjlCQzE2MTJDNjhC M0ZGNkU2RjRGQkUzMEU3MUU0NzY5QzhCODBBMzJDQjg5NThDRDVEMTdENkIyNTREQTEKLStpZC1h ZXMyNTYtd3JhcDowMDAxMDIwMzA0MDUwNjA3MDgwOTBBMEIwQzBEMEUwRjEwMTExMjEzMTQxNTE2 MTcxODE5MUExQjFDMUQxRTFGOjowMDExMjIzMzQ0NTU2Njc3ODg5OUFBQkJDQ0RERUVGRjAwMDEw MjAzMDQwNTA2MDcwODA5MEEwQjBDMEQwRTBGOjI4QzlGNDA0QzRCODEwRjRDQkNDQjM1Q0ZCODdG ODI2M0Y1Nzg2RTJEODBFRDMyNkNCQzdGMEU3MUE5OUY0M0JGQjk4OEI5QjdBMDJERDIxCi0rIyBB RVMgd3JhcCB0ZXN0cyBmcm9tIFJGQzU2NDkKLStpZC1hZXMxOTItd3JhcC1wYWQ6NTg0MGRmNmUy OWIwMmFmMWFiNDkzYjcwNWJmMTZlYTFhZTgzMzhmNGRjYzE3NmE4OjpjMzdiN2U2NDkyNTg0MzQw YmVkMTIyMDc4MDg5NDExNTUwNjhmNzM4OjEzOGJkZWFhOWI4ZmE3ZmM2MWY5Nzc0MmU3MjI0OGVl NWFlNmFlNTM2MGQxYWU2YTVmNTRmMzczZmE1NDNiNmEKLStpZC1hZXMxOTItd3JhcC1wYWQ6NTg0 MGRmNmUyOWIwMmFmMWFiNDkzYjcwNWJmMTZlYTFhZTgzMzhmNGRjYzE3NmE4Ojo0NjZmNzI1MDYx NzM2OTphZmJlYjBmMDdkZmJmNTQxOTIwMGYyY2NiNTBiYjI0ZgotKwotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMWovY3J5cHRvL21vZGVzL01ha2VmaWxlLndyYXAgb3BlbnNzbC0xLjAuMWovY3J5cHRv L21vZGVzL01ha2VmaWxlCi0tLS0gb3BlbnNzbC0xLjAuMWovY3J5cHRvL21vZGVzL01ha2VmaWxl LndyYXAJMjAxNC0xMC0xNiAxMzozMDoxMC41NjA2NTIyNDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEu MC4xai9jcnlwdG8vbW9kZXMvTWFrZWZpbGUJMjAxNC0xMC0xNiAxMzozMDoxMC42ODE2NTQ5NzIg KzAyMDAKLUBAIC0yMiw5ICsyMiw5IEBAIEFQUFM9Ci0gCi0gTElCPSQoVE9QKS9saWJjcnlwdG8u YQotIExJQlNSQz0gY2JjMTI4LmMgY3RyMTI4LmMgY3RzMTI4LmMgY2ZiMTI4LmMgb2ZiMTI4LmMg Z2NtMTI4LmMgXAotLQljY20xMjguYyB4dHMxMjguYwotKwljY20xMjguYyB4dHMxMjguYyB3cmFw MTI4LmMKLSBMSUJPQko9IGNiYzEyOC5vIGN0cjEyOC5vIGN0czEyOC5vIGNmYjEyOC5vIG9mYjEy OC5vIGdjbTEyOC5vIFwKLS0JY2NtMTI4Lm8geHRzMTI4Lm8gJChNT0RFU19BU01fT0JKKQotKwlj Y20xMjgubyB4dHMxMjgubyB3cmFwMTI4Lm8gJChNT0RFU19BU01fT0JKKQotIAotIFNSQz0gJChM SUJTUkMpCi0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vbW9kZXMvbW9kZXMuaC53 cmFwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9tb2Rlcy9tb2Rlcy5oCi0tLS0gb3BlbnNzbC0xLjAu MWovY3J5cHRvL21vZGVzL21vZGVzLmgud3JhcAkyMDE0LTEwLTE2IDEzOjMwOjEwLjY4MTY1NDk3 MiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9tb2Rlcy9tb2Rlcy5oCTIwMTQtMTAt MTYgMTM6MzE6MDEuMjMyNzk2MTg2ICswMjAwCi1AQCAtMTM2LDYgKzEzNiwyMCBAQCB0eXBlZGVm IHN0cnVjdCB4dHMxMjhfY29udGV4dCBYVFMxMjhfQ09OCi0gCi0gaW50IENSWVBUT194dHMxMjhf ZW5jcnlwdChjb25zdCBYVFMxMjhfQ09OVEVYVCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyIGl2 WzE2XSwKLSAJY29uc3QgdW5zaWduZWQgY2hhciAqaW5wLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNp emVfdCBsZW4sIGludCBlbmMpOwotKwotK3NpemVfdCBDUllQVE9fMTI4X3dyYXAodm9pZCAqa2V5 LCBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwKLSsJCXVuc2lnbmVkIGNoYXIgKm91dCwKLSsJCWNv bnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sZW4sIGJsb2NrMTI4X2YgYmxvY2spOwot KwotK3NpemVfdCBDUllQVE9fMTI4X3Vud3JhcCh2b2lkICprZXksIGNvbnN0IHVuc2lnbmVkIGNo YXIgKml2LAotKwkJdW5zaWduZWQgY2hhciAqb3V0LAotKwkJY29uc3QgdW5zaWduZWQgY2hhciAq aW4sIHNpemVfdCBpbmxlbiwgYmxvY2sxMjhfZiBibG9jayk7Ci0rc2l6ZV90IENSWVBUT18xMjhf d3JhcF9wYWQodm9pZCAqa2V5LCBjb25zdCB1bnNpZ25lZCBjaGFyICppY3YsCi0rCQl1bnNpZ25l ZCBjaGFyICpvdXQsCi0rCQljb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubGVuLCBi bG9jazEyOF9mIGJsb2NrKTsKLStzaXplX3QgQ1JZUFRPXzEyOF91bndyYXBfcGFkKHZvaWQgKmtl eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaWN2LAotKwkJdW5zaWduZWQgY2hhciAqb3V0LAotKwkJ Y29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbiwgYmxvY2sxMjhfZiBibG9jayk7 Ci0gI2lmZGVmICBfX2NwbHVzcGx1cwotIH0KLSAjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4w LjFqL2NyeXB0by9tb2Rlcy93cmFwMTI4LmMud3JhcCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vbW9k ZXMvd3JhcDEyOC5jCi0tLS0gb3BlbnNzbC0xLjAuMWovY3J5cHRvL21vZGVzL3dyYXAxMjguYy53 cmFwCTIwMTQtMTAtMTYgMTM6MzA6MTAuNjgxNjU0OTcyICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MWovY3J5cHRvL21vZGVzL3dyYXAxMjguYwkyMDE0LTEwLTE2IDEzOjMwOjEwLjY4MTY1NDk3MiAr MDIwMAotQEAgLTAsMCArMSwzNzIgQEAKLSsvKiBjcnlwdG8vbW9kZXMvd3JhcDEyOC5jICovCi0r LyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9y IHRoZSBPcGVuU1NMCi0rICogcHJvamVjdC4KLSsgKiBNb2RlIHdpdGggcGFkZGluZyBjb250cmli dXRlZCBieSBQZXRyIFNwYWNlayAocHNwYWNla0ByZWRoYXQuY29tKS4KLSsgKi8KLSsvKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAxMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxs IHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAq IGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv cHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0r ICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg b3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2lu ZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogNC4g VGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5v dCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Np b24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgbGljZW5z aW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3Bl blNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAg IHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJp YnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcK LSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNv ZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBp biB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsg KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJ UycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBB UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IK LSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICog U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuCi0rICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLSsgKi8KLSsKLSsvKiogIEJld2FyZSEKLSsgKgotKyAqICBG b2xsb3dpbmcgd3JhcHBpbmcgbW9kZXMgd2VyZSBkZXNpZ25lZCBmb3IgQUVTIGJ1dCB0aGlzIGlt cGxlbWVudGF0aW9uCi0rICogIGFsbG93cyB5b3UgdG8gdXNlIHRoZW0gZm9yIGFueSAxMjggYml0 IGJsb2NrIGNpcGhlci4KLSsgKi8KLSsKLSsjaW5jbHVkZSAiY3J5cHRsaWIuaCIKLSsjaW5jbHVk ZSA8b3BlbnNzbC9tb2Rlcy5oPgotKwotKy8qKiBSRkMgMzM5NCBzZWN0aW9uIDIuMi4zLjEgRGVm YXVsdCBJbml0aWFsIFZhbHVlICovCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGVmYXVs dF9pdltdID0gewotKyAgMHhBNiwgMHhBNiwgMHhBNiwgMHhBNiwgMHhBNiwgMHhBNiwgMHhBNiwg MHhBNiwKLSt9OwotKwotKy8qKiBSRkMgNTY0OSBzZWN0aW9uIDMgQWx0ZXJuYXRpdmUgSW5pdGlh bCBWYWx1ZSAzMi1iaXQgY29uc3RhbnQgKi8KLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBk ZWZhdWx0X2FpdltdID0gewotKyAgMHhBNiwgMHg1OSwgMHg1OSwgMHhBNgotK307Ci0rCi0rLyoq IElucHV0IHNpemUgbGltaXQ6IGxvd2VyIHRoYW4gbWF4aW11bSBvZiBzdGFuZGFyZHMgYnV0IGZh ciBsYXJnZXIgdGhhbgotKyAqICBhbnl0aGluZyB0aGF0IHdpbGwgYmUgdXNlZCBpbiBwcmFjdGlj ZS4KLSsgKi8KLSsjZGVmaW5lIENSWVBUTzEyOF9XUkFQX01BWCAoMVVMIDw8IDMxKQotKwotKy8q KiBXcmFwcGluZyBhY2NvcmRpbmcgdG8gUkZDIDMzOTQgc2VjdGlvbiAyLjIuMS4KLSsgKgotKyAq ICBAcGFyYW1baW5dICBrZXkgICAgS2V5IHZhbHVlLiAKLSsgKiAgQHBhcmFtW2luXSAgaXYgICAg IElWIHZhbHVlLiBMZW5ndGggPSA4IGJ5dGVzLiBOVUxMID0gdXNlIGRlZmF1bHRfaXYuCi0rICog IEBwYXJhbVtpbl0gIGluICAgICBQbGFpbiB0ZXh0IGFzIG4gNjQtYml0IGJsb2NrcywgbiA+PSAy LgotKyAqICBAcGFyYW1baW5dICBpbmxlbiAgTGVuZ3RoIG9mIGluLgotKyAqICBAcGFyYW1bb3V0 XSBvdXQgICAgQ2lwaGVyIHRleHQuIE1pbmltYWwgYnVmZmVyIGxlbmd0aCA9IChpbmxlbiArIDgp IGJ5dGVzLgotKyAqICAgICAgICAgICAgICAgICAgICAgSW5wdXQgYW5kIG91dHB1dCBidWZmZXJz IGNhbiBvdmVybGFwIGlmIGJsb2NrIGZ1bmN0aW9uCi0rICogICAgICAgICAgICAgICAgICAgICBz dXBwb3J0cyB0aGF0LgotKyAqICBAcGFyYW1baW5dICBibG9jayAgQmxvY2sgcHJvY2Vzc2luZyBm dW5jdGlvbi4KLSsgKiAgQHJldHVybiAgICAgICAgICAgIDAgaWYgaW5sZW4gZG9lcyBub3QgY29u c2lzdCBvZiBuIDY0LWJpdCBibG9ja3MsIG4gPj0gMi4KLSsgKiAgICAgICAgICAgICAgICAgICAg IG9yIGlmIGlubGVuID4gQ1JZUFRPMTI4X1dSQVBfTUFYLgotKyAqICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0IGxlbmd0aCBpZiB3cmFwcGluZyBzdWNjZWVkZWQuCi0rICovCi0rc2l6ZV90IENS WVBUT18xMjhfd3JhcCh2b2lkICprZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LAotKwkJdW5z aWduZWQgY2hhciAqb3V0LAotKwkJY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxl biwgYmxvY2sxMjhfZiBibG9jaykKLSsJewotKwl1bnNpZ25lZCBjaGFyICpBLCBCWzE2XSwgKlI7 Ci0rCXNpemVfdCBpLCBqLCB0OwotKwlpZiAoKGlubGVuICYgMHg3KSB8fCAoaW5sZW4gPCAxNikg fHwgKGlubGVuID4gQ1JZUFRPMTI4X1dSQVBfTUFYKSkKLSsJCXJldHVybiAwOwotKwlBID0gQjsK LSsJdCA9IDE7Ci0rCW1lbW1vdmUob3V0ICsgOCwgaW4sIGlubGVuKTsKLSsJaWYgKCFpdikKLSsJ CWl2ID0gZGVmYXVsdF9pdjsKLSsKLSsJbWVtY3B5KEEsIGl2LCA4KTsKLSsKLSsJZm9yIChqID0g MDsgaiA8IDY7IGorKykKLSsJCXsKLSsJCVIgPSBvdXQgKyA4OwotKwkJZm9yIChpID0gMDsgaSA8 IGlubGVuOyBpICs9IDgsIHQrKywgUiArPSA4KQotKwkJCXsKLSsJCQltZW1jcHkoQiArIDgsIFIs IDgpOwotKwkJCWJsb2NrKEIsIEIsIGtleSk7Ci0rCQkJQVs3XSBePSAodW5zaWduZWQgY2hhciko dCAmIDB4ZmYpOwotKwkJCWlmICh0ID4gMHhmZikJCi0rCQkJCXsKLSsJCQkJQVs2XSBePSAodW5z aWduZWQgY2hhcikoKHQgPj4gOCkgJiAweGZmKTsKLSsJCQkJQVs1XSBePSAodW5zaWduZWQgY2hh cikoKHQgPj4gMTYpICYgMHhmZik7Ci0rCQkJCUFbNF0gXj0gKHVuc2lnbmVkIGNoYXIpKCh0ID4+ IDI0KSAmIDB4ZmYpOwotKwkJCQl9Ci0rCQkJbWVtY3B5KFIsIEIgKyA4LCA4KTsKLSsJCQl9Ci0r CQl9Ci0rCW1lbWNweShvdXQsIEEsIDgpOwotKwlyZXR1cm4gaW5sZW4gKyA4OwotKwl9Ci0rCi0r Ci0rLyoqIFVud3JhcHBpbmcgYWNjb3JkaW5nIHRvIFJGQyAzMzk0IHNlY3Rpb24gMi4yLjIgc3Rl cHMgMS0yLgotKyAqICBJViBjaGVjayAoc3RlcCAzKSBpcyByZXNwb25zaWJpbGl0eSBvZiB0aGUg Y2FsbGVyLgotKyAqCi0rICogIEBwYXJhbVtpbl0gIGtleSAgICBLZXkgdmFsdWUuIAotKyAqICBA cGFyYW1bb3V0XSBpdiAgICAgVW5jaGVja2VkIElWIHZhbHVlLiBNaW5pbWFsIGJ1ZmZlciBsZW5n dGggPSA4IGJ5dGVzLgotKyAqICBAcGFyYW1bb3V0XSBvdXQgICAgUGxhaW4gdGV4dCB3aXRob3V0 IElWLgotKyAqICAgICAgICAgICAgICAgICAgICAgTWluaW1hbCBidWZmZXIgbGVuZ3RoID0gKGlu bGVuIC0gOCkgYnl0ZXMuCi0rICogICAgICAgICAgICAgICAgICAgICBJbnB1dCBhbmQgb3V0cHV0 IGJ1ZmZlcnMgY2FuIG92ZXJsYXAgaWYgYmxvY2sgZnVuY3Rpb24KLSsgKiAgICAgICAgICAgICAg ICAgICAgIHN1cHBvcnRzIHRoYXQuCi0rICogIEBwYXJhbVtpbl0gIGluICAgICBDaXBoZXJ0ZXh0 IHRleHQgYXMgbiA2NC1iaXQgYmxvY2tzCi0rICogIEBwYXJhbVtpbl0gIGlubGVuICBMZW5ndGgg b2YgaW4uCi0rICogIEBwYXJhbVtpbl0gIGJsb2NrICBCbG9jayBwcm9jZXNzaW5nIGZ1bmN0aW9u LgotKyAqICBAcmV0dXJuICAgICAgICAgICAgMCBpZiBpbmxlbiBpcyBvdXQgb2YgcmFuZ2UgWzI0 LCBDUllQVE8xMjhfV1JBUF9NQVhdCi0rICogICAgICAgICAgICAgICAgICAgICBvciBpZiBpbmxl biBpcyBub3QgbXVsdGlwbHkgb2YgOC4KLSsgKiAgICAgICAgICAgICAgICAgICAgIE91dHB1dCBs ZW5ndGggb3RoZXJ3aXNlLgotKyAqLwotK3N0YXRpYyBzaXplX3QgY3J5cHRvXzEyOF91bndyYXBf cmF3KHZvaWQgKmtleSwgdW5zaWduZWQgY2hhciAqaXYsCi0rCQl1bnNpZ25lZCBjaGFyICpvdXQs IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLAotKwkJc2l6ZV90IGlubGVuLCBibG9jazEyOF9mIGJs b2NrKQotKwl7Ci0rCXVuc2lnbmVkIGNoYXIgKkEsIEJbMTZdLCAqUjsKLSsJc2l6ZV90IGksIGos IHQ7Ci0rCWlubGVuIC09IDg7Ci0rCWlmICgoaW5sZW4gJiAweDcpIHx8IChpbmxlbiA8IDE2KSB8 fCAoaW5sZW4gPiBDUllQVE8xMjhfV1JBUF9NQVgpKQotKwkJcmV0dXJuIDA7Ci0rCUEgPSBCOwot Kwl0ID0gIDYgKiAoaW5sZW4gPj4gMyk7Ci0rCW1lbWNweShBLCBpbiwgOCk7Ci0rCW1lbW1vdmUo b3V0LCBpbiArIDgsIGlubGVuKTsKLSsJZm9yIChqID0gMDsgaiA8IDY7IGorKykKLSsJCXsKLSsJ CVIgPSBvdXQgKyBpbmxlbiAtIDg7Ci0rCQlmb3IgKGkgPSAwOyBpIDwgaW5sZW47IGkgKz0gOCwg dC0tLCBSIC09IDgpCi0rCQkJewotKwkJCUFbN10gXj0gKHVuc2lnbmVkIGNoYXIpKHQgJiAweGZm KTsKLSsJCQlpZiAodCA+IDB4ZmYpCQotKwkJCQl7Ci0rCQkJCUFbNl0gXj0gKHVuc2lnbmVkIGNo YXIpKCh0ID4+IDgpICYgMHhmZik7Ci0rCQkJCUFbNV0gXj0gKHVuc2lnbmVkIGNoYXIpKCh0ID4+ IDE2KSAmIDB4ZmYpOwotKwkJCQlBWzRdIF49ICh1bnNpZ25lZCBjaGFyKSgodCA+PiAyNCkgJiAw eGZmKTsKLSsJCQkJfQotKwkJCW1lbWNweShCICsgOCwgUiwgOCk7Ci0rCQkJYmxvY2soQiwgQiwg a2V5KTsKLSsJCQltZW1jcHkoUiwgQiArIDgsIDgpOwotKwkJCX0KLSsJCX0KLSsJbWVtY3B5KGl2 LCBBLCA4KTsKLSsJcmV0dXJuIGlubGVuOwotKwl9Ci0rCi0rLyoqIFVud3JhcHBpbmcgYWNjb3Jk aW5nIHRvIFJGQyAzMzk0IHNlY3Rpb24gMi4yLjIgaW5jbHVkaW5nIElWIGNoZWNrLgotKyAqICBG aXJzdCBibG9jayBvZiBwbGFpbiB0ZXh0IGhhdmUgdG8gbWF0Y2ggc3VwcGxpZWQgSVYgb3RoZXJ3 aXNlIGFuIGVycm9yIGlzCi0rICogIHJldHVybmVkLgotKyAqCi0rICogIEBwYXJhbVtpbl0gIGtl eSAgICBLZXkgdmFsdWUuIAotKyAqICBAcGFyYW1bb3V0XSBpdiAgICAgVW5jaGVja2VkIElWIHZh bHVlLiBNaW5pbWFsIGJ1ZmZlciBsZW5ndGggPSA4IGJ5dGVzLgotKyAqICBAcGFyYW1bb3V0XSBv dXQgICAgUGxhaW4gdGV4dCB3aXRob3V0IElWLgotKyAqICAgICAgICAgICAgICAgICAgICAgTWlu aW1hbCBidWZmZXIgbGVuZ3RoID0gKGlubGVuIC0gOCkgYnl0ZXMuCi0rICogICAgICAgICAgICAg ICAgICAgICBJbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgY2FuIG92ZXJsYXAgaWYgYmxvY2sgZnVu Y3Rpb24KLSsgKiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIHRoYXQuCi0rICogIEBwYXJh bVtpbl0gIGluICAgICBDaXBoZXJ0ZXh0IHRleHQgYXMgbiA2NC1iaXQgYmxvY2tzCi0rICogIEBw YXJhbVtpbl0gIGlubGVuICBMZW5ndGggb2YgaW4uCi0rICogIEBwYXJhbVtpbl0gIGJsb2NrICBC bG9jayBwcm9jZXNzaW5nIGZ1bmN0aW9uLgotKyAqICBAcmV0dXJuICAgICAgICAgICAgMCBpZiBp bmxlbiBpcyBvdXQgb2YgcmFuZ2UgWzI0LCBDUllQVE8xMjhfV1JBUF9NQVhdCi0rICogICAgICAg ICAgICAgICAgICAgICBvciBpZiBpbmxlbiBpcyBub3QgbXVsdGlwbHkgb2YgOAotKyAqICAgICAg ICAgICAgICAgICAgICAgb3IgaWYgSVYgZG9lc24ndCBtYXRjaCBleHBlY3RlZCB2YWx1ZS4KLSsg KiAgICAgICAgICAgICAgICAgICAgIE91dHB1dCBsZW5ndGggb3RoZXJ3aXNlLgotKyAqLwotK3Np emVfdCBDUllQVE9fMTI4X3Vud3JhcCh2b2lkICprZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2 LAotKwkJdW5zaWduZWQgY2hhciAqb3V0LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90 IGlubGVuLAotKwkJYmxvY2sxMjhfZiBibG9jaykKLSsJewotKwlzaXplX3QgcmV0OwotKwl1bnNp Z25lZCBjaGFyIGdvdF9pdls4XTsKLSsKLSsJcmV0ID0gY3J5cHRvXzEyOF91bndyYXBfcmF3KGtl eSwgZ290X2l2LCBvdXQsIGluLCBpbmxlbiwgYmxvY2spOwotKwlpZiAocmV0ID09IDApCi0rCQly ZXR1cm4gMDsKLSsKLSsJaWYgKCFpdikKLSsJCWl2ID0gZGVmYXVsdF9pdjsKLSsJaWYgKENSWVBU T19tZW1jbXAoZ290X2l2LCBpdiwgOCkpCi0rCQl7Ci0rCQlPUEVOU1NMX2NsZWFuc2Uob3V0LCBy ZXQpOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCXJldHVybiByZXQ7Ci0rCX0KLSsKLSsvKiogV3Jh cHBpbmcgYWNjb3JkaW5nIHRvIFJGQyA1NjQ5IHNlY3Rpb24gNC4xLgotKyAqCi0rICogIEBwYXJh bVtpbl0gIGtleSAgICBLZXkgdmFsdWUuIAotKyAqICBAcGFyYW1baW5dICBpY3YgICAgKE5vbi1z dGFuZGFyZCkgSVYsIDQgYnl0ZXMuIE5VTEwgPSB1c2UgZGVmYXVsdF9haXYuCi0rICogIEBwYXJh bVtvdXRdIG91dCAgICBDaXBoZXIgdGV4dC4gTWluaW1hbCBidWZmZXIgbGVuZ3RoID0gKGlubGVu ICsgMTUpIGJ5dGVzLgotKyAqICAgICAgICAgICAgICAgICAgICAgSW5wdXQgYW5kIG91dHB1dCBi dWZmZXJzIGNhbiBvdmVybGFwIGlmIGJsb2NrIGZ1bmN0aW9uCi0rICogICAgICAgICAgICAgICAg ICAgICBzdXBwb3J0cyB0aGF0LgotKyAqICBAcGFyYW1baW5dICBpbiAgICAgUGxhaW4gdGV4dCBh cyBuIDY0LWJpdCBibG9ja3MsIG4gPj0gMi4KLSsgKiAgQHBhcmFtW2luXSAgaW5sZW4gIExlbmd0 aCBvZiBpbi4KLSsgKiAgQHBhcmFtW2luXSAgYmxvY2sgIEJsb2NrIHByb2Nlc3NpbmcgZnVuY3Rp b24uCi0rICogIEByZXR1cm4gICAgICAgICAgICAwIGlmIGlubGVuIGlzIG91dCBvZiByYW5nZSBb MSwgQ1JZUFRPMTI4X1dSQVBfTUFYXS4KLSsgKiAgICAgICAgICAgICAgICAgICAgIE91dHB1dCBs ZW5ndGggaWYgd3JhcHBpbmcgc3VjY2VlZGVkLgotKyAqLwotK3NpemVfdCBDUllQVE9fMTI4X3dy YXBfcGFkKHZvaWQgKmtleSwgY29uc3QgdW5zaWduZWQgY2hhciAqaWN2LAotKwkJdW5zaWduZWQg Y2hhciAqb3V0LAotKwkJY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbiwgYmxv Y2sxMjhfZiBibG9jaykKLSsJewotKwkvKiBuOiBudW1iZXIgb2YgNjQtYml0IGJsb2NrcyBpbiB0 aGUgcGFkZGVkIGtleSBkYXRhICovCi0rCWNvbnN0IHNpemVfdCBibG9ja3NfcGFkZGVkID0gKGlu bGVuICsgNykgLyA4OwotKwljb25zdCBzaXplX3QgcGFkZGVkX2xlbiA9IGJsb2Nrc19wYWRkZWQg KiA4OwotKwljb25zdCBzaXplX3QgcGFkZGluZ19sZW4gPSBwYWRkZWRfbGVuIC0gaW5sZW47Ci0r CS8qIFJGQyA1NjQ5IHNlY3Rpb24gMzogQWx0ZXJuYXRpdmUgSW5pdGlhbCBWYWx1ZSAqLwotKwl1 bnNpZ25lZCBjaGFyIGFpdls4XTsKLSsJaW50IHJldDsKLSsKLSsJLyogU2VjdGlvbiAxOiB1c2Ug MzItYml0IGZpeGVkIGZpZWxkIGZvciBwbGFpbnRleHQgb2N0ZXQgbGVuZ3RoICovCi0rCWlmIChp bmxlbiA9PSAwIHx8IGlubGVuID49IENSWVBUTzEyOF9XUkFQX01BWCkKLSsJCXJldHVybiAwOwot KwotKwkvKiBTZWN0aW9uIDM6IEFsdGVybmF0aXZlIEluaXRpYWwgVmFsdWUgKi8KLSsJaWYgKCFp Y3YpCi0rCQltZW1jcHkoYWl2LCBkZWZhdWx0X2FpdiwgNCk7Ci0rCWVsc2UKLSsJCW1lbWNweShh aXYsIGljdiwgNCk7IC8qIFN0YW5kYXJkIGRvZXNuJ3QgbWVudGlvbiB0aGlzLiAqLwotKwotKwlh aXZbNF0gPSAoaW5sZW4gPj4gMjQpICYgMHhGRjsKLSsJYWl2WzVdID0gKGlubGVuID4+IDE2KSAm IDB4RkY7Ci0rCWFpdls2XSA9IChpbmxlbiA+PiA4KSAmIDB4RkY7Ci0rCWFpdls3XSA9IGlubGVu ICYgMHhGRjsKLSsKLSsJaWYgKHBhZGRlZF9sZW4gPT0gOCkKLSsJCXsKLSsJCS8qIFNlY3Rpb24g NC4xIC0gc3BlY2lhbCBjYXNlIGluIHN0ZXAgMjoKLSsJCSAqIElmIHRoZSBwYWRkZWQgcGxhaW50 ZXh0IGNvbnRhaW5zIGV4YWN0bHkgZWlnaHQgb2N0ZXRzLCB0aGVuCi0rCQkgKiBwcmVwZW5kIHRo ZSBBSVYgYW5kIGVuY3J5cHQgdGhlIHJlc3VsdGluZyAxMjgtYml0IGJsb2NrCi0rCQkgKiB1c2lu ZyBBRVMgaW4gRUNCIG1vZGUuICovCi0rCQltZW1tb3ZlKG91dCArIDgsIGluLCBpbmxlbik7Ci0r CQltZW1jcHkob3V0LCBhaXYsIDgpOwotKwkJbWVtc2V0KG91dCArIDggKyBpbmxlbiwgMCwgcGFk ZGluZ19sZW4pOwotKwkJYmxvY2sob3V0LCBvdXQsIGtleSk7Ci0rCQlyZXQgPSAxNjsgLyogQUlW ICsgcGFkZGVkIGlucHV0ICovCi0rCQl9Ci0rCWVsc2UKLSsJCXsKLSsJCW1lbW1vdmUob3V0LCBp biwgaW5sZW4pOwotKwkJbWVtc2V0KG91dCArIGlubGVuLCAwLCBwYWRkaW5nX2xlbik7IC8qIFNl Y3Rpb24gNC4xIHN0ZXAgMSAqLwotKwkJcmV0ID0gQ1JZUFRPXzEyOF93cmFwKGtleSwgYWl2LCBv dXQsIG91dCwgcGFkZGVkX2xlbiwgYmxvY2spOwotKwkJfQotKwotKwlyZXR1cm4gcmV0OwotKwl9 Ci0rCi0rLyoqIFVud3JhcHBpbmcgYWNjb3JkaW5nIHRvIFJGQyA1NjQ5IHNlY3Rpb24gNC4yLgot KyAqCi0rICogIEBwYXJhbVtpbl0gIGtleSAgICBLZXkgdmFsdWUuIAotKyAqICBAcGFyYW1baW5d ICBpY3YgICAgKE5vbi1zdGFuZGFyZCkgSVYsIDQgYnl0ZXMuIE5VTEwgPSB1c2UgZGVmYXVsdF9h aXYuCi0rICogIEBwYXJhbVtvdXRdIG91dCAgICBQbGFpbiB0ZXh0LiBNaW5pbWFsIGJ1ZmZlciBs ZW5ndGggPSBpbmxlbiBieXRlcy4KLSsgKiAgICAgICAgICAgICAgICAgICAgIElucHV0IGFuZCBv dXRwdXQgYnVmZmVycyBjYW4gb3ZlcmxhcCBpZiBibG9jayBmdW5jdGlvbgotKyAqICAgICAgICAg ICAgICAgICAgICAgc3VwcG9ydHMgdGhhdC4KLSsgKiAgQHBhcmFtW2luXSAgaW4gICAgIENpcGhl cnRleHQgdGV4dCBhcyBuIDY0LWJpdCBibG9ja3MKLSsgKiAgQHBhcmFtW2luXSAgaW5sZW4gIExl bmd0aCBvZiBpbi4KLSsgKiAgQHBhcmFtW2luXSAgYmxvY2sgIEJsb2NrIHByb2Nlc3NpbmcgZnVu Y3Rpb24uCi0rICogIEByZXR1cm4gICAgICAgICAgICAwIGlmIGlubGVuIGlzIG91dCBvZiByYW5n ZSBbMTYsIENSWVBUTzEyOF9XUkFQX01BWF0sCi0rICogICAgICAgICAgICAgICAgICAgICBvciBp ZiBpbmxlbiBpcyBub3QgbXVsdGlwbHkgb2YgOAotKyAqICAgICAgICAgICAgICAgICAgICAgb3Ig aWYgSVYgYW5kIG1lc3NhZ2UgbGVuZ3RoIGluZGljYXRvciBkb2Vzbid0IG1hdGNoLgotKyAqICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0IGxlbmd0aCBpZiB1bndyYXBwaW5nIHN1Y2NlZWRlZCBh bmQgSVYgbWF0Y2hlcy4KLSsgKi8KLStzaXplX3QgQ1JZUFRPXzEyOF91bndyYXBfcGFkKHZvaWQg KmtleSwgY29uc3QgdW5zaWduZWQgY2hhciAqaWN2LAotKwkJdW5zaWduZWQgY2hhciAqb3V0LAot KwkJY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbiwgYmxvY2sxMjhfZiBibG9j aykKLSsJewotKwkvKiBuOiBudW1iZXIgb2YgNjQtYml0IGJsb2NrcyBpbiB0aGUgcGFkZGVkIGtl eSBkYXRhICovCi0rCXNpemVfdCBuID0gaW5sZW4gLyA4IC0gMTsKLSsJc2l6ZV90IHBhZGRlZF9s ZW47Ci0rCXNpemVfdCBwYWRkaW5nX2xlbjsKLSsJc2l6ZV90IHB0ZXh0X2xlbjsKLSsJLyogUkZD IDU2NDkgc2VjdGlvbiAzOiBBbHRlcm5hdGl2ZSBJbml0aWFsIFZhbHVlICovCi0rCXVuc2lnbmVk IGNoYXIgYWl2WzhdOwotKwlzdGF0aWMgdW5zaWduZWQgY2hhciB6ZXJvc1s4XSA9IHsweDB9Owot KwlzaXplX3QgcmV0OwotKwotKwkvKiBTZWN0aW9uIDQuMjogQ2lwaGVyIHRleHQgbGVuZ3RoIGhh cyB0byBiZSAobisxKSA2NC1iaXQgYmxvY2tzLiAqLwotKwlpZiAoKGlubGVuICYgMHg3KSAhPSAw IHx8IGlubGVuIDwgMTYgfHwgaW5sZW4gPj0gQ1JZUFRPMTI4X1dSQVBfTUFYKQotKwkJcmV0dXJu IDA7Ci0rCi0rCW1lbW1vdmUob3V0LCBpbiwgaW5sZW4pOwotKwlpZiAoaW5sZW4gPT0gMTYpCi0r CQl7Ci0rCQkvKiBTZWN0aW9uIDQuMiAtIHNwZWNpYWwgY2FzZSBpbiBzdGVwIDE6Ci0rCQkgKiBX aGVuIG49MSwgdGhlIGNpcGhlcnRleHQgY29udGFpbnMgZXhhY3RseSB0d28gNjQtYml0Ci0rCQkg KiBibG9ja3MgYW5kIHRoZXkgYXJlIGRlY3J5cHRlZCBhcyBhIHNpbmdsZSBBRVMKLSsJCSAqIGJs b2NrIHVzaW5nIEFFUyBpbiBFQ0IgbW9kZToKLSsJCSAqIEFJViB8IFBbMV0gPSBERUMoSywgQ1sw XSB8IENbMV0pCi0rCQkgKi8KLSsJCWJsb2NrKG91dCwgb3V0LCBrZXkpOwotKwkJbWVtY3B5KGFp diwgb3V0LCA4KTsKLSsJCS8qIFJlbW92ZSBBSVYgKi8KLSsJCW1lbW1vdmUob3V0LCBvdXQgKyA4 LCA4KTsKLSsJCXBhZGRlZF9sZW4gPSA4OwotKwkJfQotKwllbHNlCi0rCQl7Ci0rCQlwYWRkZWRf bGVuID0gaW5sZW4gLSA4OwotKwkJcmV0ID0gY3J5cHRvXzEyOF91bndyYXBfcmF3KGtleSwgYWl2 LCBvdXQsIG91dCwgaW5sZW4sIGJsb2NrKTsKLSsJCWlmIChwYWRkZWRfbGVuICE9IHJldCkKLSsJ CQl7Ci0rCQkJT1BFTlNTTF9jbGVhbnNlKG91dCwgaW5sZW4pOwotKwkJCXJldHVybiAwOwotKwkJ CX0KLSsJCX0KLSsKLSsJLyogU2VjdGlvbiAzOiBBSVYgY2hlY2tzOiBDaGVjayB0aGF0IE1TQigz MixBKSA9IEE2NTk1OUE2LgotKwkgKiBPcHRpb25hbGx5IGEgdXNlci1zdXBwbGllZCB2YWx1ZSBj YW4gYmUgdXNlZAotKwkgKiAoZXZlbiBpZiBzdGFuZGFyZCBkb2Vzbid0IG1lbnRpb24gdGhpcyku ICovCi0rCWlmICgoIWljdiAmJiBDUllQVE9fbWVtY21wKGFpdiwgZGVmYXVsdF9haXYsIDQpKQot KwkJfHwgKGljdiAmJiBDUllQVE9fbWVtY21wKGFpdiwgaWN2LCA0KSkpCi0rCQl7Ci0rCQlPUEVO U1NMX2NsZWFuc2Uob3V0LCBpbmxlbik7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsKLSsJLyogQ2hl Y2sgdGhhdCA4KihuLTEpIDwgTFNCKDMyLEFJVikgPD0gOCpuLgotKwkgKiBJZiBzbywgbGV0IHB0 ZXh0X2xlbiA9IExTQigzMixBSVYpLiAqLwotKwotKwlwdGV4dF9sZW4gPSAoYWl2WzRdIDw8IDI0 KSB8IChhaXZbNV0gPDwgMTYpIHwgKGFpdls2XSA8PCA4KSB8IGFpdls3XTsKLSsJaWYgKDgqKG4t MSkgPj0gcHRleHRfbGVuIHx8IHB0ZXh0X2xlbiA+IDgqbikKLSsJCXsKLSsJCU9QRU5TU0xfY2xl YW5zZShvdXQsIGlubGVuKTsKLSsJCXJldHVybiAwOwotKwkJfQotKwotKwkvKiBDaGVjayB0aGF0 IHRoZSByaWdodG1vc3QgcGFkZGluZ19sZW4gb2N0ZXRzIG9mIHRoZSBvdXRwdXQgZGF0YQotKwkg KiBhcmUgemVyby4gKi8KLSsJcGFkZGluZ19sZW4gPSBwYWRkZWRfbGVuIC0gcHRleHRfbGVuOwot KwlpZiAoQ1JZUFRPX21lbWNtcChvdXQgKyBwdGV4dF9sZW4sIHplcm9zLCBwYWRkaW5nX2xlbikg IT0gMCkKLSsJCXsKLSsJCU9QRU5TU0xfY2xlYW5zZShvdXQsIGlubGVuKTsKLSsJCXJldHVybiAw OwotKwkJfQotKwotKwkvKiBTZWN0aW9uIDQuMiBzdGVwIDM6IFJlbW92ZSBwYWRkaW5nICovCi0r CXJldHVybiBwdGV4dF9sZW47Ci0rCX0KCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xai1maXBz LWVjLnBhdGNoIGIvb3BlbnNzbC0xLjAuMWotZmlwcy1lYy5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggYjYwOGE5ZC4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4xai1maXBz LWVjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAzMSArMCwwIEBACi1kaWZmIC11cCBvcGVu c3NsLTEuMC4xai9jcnlwdG8vZWNkaC9lY2RoLmguZmlwcy1lYyBvcGVuc3NsLTEuMC4xai9jcnlw dG8vZWNkaC9lY2RoLmgKLS0tLSBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWNkaC9lY2RoLmguZmlw cy1lYwkyMDE0LTEwLTE2IDEzOjI1OjIwLjI0ODA5ODMwOCArMDIwMAotKysrIG9wZW5zc2wtMS4w LjFqL2NyeXB0by9lY2RoL2VjZGguaAkyMDE0LTEwLTE2IDEzOjI1OjIwLjczMDEwOTE5MCArMDIw MAotQEAgLTg1LDYgKzg1LDggQEAKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLSAKLSsjZGVmaW5l IEVDX0ZMQUdfQ09GQUNUT1JfRUNESAkweDEwMDAKLSsKLSBjb25zdCBFQ0RIX01FVEhPRCAqRUNE SF9PcGVuU1NMKHZvaWQpOwotIAotIHZvaWQJICBFQ0RIX3NldF9kZWZhdWx0X21ldGhvZChjb25z dCBFQ0RIX01FVEhPRCAqKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lY2RoL2Vj ZGh0ZXN0LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWNkaC9lY2RodGVzdC5jCi0t LS0gb3BlbnNzbC0xLjAuMWovY3J5cHRvL2VjZGgvZWNkaHRlc3QuYy5maXBzLWVjCTIwMTQtMTAt MTUgMTQ6NTM6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2Vj ZGgvZWNkaHRlc3QuYwkyMDE0LTEwLTE2IDEzOjI1OjIwLjczMDEwOTE5MCArMDIwMAotQEAgLTMy Myw4ICszMjMsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJaWYgKChj dHg9Qk5fQ1RYX25ldygpKSA9PSBOVUxMKSBnb3RvIGVycjsKLSAKLSAJLyogTklTVCBQUklNRSBD VVJWRVMgVEVTVFMgKi8KLSsjaWYgMAotIAlpZiAoIXRlc3RfZWNkaF9jdXJ2ZShOSURfWDlfNjJf cHJpbWUxOTJ2MSwgIk5JU1QgUHJpbWUtQ3VydmUgUC0xOTIiLCBjdHgsIG91dCkpIGdvdG8gZXJy OwotIAlpZiAoIXRlc3RfZWNkaF9jdXJ2ZShOSURfc2VjcDIyNHIxLCAiTklTVCBQcmltZS1DdXJ2 ZSBQLTIyNCIsIGN0eCwgb3V0KSkgZ290byBlcnI7Ci0rI2VuZGlmCi0gCWlmICghdGVzdF9lY2Ro X2N1cnZlKE5JRF9YOV82Ml9wcmltZTI1NnYxLCAiTklTVCBQcmltZS1DdXJ2ZSBQLTI1NiIsIGN0 eCwgb3V0KSkgZ290byBlcnI7Ci0gCWlmICghdGVzdF9lY2RoX2N1cnZlKE5JRF9zZWNwMzg0cjEs ICJOSVNUIFByaW1lLUN1cnZlIFAtMzg0IiwgY3R4LCBvdXQpKSBnb3RvIGVycjsKLSAJaWYgKCF0 ZXN0X2VjZGhfY3VydmUoTklEX3NlY3A1MjFyMSwgIk5JU1QgUHJpbWUtQ3VydmUgUC01MjEiLCBj dHgsIG91dCkpIGdvdG8gZXJyOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2VjZGgv ZWNoX2xpYi5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2VjZGgvZWNoX2xpYi5jCi0t LS0gb3BlbnNzbC0xLjAuMWovY3J5cHRvL2VjZGgvZWNoX2xpYi5jLmZpcHMtZWMJMjAxNC0xMC0x NSAxNDo1MzozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWNk aC9lY2hfbGliLmMJMjAxNC0xMC0xNiAxMzoyNToyMC43MzAxMDkxOTAgKzAyMDAKLUBAIC05NCwx NCArOTQsNyBAQCBjb25zdCBFQ0RIX01FVEhPRCAqRUNESF9nZXRfZGVmYXVsdF9tZXRoCi0gCXsK LSAJaWYoIWRlZmF1bHRfRUNESF9tZXRob2QpIAotIAkJewotLSNpZmRlZiBPUEVOU1NMX0ZJUFMK LS0JCWlmIChGSVBTX21vZGUoKSkKLS0JCQlyZXR1cm4gRklQU19lY2RoX29wZW5zc2woKTsKLS0J CWVsc2UKLS0JCQlyZXR1cm4gRUNESF9PcGVuU1NMKCk7Ci0tI2Vsc2UKLSAJCWRlZmF1bHRfRUNE SF9tZXRob2QgPSBFQ0RIX09wZW5TU0woKTsKLS0jZW5kaWYKLSAJCX0KLSAJcmV0dXJuIGRlZmF1 bHRfRUNESF9tZXRob2Q7Ci0gCX0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lY2Ro L2VjaF9vc3NsLmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWNkaC9lY2hfb3NzbC5j Ci0tLS0gb3BlbnNzbC0xLjAuMWovY3J5cHRvL2VjZGgvZWNoX29zc2wuYy5maXBzLWVjCTIwMTQt MTAtMTUgMTQ6NTM6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWovY3J5cHRv L2VjZGgvZWNoX29zc2wuYwkyMDE0LTEwLTE2IDEzOjI1OjIwLjczMDEwOTE5MCArMDIwMAotQEAg LTc5LDYgKzc5LDEwIEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvb2JqX21hYy5oPgotICNpbmNsdWRl IDxvcGVuc3NsL2JuLmg+Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyNpbmNsdWRlIDxvcGVu c3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsKLSBzdGF0aWMgaW50IGVjZGhfY29tcHV0ZV9rZXkodm9p ZCAqb3V0LCBzaXplX3QgbGVuLCBjb25zdCBFQ19QT0lOVCAqcHViX2tleSwKLSAJRUNfS0VZICpl Y2RoLCAKLSAJdm9pZCAqKCpLREYpKGNvbnN0IHZvaWQgKmluLCBzaXplX3QgaW5sZW4sIHZvaWQg Km91dCwgc2l6ZV90ICpvdXRsZW4pKTsKLUBAIC05MCw3ICs5NCw3IEBAIHN0YXRpYyBFQ0RIX01F VEhPRCBvcGVuc3NsX2VjZGhfbWV0aCA9IHsKLSAJTlVMTCwgLyogaW5pdCAgICAgKi8KLSAJTlVM TCwgLyogZmluaXNoICAgKi8KLSAjZW5kaWYKLS0JMCwgICAgLyogZmxhZ3MgICAgKi8KLSsJRUNE SF9GTEFHX0ZJUFNfTUVUSE9ELCAgICAvKiBmbGFncyAgICAqLwotIAlOVUxMICAvKiBhcHBfZGF0 YSAqLwotIH07Ci0gCi1AQCAtMTE4LDYgKzEyMiwxNCBAQCBzdGF0aWMgaW50IGVjZGhfY29tcHV0 ZV9rZXkodm9pZCAqb3V0LCBzCi0gCXNpemVfdCBidWZsZW4sIGxlbjsKLSAJdW5zaWduZWQgY2hh ciAqYnVmPU5VTEw7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlpZihGSVBTX3NlbGZ0ZXN0 X2ZhaWxlZCgpKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRUNESF9DT01QVVRFX0tFWSxGSVBT X1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKwkJcmV0dXJuIC0xOwotKwkJfQotKyNlbmRpZgot KwotIAlpZiAob3V0bGVuID4gSU5UX01BWCkKLSAJCXsKLSAJCUVDREhlcnIoRUNESF9GX0VDREhf Q09NUFVURV9LRVksRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOyAvKiBzb3J0IG9mLCBhbnl3YXkgKi8K LUBAIC0xMzcsNiArMTQ5LDE4IEBAIHN0YXRpYyBpbnQgZWNkaF9jb21wdXRlX2tleSh2b2lkICpv dXQsIHMKLSAJCX0KLSAKLSAJZ3JvdXAgPSBFQ19LRVlfZ2V0MF9ncm91cChlY2RoKTsKLSsKLSsJ aWYgKEVDX0tFWV9nZXRfZmxhZ3MoZWNkaCkgJiBFQ19GTEFHX0NPRkFDVE9SX0VDREgpCi0rCQl7 Ci0rCQlpZiAoIUVDX0dST1VQX2dldF9jb2ZhY3Rvcihncm91cCwgeCwgY3R4KSB8fAotKwkJCSFC Tl9tdWwoeCwgeCwgcHJpdl9rZXksIGN0eCkpCi0rCQkJewotKwkJCUVDREhlcnIoRUNESF9GX0VD REhfQ09NUFVURV9LRVksIEVSUl9SX01BTExPQ19GQUlMVVJFKTsKLSsJCQlnb3RvIGVycjsKLSsJ CQl9Ci0rCQlwcml2X2tleSA9IHg7Ci0rCQl9Ci0rCi0gCWlmICgodG1wPUVDX1BPSU5UX25ldyhn cm91cCkpID09IE5VTEwpCi0gCQl7Ci0gCQlFQ0RIZXJyKEVDREhfRl9FQ0RIX0NPTVBVVEVfS0VZ LEVSUl9SX01BTExPQ19GQUlMVVJFKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9l Y2RzYS9lY2RzYXRlc3QuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lY2RzYS9lY2Rz YXRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lY2RzYS9lY2RzYXRlc3QuYy5maXBz LWVjCTIwMTQtMTAtMTUgMTQ6NTM6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MWovY3J5cHRvL2VjZHNhL2VjZHNhdGVzdC5jCTIwMTQtMTAtMTYgMTM6MjU6MjAuNzMxMTA5MjEy ICswMjAwCi1AQCAtMTM4LDExICsxMzgsMTQgQEAgaW50IHJlc3RvcmVfcmFuZCh2b2lkKQotIAl9 Ci0gCi0gc3RhdGljIGludCBmYnl0ZXNfY291bnRlciA9IDA7Ci0tc3RhdGljIGNvbnN0IGNoYXIg Km51bWJlcnNbOF0gPSB7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKm51bWJlcnNbMTBdID0gewotKwki NjUxMDU2NzcwOTA2MDE1MDc2MDU2ODEwNzYzNDU2MzU4NTY3MTkwMTAwMTU2Njk1NjE1NjY1NjU5 IiwKLSAJIjY1MTA1Njc3MDkwNjAxNTA3NjA1NjgxMDc2MzQ1NjM1ODU2NzE5MDEwMDE1NjY5NTYx NTY2NTY1OSIsCi0gCSI2MTQwNTA3MDY3MDY1MDAxMDYzMDY1MDY1NTY1NjY3NDA1NTYwMDA2MTYx NTU2NTY1NjY1NjU2NjU0IiwKLSAJIjg3NjMwMDEwMTUwNzEwNzU2NzUwMTA2NjEzMDc2MTY3MTA3 ODM1NzAxMDY3MTA2Nzc4MTc3NjcxNjYiCi0gCSI3MTY3NjE3ODcyNjcxNyIsCi0rCSI4NzYzMDAx MDE1MDcxMDc1Njc1MDEwNjYxMzA3NjE2NzEwNzgzNTcwMTA2NzEwNjc3ODE3NzY3MTY2IgotKwki NzE2NzYxNzg3MjY3MTciLAotIAkiNzAwMDAwMDE3NTY5MDU2NjQ2NjU1NTA1NzgxNzU3MTU3MTA3 NTcwNTAxNTc1Nzc1NzA1Nzc5NTc1NSIKLSAJIjU1NjU3MTU2NzU2NjU1IiwKLSAJIjEyNzU1NTIx OTExMTMyMTIzMDAwMTIwMzA0MzkxODcxNDYxNjQ2NDYxNDY2NDY0NjY3NDk0OTQ3OTkiLAotQEAg LTE1Nyw3ICsxNjAsNyBAQCBpbnQgZmJ5dGVzKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IG51bSkK LSAJaW50CXJldDsKLSAJQklHTlVNCSp0bXAgPSBOVUxMOwotIAotLQlpZiAoZmJ5dGVzX2NvdW50 ZXIgPj0gOCkKLSsJaWYgKGZieXRlc19jb3VudGVyID49IDEwKQotIAkJcmV0dXJuIDA7Ci0gCXRt cCA9IEJOX25ldygpOwotIAlpZiAoIXRtcCkKLUBAIC01NTAsNyArNTUzLDkgQEAgaW50IG1haW4o dm9pZCkKLSAJUkFORF9zZWVkKHJuZF9zZWVkLCBzaXplb2Yocm5kX3NlZWQpKTsKLSAKLSAJLyog dGhlIHRlc3RzICovCi0rI2lmIDAKLSAJaWYgKCF4OV82Ml90ZXN0cyhvdXQpKSAgZ290byBlcnI7 Ci0rI2VuZGlmCi0gCWlmICghdGVzdF9idWlsdGluKG91dCkpIGdvdG8gZXJyOwotIAkKLSAJcmV0 ID0gMDsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lY2RzYS9lY3NfbGliLmMuZmlw cy1lYyBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWNkc2EvZWNzX2xpYi5jCi0tLS0gb3BlbnNzbC0x LjAuMWovY3J5cHRvL2VjZHNhL2Vjc19saWIuYy5maXBzLWVjCTIwMTQtMTAtMTUgMTQ6NTM6Mzku MDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2VjZHNhL2Vjc19saWIu YwkyMDE0LTEwLTE2IDEzOjI1OjIwLjczMTEwOTIxMiArMDIwMAotQEAgLTgxLDE0ICs4MSw3IEBA IGNvbnN0IEVDRFNBX01FVEhPRCAqRUNEU0FfZ2V0X2RlZmF1bHRfbWUKLSB7Ci0gCWlmKCFkZWZh dWx0X0VDRFNBX21ldGhvZCkgCi0gCQl7Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLQkJaWYgKEZJ UFNfbW9kZSgpKQotLQkJCXJldHVybiBGSVBTX2VjZHNhX29wZW5zc2woKTsKLS0JCWVsc2UKLS0J CQlyZXR1cm4gRUNEU0FfT3BlblNTTCgpOwotLSNlbHNlCi0gCQlkZWZhdWx0X0VDRFNBX21ldGhv ZCA9IEVDRFNBX09wZW5TU0woKTsKLS0jZW5kaWYKLSAJCX0KLSAJcmV0dXJuIGRlZmF1bHRfRUNE U0FfbWV0aG9kOwotIH0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lY2RzYS9lY3Nf b3NzbC5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2VjZHNhL2Vjc19vc3NsLmMKLS0t LSBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWNkc2EvZWNzX29zc2wuYy5maXBzLWVjCTIwMTQtMTAt MTUgMTQ6NTM6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2Vj ZHNhL2Vjc19vc3NsLmMJMjAxNC0xMC0xNiAxMzoyNToyMC43MzExMDkyMTIgKzAyMDAKLUBAIC02 MCw2ICs2MCw5IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0gI2luY2x1ZGUgPG9wZW5z c2wvb2JqX21hYy5oPgotICNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rI2lmZGVmIE9QRU5TU0xf RklQUwotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSAKLSBzdGF0aWMgRUNE U0FfU0lHICplY2RzYV9kb19zaWduKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVu LCAKLSAJCWNvbnN0IEJJR05VTSAqLCBjb25zdCBCSUdOVU0gKiwgRUNfS0VZICplY2tleSk7Ci1A QCAtNzcsNyArODAsNyBAQCBzdGF0aWMgRUNEU0FfTUVUSE9EIG9wZW5zc2xfZWNkc2FfbWV0aCA9 Ci0gCU5VTEwsIC8qIGluaXQgICAgICovCi0gCU5VTEwsIC8qIGZpbmlzaCAgICovCi0gI2VuZGlm Ci0tCTAsICAgIC8qIGZsYWdzICAgICovCi0rCUVDRFNBX0ZMQUdfRklQU19NRVRIT0QsICAgIC8q IGZsYWdzICAgICovCi0gCU5VTEwgIC8qIGFwcF9kYXRhICovCi0gfTsKLSAKLUBAIC0yMzEsNiAr MjM0LDE0IEBAIHN0YXRpYyBFQ0RTQV9TSUcgKmVjZHNhX2RvX3NpZ24oY29uc3QgdW4KLSAJRUNE U0FfREFUQSAqZWNkc2E7Ci0gCWNvbnN0IEJJR05VTSAqcHJpdl9rZXk7Ci0gCi0rI2lmZGVmIE9Q RU5TU0xfRklQUwotKwlpZihGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKQotKwkJewotKwkJRklQU2Vy cihGSVBTX0ZfRUNEU0FfRE9fU0lHTixGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKwkJ cmV0dXJuIE5VTEw7Ci0rCQl9Ci0rI2VuZGlmCi0rCi0gCWVjZHNhICAgID0gZWNkc2FfY2hlY2so ZWNrZXkpOwotIAlncm91cCAgICA9IEVDX0tFWV9nZXQwX2dyb3VwKGVja2V5KTsKLSAJcHJpdl9r ZXkgPSBFQ19LRVlfZ2V0MF9wcml2YXRlX2tleShlY2tleSk7Ci1AQCAtMzYwLDYgKzM3MSwxNCBA QCBzdGF0aWMgaW50IGVjZHNhX2RvX3ZlcmlmeShjb25zdCB1bnNpZ25lCi0gCWNvbnN0IEVDX0dS T1VQICpncm91cDsKLSAJY29uc3QgRUNfUE9JTlQgKnB1Yl9rZXk7Ci0gCi0rI2lmZGVmIE9QRU5T U0xfRklQUwotKwlpZihGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKQotKwkJewotKwkJRklQU2VycihG SVBTX0ZfRUNEU0FfRE9fVkVSSUZZLEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rCQly ZXR1cm4gLTE7Ci0rCQl9Ci0rI2VuZGlmCi0rCi0gCS8qIGNoZWNrIGlucHV0IHZhbHVlcyAqLwot IAlpZiAoZWNrZXkgPT0gTlVMTCB8fCAoZ3JvdXAgPSBFQ19LRVlfZ2V0MF9ncm91cChlY2tleSkp ID09IE5VTEwgfHwKLSAJICAgIChwdWJfa2V5ID0gRUNfS0VZX2dldDBfcHVibGljX2tleShlY2tl eSkpID09IE5VTEwgfHwgc2lnID09IE5VTEwpCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlw dG8vZWMvZWNfa2V5LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWMvZWNfa2V5LmMK LS0tLSBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWMvZWNfa2V5LmMuZmlwcy1lYwkyMDE0LTEwLTE1 IDE0OjUzOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lYy9l Y19rZXkuYwkyMDE0LTEwLTE2IDEzOjI1OjIwLjczMTEwOTIxMiArMDIwMAotQEAgLTY0LDkgKzY0 LDYgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgImVjX2xjbC5oIgotICNpbmNs dWRlIDxvcGVuc3NsL2Vyci5oPgotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0jaW5jbHVkZSA8b3Bl bnNzbC9maXBzLmg+Ci0tI2VuZGlmCi0gCi0gRUNfS0VZICpFQ19LRVlfbmV3KHZvaWQpCi0gCXsK LUBAIC0yMzQsNiArMjMxLDM5IEBAIGludCBFQ19LRVlfdXBfcmVmKEVDX0tFWSAqcikKLSAJcmV0 dXJuICgoaSA+IDEpID8gMSA6IDApOwotIAl9Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwot KyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsj aW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsKLStzdGF0aWMgaW50IGZpcHNfY2hlY2tf ZWMoRUNfS0VZICprZXkpCi0rCXsKLSsJRVZQX1BLRVkgKnBrOwotKwl1bnNpZ25lZCBjaGFyIHRi c1tdID0gIkVDRFNBIFBhaXJ3aXNlIENoZWNrIERhdGEiOwotKwlpbnQgcmV0ID0gMDsKLSsKLSsJ aWYgKChwaz1FVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKLSsJCWdvdG8gZXJyOwotKwotKwlFVlBf UEtFWV9zZXQxX0VDX0tFWShwaywga2V5KTsKLSsKLSsJaWYgKGZpcHNfcGtleV9zaWduYXR1cmVf dGVzdChwaywgdGJzLCAtMSwgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCkpCi0rCQlyZXQgPSAxOwot KwotKwllcnI6Ci0rCWlmIChyZXQgPT0gMCkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0ZJUFNf Q0hFQ0tfRUMsRklQU19SX1BBSVJXSVNFX1RFU1RfRkFJTEVEKTsKLSsJCWZpcHNfc2V0X3NlbGZ0 ZXN0X2ZhaWwoKTsKLSsJCX0KLSsJaWYgKHBrKQotKwkJRVZQX1BLRVlfZnJlZShwayk7Ci0rCXJl dHVybiByZXQ7Ci0rCX0KLSsKLSsjZW5kaWYKLSsKLSBpbnQgRUNfS0VZX2dlbmVyYXRlX2tleShF Q19LRVkgKmVja2V5KQotIAl7CQotIAlpbnQJb2sgPSAwOwotQEAgLTI0Miw4ICsyNzIsMTEgQEAg aW50IEVDX0tFWV9nZW5lcmF0ZV9rZXkoRUNfS0VZICplY2tleSkKLSAJRUNfUE9JTlQgKnB1Yl9r ZXkgPSBOVUxMOwotIAotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0JaWYgKEZJUFNfbW9kZSgpKQot LQkJcmV0dXJuIEZJUFNfZWNfa2V5X2dlbmVyYXRlX2tleShlY2tleSk7Ci0rCWlmKEZJUFNfc2Vs ZnRlc3RfZmFpbGVkKCkpCi0rCQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9FQ19LRVlfR0VORVJBVEVf S0VZLEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSAj ZW5kaWYKLSAKLSAJaWYgKCFlY2tleSB8fCAhZWNrZXktPmdyb3VwKQotQEAgLTI4Nyw2ICszMjAs MTUgQEAgaW50IEVDX0tFWV9nZW5lcmF0ZV9rZXkoRUNfS0VZICplY2tleSkKLSAJZWNrZXktPnBy aXZfa2V5ID0gcHJpdl9rZXk7Ci0gCWVja2V5LT5wdWJfa2V5ICA9IHB1Yl9rZXk7Ci0gCi0rI2lm ZGVmIE9QRU5TU0xfRklQUwotKwlpZighZmlwc19jaGVja19lYyhlY2tleSkpCi0rCQl7Ci0rCQll Y2tleS0+cHJpdl9rZXkgPSBOVUxMOwotKwkJZWNrZXktPnB1Yl9rZXkgID0gTlVMTDsKLSsJICAg IAlnb3RvIGVycjsKLSsJCX0KLSsjZW5kaWYKLSsKLSAJb2s9MTsKLSAKLSBlcnI6CQotQEAgLTQy OSwxMCArNDcxLDEyIEBAIGludCBFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3JkaW4K LSAJCQkJCQkJCXR4LCB0eSwgY3R4KSkKLSAJCQlnb3RvIGVycjsKLSAJCX0KLS0JLyogQ2hlY2sg aWYgcmV0cmlldmVkIGNvb3JkaW5hdGVzIG1hdGNoIG9yaWdpbmFsczogaWYgbm90IHZhbHVlcwot LQkgKiBhcmUgb3V0IG9mIHJhbmdlLgotKwkvKiBDaGVjayBpZiByZXRyaWV2ZWQgY29vcmRpbmF0 ZXMgbWF0Y2ggb3JpZ2luYWxzIGFuZCBhcmUgbGVzcyB0aGFuCi0rCSAqIGZpZWxkIG9yZGVyOiBp ZiBub3QgdmFsdWVzIGFyZSBvdXQgb2YgcmFuZ2UuCi0gCSAqLwotLQlpZiAoQk5fY21wKHgsIHR4 KSB8fCBCTl9jbXAoeSwgdHkpKQotKwlpZiAoQk5fY21wKHgsIHR4KSB8fCBCTl9jbXAoeSwgdHkp Ci0rCQl8fCAoQk5fY21wKHgsICZrZXktPmdyb3VwLT5maWVsZCkgPj0gMCkKLSsJCXx8IChCTl9j bXAoeSwgJmtleS0+Z3JvdXAtPmZpZWxkKSA+PSAwKSkKLSAJCXsKLSAJCUVDZXJyKEVDX0ZfRUNf S0VZX1NFVF9QVUJMSUNfS0VZX0FGRklORV9DT09SRElOQVRFUywKLSAJCQlFQ19SX0NPT1JESU5B VEVTX09VVF9PRl9SQU5HRSk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWMvZWNw X21vbnQuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lYy9lY3BfbW9udC5jCi0tLS0g b3BlbnNzbC0xLjAuMWovY3J5cHRvL2VjL2VjcF9tb250LmMuZmlwcy1lYwkyMDE0LTEwLTE2IDEz OjI1OjIwLjczMTEwOTIxMiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lYy9lY3Bf bW9udC5jCTIwMTQtMTAtMTYgMTM6Mjc6MzQuMTU2MTIxMzQwICswMjAwCi1AQCAtNjMsMTAgKzYz LDYgQEAKLSAKLSAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSAKLS0jaWZkZWYgT1BFTlNTTF9G SVBTCi0tI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotLSNlbmRpZgotLQotICNpbmNsdWRlICJl Y19sY2wuaCIKLSAKLSAKLUBAIC0xMTEsMTEgKzEwNyw2IEBAIGNvbnN0IEVDX01FVEhPRCAqRUNf R0ZwX21vbnRfbWV0aG9kKHZvaWQKLSAJCWVjX0dGcF9tb250X2ZpZWxkX2RlY29kZSwKLSAJCWVj X0dGcF9tb250X2ZpZWxkX3NldF90b19vbmUgfTsKLSAKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0t CWlmIChGSVBTX21vZGUoKSkKLS0JCXJldHVybiBmaXBzX2VjX2dmcF9tb250X21ldGhvZCgpOwot LSNlbmRpZgotLQotIAlyZXR1cm4gJnJldDsKLSAJfQotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MWovY3J5cHRvL2VjL2VjcF9uaXN0LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWMv ZWNwX25pc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lYy9lY3BfbmlzdC5jLmZpcHMt ZWMJMjAxNC0xMC0xNiAxMzoyNToyMC43MzIxMDkyMzUgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4x ai9jcnlwdG8vZWMvZWNwX25pc3QuYwkyMDE0LTEwLTE2IDEzOjI3OjUzLjE2MzU1MDQ0MSArMDIw MAotQEAgLTY3LDEwICs2Nyw2IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvb2JqX21hYy5oPgotICNp bmNsdWRlICJlY19sY2wuaCIKLSAKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tI2luY2x1ZGUgPG9w ZW5zc2wvZmlwcy5oPgotLSNlbmRpZgotLQotIGNvbnN0IEVDX01FVEhPRCAqRUNfR0ZwX25pc3Rf bWV0aG9kKHZvaWQpCi0gCXsKLSAJc3RhdGljIGNvbnN0IEVDX01FVEhPRCByZXQgPSB7Ci1AQCAt MTEyLDExICsxMDgsNiBAQCBjb25zdCBFQ19NRVRIT0QgKkVDX0dGcF9uaXN0X21ldGhvZCh2b2lk Ci0gCQkwIC8qIGZpZWxkX2RlY29kZSAqLywKLSAJCTAgLyogZmllbGRfc2V0X3RvX29uZSAqLyB9 OwotIAotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0JaWYgKEZJUFNfbW9kZSgpKQotLQkJcmV0dXJu IGZpcHNfZWNfZ2ZwX25pc3RfbWV0aG9kKCk7Ci0tI2VuZGlmCi0tCi0gCXJldHVybiAmcmV0Owot IAl9Ci0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZWMvZWNwX3NtcGwuYy5maXBz LWVjIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lYy9lY3Bfc21wbC5jCi0tLS0gb3BlbnNzbC0xLjAu MWovY3J5cHRvL2VjL2VjcF9zbXBsLmMuZmlwcy1lYwkyMDE0LTEwLTE1IDE0OjUzOjM5LjAwMDAw MDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9lYy9lY3Bfc21wbC5jCTIwMTQt MTAtMTYgMTM6Mjg6MzkuMzg2NTkzOTQ2ICswMjAwCi1AQCAtNjUsMTAgKzY1LDYgQEAKLSAjaW5j bHVkZSA8b3BlbnNzbC9lcnIuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9zeW1oYWNrcy5oPgotIAot LSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0jaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0tI2VuZGlm Ci0tCi0gI2luY2x1ZGUgImVjX2xjbC5oIgotIAotIGNvbnN0IEVDX01FVEhPRCAqRUNfR0ZwX3Np bXBsZV9tZXRob2Qodm9pZCkKLUBAIC0xMTIsMTEgKzEwOCw2IEBAIGNvbnN0IEVDX01FVEhPRCAq RUNfR0ZwX3NpbXBsZV9tZXRob2Qodm8KLSAJCTAgLyogZmllbGRfZGVjb2RlICovLAotIAkJMCAv KiBmaWVsZF9zZXRfdG9fb25lICovIH07Ci0gCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLQlpZiAo RklQU19tb2RlKCkpCi0tCQlyZXR1cm4gZmlwc19lY19nZnBfc2ltcGxlX21ldGhvZCgpOwotLSNl bmRpZgotLQotIAlyZXR1cm4gJnJldDsKLSAJfQotIAotQEAgLTE4Nyw2ICsxNzgsMTIgQEAgaW50 IGVjX0dGcF9zaW1wbGVfZ3JvdXBfc2V0X2N1cnZlKEVDX0dSTwotIAkJcmV0dXJuIDA7Ci0gCQl9 Ci0gCi0rCWlmIChCTl9udW1fYml0cyhwKSA8IDI1NikKLSsJCXsKLSsJCUVDZXJyKEVDX0ZfRUNf R0ZQX1NJTVBMRV9HUk9VUF9TRVRfQ1VSVkUsIEVDX1JfVU5TVVBQT1JURURfRklFTEQpOwotKwkJ cmV0dXJuIDA7Ci0rCQl9Ci0rCi0gCWlmIChjdHggPT0gTlVMTCkKLSAJCXsKLSAJCWN0eCA9IG5l d19jdHggPSBCTl9DVFhfbmV3KCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZXZw L21fZWNkc2EuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAvbV9lY2RzYS5jCi0t LS0gb3BlbnNzbC0xLjAuMWovY3J5cHRvL2V2cC9tX2VjZHNhLmMuZmlwcy1lYwkyMDE0LTEwLTE1 IDE0OjUzOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9ldnAv bV9lY2RzYS5jCTIwMTQtMTAtMTYgMTM6MjU6MjAuNzMyMTA5MjM1ICswMjAwCi1AQCAtMTE2LDcg KzExNiw2IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgotIAotICNpZm5kZWYgT1BFTlNT TF9OT19TSEEKLS0jaWZuZGVmIE9QRU5TU0xfRklQUwotIAotIHN0YXRpYyBpbnQgaW5pdChFVlBf TURfQ1RYICpjdHgpCi0gCXsgcmV0dXJuIFNIQTFfSW5pdChjdHgtPm1kX2RhdGEpOyB9Ci1AQCAt MTMyLDcgKzEzMSw3IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgZWNkc2FfbWQ9Ci0gCU5JRF9lY2Rz YV93aXRoX1NIQTEsCi0gCU5JRF9lY2RzYV93aXRoX1NIQTEsCi0gCVNIQV9ESUdFU1RfTEVOR1RI LAotLQlFVlBfTURfRkxBR19QS0VZX0RJR0VTVCwKLSsJRVZQX01EX0ZMQUdfUEtFWV9ESUdFU1R8 RVZQX01EX0ZMQUdfRklQUywKLSAJaW5pdCwKLSAJdXBkYXRlLAotIAlmaW5hbCwKLUBAIC0xNDgs NCArMTQ3LDMgQEAgY29uc3QgRVZQX01EICpFVlBfZWNkc2Eodm9pZCkKLSAJcmV0dXJuKCZlY2Rz YV9tZCk7Ci0gCX0KLSAjZW5kaWYKLS0jZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFqL2Ny eXB0by9maXBzL2NhdnMvZmlwc19lY2RodnMuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjFqL2NyeXB0 by9maXBzL2NhdnMvZmlwc19lY2RodnMuYwotLS0tIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9maXBz L2NhdnMvZmlwc19lY2RodnMuYy5maXBzLWVjCTIwMTQtMTAtMTYgMTM6MjU6MjAuNzMyMTA5MjM1 ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2ZpcHMvY2F2cy9maXBzX2VjZGh2cy5j CTIwMTQtMTAtMTYgMTM6MjU6MjAuNzMyMTA5MjM1ICswMjAwCi1AQCAtMCwwICsxLDQ5NiBAQAot Ky8qIGZpcHMvZWNkaC9maXBzX2VjZGh2cy5jICovCi0rLyogV3JpdHRlbiBieSBEciBTdGVwaGVu IE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCi0rICogcHJvamVj dC4KLSsgKi8KLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3Bl blNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0 aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp bmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAg ICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1l bnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRp c3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0 IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICog ICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9y Zy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNT TCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3Rl IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlv ciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250 YWN0Ci0rICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMg ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0r ICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJp b3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsg KgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0 YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0 Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5T U0wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVu U1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElF RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBP cGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQg VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9T UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsg KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lC SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKi8KLSsKLSsKLSsjZGVm aW5lIE9QRU5TU0xfRklQU0FQSQotKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+Ci0r Ci0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgICBwcmludGYoIk5vIEZJUFMgRUNESCBz dXBwb3J0XG4iKTsKLSsgICAgcmV0dXJuKDApOwotK30KLSsjZWxzZQotKwotKyNpbmNsdWRlIDxv cGVuc3NsL2NyeXB0by5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rI2luY2x1ZGUgPG9w ZW5zc2wvZWNkaC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3Bl bnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSsjaW5jbHVkZSA8c3RyaW5n Lmg+Ci0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rCi0rI2luY2x1ZGUgImZpcHNfdXRsLmgiCi0rCi0r c3RhdGljIGNvbnN0IEVWUF9NRCAqZXBhcnNlX21kKGNoYXIgKmxpbmUpCi0rCXsKLSsJY2hhciAq cDsKLSsJaWYgKGxpbmVbMF0gIT0gJ1snIHx8IGxpbmVbMV0gIT0gJ0UnKQotKwkJcmV0dXJuIE5V TEw7Ci0rCXAgPSBzdHJjaHIobGluZSwgJy0nKTsKLSsJaWYgKCFwKQotKwkJcmV0dXJuIE5VTEw7 Ci0rCWxpbmUgPSBwICsgMTsKLSsJcCA9IHN0cmNocihsaW5lLCAnXScpOwotKwlpZiAoIXApCi0r CQlyZXR1cm4gTlVMTDsKLSsJKnAgPSAwOwotKwlwID0gbGluZTsKLSsJd2hpbGUoaXNzcGFjZSgq cCkpCi0rCQlwKys7Ci0rCWlmICghc3RyY21wKHAsICJTSEExIikpCi0rCQlyZXR1cm4gRVZQX3No YTEoKTsKLSsJZWxzZSBpZiAoIXN0cmNtcChwLCAiU0hBMjI0IikpCi0rCQlyZXR1cm4gRVZQX3No YTIyNCgpOwotKwllbHNlIGlmICghc3RyY21wKHAsICJTSEEyNTYiKSkKLSsJCXJldHVybiBFVlBf c2hhMjU2KCk7Ci0rCWVsc2UgaWYgKCFzdHJjbXAocCwgIlNIQTM4NCIpKQotKwkJcmV0dXJuIEVW UF9zaGEzODQoKTsKLSsJZWxzZSBpZiAoIXN0cmNtcChwLCAiU0hBNTEyIikpCi0rCQlyZXR1cm4g RVZQX3NoYTUxMigpOwotKwllbHNlCi0rCQlyZXR1cm4gTlVMTDsKLSsJfQotKwotK3N0YXRpYyBp bnQgbG9va3VwX2N1cnZlMihjaGFyICpjbmFtZSkKLSsJewotKwljaGFyICpwOwotKwlwID0gc3Ry Y2hyKGNuYW1lLCAnXScpOwotKwlpZiAoIXApCi0rCQl7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIlBh cnNlIGVycm9yOiBtaXNzaW5nIF1cbiIpOwotKwkJcmV0dXJuIE5JRF91bmRlZjsKLSsJCX0KLSsJ KnAgPSAwOwotKwotKwlpZiAoIXN0cmNtcChjbmFtZSwgIkItMTYzIikpCi0rCQlyZXR1cm4gTklE X3NlY3QxNjNyMjsKLSsJaWYgKCFzdHJjbXAoY25hbWUsICJCLTIzMyIpKQotKwkJcmV0dXJuIE5J RF9zZWN0MjMzcjE7Ci0rCWlmICghc3RyY21wKGNuYW1lLCAiQi0yODMiKSkKLSsJCXJldHVybiBO SURfc2VjdDI4M3IxOwotKwlpZiAoIXN0cmNtcChjbmFtZSwgIkItNDA5IikpCi0rCQlyZXR1cm4g TklEX3NlY3Q0MDlyMTsKLSsJaWYgKCFzdHJjbXAoY25hbWUsICJCLTU3MSIpKQotKwkJcmV0dXJu IE5JRF9zZWN0NTcxcjE7Ci0rCWlmICghc3RyY21wKGNuYW1lLCAiSy0xNjMiKSkKLSsJCXJldHVy biBOSURfc2VjdDE2M2sxOwotKwlpZiAoIXN0cmNtcChjbmFtZSwgIkstMjMzIikpCi0rCQlyZXR1 cm4gTklEX3NlY3QyMzNrMTsKLSsJaWYgKCFzdHJjbXAoY25hbWUsICJLLTI4MyIpKQotKwkJcmV0 dXJuIE5JRF9zZWN0MjgzazE7Ci0rCWlmICghc3RyY21wKGNuYW1lLCAiSy00MDkiKSkKLSsJCXJl dHVybiBOSURfc2VjdDQwOWsxOwotKwlpZiAoIXN0cmNtcChjbmFtZSwgIkstNTcxIikpCi0rCQly ZXR1cm4gTklEX3NlY3Q1NzFrMTsKLSsJaWYgKCFzdHJjbXAoY25hbWUsICJQLTE5MiIpKQotKwkJ cmV0dXJuIE5JRF9YOV82Ml9wcmltZTE5MnYxOwotKwlpZiAoIXN0cmNtcChjbmFtZSwgIlAtMjI0 IikpCi0rCQlyZXR1cm4gTklEX3NlY3AyMjRyMTsKLSsJaWYgKCFzdHJjbXAoY25hbWUsICJQLTI1 NiIpKQotKwkJcmV0dXJuIE5JRF9YOV82Ml9wcmltZTI1NnYxOwotKwlpZiAoIXN0cmNtcChjbmFt ZSwgIlAtMzg0IikpCi0rCQlyZXR1cm4gTklEX3NlY3AzODRyMTsKLSsJaWYgKCFzdHJjbXAoY25h bWUsICJQLTUyMSIpKQotKwkJcmV0dXJuIE5JRF9zZWNwNTIxcjE7Ci0rCi0rCWZwcmludGYoc3Rk ZXJyLCAiVW5rbm93biBDdXJ2ZSBuYW1lICVzXG4iLCBjbmFtZSk7Ci0rCXJldHVybiBOSURfdW5k ZWY7Ci0rCX0KLSsKLStzdGF0aWMgaW50IGxvb2t1cF9jdXJ2ZShjaGFyICpjbmFtZSkKLSsJewot KwljaGFyICpwOwotKwlwID0gc3RyY2hyKGNuYW1lLCAnOicpOwotKwlpZiAoIXApCi0rCQl7Ci0r CQlmcHJpbnRmKHN0ZGVyciwgIlBhcnNlIGVycm9yOiBtaXNzaW5nIDpcbiIpOwotKwkJcmV0dXJu IE5JRF91bmRlZjsKLSsJCX0KLSsJY25hbWUgPSBwICsgMTsKLSsJd2hpbGUoaXNzcGFjZSgqY25h bWUpKQotKwkJY25hbWUrKzsKLSsJcmV0dXJuIGxvb2t1cF9jdXJ2ZTIoY25hbWUpOwotKwl9Ci0r Ci0rc3RhdGljIEVDX1BPSU5UICptYWtlX3BlZXIoRUNfR1JPVVAgKmdyb3VwLCBCSUdOVU0gKngs IEJJR05VTSAqeSkKLSsJewotKwlFQ19QT0lOVCAqcGVlcjsKLSsJaW50IHJ2OwotKwlCTl9DVFgg KmM7Ci0rCXBlZXIgPSBFQ19QT0lOVF9uZXcoZ3JvdXApOwotKwlpZiAoIXBlZXIpCi0rCQlyZXR1 cm4gTlVMTDsKLSsJYyA9IEJOX0NUWF9uZXcoKTsKLSsJaWYgKEVDX01FVEhPRF9nZXRfZmllbGRf dHlwZShFQ19HUk9VUF9tZXRob2Rfb2YoZ3JvdXApKQotKwkJPT0gTklEX1g5XzYyX3ByaW1lX2Zp ZWxkKQotKwkJcnYgPSBFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwg cGVlciwgeCwgeSwgYyk7Ci0rCWVsc2UKLSsjaWZkZWYgT1BFTlNTTF9OT19FQzJNCi0rCQl7Ci0r CQlmcHJpbnRmKHN0ZGVyciwgIkVSUk9SOiBHRjJtIG5vdCBzdXBwb3J0ZWRcbiIpOwotKwkJZXhp dCgxKTsKLSsJCX0KLSsjZWxzZQotKwkJcnYgPSBFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5h dGVzX0dGMm0oZ3JvdXAsIHBlZXIsIHgsIHksIGMpOwotKyNlbmRpZgotKwotKwlCTl9DVFhfZnJl ZShjKTsKLSsJaWYgKHJ2KQotKwkJcmV0dXJuIHBlZXI7Ci0rCUVDX1BPSU5UX2ZyZWUocGVlcik7 Ci0rCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rc3RhdGljIGludCBlY19wcmludF9rZXkoRklMRSAq b3V0LCBFQ19LRVkgKmtleSwgaW50IGFkZF9lLCBpbnQgZXhvdXQpCi0rCXsKLSsJY29uc3QgRUNf UE9JTlQgKnB0OwotKwljb25zdCBFQ19HUk9VUCAqZ3JwOwotKwljb25zdCBFQ19NRVRIT0QgKm1l dGg7Ci0rCWludCBydjsKLSsJQklHTlVNICp0eCwgKnR5OwotKwljb25zdCBCSUdOVU0gKmQgPSBO VUxMOwotKwlCTl9DVFggKmN0eDsKLSsJY3R4ID0gQk5fQ1RYX25ldygpOwotKwlpZiAoIWN0eCkK LSsJCXJldHVybiAwOwotKwl0eCA9IEJOX0NUWF9nZXQoY3R4KTsKLSsJdHkgPSBCTl9DVFhfZ2V0 KGN0eCk7Ci0rCWlmICghdHggfHwgIXR5KQotKwkJcmV0dXJuIDA7Ci0rCWdycCA9IEVDX0tFWV9n ZXQwX2dyb3VwKGtleSk7Ci0rCXB0ID0gRUNfS0VZX2dldDBfcHVibGljX2tleShrZXkpOwotKwlp ZiAoZXhvdXQpCi0rCQlkID0gRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXkoa2V5KTsKLSsJbWV0aCA9 IEVDX0dST1VQX21ldGhvZF9vZihncnApOwotKwlpZiAoRUNfTUVUSE9EX2dldF9maWVsZF90eXBl KG1ldGgpID09IE5JRF9YOV82Ml9wcmltZV9maWVsZCkKLSsJCXJ2ID0gRUNfUE9JTlRfZ2V0X2Fm ZmluZV9jb29yZGluYXRlc19HRnAoZ3JwLCBwdCwgdHgsIHR5LCBjdHgpOwotKwllbHNlCi0rI2lm ZGVmIE9QRU5TU0xfTk9fRUMyTQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJFUlJPUjogR0Yy bSBub3Qgc3VwcG9ydGVkXG4iKTsKLSsJCWV4aXQoMSk7Ci0rCQl9Ci0rI2Vsc2UKLSsJCXJ2ID0g RUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRlc19HRjJtKGdycCwgcHQsIHR4LCB0eSwgY3R4 KTsKLSsjZW5kaWYKLSsKLSsJaWYgKGFkZF9lKQotKwkJewotKwkJZG9fYm5fcHJpbnRfbmFtZShv dXQsICJRZUlVVHgiLCB0eCk7Ci0rCQlkb19ibl9wcmludF9uYW1lKG91dCwgIlFlSVVUeSIsIHR5 KTsKLSsJCWlmIChkKQotKwkJCWRvX2JuX3ByaW50X25hbWUob3V0LCAiUWVJVVRkIiwgZCk7Ci0r CQl9Ci0rCWVsc2UKLSsJCXsKLSsJCWRvX2JuX3ByaW50X25hbWUob3V0LCAiUUlVVHgiLCB0eCk7 Ci0rCQlkb19ibl9wcmludF9uYW1lKG91dCwgIlFJVVR5IiwgdHkpOwotKwkJaWYgKGQpCi0rCQkJ ZG9fYm5fcHJpbnRfbmFtZShvdXQsICJRSVVUZCIsIGQpOwotKwkJfQotKwotKwlCTl9DVFhfZnJl ZShjdHgpOwotKwotKwlyZXR1cm4gcnY7Ci0rCi0rCX0KLSsKLStzdGF0aWMgdm9pZCBlY19vdXRw dXRfWmhhc2goRklMRSAqb3V0LCBpbnQgZXhvdXQsIEVDX0dST1VQICpncm91cCwKLSsJCQlCSUdO VU0gKml4LCBCSUdOVU0gKml5LCBCSUdOVU0gKmlkLCBCSUdOVU0gKmN4LAotKwkJCUJJR05VTSAq Y3ksIGNvbnN0IEVWUF9NRCAqbWQsCi0rCQkJCXVuc2lnbmVkIGNoYXIgKnJoYXNoLCBzaXplX3Qg cmhhc2hsZW4pCi0rCXsKLSsJRUNfS0VZICplYyA9IE5VTEw7Ci0rCUVDX1BPSU5UICpwZWVya2V5 ID0gTlVMTDsKLSsJdW5zaWduZWQgY2hhciAqWjsKLSsJdW5zaWduZWQgY2hhciBjaGFzaFtFVlBf TUFYX01EX1NJWkVdOwotKwlpbnQgWmxlbjsKLSsJZWMgPSBFQ19LRVlfbmV3KCk7Ci0rCUVDX0tF WV9zZXRfZmxhZ3MoZWMsIEVDX0ZMQUdfQ09GQUNUT1JfRUNESCk7Ci0rCUVDX0tFWV9zZXRfZ3Jv dXAoZWMsIGdyb3VwKTsKLSsJcGVlcmtleSA9IG1ha2VfcGVlcihncm91cCwgY3gsIGN5KTsKLSsJ aWYgKHJoYXNoID09IE5VTEwpCi0rCQl7Ci0rCQlpZiAobWQpCi0rCQkJcmhhc2hsZW4gPSBNX0VW UF9NRF9zaXplKG1kKTsKLSsJCUVDX0tFWV9nZW5lcmF0ZV9rZXkoZWMpOwotKwkJZWNfcHJpbnRf a2V5KG91dCwgZWMsIG1kID8gMSA6IDAsIGV4b3V0KTsKLSsJCX0KLSsJZWxzZQotKwkJewotKwkJ RUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlcyhlYywgaXgsIGl5KTsKLSsJ CUVDX0tFWV9zZXRfcHJpdmF0ZV9rZXkoZWMsIGlkKTsKLSsJCX0KLSsJWmxlbiA9IChFQ19HUk9V UF9nZXRfZGVncmVlKGdyb3VwKSArIDcpLzg7Ci0rCVogPSBPUEVOU1NMX21hbGxvYyhabGVuKTsK LSsJaWYgKCFaKQotKwkJZXhpdCgxKTsKLSsJRUNESF9jb21wdXRlX2tleShaLCBabGVuLCBwZWVy a2V5LCBlYywgMCk7Ci0rCWlmIChtZCkKLSsJCXsKLSsJCWlmIChleG91dCkKLSsJCQlPdXRwdXRW YWx1ZSgiWiIsIFosIFpsZW4sIG91dCwgMCk7Ci0rCQlGSVBTX2RpZ2VzdChaLCBabGVuLCBjaGFz aCwgTlVMTCwgbWQpOwotKwkJT3V0cHV0VmFsdWUocmhhc2ggPyAiSVVUSGFzaFpaIiA6ICJIYXNo WloiLAotKwkJCQkJCWNoYXNoLCByaGFzaGxlbiwgb3V0LCAwKTsKLSsJCWlmIChyaGFzaCkKLSsJ CQl7Ci0rCQkJZnByaW50ZihvdXQsICJSZXN1bHQgPSAlc1xuIiwKLSsJCQkJbWVtY21wKGNoYXNo LCByaGFzaCwgcmhhc2hsZW4pID8gIkYiIDogIlAiKTsKLSsJCQl9Ci0rCQl9Ci0rCWVsc2UKLSsJ CU91dHB1dFZhbHVlKCJaSVVUIiwgWiwgWmxlbiwgb3V0LCAwKTsKLSsJT1BFTlNTTF9jbGVhbnNl KFosIFpsZW4pOwotKwlPUEVOU1NMX2ZyZWUoWik7Ci0rCUVDX0tFWV9mcmVlKGVjKTsKLSsJRUNf UE9JTlRfZnJlZShwZWVya2V5KTsKLSsJfQotKwkJCi0rI2lmZGVmIEZJUFNfQUxHVlMKLStpbnQg Zmlwc19lY2RodnNfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rI2Vsc2UKLStpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rI2VuZGlmCi0rCXsKLSsJY2hhciAqKmFyZ3MgPSBh cmd2ICsgMTsKLSsJaW50IGFyZ24gPSBhcmdjIC0gMTsKLSsJRklMRSAqaW4sICpvdXQ7Ci0rCWNo YXIgYnVmWzIwNDhdLCBsYnVmWzIwNDhdOwotKwl1bnNpZ25lZCBjaGFyICpyaGFzaCA9IE5VTEw7 Ci0rCWxvbmcgcmhhc2hsZW47Ci0rCUJJR05VTSAqY3ggPSBOVUxMLCAqY3kgPSBOVUxMOwotKwlC SUdOVU0gKmlkID0gTlVMTCwgKml4ID0gTlVMTCwgKml5ID0gTlVMTDsKLSsJY29uc3QgRVZQX01E ICptZCA9IE5VTEw7Ci0rCUVDX0dST1VQICpncm91cCA9IE5VTEw7Ci0rCWNoYXIgKmtleXdvcmQg PSBOVUxMLCAqdmFsdWUgPSBOVUxMOwotKwlpbnQgZG9fdmVyaWZ5ID0gLTEsIGV4b3V0ID0gMDsK LSsJaW50IHJ2ID0gMTsKLSsKLSsJaW50IGN1cnZlX25pZHNbNV0gPSB7MCwwLDAsMCwwfTsKLSsJ aW50IHBhcmFtX3NldCA9IC0xOwotKwotKwlmaXBzX2FsZ3Rlc3RfaW5pdCgpOwotKwotKwlpZiAo YXJnbiAmJiAhc3RyY21wKCphcmdzLCAiZWNkaHZlciIpKQotKwkJewotKwkJZG9fdmVyaWZ5ID0g MTsKLSsJCWFyZ3MrKzsKLSsJCWFyZ24tLTsKLSsJCX0KLSsJZWxzZSBpZiAoYXJnbiAmJiAhc3Ry Y21wKCphcmdzLCAiZWNkaGdlbiIpKQotKwkJewotKwkJZG9fdmVyaWZ5ID0gMDsKLSsJCWFyZ3Mr KzsKLSsJCWFyZ24tLTsKLSsJCX0KLSsKLSsJaWYgKGFyZ24gJiYgIXN0cmNtcCgqYXJncywgIi1l eG91dCIpKQotKwkJewotKwkJZXhvdXQgPSAxOwotKwkJYXJncysrOwotKwkJYXJnbi0tOwotKwkJ fQotKwotKwlpZiAoZG9fdmVyaWZ5ID09IC0xKQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsIiVz IFtlY2RodmVyfGVjZGhnZW58XSBbLWV4b3V0XSAoaW5maWxlIG91dGZpbGUpXG4iLGFyZ3ZbMF0p OwotKwkJZXhpdCgxKTsKLSsJCX0KLSsKLSsJaWYgKGFyZ24gPT0gMikKLSsJCXsKLSsJCWluID0g Zm9wZW4oKmFyZ3MsICJyIik7Ci0rCQlpZiAoIWluKQotKwkJCXsKLSsJCQlmcHJpbnRmKHN0ZGVy ciwgIkVycm9yIG9wZW5pbmcgaW5wdXQgZmlsZVxuIik7Ci0rCQkJZXhpdCgxKTsKLSsJCQl9Ci0r CQlvdXQgPSBmb3BlbihhcmdzWzFdLCAidyIpOwotKwkJaWYgKCFvdXQpCi0rCQkJewotKwkJCWZw cmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBvdXRwdXQgZmlsZVxuIik7Ci0rCQkJZXhpdCgx KTsKLSsJCQl9Ci0rCQl9Ci0rCWVsc2UgaWYgKGFyZ24gPT0gMCkKLSsJCXsKLSsJCWluID0gc3Rk aW47Ci0rCQlvdXQgPSBzdGRvdXQ7Ci0rCQl9Ci0rCWVsc2UKLSsJCXsKLSsJCWZwcmludGYoc3Rk ZXJyLCIlcyBbZGh2ZXJ8ZGhnZW58XSBbLWV4b3V0XSAoaW5maWxlIG91dGZpbGUpXG4iLGFyZ3Zb MF0pOwotKwkJZXhpdCgxKTsKLSsJCX0KLSsKLSsJd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1 ZiksIGluKSAhPSBOVUxMKQotKwkJewotKwkJZnB1dHMoYnVmLCBvdXQpOwotKwkJaWYgKGJ1Zlsw XSA9PSAnWycgJiYgYnVmWzFdID09ICdFJykKLSsJCQl7Ci0rCQkJaW50IGMgPSBidWZbMl07Ci0r CQkJaWYgKGMgPCAnQScgfHwgYyA+ICdFJykKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQlw YXJhbV9zZXQgPSBjIC0gJ0EnOwotKwkJCS8qIElmIGp1c3QgW0U/XSB0aGVuIGluaXRpYWwgcGFy YW1zZXQgKi8KLSsJCQlpZiAoYnVmWzNdID09ICddJykKLSsJCQkJY29udGludWU7Ci0rCQkJaWYg KGdyb3VwKQotKwkJCQlFQ19HUk9VUF9mcmVlKGdyb3VwKTsKLSsJCQlncm91cCA9IEVDX0dST1VQ X25ld19ieV9jdXJ2ZV9uYW1lKGN1cnZlX25pZHNbYyAtICdBJ10pOwotKwkJCX0KLSsJCWlmIChz dHJsZW4oYnVmKSA+IDEwICYmICFzdHJuY21wKGJ1ZiwgIltDdXJ2ZSIsIDYpKQotKwkJCXsKLSsJ CQlpbnQgbmlkOwotKwkJCWlmIChwYXJhbV9zZXQgPT0gLTEpCi0rCQkJCWdvdG8gcGFyc2VfZXJy b3I7Ci0rCQkJbmlkID0gbG9va3VwX2N1cnZlKGJ1Zik7Ci0rCQkJaWYgKG5pZCA9PSBOSURfdW5k ZWYpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJY3VydmVfbmlkc1twYXJhbV9zZXRdID0g bmlkOwotKwkJCX0KLSsKLSsJCWlmIChzdHJsZW4oYnVmKSA+IDQgJiYgYnVmWzBdID09ICdbJyAm JiBidWZbMl0gPT0gJy0nKQotKwkJCXsKLSsJCQlpbnQgbmlkID0gbG9va3VwX2N1cnZlMihidWYg KyAxKTsKLSsJCQlpZiAobmlkID09IE5JRF91bmRlZikKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsK LSsJCQlpZiAoZ3JvdXApCi0rCQkJCUVDX0dST1VQX2ZyZWUoZ3JvdXApOwotKwkJCWdyb3VwID0g RUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWUobmlkKTsKLSsJCQlpZiAoIWdyb3VwKQotKwkJCQl7 Ci0rCQkJCWZwcmludGYoc3RkZXJyLCAiRVJST1I6IHVuc3VwcG9ydGVkIGN1cnZlICVzXG4iLCBi dWYgKyAxKTsKLSsJCQkJcmV0dXJuIDE7Ci0rCQkJCX0KLSsJCQl9Ci0rCi0rCQlpZiAoc3RybGVu KGJ1ZikgPiA2ICYmICFzdHJuY21wKGJ1ZiwgIltFIiwgMikpCi0rCQkJewotKwkJCW1kID0gZXBh cnNlX21kKGJ1Zik7Ci0rCQkJaWYgKG1kID09IE5VTEwpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7 Ci0rCQkJY29udGludWU7Ci0rCQkJfQotKwkJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFs dWUsIGxidWYsIGJ1ZikpCi0rCQkJY29udGludWU7Ci0rCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAi UWVDQVZTeCIpIHx8ICFzdHJjbXAoa2V5d29yZCwgIlFDQVZTeCIpKQotKwkJCXsKLSsJCQlpZiAo IWRvX2hleDJibigmY3gsIHZhbHVlKSkKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQl9Ci0r CQllbHNlIGlmICghc3RyY21wKGtleXdvcmQsICJRZUNBVlN5IikgfHwgIXN0cmNtcChrZXl3b3Jk LCAiUUNBVlN5IikpCi0rCQkJewotKwkJCWlmICghZG9faGV4MmJuKCZjeSwgdmFsdWUpKQotKwkJ CQlnb3RvIHBhcnNlX2Vycm9yOwotKwkJCWlmIChkb192ZXJpZnkgPT0gMCkKLSsJCQkJZWNfb3V0 cHV0X1poYXNoKG91dCwgZXhvdXQsIGdyb3VwLAotKwkJCQkJCU5VTEwsIE5VTEwsIE5VTEwsCi0r CQkJCQkJY3gsIGN5LCBtZCwgcmhhc2gsIHJoYXNobGVuKTsKLSsJCQl9Ci0rCQllbHNlIGlmICgh c3RyY21wKGtleXdvcmQsICJkZUlVVCIpKQotKwkJCXsKLSsJCQlpZiAoIWRvX2hleDJibigmaWQs IHZhbHVlKSkKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQl9Ci0rCQllbHNlIGlmICghc3Ry Y21wKGtleXdvcmQsICJRZUlVVHgiKSkKLSsJCQl7Ci0rCQkJaWYgKCFkb19oZXgyYm4oJml4LCB2 YWx1ZSkpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0cmNt cChrZXl3b3JkLCAiUWVJVVR5IikpCi0rCQkJewotKwkJCWlmICghZG9faGV4MmJuKCZpeSwgdmFs dWUpKQotKwkJCQlnb3RvIHBhcnNlX2Vycm9yOwotKwkJCX0KLSsJCWVsc2UgaWYgKCFzdHJjbXAo a2V5d29yZCwgIkNBVlNIYXNoWloiKSkKLSsJCQl7Ci0rCQkJaWYgKCFtZCkKLSsJCQkJZ290byBw YXJzZV9lcnJvcjsKLSsJCQlyaGFzaCA9IGhleDJiaW5fbSh2YWx1ZSwgJnJoYXNobGVuKTsKLSsJ CQlpZiAoIXJoYXNoIHx8IHJoYXNobGVuICE9IE1fRVZQX01EX3NpemUobWQpKQotKwkJCQlnb3Rv IHBhcnNlX2Vycm9yOwotKwkJCWVjX291dHB1dF9aaGFzaChvdXQsIGV4b3V0LCBncm91cCwgaXgs IGl5LCBpZCwgY3gsIGN5LAotKwkJCQkJbWQsIHJoYXNoLCByaGFzaGxlbik7Ci0rCQkJfQotKwkJ fQotKwlydiA9IDA7Ci0rCXBhcnNlX2Vycm9yOgotKwlpZiAoaWQpCi0rCQlCTl9mcmVlKGlkKTsK LSsJaWYgKGl4KQotKwkJQk5fZnJlZShpeCk7Ci0rCWlmIChpeSkKLSsJCUJOX2ZyZWUoaXkpOwot KwlpZiAoY3gpCi0rCQlCTl9mcmVlKGN4KTsKLSsJaWYgKGN5KQotKwkJQk5fZnJlZShjeSk7Ci0r CWlmIChncm91cCkKLSsJCUVDX0dST1VQX2ZyZWUoZ3JvdXApOwotKwlpZiAoaW4gJiYgaW4gIT0g c3RkaW4pCi0rCQlmY2xvc2UoaW4pOwotKwlpZiAob3V0ICYmIG91dCAhPSBzdGRvdXQpCi0rCQlm Y2xvc2Uob3V0KTsKLSsJaWYgKHJ2KQotKwkJZnByaW50ZihzdGRlcnIsICJFcnJvciBQYXJzaW5n IHJlcXVlc3QgZmlsZVxuIik7Ci0rCXJldHVybiBydjsKLSsJfQotKwotKyNlbmRpZgotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMWovY3J5cHRvL2ZpcHMvY2F2cy9maXBzX2VjZHNhdnMuYy5maXBzLWVj IG9wZW5zc2wtMS4wLjFqL2NyeXB0by9maXBzL2NhdnMvZmlwc19lY2RzYXZzLmMKLS0tLSBvcGVu c3NsLTEuMC4xai9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfZWNkc2F2cy5jLmZpcHMtZWMJMjAxNC0x MC0xNiAxMzoyNToyMC43MzMxMDkyNTcgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xai9jcnlwdG8v Zmlwcy9jYXZzL2ZpcHNfZWNkc2F2cy5jCTIwMTQtMTAtMTYgMTM6MjU6MjAuNzMzMTA5MjU3ICsw MjAwCi1AQCAtMCwwICsxLDUzMyBAQAotKy8qIGZpcHMvZWNkc2EvZmlwc19lY2RzYXZzLmMgKi8K LSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBm b3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwotKy8qID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICog Q29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2Vy dmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsg KgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg YWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFs bCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp cwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdt ZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5 IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xr aXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9w ZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8K LSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0 ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5v cmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkg bm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIg aW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBv ZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFu eSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25v d2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NM IFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQot KyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM SU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05U UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK LSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig QlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklM SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJ U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg QURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotKyAqLwotKwotKyNkZWZpbmUgT1BFTlNTTF9GSVBTQVBJCi0rI2luY2x1ZGUgPG9w ZW5zc2wvb3BlbnNzbGNvbmYuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsKLSsjaWZuZGVmIE9Q RU5TU0xfRklQUwotKwotK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICAg IHByaW50ZigiTm8gRklQUyBFQ0RTQSBzdXBwb3J0XG4iKTsKLSsgICAgcmV0dXJuKDApOwotK30K LSsjZWxzZQotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsj aW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2VjZHNhLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1 ZGUgImZpcHNfdXRsLmgiCi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPgotKwotKwot K3N0YXRpYyBpbnQgZWxvb2t1cF9jdXJ2ZShjaGFyICppbiwgY2hhciAqY3VydmVfbmFtZSwgY29u c3QgRVZQX01EICoqcG1kKQotKwl7Ci0rCWNoYXIgKmNuYW1lLCAqcDsKLSsJLyogQ29weSBidWZm ZXIgYXMgd2Ugd2lsbCBjaGFuZ2UgaXQgKi8KLSsJc3RyY3B5KGN1cnZlX25hbWUsIGluKTsKLSsJ Y25hbWUgPSBjdXJ2ZV9uYW1lICsgMTsKLSsJcCA9IHN0cmNocihjbmFtZSwgJ10nKTsKLSsJaWYg KCFwKQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJQYXJzZSBlcnJvcjogbWlzc2luZyBdXG4i KTsKLSsJCXJldHVybiBOSURfdW5kZWY7Ci0rCQl9Ci0rCSpwID0gMDsKLSsJcCA9IHN0cmNocihj bmFtZSwgJywnKTsKLSsJaWYgKHApCi0rCQl7Ci0rCQlpZiAoIXBtZCkKLSsJCQl7Ci0rCQkJZnBy aW50ZihzdGRlcnIsICJQYXJzZSBlcnJvcjogdW5leHBlY3RlZCBkaWdlc3RcbiIpOwotKwkJCXJl dHVybiBOSURfdW5kZWY7Ci0rCQkJfQotKwkJKnAgPSAwOwotKwkJcCsrOwotKwotKwkJaWYgKCFz dHJjbXAocCwgIlNIQS0xIikpCi0rCQkJKnBtZCA9IEVWUF9zaGExKCk7Ci0rCQllbHNlIGlmICgh c3RyY21wKHAsICJTSEEtMjI0IikpCi0rCQkJKnBtZCA9IEVWUF9zaGEyMjQoKTsKLSsJCWVsc2Ug aWYgKCFzdHJjbXAocCwgIlNIQS0yNTYiKSkKLSsJCQkqcG1kID0gRVZQX3NoYTI1NigpOwotKwkJ ZWxzZSBpZiAoIXN0cmNtcChwLCAiU0hBLTM4NCIpKQotKwkJCSpwbWQgPSBFVlBfc2hhMzg0KCk7 Ci0rCQllbHNlIGlmICghc3RyY21wKHAsICJTSEEtNTEyIikpCi0rCQkJKnBtZCA9IEVWUF9zaGE1 MTIoKTsKLSsJCWVsc2UKLSsJCQl7Ci0rCQkJZnByaW50ZihzdGRlcnIsICJVbmtub3duIGRpZ2Vz dCAlc1xuIiwgcCk7Ci0rCQkJcmV0dXJuIE5JRF91bmRlZjsKLSsJCQl9Ci0rCQl9Ci0rCWVsc2Ug aWYocG1kKQotKwkJKnBtZCA9IEVWUF9zaGExKCk7Ci0rCi0rCWlmICghc3RyY21wKGNuYW1lLCAi Qi0xNjMiKSkKLSsJCXJldHVybiBOSURfc2VjdDE2M3IyOwotKwlpZiAoIXN0cmNtcChjbmFtZSwg IkItMjMzIikpCi0rCQlyZXR1cm4gTklEX3NlY3QyMzNyMTsKLSsJaWYgKCFzdHJjbXAoY25hbWUs ICJCLTI4MyIpKQotKwkJcmV0dXJuIE5JRF9zZWN0MjgzcjE7Ci0rCWlmICghc3RyY21wKGNuYW1l LCAiQi00MDkiKSkKLSsJCXJldHVybiBOSURfc2VjdDQwOXIxOwotKwlpZiAoIXN0cmNtcChjbmFt ZSwgIkItNTcxIikpCi0rCQlyZXR1cm4gTklEX3NlY3Q1NzFyMTsKLSsJaWYgKCFzdHJjbXAoY25h bWUsICJLLTE2MyIpKQotKwkJcmV0dXJuIE5JRF9zZWN0MTYzazE7Ci0rCWlmICghc3RyY21wKGNu YW1lLCAiSy0yMzMiKSkKLSsJCXJldHVybiBOSURfc2VjdDIzM2sxOwotKwlpZiAoIXN0cmNtcChj bmFtZSwgIkstMjgzIikpCi0rCQlyZXR1cm4gTklEX3NlY3QyODNrMTsKLSsJaWYgKCFzdHJjbXAo Y25hbWUsICJLLTQwOSIpKQotKwkJcmV0dXJuIE5JRF9zZWN0NDA5azE7Ci0rCWlmICghc3RyY21w KGNuYW1lLCAiSy01NzEiKSkKLSsJCXJldHVybiBOSURfc2VjdDU3MWsxOwotKwlpZiAoIXN0cmNt cChjbmFtZSwgIlAtMTkyIikpCi0rCQlyZXR1cm4gTklEX1g5XzYyX3ByaW1lMTkydjE7Ci0rCWlm ICghc3RyY21wKGNuYW1lLCAiUC0yMjQiKSkKLSsJCXJldHVybiBOSURfc2VjcDIyNHIxOwotKwlp ZiAoIXN0cmNtcChjbmFtZSwgIlAtMjU2IikpCi0rCQlyZXR1cm4gTklEX1g5XzYyX3ByaW1lMjU2 djE7Ci0rCWlmICghc3RyY21wKGNuYW1lLCAiUC0zODQiKSkKLSsJCXJldHVybiBOSURfc2VjcDM4 NHIxOwotKwlpZiAoIXN0cmNtcChjbmFtZSwgIlAtNTIxIikpCi0rCQlyZXR1cm4gTklEX3NlY3A1 MjFyMTsKLSsKLSsJZnByaW50ZihzdGRlcnIsICJVbmtub3duIEN1cnZlIG5hbWUgJXNcbiIsIGNu YW1lKTsKLSsJcmV0dXJuIE5JRF91bmRlZjsKLSsJfQotKwotK3N0YXRpYyBpbnQgZWNfZ2V0X3B1 YmtleShFQ19LRVkgKmtleSwgQklHTlVNICp4LCBCSUdOVU0gKnkpCi0rCXsKLSsJY29uc3QgRUNf UE9JTlQgKnB0OwotKwljb25zdCBFQ19HUk9VUCAqZ3JwOwotKwljb25zdCBFQ19NRVRIT0QgKm1l dGg7Ci0rCWludCBydjsKLSsJQk5fQ1RYICpjdHg7Ci0rCWN0eCA9IEJOX0NUWF9uZXcoKTsKLSsJ aWYgKCFjdHgpCi0rCQlyZXR1cm4gMDsKLSsJZ3JwID0gRUNfS0VZX2dldDBfZ3JvdXAoa2V5KTsK LSsJcHQgPSBFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5KGtleSk7Ci0rCW1ldGggPSBFQ19HUk9VUF9t ZXRob2Rfb2YoZ3JwKTsKLSsJaWYgKEVDX01FVEhPRF9nZXRfZmllbGRfdHlwZShtZXRoKSA9PSBO SURfWDlfNjJfcHJpbWVfZmllbGQpCi0rCQlydiA9IEVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRp bmF0ZXNfR0ZwKGdycCwgcHQsIHgsIHksIGN0eCk7Ci0rCWVsc2UKLSsjaWZkZWYgT1BFTlNTTF9O T19FQzJNCi0rCQl7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIkVSUk9SOiBHRjJtIG5vdCBzdXBwb3J0 ZWRcbiIpOwotKwkJZXhpdCgxKTsKLSsJCX0KLSsjZWxzZQotKwkJcnYgPSBFQ19QT0lOVF9nZXRf YWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm0oZ3JwLCBwdCwgeCwgeSwgY3R4KTsKLSsjZW5kaWYKLSsK LSsJQk5fQ1RYX2ZyZWUoY3R4KTsKLSsKLSsJcmV0dXJuIHJ2OwotKwotKwl9Ci0rCi0rc3RhdGlj IGludCBLZXlQYWlyKEZJTEUgKmluLCBGSUxFICpvdXQpCi0rCXsKLSsJY2hhciBidWZbMjA0OF0s IGxidWZbMjA0OF07Ci0rCWNoYXIgKmtleXdvcmQsICp2YWx1ZTsKLSsJaW50IGN1cnZlX25pZCA9 IE5JRF91bmRlZjsKLSsJaW50IGksIGNvdW50OwotKwlCSUdOVU0gKlF4ID0gTlVMTCwgKlF5ID0g TlVMTDsKLSsJY29uc3QgQklHTlVNICpkID0gTlVMTDsKLSsJRUNfS0VZICprZXkgPSBOVUxMOwot KwlReCA9IEJOX25ldygpOwotKwlReSA9IEJOX25ldygpOwotKwl3aGlsZShmZ2V0cyhidWYsIHNp emVvZiBidWYsIGluKSAhPSBOVUxMKQotKwkJewotKwkJaWYgKCpidWYgPT0gJ1snICYmIGJ1Zlsy XSA9PSAnLScpCi0rCQkJewotKwkJCWlmIChidWZbMl0gPT0gJy0nKQotKwkJCWN1cnZlX25pZCA9 IGVsb29rdXBfY3VydmUoYnVmLCBsYnVmLCBOVUxMKTsKLSsJCQlmcHV0cyhidWYsIG91dCk7Ci0r CQkJY29udGludWU7Ci0rCQkJfQotKwkJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUs IGxidWYsIGJ1ZikpCi0rCQkJewotKwkJCWZwdXRzKGJ1Ziwgb3V0KTsKLSsJCQljb250aW51ZTsK LSsJCQl9Ci0rCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiTiIpKQotKwkJCXsKLSsJCQljb3VudCA9 IGF0b2kodmFsdWUpOwotKwotKwkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotKwkJCQl7 Ci0rCi0rCQkJCWtleSA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShjdXJ2ZV9uaWQpOwotKwkJ CQlpZiAoIUVDX0tFWV9nZW5lcmF0ZV9rZXkoa2V5KSkKLSsJCQkJCXsKLSsJCQkJCWZwcmludGYo c3RkZXJyLCAiRXJyb3IgZ2VuZXJhdGluZyBrZXlcbiIpOwotKwkJCQkJcmV0dXJuIDA7Ci0rCQkJ CQl9Ci0rCi0rCQkJCWlmICghZWNfZ2V0X3B1YmtleShrZXksIFF4LCBReSkpCi0rCQkJCQl7Ci0r CQkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGdldHRpbmcgcHVibGljIGtleVxuIik7Ci0rCQkJ CQlyZXR1cm4gMDsKLSsJCQkJCX0KLSsKLSsJCQkJZCA9IEVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5 KGtleSk7Ci0rCi0rCQkJCWRvX2JuX3ByaW50X25hbWUob3V0LCAiZCIsIGQpOwotKwkJCQlkb19i bl9wcmludF9uYW1lKG91dCwgIlF4IiwgUXgpOwotKwkJCQlkb19ibl9wcmludF9uYW1lKG91dCwg IlF5IiwgUXkpOwotKwkJCQlmcHV0cyhSRVNQX0VPTCwgb3V0KTsKLSsJCQkJRUNfS0VZX2ZyZWUo a2V5KTsKLSsKLSsJCQkJfQotKwotKwkJCX0KLSsKLSsJCX0KLSsJQk5fZnJlZShReCk7Ci0rCUJO X2ZyZWUoUXkpOwotKwlyZXR1cm4gMTsKLSsJfQotKwotK3N0YXRpYyBpbnQgUEtWKEZJTEUgKmlu LCBGSUxFICpvdXQpCi0rCXsKLSsKLSsJY2hhciBidWZbMjA0OF0sIGxidWZbMjA0OF07Ci0rCWNo YXIgKmtleXdvcmQsICp2YWx1ZTsKLSsJaW50IGN1cnZlX25pZCA9IE5JRF91bmRlZjsKLSsJQklH TlVNICpReCA9IE5VTEwsICpReSA9IE5VTEw7Ci0rCUVDX0tFWSAqa2V5ID0gTlVMTDsKLSsJd2hp bGUoZmdldHMoYnVmLCBzaXplb2YgYnVmLCBpbikgIT0gTlVMTCkKLSsJCXsKLSsJCWZwdXRzKGJ1 Ziwgb3V0KTsKLSsJCWlmICgqYnVmID09ICdbJyAmJiBidWZbMl0gPT0gJy0nKQotKwkJCXsKLSsJ CQljdXJ2ZV9uaWQgPSBlbG9va3VwX2N1cnZlKGJ1ZiwgbGJ1ZiwgTlVMTCk7Ci0rCQkJaWYgKGN1 cnZlX25pZCA9PSBOSURfdW5kZWYpCi0rCQkJCXJldHVybiAwOwotKwkJCQkKLSsJCQl9Ci0rCQlp ZiAoIXBhcnNlX2xpbmUoJmtleXdvcmQsICZ2YWx1ZSwgbGJ1ZiwgYnVmKSkKLSsJCQljb250aW51 ZTsKLSsJCWlmICghc3RyY21wKGtleXdvcmQsICJReCIpKQotKwkJCXsKLSsJCQlpZiAoIWRvX2hl eDJibigmUXgsIHZhbHVlKSkKLSsJCQkJewotKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQg UXggdmFsdWVcbiIpOwotKwkJCQlyZXR1cm4gMDsKLSsJCQkJfQotKwkJCX0KLSsJCWlmICghc3Ry Y21wKGtleXdvcmQsICJReSIpKQotKwkJCXsKLSsJCQlpbnQgcnY7Ci0rCQkJaWYgKCFkb19oZXgy Ym4oJlF5LCB2YWx1ZSkpCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFF5 IHZhbHVlXG4iKTsKLSsJCQkJcmV0dXJuIDA7Ci0rCQkJCX0KLSsJCQlrZXkgPSBFQ19LRVlfbmV3 X2J5X2N1cnZlX25hbWUoY3VydmVfbmlkKTsKLSsJCQlub19lcnIgPSAxOwotKwkJCXJ2ID0gRUNf S0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlcyhrZXksIFF4LCBReSk7Ci0rCQkJ bm9fZXJyID0gMDsKLSsJCQlFQ19LRVlfZnJlZShrZXkpOwotKwkJCWZwcmludGYob3V0LCAiUmVz dWx0ID0gJXMiIFJFU1BfRU9MLCBydiA/ICJQIjoiRiIpOwotKwkJCX0KLSsKLSsJCX0KLSsJQk5f ZnJlZShReCk7Ci0rCUJOX2ZyZWUoUXkpOwotKwlyZXR1cm4gMTsKLSsJfQotKwotK3N0YXRpYyBp bnQgU2lnR2VuKEZJTEUgKmluLCBGSUxFICpvdXQpCi0rCXsKLSsJY2hhciBidWZbMjA0OF0sIGxi dWZbMjA0OF07Ci0rCWNoYXIgKmtleXdvcmQsICp2YWx1ZTsKLSsJdW5zaWduZWQgY2hhciAqbXNn OwotKwlpbnQgY3VydmVfbmlkID0gTklEX3VuZGVmOwotKwlsb25nIG1sZW47Ci0rCUJJR05VTSAq UXggPSBOVUxMLCAqUXkgPSBOVUxMOwotKwlFQ19LRVkgKmtleSA9IE5VTEw7Ci0rCUVDRFNBX1NJ RyAqc2lnID0gTlVMTDsKLSsJY29uc3QgRVZQX01EICpkaWdlc3QgPSBOVUxMOwotKwlReCA9IEJO X25ldygpOwotKwlReSA9IEJOX25ldygpOwotKwl3aGlsZShmZ2V0cyhidWYsIHNpemVvZiBidWYs IGluKSAhPSBOVUxMKQotKwkJewotKwkJZnB1dHMoYnVmLCBvdXQpOwotKwkJaWYgKCpidWYgPT0g J1snKQotKwkJCXsKLSsJCQljdXJ2ZV9uaWQgPSBlbG9va3VwX2N1cnZlKGJ1ZiwgbGJ1ZiwgJmRp Z2VzdCk7Ci0rCQkJaWYgKGN1cnZlX25pZCA9PSBOSURfdW5kZWYpCi0rCQkJCXJldHVybiAwOwot KwkJCX0KLSsJCWlmICghcGFyc2VfbGluZSgma2V5d29yZCwgJnZhbHVlLCBsYnVmLCBidWYpKQot KwkJCWNvbnRpbnVlOwotKwkJaWYgKCFzdHJjbXAoa2V5d29yZCwgIk1zZyIpKQotKwkJCXsKLSsJ CQltc2cgPSBoZXgyYmluX20odmFsdWUsICZtbGVuKTsKLSsJCQlpZiAoIW1zZykKLSsJCQkJewot KwkJCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgTWVzc2FnZVxuIik7Ci0rCQkJCXJldHVybiAw OwotKwkJCQl9Ci0rCi0rCQkJa2V5ID0gRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lKGN1cnZlX25p ZCk7Ci0rCQkJaWYgKCFFQ19LRVlfZ2VuZXJhdGVfa2V5KGtleSkpCi0rCQkJCXsKLSsJCQkJZnBy aW50ZihzdGRlcnIsICJFcnJvciBnZW5lcmF0aW5nIGtleVxuIik7Ci0rCQkJCXJldHVybiAwOwot KwkJCQl9Ci0rCi0rCQkJaWYgKCFlY19nZXRfcHVia2V5KGtleSwgUXgsIFF5KSkKLSsJCQkJewot KwkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGdldHRpbmcgcHVibGljIGtleVxuIik7Ci0rCQkJ CXJldHVybiAwOwotKwkJCQl9Ci0rCi0rCSAgICAJCXNpZyA9IEZJUFNfZWNkc2Ffc2lnbihrZXks IG1zZywgbWxlbiwgZGlnZXN0KTsKLSsKLSsJCQlpZiAoIXNpZykKLSsJCQkJewotKwkJCQlmcHJp bnRmKHN0ZGVyciwgIkVycm9yIHNpZ25pbmcgbWVzc2FnZVxuIik7Ci0rCQkJCXJldHVybiAwOwot KwkJCQl9Ci0rCi0rCQkJZG9fYm5fcHJpbnRfbmFtZShvdXQsICJReCIsIFF4KTsKLSsJCQlkb19i bl9wcmludF9uYW1lKG91dCwgIlF5IiwgUXkpOwotKwkJCWRvX2JuX3ByaW50X25hbWUob3V0LCAi UiIsIHNpZy0+cik7Ci0rCQkJZG9fYm5fcHJpbnRfbmFtZShvdXQsICJTIiwgc2lnLT5zKTsKLSsK LSsJCQlFQ19LRVlfZnJlZShrZXkpOwotKwkJCU9QRU5TU0xfZnJlZShtc2cpOwotKwkJCUZJUFNf ZWNkc2Ffc2lnX2ZyZWUoc2lnKTsKLSsKLSsJCQl9Ci0rCi0rCQl9Ci0rCUJOX2ZyZWUoUXgpOwot KwlCTl9mcmVlKFF5KTsKLSsJcmV0dXJuIDE7Ci0rCX0KLSsKLStzdGF0aWMgaW50IFNpZ1ZlcihG SUxFICppbiwgRklMRSAqb3V0KQotKwl7Ci0rCWNoYXIgYnVmWzIwNDhdLCBsYnVmWzIwNDhdOwot KwljaGFyICprZXl3b3JkLCAqdmFsdWU7Ci0rCXVuc2lnbmVkIGNoYXIgKm1zZyA9IE5VTEw7Ci0r CWludCBjdXJ2ZV9uaWQgPSBOSURfdW5kZWY7Ci0rCWxvbmcgbWxlbjsKLSsJQklHTlVNICpReCA9 IE5VTEwsICpReSA9IE5VTEw7Ci0rCUVDX0tFWSAqa2V5ID0gTlVMTDsKLSsJRUNEU0FfU0lHIHNn LCAqc2lnID0gJnNnOwotKwljb25zdCBFVlBfTUQgKmRpZ2VzdCA9IE5VTEw7Ci0rCXNpZy0+ciA9 IE5VTEw7Ci0rCXNpZy0+cyA9IE5VTEw7Ci0rCXdoaWxlKGZnZXRzKGJ1Ziwgc2l6ZW9mIGJ1Ziwg aW4pICE9IE5VTEwpCi0rCQl7Ci0rCQlmcHV0cyhidWYsIG91dCk7Ci0rCQlpZiAoKmJ1ZiA9PSAn WycpCi0rCQkJewotKwkJCWN1cnZlX25pZCA9IGVsb29rdXBfY3VydmUoYnVmLCBsYnVmLCAmZGln ZXN0KTsKLSsJCQlpZiAoY3VydmVfbmlkID09IE5JRF91bmRlZikKLSsJCQkJcmV0dXJuIDA7Ci0r CQkJfQotKwkJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1ZikpCi0r CQkJY29udGludWU7Ci0rCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiTXNnIikpCi0rCQkJewotKwkJ CW1zZyA9IGhleDJiaW5fbSh2YWx1ZSwgJm1sZW4pOwotKwkJCWlmICghbXNnKQotKwkJCQl7Ci0r CQkJCWZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBNZXNzYWdlXG4iKTsKLSsJCQkJcmV0dXJuIDA7 Ci0rCQkJCX0KLSsJCQl9Ci0rCQkJCi0rCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiUXgiKSkKLSsJ CQl7Ci0rCQkJaWYgKCFkb19oZXgyYm4oJlF4LCB2YWx1ZSkpCi0rCQkJCXsKLSsJCQkJZnByaW50 ZihzdGRlcnIsICJJbnZhbGlkIFF4IHZhbHVlXG4iKTsKLSsJCQkJcmV0dXJuIDA7Ci0rCQkJCX0K LSsJCQl9Ci0rCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiUXkiKSkKLSsJCQl7Ci0rCQkJaWYgKCFk b19oZXgyYm4oJlF5LCB2YWx1ZSkpCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsICJJbnZh bGlkIFF5IHZhbHVlXG4iKTsKLSsJCQkJcmV0dXJuIDA7Ci0rCQkJCX0KLSsJCQl9Ci0rCQlpZiAo IXN0cmNtcChrZXl3b3JkLCAiUiIpKQotKwkJCXsKLSsJCQlpZiAoIWRvX2hleDJibigmc2lnLT5y LCB2YWx1ZSkpCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFIgdmFsdWVc biIpOwotKwkJCQlyZXR1cm4gMDsKLSsJCQkJfQotKwkJCX0KLSsJCWlmICghc3RyY21wKGtleXdv cmQsICJTIikpCi0rCQkJewotKwkJCWludCBydjsKLSsJCQlpZiAoIWRvX2hleDJibigmc2lnLT5z LCB2YWx1ZSkpCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFMgdmFsdWVc biIpOwotKwkJCQlyZXR1cm4gMDsKLSsJCQkJfQotKwkJCWtleSA9IEVDX0tFWV9uZXdfYnlfY3Vy dmVfbmFtZShjdXJ2ZV9uaWQpOwotKwkJCXJ2ID0gRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmlu ZV9jb29yZGluYXRlcyhrZXksIFF4LCBReSk7Ci0rCi0rCQkJaWYgKHJ2ICE9IDEpCi0rCQkJCXsK LSsJCQkJZnByaW50ZihzdGRlcnIsICJFcnJvciBzZXR0aW5nIHB1YmxpYyBrZXlcbiIpOwotKwkJ CQlyZXR1cm4gMDsKLSsJCQkJfQotKwotKwkJCW5vX2VyciA9IDE7Ci0rCSAgICAJCXJ2ID0gRklQ U19lY2RzYV92ZXJpZnkoa2V5LCBtc2csIG1sZW4sIGRpZ2VzdCwgc2lnKTsKLSsJCQlFQ19LRVlf ZnJlZShrZXkpOwotKwkJCWlmIChtc2cpCi0rCQkJCU9QRU5TU0xfZnJlZShtc2cpOwotKwkJCW5v X2VyciA9IDA7Ci0rCi0rCQkJZnByaW50ZihvdXQsICJSZXN1bHQgPSAlcyIgUkVTUF9FT0wsIHJ2 ID8gIlAiOiJGIik7Ci0rCQkJfQotKwotKwkJfQotKwlpZiAoc2lnLT5yKQotKwkJQk5fZnJlZShz aWctPnIpOwotKwlpZiAoc2lnLT5zKQotKwkJQk5fZnJlZShzaWctPnMpOwotKwlpZiAoUXgpCi0r CQlCTl9mcmVlKFF4KTsKLSsJaWYgKFF5KQotKwkJQk5fZnJlZShReSk7Ci0rCXJldHVybiAxOwot Kwl9Ci0rI2lmZGVmIEZJUFNfQUxHVlMKLStpbnQgZmlwc19lY2RzYXZzX21haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQotKyNlbHNlCi0raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQot KyNlbmRpZgotKwl7Ci0rCUZJTEUgKmluID0gTlVMTCwgKm91dCA9IE5VTEw7Ci0rCWNvbnN0IGNo YXIgKmNtZCA9IGFyZ3ZbMV07Ci0rCWludCBydiA9IDA7Ci0rCWZpcHNfYWxndGVzdF9pbml0KCk7 Ci0rCi0rCWlmIChhcmdjID09IDQpCi0rCQl7Ci0rCQlpbiA9IGZvcGVuKGFyZ3ZbMl0sICJyIik7 Ci0rCQlpZiAoIWluKQotKwkJCXsKLSsJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcg aW5wdXQgZmlsZVxuIik7Ci0rCQkJZXhpdCgxKTsKLSsJCQl9Ci0rCQlvdXQgPSBmb3Blbihhcmd2 WzNdLCAidyIpOwotKwkJaWYgKCFvdXQpCi0rCQkJewotKwkJCWZwcmludGYoc3RkZXJyLCAiRXJy b3Igb3BlbmluZyBvdXRwdXQgZmlsZVxuIik7Ci0rCQkJZXhpdCgxKTsKLSsJCQl9Ci0rCQl9Ci0r CWVsc2UgaWYgKGFyZ2MgPT0gMikKLSsJCXsKLSsJCWluID0gc3RkaW47Ci0rCQlvdXQgPSBzdGRv dXQ7Ci0rCQl9Ci0rCi0rCWlmICghY21kKQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJmaXBz X2VjZHNhdnMgW0tleVBhaXJ8UEtWfFNpZ0dlbnxTaWdWZXJdXG4iKTsKLSsJCXJldHVybiAxOwot KwkJfQotKwlpZiAoIXN0cmNtcChjbWQsICJLZXlQYWlyIikpCi0rCQlydiA9IEtleVBhaXIoaW4s IG91dCk7Ci0rCWVsc2UgaWYgKCFzdHJjbXAoY21kLCAiUEtWIikpCi0rCQlydiA9IFBLVihpbiwg b3V0KTsKLSsJZWxzZSBpZiAoIXN0cmNtcChjbWQsICJTaWdWZXIiKSkKLSsJCXJ2ID0gU2lnVmVy KGluLCBvdXQpOwotKwllbHNlIGlmICghc3RyY21wKGNtZCwgIlNpZ0dlbiIpKQotKwkJcnYgPSBT aWdHZW4oaW4sIG91dCk7Ci0rCWVsc2UKLSsJCXsKLSsJCWZwcmludGYoc3RkZXJyLCAiVW5rbm93 biBjb21tYW5kICVzXG4iLCBjbWQpOwotKwkJcmV0dXJuIDE7Ci0rCQl9Ci0rCi0rCWlmIChhcmdj ID09IDQpCi0rCQl7Ci0rCQlmY2xvc2UoaW4pOwotKwkJZmNsb3NlKG91dCk7Ci0rCQl9Ci0rCi0r CWlmIChydiA8PSAwKQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJFcnJvciBydW5uaW5nICVz XG4iLCBjbWQpOwotKwkJcmV0dXJuIDE7Ci0rCQl9Ci0rCi0rCXJldHVybiAwOwotKwl9Ci0rCi0r I2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZmlwcy9maXBzX2VjZGhfc2Vs ZnRlc3QuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9maXBzL2ZpcHNfZWNkaF9zZWxm dGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMWovY3J5cHRvL2ZpcHMvZmlwc19lY2RoX3NlbGZ0ZXN0 LmMuZmlwcy1lYwkyMDE0LTEwLTE2IDEzOjI1OjIwLjczMzEwOTI1NyArMDIwMAotKysrIG9wZW5z c2wtMS4wLjFqL2NyeXB0by9maXBzL2ZpcHNfZWNkaF9zZWxmdGVzdC5jCTIwMTQtMTAtMTYgMTM6 MjU6MjAuNzMzMTA5MjU3ICswMjAwCi1AQCAtMCwwICsxLDI1MiBAQAotKy8qIGZpcHMvZWNkaC9m aXBzX2VjZGhfc2VsZnRlc3QuYyAqLwotKy8qIFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNv biAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAotKyAqIHByb2plY3QgMjAxMS4K LSsgKi8KLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNT TCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAq IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g Ci0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBk aXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRp b25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3Bs YXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8p IgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQ cm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHBy b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3 cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0 Ci0rICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVy aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICog ICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Ig d3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgot KyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWlu IHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0r ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wu b3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NM IFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS Ci0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVu U1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8s IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBP RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YgU1VDSCBEQU1BR0UuCi0rICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKgotKyAqLwotKwotKyNkZWZp bmUgT1BFTlNTTF9GSVBTQVBJCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxv cGVuc3NsL2NyeXB0by5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2VjLmg+Ci0rI2luY2x1ZGUgPG9w ZW5zc2wvZWNkaC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3Bl bnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9ibi5oPgotKwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsKLSsjaW5jbHVkZSAiZmlwc19sb2Ns LmgiCi0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcDI1Nl9xY2F2c3hbXSA9IHsKLSsJ MHg1MiwweGM2LDB4YTUsMHg3NSwweGYzLDB4MDQsMHg5OCwweGIzLDB4MjksMHg2NiwweDBjLDB4 NjIsCi0rCTB4MTgsMHg2MCwweDU1LDB4NDEsMHg1OSwweGQ0LDB4NjAsMHg4NSwweDk5LDB4YzEs MHg1MSwweDEzLAotKwkweDZmLDB4OTcsMHg4NSwweDkzLDB4MzMsMHgzNCwweDA3LDB4NTAKLSt9 OwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHAyNTZfcWNhdnN5W10gPSB7Ci0rCTB4NmYs MHg2OSwweDI0LDB4ZWIsMHhlOSwweDNiLDB4YTcsMHhjYywweDQ3LDB4MTcsMHhhYSwweDNmLAot KwkweDcwLDB4ZmMsMHgxMCwweDczLDB4MGEsMHhjZCwweDIxLDB4ZWUsMHgyOSwweDE5LDB4MWYs MHhhZiwKLSsJMHhiNCwweDFjLDB4MWUsMHhjMiwweDhlLDB4OTcsMHg4MSwweDZlCi0rfTsKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwMjU2X3FpdXR4W10gPSB7Ci0rCTB4NzEsMHg0Niww eDg4LDB4MDgsMHg5MiwweDIxLDB4MWIsMHgxMCwweDIxLDB4NzQsMHhmZiwweDBjLAotKwkweDk0 LDB4ZGUsMHgzNCwweDdjLDB4ODYsMHg3NCwweGJlLDB4NjcsMHg0MSwweDY4LDB4ZDQsMHhjMSwK LSsJMHhlNSwweDc1LDB4NjMsMHg5YywweGE3LDB4NDYsMHg5MywweDZmCi0rfTsKLStzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBwMjU2X3FpdXR5W10gPSB7Ci0rCTB4MzMsMHg0MCwweGE5LDB4 NmEsMHhmNSwweDIwLDB4YjUsMHg5ZSwweGZjLDB4NjAsMHgxYSwweGFlLAotKwkweDNkLDB4Zjgs MHgyMSwweGQyLDB4YTcsMHhjYSwweDUyLDB4MzQsMHhiOSwweDVmLDB4MjcsMHg3NSwKLSsJMHg2 YywweDgxLDB4YmUsMHgzMiwweDRkLDB4YmEsMHhiYiwweGY4Ci0rfTsKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBwMjU2X3FpdXRkW10gPSB7Ci0rCTB4MWEsMHg0OCwweDU1LDB4NmIsMHgx MSwweGJlLDB4OTIsMHhkNCwweDFjLDB4ZDcsMHg0NSwweGMzLAotKwkweDgyLDB4ODEsMHg1MSww eGYxLDB4MjMsMHg0MCwweGI3LDB4ODMsMHhmZCwweDAxLDB4NmQsMHhiYywKLSsJMHhhMSwweDY2 LDB4YWYsMHgwYSwweDAzLDB4MjMsMHhjZCwweGM4Ci0rfTsKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBwMjU2X3ppdXRbXSA9IHsKLSsJMHg3NywweDJhLDB4MWUsMHgzNywweGVlLDB4ZTYs MHg1MSwweDAyLDB4NzEsMHg0MCwweGY4LDB4NmEsCi0rCTB4MzYsMHhmOCwweDY1LDB4NjEsMHgy YiwweDE4LDB4NzEsMHg4MiwweDIzLDB4ZTYsMHhmMiwweDc3LAotKwkweGNlLDB4ZWMsMHhiOCww eDQ5LDB4YzcsMHhiZiwweDM2LDB4NGYKLSt9OwotKwotKwotK3R5cGVkZWYgc3RydWN0IAotKwl7 Ci0rCWludCBjdXJ2ZTsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqeDE7Ci0rCXNpemVfdCB4MWxl bjsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqeTE7Ci0rCXNpemVfdCB5MWxlbjsKLSsJY29uc3Qg dW5zaWduZWQgY2hhciAqZDE7Ci0rCXNpemVfdCBkMWxlbjsKLSsJY29uc3QgdW5zaWduZWQgY2hh ciAqeDI7Ci0rCXNpemVfdCB4MmxlbjsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqeTI7Ci0rCXNp emVfdCB5MmxlbjsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqejsKLSsJc2l6ZV90IHpsZW47Ci0r CX0gRUNESF9TRUxGVEVTVF9EQVRBOwotKwotKyNkZWZpbmUgbWFrZV9lY2RoX3Rlc3QobmlkLCBw cikgeyBuaWQsIFwKLSsJCQkJcHIjI19xaXV0eCwgc2l6ZW9mKHByIyNfcWl1dHgpLCBcCi0rCQkJ CXByIyNfcWl1dHksIHNpemVvZihwciMjX3FpdXR5KSwgXAotKwkJCQlwciMjX3FpdXRkLCBzaXpl b2YocHIjI19xaXV0ZCksIFwKLSsJCQkJcHIjI19xY2F2c3gsIHNpemVvZihwciMjX3FjYXZzeCks IFwKLSsJCQkJcHIjI19xY2F2c3ksIHNpemVvZihwciMjX3FjYXZzeSksIFwKLSsJCQkJcHIjI196 aXV0LCBzaXplb2YocHIjI196aXV0KSB9Ci0rCi0rc3RhdGljIEVDREhfU0VMRlRFU1RfREFUQSB0 ZXN0X2VjZGhfZGF0YVtdID0gCi0rCXsKLSsJbWFrZV9lY2RoX3Rlc3QoTklEX1g5XzYyX3ByaW1l MjU2djEsIHAyNTYpLAotKwl9OwotKwotK2ludCBGSVBTX3NlbGZ0ZXN0X2VjZGgodm9pZCkKLSsJ ewotKwlFQ19LRVkgKmVjMSA9IE5VTEwsICplYzIgPSBOVUxMOwotKwljb25zdCBFQ19QT0lOVCAq ZWNwID0gTlVMTDsKLSsJQklHTlVNICp4ID0gTlVMTCwgKnkgPSBOVUxMLCAqZCA9IE5VTEw7Ci0r CXVuc2lnbmVkIGNoYXIgKnp0bXAgPSBOVUxMOwotKwlpbnQgcnYgPSAxOwotKwlzaXplX3QgaTsK LSsKLSsJZm9yIChpID0gMDsgaSA8IHNpemVvZih0ZXN0X2VjZGhfZGF0YSkvc2l6ZW9mKEVDREhf U0VMRlRFU1RfREFUQSk7IGkrKykKLSsJCXsKLSsJCUVDREhfU0VMRlRFU1RfREFUQSAqZWNkID0g dGVzdF9lY2RoX2RhdGEgKyBpOwotKwkJaWYgKCFmaXBzX3Bvc3Rfc3RhcnRlZChGSVBTX1RFU1Rf RUNESCwgZWNkLT5jdXJ2ZSwgMCkpCi0rCQkJY29udGludWU7Ci0rCQl6dG1wID0gT1BFTlNTTF9t YWxsb2MoZWNkLT56bGVuKTsKLSsKLSsJCXggPSBCTl9iaW4yYm4oZWNkLT54MSwgZWNkLT54MWxl biwgeCk7Ci0rCQl5ID0gQk5fYmluMmJuKGVjZC0+eTEsIGVjZC0+eTFsZW4sIHkpOwotKwkJZCA9 IEJOX2JpbjJibihlY2QtPmQxLCBlY2QtPmQxbGVuLCBkKTsKLSsKLSsJCWlmICgheCB8fCAheSB8 fCAhZCB8fCAhenRtcCkKLSsJCQl7Ci0rCQkJcnYgPSAtMTsKLSsJCQlnb3RvIGVycjsKLSsJCQl9 Ci0rCi0rCQllYzEgPSBFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUoZWNkLT5jdXJ2ZSk7Ci0rCQlp ZiAoIWVjMSkKLSsJCQl7Ci0rCQkJcnYgPSAtMTsKLSsJCQlnb3RvIGVycjsKLSsJCQl9Ci0rCQlF Q19LRVlfc2V0X2ZsYWdzKGVjMSwgRUNfRkxBR19DT0ZBQ1RPUl9FQ0RIKTsKLSsKLSsJCWlmICgh RUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlcyhlYzEsIHgsIHkpKQotKwkJ CXsKLSsJCQlydiA9IC0xOwotKwkJCWdvdG8gZXJyOwotKwkJCX0KLSsKLSsJCWlmICghRUNfS0VZ X3NldF9wcml2YXRlX2tleShlYzEsIGQpKQotKwkJCXsKLSsJCQlydiA9IC0xOwotKwkJCWdvdG8g ZXJyOwotKwkJCX0KLSsKLSsJCXggPSBCTl9iaW4yYm4oZWNkLT54MiwgZWNkLT54MmxlbiwgeCk7 Ci0rCQl5ID0gQk5fYmluMmJuKGVjZC0+eTIsIGVjZC0+eTJsZW4sIHkpOwotKwotKwkJaWYgKCF4 IHx8ICF5KQotKwkJCXsKLSsJCQlydiA9IC0xOwotKwkJCWdvdG8gZXJyOwotKwkJCX0KLSsKLSsJ CWVjMiA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShlY2QtPmN1cnZlKTsKLSsJCWlmICghZWMy KQotKwkJCXsKLSsJCQlydiA9IC0xOwotKwkJCWdvdG8gZXJyOwotKwkJCX0KLSsJCUVDX0tFWV9z ZXRfZmxhZ3MoZWMxLCBFQ19GTEFHX0NPRkFDVE9SX0VDREgpOwotKwotKwkJaWYgKCFFQ19LRVlf c2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3JkaW5hdGVzKGVjMiwgeCwgeSkpCi0rCQkJewotKwkJ CXJ2ID0gLTE7Ci0rCQkJZ290byBlcnI7Ci0rCQkJfQotKwotKwkJZWNwID0gRUNfS0VZX2dldDBf cHVibGljX2tleShlYzIpOwotKwkJaWYgKCFlY3ApCi0rCQkJewotKwkJCXJ2ID0gLTE7Ci0rCQkJ Z290byBlcnI7Ci0rCQkJfQotKwotKwkJaWYgKCFFQ0RIX2NvbXB1dGVfa2V5KHp0bXAsIGVjZC0+ emxlbiwgZWNwLCBlYzEsIDApKQotKwkJCXsKLSsJCQlydiA9IC0xOwotKwkJCWdvdG8gZXJyOwot KwkJCX0KLSsKLSsJCWlmICghZmlwc19wb3N0X2NvcnJ1cHQoRklQU19URVNUX0VDREgsIGVjZC0+ Y3VydmUsIE5VTEwpKQotKwkJCXp0bXBbMF0gXj0gMHgxOwotKwotKwkJaWYgKG1lbWNtcCh6dG1w LCBlY2QtPnosIGVjZC0+emxlbikpCi0rCQkJewotKwkJCWZpcHNfcG9zdF9mYWlsZWQoRklQU19U RVNUX0VDREgsIGVjZC0+Y3VydmUsIDApOwotKwkJCXJ2ID0gMDsKLSsJCQl9Ci0rCQllbHNlIGlm ICghZmlwc19wb3N0X3N1Y2Nlc3MoRklQU19URVNUX0VDREgsIGVjZC0+Y3VydmUsIDApKQotKwkJ CWdvdG8gZXJyOwotKwotKwkJRUNfS0VZX2ZyZWUoZWMxKTsKLSsJCWVjMSA9IE5VTEw7Ci0rCQlF Q19LRVlfZnJlZShlYzIpOwotKwkJZWMyID0gTlVMTDsKLSsJCU9QRU5TU0xfZnJlZSh6dG1wKTsK LSsJCXp0bXAgPSBOVUxMOwotKwkJfQotKwotKwllcnI6Ci0rCi0rCWlmICh4KQotKwkJQk5fY2xl YXJfZnJlZSh4KTsKLSsJaWYgKHkpCi0rCQlCTl9jbGVhcl9mcmVlKHkpOwotKwlpZiAoZCkKLSsJ CUJOX2NsZWFyX2ZyZWUoZCk7Ci0rCWlmIChlYzEpCi0rCQlFQ19LRVlfZnJlZShlYzEpOwotKwlp ZiAoZWMyKQotKwkJRUNfS0VZX2ZyZWUoZWMyKTsKLSsJaWYgKHp0bXApCi0rCQlPUEVOU1NMX2Zy ZWUoenRtcCk7Ci0rCi0rCXJldHVybiBydjsKLSsKLSsJfQotKwotKyNlbmRpZgotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWovY3J5cHRvL2ZpcHMvZmlwc19lY2RzYV9zZWxmdGVzdC5jLmZpcHMtZWMg b3BlbnNzbC0xLjAuMWovY3J5cHRvL2ZpcHMvZmlwc19lY2RzYV9zZWxmdGVzdC5jCi0tLS0gb3Bl bnNzbC0xLjAuMWovY3J5cHRvL2ZpcHMvZmlwc19lY2RzYV9zZWxmdGVzdC5jLmZpcHMtZWMJMjAx NC0xMC0xNiAxMzoyNToyMC43MzMxMDkyNTcgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xai9jcnlw dG8vZmlwcy9maXBzX2VjZHNhX3NlbGZ0ZXN0LmMJMjAxNC0xMC0xNiAxMzoyNToyMC43MzMxMDky NTcgKzAyMDAKLUBAIC0wLDAgKzEsMTY3IEBACi0rLyogZmlwcy9lY2RzYS9maXBzX2VjZHNhX3Nl bGZ0ZXN0LmMgKi8KLSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9w ZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0IDIwMTEuCi0rICovCi0rLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4g IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK LSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICog Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92 ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9u LgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1 cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xs b3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0 d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4g dGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAq IDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVz dCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJt aXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIGxp Y2Vuc2luZ0BPcGVuU1NMLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkg Ik9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsg KiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRp c3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93 aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1 c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAq Ci0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBg QVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBP U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNU IE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS RUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRB LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVT RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAot KyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg REFNQUdFLgotKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICoKLSsgKi8KLSsKLSsjZGVmaW5lIE9QRU5TU0xf RklQU0FQSQotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlw dG8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lYy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2VjZHNh Lmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5o PgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0r Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwotK3N0YXRpYyBjb25zdCBjaGFyIFBfMjU2X25hbWVb XSA9ICJFQ0RTQSBQLTI1NiI7Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgUF8yNTZf ZFtdID0gewotKwkweDUxLDB4YmQsMHgwNiwweGExLDB4MWMsMHhkYSwweGUyLDB4MTIsMHg5OSww eGM5LDB4NTIsMHgzZiwKLSsJMHhlYSwweGE0LDB4ZDIsMHhkMSwweGY0LDB4N2YsMHhkNCwweDNl LDB4YmQsMHhmOCwweGZjLDB4ODcsCi0rCTB4ZGMsMHg4MiwweDUzLDB4MjEsMHhlZSwweGEwLDB4 ZGMsMHg2NAotK307Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgUF8yNTZfcXhbXSA9IHsK LSsJMHgyMywweDg5LDB4ZTAsMHhmNCwweDY5LDB4ZTAsMHg0OSwweGU1LDB4YzcsMHhlNSwweDQw LDB4NmUsCi0rCTB4OGYsMHgyNSwweGRkLDB4YWQsMHgxMSwweDE2LDB4MTQsMHg5YiwweGFiLDB4 NDQsMHgwNiwweDMxLAotKwkweGJmLDB4NWUsMHhhNiwweDQ0LDB4YWMsMHg4NiwweDAwLDB4MDcK LSt9OwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFBfMjU2X3F5W10gPSB7Ci0rCTB4YjMs MHgwNSwweDBkLDB4ZDAsMHhkYywweGY3LDB4NDAsMHhlNiwweGY5LDB4ZDgsMHg2ZCwweDdiLAot KwkweDYzLDB4Y2EsMHg5NywweGU2LDB4MTIsMHhmOSwweGQ0LDB4MTgsMHg1OSwweGJlLDB4YjIs MHg1ZSwKLSsJMHg0YSwweDZhLDB4NzcsMHgyMywweGY0LDB4MTEsMHg5ZCwweGViCi0rfTsKLSsK LSt0eXBlZGVmIHN0cnVjdCAKLSsJewotKwlpbnQgY3VydmU7Ci0rCWNvbnN0IGNoYXIgKm5hbWU7 Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKng7Ci0rCXNpemVfdCB4bGVuOwotKwljb25zdCB1bnNp Z25lZCBjaGFyICp5OwotKwlzaXplX3QgeWxlbjsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqZDsK LSsJc2l6ZV90IGRsZW47Ci0rCX0gRUNfU0VMRlRFU1RfREFUQTsKLSsKLSsjZGVmaW5lIG1ha2Vf ZWNkc2FfdGVzdChuaWQsIHByKSB7IG5pZCwgcHIjI19uYW1lLCBcCi0rCQkJCXByIyNfcXgsIHNp emVvZihwciMjX3F4KSwgXAotKwkJCQlwciMjX3F5LCBzaXplb2YocHIjI19xeSksIFwKLSsJCQkJ cHIjI19kLCBzaXplb2YocHIjI19kKX0KLSsKLStzdGF0aWMgRUNfU0VMRlRFU1RfREFUQSB0ZXN0 X2VjX2RhdGFbXSA9IAotKwl7Ci0rCW1ha2VfZWNkc2FfdGVzdChOSURfWDlfNjJfcHJpbWUyNTZ2 MSwgUF8yNTYpLAotKwl9OwotKwotK2ludCBGSVBTX3NlbGZ0ZXN0X2VjZHNhKCkKLSsJewotKwlF Q19LRVkgKmVjID0gTlVMTDsKLSsJQklHTlVNICp4ID0gTlVMTCwgKnkgPSBOVUxMLCAqZCA9IE5V TEw7Ci0rCUVWUF9QS0VZICpwayA9IE5VTEw7Ci0rCWludCBydiA9IDA7Ci0rCXNpemVfdCBpOwot KwotKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRlc3RfZWNfZGF0YSkvc2l6ZW9mKEVDX1NFTEZU RVNUX0RBVEEpOyBpKyspCi0rCQl7Ci0rCQlFQ19TRUxGVEVTVF9EQVRBICplY2QgPSB0ZXN0X2Vj X2RhdGEgKyBpOwotKwotKwkJeCA9IEJOX2JpbjJibihlY2QtPngsIGVjZC0+eGxlbiwgeCk7Ci0r CQl5ID0gQk5fYmluMmJuKGVjZC0+eSwgZWNkLT55bGVuLCB5KTsKLSsJCWQgPSBCTl9iaW4yYm4o ZWNkLT5kLCBlY2QtPmRsZW4sIGQpOwotKwotKwkJaWYgKCF4IHx8ICF5IHx8ICFkKQotKwkJCWdv dG8gZXJyOwotKwotKwkJZWMgPSBFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUoZWNkLT5jdXJ2ZSk7 Ci0rCQlpZiAoIWVjKQotKwkJCWdvdG8gZXJyOwotKwotKwkJaWYgKCFFQ19LRVlfc2V0X3B1Ymxp Y19rZXlfYWZmaW5lX2Nvb3JkaW5hdGVzKGVjLCB4LCB5KSkKLSsJCQlnb3RvIGVycjsKLSsKLSsJ CWlmICghRUNfS0VZX3NldF9wcml2YXRlX2tleShlYywgZCkpCi0rCQkJZ290byBlcnI7Ci0rCi0r CQlpZiAoKHBrPUVWUF9QS0VZX25ldygpKSA9PSBOVUxMKQotKwkJCWdvdG8gZXJyOwotKwotKwkJ RVZQX1BLRVlfYXNzaWduX0VDX0tFWShwaywgZWMpOwotKwotKwkJaWYgKCFmaXBzX3BrZXlfc2ln bmF0dXJlX3Rlc3QocGssIE5VTEwsIDAsCi0rCQkJCQkJTlVMTCwgMCwgRVZQX3NoYTI1NigpLCAw LAotKwkJCQkJCWVjZC0+bmFtZSkpCi0rCQkJZ290byBlcnI7Ci0rCQl9Ci0rCi0rCXJ2ID0gMTsK LSsKLSsJZXJyOgotKwotKwlpZiAoeCkKLSsJCUJOX2NsZWFyX2ZyZWUoeCk7Ci0rCWlmICh5KQot KwkJQk5fY2xlYXJfZnJlZSh5KTsKLSsJaWYgKGQpCi0rCQlCTl9jbGVhcl9mcmVlKGQpOwotKwlp ZiAocGspCi0rCQlFVlBfUEtFWV9mcmVlKHBrKTsKLSsJZWxzZSBpZiAoZWMpCi0rCQlFQ19LRVlf ZnJlZShlYyk7Ci0rCi0rCXJldHVybiBydjsKLSsKLSsJfQotKwotKyNlbmRpZgotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWovY3J5cHRvL2ZpcHMvZmlwcy5oLmZpcHMtZWMgb3BlbnNzbC0xLjAuMWov Y3J5cHRvL2ZpcHMvZmlwcy5oCi0tLS0gb3BlbnNzbC0xLjAuMWovY3J5cHRvL2ZpcHMvZmlwcy5o LmZpcHMtZWMJMjAxNC0xMC0xNiAxMzoyNToyMC43MDExMDg1MzUgKzAyMDAKLSsrKyBvcGVuc3Ns LTEuMC4xai9jcnlwdG8vZmlwcy9maXBzLmgJMjAxNC0xMC0xNiAxMzoyNToyMC43MzMxMDkyNTcg KzAyMDAKLUBAIC05Myw2ICs5Myw4IEBAIGludCBGSVBTX3NlbGZ0ZXN0X3JzYSh2b2lkKTsKLSB2 b2lkIEZJUFNfY29ycnVwdF9kc2Eodm9pZCk7Ci0gdm9pZCBGSVBTX2NvcnJ1cHRfZHNhX2tleWdl bih2b2lkKTsKLSBpbnQgRklQU19zZWxmdGVzdF9kc2Eodm9pZCk7Ci0raW50IEZJUFNfc2VsZnRl c3RfZWNkc2Eodm9pZCk7Ci0raW50IEZJUFNfc2VsZnRlc3RfZWNkaCh2b2lkKTsKLSB2b2lkIEZJ UFNfY29ycnVwdF9ybmcodm9pZCk7Ci0gdm9pZCBGSVBTX3JuZ19zdGljayh2b2lkKTsKLSB2b2lk IEZJUFNfeDkzMV9zdGljayhpbnQgb25vZmYpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWovY3J5 cHRvL2ZpcHMvZmlwc19wb3N0LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4xai9jcnlwdG8vZmlwcy9m aXBzX3Bvc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jLmZp cHMtZWMJMjAxNC0xMC0xNiAxMzoyNToyMC43MDIxMDg1NTcgKzAyMDAKLSsrKyBvcGVuc3NsLTEu MC4xai9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYwkyMDE0LTEwLTE2IDEzOjI1OjIwLjczMzEwOTI1 NyArMDIwMAotQEAgLTk1LDggKzk1LDEyIEBAIGludCBGSVBTX3NlbGZ0ZXN0KHZvaWQpCi0gCQly diA9IDA7Ci0gCWlmICghRklQU19zZWxmdGVzdF9yc2EoKSkKLSAJCXJ2ID0gMDsKLSsJaWYgKCFG SVBTX3NlbGZ0ZXN0X2VjZHNhKCkpCi0rCQlydiA9IDA7Ci0gCWlmICghRklQU19zZWxmdGVzdF9k c2EoKSkKLSAJCXJ2ID0gMDsKLSsJaWYgKCFGSVBTX3NlbGZ0ZXN0X2VjZGgoKSkKLSsJCXJ2ID0g MDsKLSAJcmV0dXJuIHJ2OwotIAl9Ci0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xai9jcnlwdG8v Zmlwcy9NYWtlZmlsZS5maXBzLWVjIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9maXBzL01ha2VmaWxl Ci0tLS0gb3BlbnNzbC0xLjAuMWovY3J5cHRvL2ZpcHMvTWFrZWZpbGUuZmlwcy1lYwkyMDE0LTEw LTE2IDEzOjI1OjIwLjcwNDEwODYwMyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFqL2NyeXB0by9m aXBzL01ha2VmaWxlCTIwMTQtMTAtMTYgMTM6MjU6MjAuNzM0MTA5MjgwICswMjAwCi1AQCAtMjQs MTMgKzI0LDEzIEBAIExJQlNSQz1maXBzX2Flc19zZWxmdGVzdC5jIGZpcHNfZGVzX3NlbGYKLSAg ICAgZmlwc19yc2Ffc2VsZnRlc3QuYyBmaXBzX3NoYV9zZWxmdGVzdC5jIGZpcHMuYyBmaXBzX2Rz YV9zZWxmdGVzdC5jICBmaXBzX3JhbmQuYyBcCi0gICAgIGZpcHNfcnNhX3g5MzFnLmMgZmlwc19w b3N0LmMgZmlwc19kcmJnX2N0ci5jIGZpcHNfZHJiZ19oYXNoLmMgZmlwc19kcmJnX2htYWMuYyBc Ci0gICAgIGZpcHNfZHJiZ19saWIuYyBmaXBzX2RyYmdfcmFuZC5jIGZpcHNfZHJiZ19zZWxmdGVz dC5jIGZpcHNfcmFuZF9saWIuYyBcCi0tICAgIGZpcHNfY21hY19zZWxmdGVzdC5jIGZpcHNfZW5j LmMgZmlwc19tZC5jCi0rICAgIGZpcHNfY21hY19zZWxmdGVzdC5jIGZpcHNfZWNkaF9zZWxmdGVz dC5jIGZpcHNfZWNkc2Ffc2VsZnRlc3QuYyBmaXBzX2VuYy5jIGZpcHNfbWQuYwotIAotIExJQk9C Sj1maXBzX2Flc19zZWxmdGVzdC5vIGZpcHNfZGVzX3NlbGZ0ZXN0Lm8gZmlwc19obWFjX3NlbGZ0 ZXN0Lm8gZmlwc19yYW5kX3NlbGZ0ZXN0Lm8gXAotICAgICBmaXBzX3JzYV9zZWxmdGVzdC5vIGZp cHNfc2hhX3NlbGZ0ZXN0Lm8gZmlwcy5vIGZpcHNfZHNhX3NlbGZ0ZXN0Lm8gIGZpcHNfcmFuZC5v IFwKLSAgICAgZmlwc19yc2FfeDkzMWcubyBmaXBzX3Bvc3QubyBmaXBzX2RyYmdfY3RyLm8gZmlw c19kcmJnX2hhc2gubyBmaXBzX2RyYmdfaG1hYy5vIFwKLSAgICAgZmlwc19kcmJnX2xpYi5vIGZp cHNfZHJiZ19yYW5kLm8gZmlwc19kcmJnX3NlbGZ0ZXN0Lm8gZmlwc19yYW5kX2xpYi5vIFwKLS0g ICAgZmlwc19jbWFjX3NlbGZ0ZXN0Lm8gZmlwc19lbmMubyBmaXBzX21kLm8KLSsgICAgZmlwc19j bWFjX3NlbGZ0ZXN0Lm8gZmlwc19lY2RoX3NlbGZ0ZXN0Lm8gZmlwc19lY2RzYV9zZWxmdGVzdC5v IGZpcHNfZW5jLm8gZmlwc19tZC5vCi0gCi0gTElCQ1JZUFRPPS1MLi4gLWxjcnlwdG8KLSAKLUBA IC0xMTksNiArMTE5LDIxIEBAIGZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnMKLSBmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNr LmgKLSBmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAot IGZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZp cHNfYWVzX3NlbGZ0ZXN0LmMKLStmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKLStmaXBzX2NtYWNfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NtYWMuaAotK2ZpcHNfY21hY19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzX2NtYWNfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vy ci5oCi0rZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCi0rZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29iamVjdHMuaAotK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAotK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAotK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19jbWFjX3NlbGZ0ZXN0LmMKLStmaXBzX2NtYWNf c2VsZnRlc3QubzogZmlwc19sb2NsLmgKLSBmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotIGZpcHNfZGVz X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotIGZpcHNfZGVzX3Nl bGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9lcnIuaAotQEAgLTIzMiw2ICsyNDcsNDYgQEAgZmlwc19kc2Ffc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVucwotIGZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zdGFjay5oCi0gZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L3N5bWhhY2tzLmggZmlwc19kc2Ffc2VsZnRlc3QuYwotIGZpcHNfZHNhX3NlbGZ0ZXN0Lm86IGZp cHNfbG9jbC5oCi0rZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9h c24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0rZmlwc19lY2RoX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ibi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8u aAotK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvZWMuaAotK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZWNkaC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAotK2ZpcHNf ZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2ZpcHMuaAotK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvbGhhc2guaAotK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb2JqX21hYy5oCi0rZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vYmplY3RzLmgKLStmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L29wZW5zc2xjb25mLmgKLStmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29wZW5zc2x2LmgKLStmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29zc2xfdHlwLmgKLStmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3NhZmVzdGFjay5oCi0rZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zdGFjay5oCi0rZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zeW1oYWNrcy5oIGZpcHNfZWNkaF9zZWxmdGVzdC5jCi0rZmlwc19lY2RoX3NlbGZ0ZXN0Lm86 IGZpcHNfbG9jbC5oCi0rZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotK2ZpcHNfZWNkc2Ffc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2JuLmgKLStmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNfZWNkc2Ffc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2VjLmgK LStmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lY2RzYS5oCi0r Zmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmggLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2V2cC5oCi0rZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvbGhhc2guaAotK2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29ial9tYWMuaAotK2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29iamVjdHMuaAotK2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0rZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3NzbF90eXAuaAotK2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19lY2RzYV9zZWxmdGVzdC5jCi0rZmlwc19lbmMu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlv LmgKLStmaXBzX2VuYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Vfb3MyLmgKLStmaXBzX2VuYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv ZXJyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCi0rZmlwc19lbmMubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNf ZW5jLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29iamVjdHMuaAotK2ZpcHNfZW5jLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Ns Y29uZi5oCi0rZmlwc19lbmMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKLStmaXBzX2VuYy5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvc2FmZXN0YWNrLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBz X2VuYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2VuYy5jCi0gZmlw c19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Jpby5oCi0gZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9jcnlwdG8uaAotIGZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLUBAIC0yNDYsNiArMzAx LDE1IEBAIGZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW4KLSBmaXBzX2ht YWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0gZmlwc19o bWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0gZmlwc19obWFj X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfaG1hY19z ZWxmdGVzdC5jCi0rZmlwc19tZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotK2ZpcHNfbWQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2NyeXB0by5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oCi0rZmlwc19tZC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZXJyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCi0rZmlw c19tZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9saGFzaC5oCi0rZmlwc19tZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStmaXBzX21kLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9vcGVuc3NsY29uZi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0r Zmlwc19tZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBzX21kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9z dGFjay5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oCi0rZmlwc19tZC5vOiBmaXBz X21kLmMKLSBmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9hc24xLmgKLSBmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2Jpby5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotIGZpcHNfcG9zdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZHNhLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjFqL3ZlcnNpb24ubWFwLmZpcHMtZWMgb3BlbnNzbC0xLjAuMWov dmVyc2lvbi5tYXAKLS0tLSBvcGVuc3NsLTEuMC4xai92ZXJzaW9uLm1hcC5maXBzLWVjCTIwMTQt MTAtMTYgMTM6MjU6MjAuNzE2MTA4ODczICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWovdmVyc2lv bi5tYXAJMjAxNC0xMC0xNiAxMzoyNToyMC43MzQxMDkyODAgKzAyMDAKLUBAIC02LDMgKzYsNyBA QCBPUEVOU1NMXzEuMC4xIHsKLSAJICAgIF9vcmlnaW5hbCo7Ci0gCSAgICBfY3VycmVudCo7Ci0g fTsKLStPUEVOU1NMXzEuMC4xX0VDIHsKLSsgICAgZ2xvYmFsOgotKwkgICAgRUMqOwotK307Cgpk aWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMWstY3ZlLTIwMTUtMDIwOS5wYXRjaCBiL29wZW5zc2wt MS4wLjFrLWN2ZS0yMDE1LTAyMDkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDk5NGY5NjMuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMWstY3ZlLTIwMTUtMDIwOS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9lYy9lY19hc24xLmMudXNlLWFmdGVyLWZyZWUgb3BlbnNzbC0xLjAuMWsvY3J5cHRv L2VjL2VjX2FzbjEuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9lYy9lY19hc24xLmMudXNl LWFmdGVyLWZyZWUJMjAxNC0xMC0xNSAxNTo0OTo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVu c3NsLTEuMC4xay9jcnlwdG8vZWMvZWNfYXNuMS5jCTIwMTUtMDMtMTkgMTc6Mjg6MDMuMzQ5NjI3 MDQwICswMTAwCi1AQCAtMTE0Miw4ICsxMTQyLDYgQEAgRUNfS0VZICpkMmlfRUNQcml2YXRlS2V5 KEVDX0tFWSAqKmEsIGNvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVSUl9S X01BTExPQ19GQUlMVVJFKTsKLSAJCQlnb3RvIGVycjsKLSAJCQl9Ci0tCQlpZiAoYSkKLS0JCQkq YSA9IHJldDsKLSAJCX0KLSAJZWxzZQotIAkJcmV0ID0gKmE7Ci1AQCAtMTIyNSwxMSArMTIyMywx MyBAQCBFQ19LRVkgKmQyaV9FQ1ByaXZhdGVLZXkoRUNfS0VZICoqYSwgY29uCi0gCQlyZXQtPmVu Y19mbGFnIHw9IEVDX1BLRVlfTk9fUFVCS0VZOwotIAkJfQotIAotKwlpZiAoYSkKLSsJCSphID0g cmV0OwotIAlvayA9IDE7Ci0gZXJyOgotIAlpZiAoIW9rKQotIAkJewotLQkJaWYgKHJldCkKLSsJ CWlmIChyZXQgJiYgKGEgPT0gTlVMTCB8fCAqYSAhPSByZXQpKQotIAkJCUVDX0tFWV9mcmVlKHJl dCk7Ci0gCQlyZXQgPSBOVUxMOwotIAkJfQoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjFrLWN2 ZS0yMDE1LTAyODkucGF0Y2ggYi9vcGVuc3NsLTEuMC4xay1jdmUtMjAxNS0wMjg5LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjk1YzdjLi4wMDAwMDAwCi0tLSBhL29wZW5z c2wtMS4wLjFrLWN2ZS0yMDE1LTAyODkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAs MCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3BrY3M3L3BrN19kb2l0LmMucGtj czctbnVsbC1kZXJlZiBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcGtjczcvcGs3X2RvaXQuYwotLS0t IG9wZW5zc2wtMS4wLjFrL2NyeXB0by9wa2NzNy9wazdfZG9pdC5jLnBrY3M3LW51bGwtZGVyZWYJ MjAxNS0wMS0wOCAxNTowMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9j cnlwdG8vcGtjczcvcGs3X2RvaXQuYwkyMDE1LTAzLTE5IDE3OjMwOjM2Ljc5NzY1MDk4MCArMDEw MAotQEAgLTI3Miw2ICsyNzIsMjcgQEAgQklPICpQS0NTN19kYXRhSW5pdChQS0NTNyAqcDcsIEJJ TyAqYmlvKQotIAlQS0NTN19SRUNJUF9JTkZPICpyaT1OVUxMOwotIAlBU04xX09DVEVUX1NUUklO RyAqb3M9TlVMTDsKLSAKLSsJaWYgKHA3ID09IE5VTEwpCi0rCQl7Ci0rCQlQS0NTN2VycihQS0NT N19GX1BLQ1M3X0RBVEFJTklULCBQS0NTN19SX0lOVkFMSURfTlVMTF9QT0lOVEVSKTsKLSsJCXJl dHVybiBOVUxMOwotKwkJfQotKwkvKgotKwkgKiBUaGUgY29udGVudCBmaWVsZCBpbiB0aGUgUEtD UzcgQ29udGVudEluZm8gaXMgb3B0aW9uYWwsIGJ1dCB0aGF0IHJlYWxseQotKwkgKiBvbmx5IGFw cGxpZXMgdG8gaW5uZXIgY29udGVudCAocHJlY2lzZWx5LCBkZXRhY2hlZCBzaWduYXR1cmVzKS4K LSsJICoKLSsJICogV2hlbiByZWFkaW5nIGNvbnRlbnQsIG1pc3Npbmcgb3V0ZXIgY29udGVudCBp cyB0aGVyZWZvcmUgdHJlYXRlZCBhcyBhbgotKwkgKiBlcnJvci4KLSsJICoKLSsJICogV2hlbiBj cmVhdGluZyBjb250ZW50LCBQS0NTN19jb250ZW50X25ldygpIG11c3QgYmUgY2FsbGVkIGJlZm9y ZQotKwkgKiBjYWxsaW5nIHRoaXMgbWV0aG9kLCBzbyBhIE5VTEwgcDctPmQgaXMgYWx3YXlzIGFu IGVycm9yLgotKwkgKi8KLSsJaWYgKHA3LT5kLnB0ciA9PSBOVUxMKQotKwkJewotKwkJUEtDUzdl cnIoUEtDUzdfRl9QS0NTN19EQVRBSU5JVCwgUEtDUzdfUl9OT19DT05URU5UKTsKLSsJCXJldHVy biBOVUxMOwotKwkJfQotKwotIAlpPU9CSl9vYmoybmlkKHA3LT50eXBlKTsKLSAJcDctPnN0YXRl PVBLQ1M3X1NfSEVBREVSOwotIAotQEAgLTQzMyw2ICs0NTQsMTggQEAgQklPICpQS0NTN19kYXRh RGVjb2RlKFBLQ1M3ICpwNywgRVZQX1BLRQotICAgICAgICB1bnNpZ25lZCBjaGFyICplayA9IE5V TEwsICp0a2V5ID0gTlVMTDsKLSAgICAgICAgaW50IGVrbGVuID0gMCwgdGtleWxlbiA9IDA7Ci0g Ci0rCWlmIChwNyA9PSBOVUxMKQotKwkJewotKwkJUEtDUzdlcnIoUEtDUzdfRl9QS0NTN19EQVRB REVDT0RFLCBQS0NTN19SX0lOVkFMSURfTlVMTF9QT0lOVEVSKTsKLSsJCXJldHVybiBOVUxMOwot KwkJfQotKwotKwlpZiAocDctPmQucHRyID09IE5VTEwpCi0rCQl7Ci0rCQlQS0NTN2VycihQS0NT N19GX1BLQ1M3X0RBVEFERUNPREUsIFBLQ1M3X1JfTk9fQ09OVEVOVCk7Ci0rCQlyZXR1cm4gTlVM TDsKLSsJCX0KLSsKLSAJaT1PQkpfb2JqMm5pZChwNy0+dHlwZSk7Ci0gCXA3LT5zdGF0ZT1QS0NT N19TX0hFQURFUjsKLSAKLUBAIC03NTIsNiArNzg1LDE4IEBAIGludCBQS0NTN19kYXRhRmluYWwo UEtDUzcgKnA3LCBCSU8gKmJpbykKLSAJU1RBQ0tfT0YoUEtDUzdfU0lHTkVSX0lORk8pICpzaV9z az1OVUxMOwotIAlBU04xX09DVEVUX1NUUklORyAqb3M9TlVMTDsKLSAKLSsJaWYgKHA3ID09IE5V TEwpCi0rCQl7Ci0rCQlQS0NTN2VycihQS0NTN19GX1BLQ1M3X0RBVEFGSU5BTCwgUEtDUzdfUl9J TlZBTElEX05VTExfUE9JTlRFUik7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsKLSsJaWYgKHA3LT5k LnB0ciA9PSBOVUxMKQotKwkJewotKwkJUEtDUzdlcnIoUEtDUzdfRl9QS0NTN19EQVRBRklOQUws IFBLQ1M3X1JfTk9fQ09OVEVOVCk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsKLSAJRVZQX01EX0NU WF9pbml0KCZjdHhfdG1wKTsKLSAJaT1PQkpfb2JqMm5pZChwNy0+dHlwZSk7Ci0gCXA3LT5zdGF0 ZT1QS0NTN19TX0hFQURFUjsKLUBAIC03OTYsNiArODQxLDcgQEAgaW50IFBLQ1M3X2RhdGFGaW5h bChQS0NTNyAqcDcsIEJJTyAqYmlvKQotIAkJLyogSWYgZGV0YWNoZWQgZGF0YSB0aGVuIHRoZSBj b250ZW50IGlzIGV4Y2x1ZGVkICovCi0gCQlpZihQS0NTN190eXBlX2lzX2RhdGEocDctPmQuc2ln bi0+Y29udGVudHMpICYmIHA3LT5kZXRhY2hlZCkgewotIAkJCU1fQVNOMV9PQ1RFVF9TVFJJTkdf ZnJlZShvcyk7Ci0rCQkJb3MgPSBOVUxMOwotIAkJCXA3LT5kLnNpZ24tPmNvbnRlbnRzLT5kLmRh dGEgPSBOVUxMOwotIAkJfQotIAkJYnJlYWs7Ci1AQCAtODA2LDYgKzg1Miw3IEBAIGludCBQS0NT N19kYXRhRmluYWwoUEtDUzcgKnA3LCBCSU8gKmJpbykKLSAJCWlmKFBLQ1M3X3R5cGVfaXNfZGF0 YShwNy0+ZC5kaWdlc3QtPmNvbnRlbnRzKSAmJiBwNy0+ZGV0YWNoZWQpCi0gCQkJewotIAkJCU1f QVNOMV9PQ1RFVF9TVFJJTkdfZnJlZShvcyk7Ci0rCQkJb3MgPSBOVUxMOwotIAkJCXA3LT5kLmRp Z2VzdC0+Y29udGVudHMtPmQuZGF0YSA9IE5VTEw7Ci0gCQkJfQotIAkJYnJlYWs7Ci1AQCAtODc4 LDIzICs5MjUsMzIgQEAgaW50IFBLQ1M3X2RhdGFGaW5hbChQS0NTNyAqcDcsIEJJTyAqYmlvKQot IAkJTV9BU04xX09DVEVUX1NUUklOR19zZXQocDctPmQuZGlnZXN0LT5kaWdlc3QsIG1kX2RhdGEs IG1kX2xlbik7Ci0gCQl9Ci0gCi0tCWlmICghUEtDUzdfaXNfZGV0YWNoZWQocDcpICYmICEob3Mt PmZsYWdzICYgQVNOMV9TVFJJTkdfRkxBR19OREVGKSkKLSsJaWYgKCFQS0NTN19pc19kZXRhY2hl ZChwNykpCi0gCQl7Ci0tCQljaGFyICpjb250OwotLQkJbG9uZyBjb250bGVuOwotLQkJYnRtcD1C SU9fZmluZF90eXBlKGJpbyxCSU9fVFlQRV9NRU0pOwotLQkJaWYgKGJ0bXAgPT0gTlVMTCkKLS0J CQl7Ci0tCQkJUEtDUzdlcnIoUEtDUzdfRl9QS0NTN19EQVRBRklOQUwsUEtDUzdfUl9VTkFCTEVf VE9fRklORF9NRU1fQklPKTsKLSsJCS8qCi0rCQkgKiBOT1RFKGVtaWxpYSk6IEkgdGhpbmsgd2Ug b25seSByZWFjaCBvcyA9PSBOVUxMIGhlcmUgYmVjYXVzZSBkZXRhY2hlZAotKwkJICogZGlnZXN0 ZWQgZGF0YSBzdXBwb3J0IGlzIGJyb2tlbi4KLSsJCSAqLwotKwkJaWYgKG9zID09IE5VTEwpCi0g CQkJZ290byBlcnI7Ci0rCQlpZiAoIShvcy0+ZmxhZ3MgJiBBU04xX1NUUklOR19GTEFHX05ERUYp KQotKwkJCXsKLSsJCQljaGFyICpjb250OwotKwkJCWxvbmcgY29udGxlbjsKLSsJCQlidG1wPUJJ T19maW5kX3R5cGUoYmlvLEJJT19UWVBFX01FTSk7Ci0rCQkJaWYgKGJ0bXAgPT0gTlVMTCkKLSsJ CQkJewotKwkJCQlQS0NTN2VycihQS0NTN19GX1BLQ1M3X0RBVEFGSU5BTCxQS0NTN19SX1VOQUJM RV9UT19GSU5EX01FTV9CSU8pOwotKwkJCQlnb3RvIGVycjsKLSsJCQkJfQotKwkJCWNvbnRsZW4g PSBCSU9fZ2V0X21lbV9kYXRhKGJ0bXAsICZjb250KTsKLSsJCQkvKiBNYXJrIHRoZSBCSU8gcmVh ZCBvbmx5IHRoZW4gd2UgY2FuIHVzZSBpdHMgY29weSBvZiB0aGUgZGF0YQotKwkJCSAqIGluc3Rl YWQgb2YgbWFraW5nIGFuIGV4dHJhIGNvcHkuCi0rCQkJICovCi0rCQkJQklPX3NldF9mbGFncyhi dG1wLCBCSU9fRkxBR1NfTUVNX1JET05MWSk7Ci0rCQkJQklPX3NldF9tZW1fZW9mX3JldHVybihi dG1wLCAwKTsKLSsJCQlBU04xX1NUUklOR19zZXQwKG9zLCAodW5zaWduZWQgY2hhciAqKWNvbnQs IGNvbnRsZW4pOwotIAkJCX0KLS0JCWNvbnRsZW4gPSBCSU9fZ2V0X21lbV9kYXRhKGJ0bXAsICZj b250KTsKLS0JCS8qIE1hcmsgdGhlIEJJTyByZWFkIG9ubHkgdGhlbiB3ZSBjYW4gdXNlIGl0cyBj b3B5IG9mIHRoZSBkYXRhCi0tCQkgKiBpbnN0ZWFkIG9mIG1ha2luZyBhbiBleHRyYSBjb3B5Lgot LQkJICovCi0tCQlCSU9fc2V0X2ZsYWdzKGJ0bXAsIEJJT19GTEFHU19NRU1fUkRPTkxZKTsKLS0J CUJJT19zZXRfbWVtX2VvZl9yZXR1cm4oYnRtcCwgMCk7Ci0tCQlBU04xX1NUUklOR19zZXQwKG9z LCAodW5zaWduZWQgY2hhciAqKWNvbnQsIGNvbnRsZW4pOwotIAkJfQotIAlyZXQ9MTsKLSBlcnI6 Ci1AQCAtOTcxLDYgKzEwMjcsMTggQEAgaW50IFBLQ1M3X2RhdGFWZXJpZnkoWDUwOV9TVE9SRSAq Y2VydF9zdAotIAlTVEFDS19PRihYNTA5KSAqY2VydDsKLSAJWDUwOSAqeDUwOTsKLSAKLSsJaWYg KHA3ID09IE5VTEwpCi0rCQl7Ci0rCQlQS0NTN2VycihQS0NTN19GX1BLQ1M3X0RBVEFWRVJJRlks IFBLQ1M3X1JfSU5WQUxJRF9OVUxMX1BPSU5URVIpOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCi0r CWlmIChwNy0+ZC5wdHIgPT0gTlVMTCkKLSsJCXsKLSsJCVBLQ1M3ZXJyKFBLQ1M3X0ZfUEtDUzdf REFUQVZFUklGWSwgUEtDUzdfUl9OT19DT05URU5UKTsKLSsJCXJldHVybiAwOwotKwkJfQotKwot IAlpZiAoUEtDUzdfdHlwZV9pc19zaWduZWQocDcpKQotIAkJewotIAkJY2VydD1wNy0+ZC5zaWdu LT5jZXJ0OwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3BrY3M3L3BrN19saWIuYy5w a2NzNy1udWxsLWRlcmVmIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9wa2NzNy9wazdfbGliLmMKLS0t LSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcGtjczcvcGs3X2xpYi5jLnBrY3M3LW51bGwtZGVyZWYJ MjAxNC0xMC0xNSAxNTo0OToxNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9j cnlwdG8vcGtjczcvcGs3X2xpYi5jCTIwMTUtMDMtMTkgMTc6MzA6MzYuNzk3NjUwOTgwICswMTAw Ci1AQCAtNDU5LDYgKzQ1OSw4IEBAIGludCBQS0NTN19zZXRfZGlnZXN0KFBLQ1M3ICpwNywgY29u c3QgRVYKLSAKLSBTVEFDS19PRihQS0NTN19TSUdORVJfSU5GTykgKlBLQ1M3X2dldF9zaWduZXJf aW5mbyhQS0NTNyAqcDcpCi0gCXsKLSsJaWYgKHA3ID09IE5VTEwgfHwgcDctPmQucHRyID09IE5V TEwpCi0rCQlyZXR1cm4gTlVMTDsKLSAJaWYgKFBLQ1M3X3R5cGVfaXNfc2lnbmVkKHA3KSkKLSAJ CXsKLSAJCXJldHVybihwNy0+ZC5zaWduLT5zaWduZXJfaW5mbyk7CgpkaWZmIC0tZ2l0IGEvb3Bl bnNzbC0xLjAuMWstZHRsczEtYWJpLnBhdGNoIGIvb3BlbnNzbC0xLjAuMWstZHRsczEtYWJpLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODljZWJhLi4wMDAwMDAwCi0tLSBh L29wZW5zc2wtMS4wLjFrLWR0bHMxLWFiaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICsw LDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL3NzbC9kdGxzMS5oLmR0bHMxLWFiaSBvcGVu c3NsLTEuMC4xay9zc2wvZHRsczEuaAotLS0tIG9wZW5zc2wtMS4wLjFrL3NzbC9kdGxzMS5oLmR0 bHMxLWFiaQkyMDE1LTAxLTA5IDA5OjU4OjU5LjMzMjU5Njg5NyArMDEwMAotKysrIG9wZW5zc2wt MS4wLjFrL3NzbC9kdGxzMS5oCTIwMTUtMDEtMDkgMTA6MDI6MzQuOTA4NDcyMzIwICswMTAwCi1A QCAtMjMxLDEwICsyMzEsNiBAQCB0eXBlZGVmIHN0cnVjdCBkdGxzMV9zdGF0ZV9zdAotIAkgKi8K LSAJcmVjb3JkX3BxdWV1ZSBidWZmZXJlZF9hcHBfZGF0YTsKLSAKLS0JLyogSXMgc2V0IHdoZW4g bGlzdGVuaW5nIGZvciBuZXcgY29ubmVjdGlvbnMgd2l0aCBkdGxzMV9saXN0ZW4oKSAqLwotLQl1 bnNpZ25lZCBpbnQgbGlzdGVuOwotLQotLQl1bnNpZ25lZCBpbnQgbGlua19tdHU7IC8qIG1heCBv bi10aGUtd2lyZSBEVExTIHBhY2tldCBzaXplICovCi0gCXVuc2lnbmVkIGludCBtdHU7IC8qIG1h eCBEVExTIHBhY2tldCBzaXplICovCi0gCi0gCXN0cnVjdCBobV9oZWFkZXJfc3Qgd19tc2dfaGRy OwotQEAgLTI2Miw2ICsyNTgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgZHRsczFfc3RhdGVfc3QKLSAJ ICovCi0gCXVuc2lnbmVkIGludCBjaGFuZ2VfY2lwaGVyX3NwZWNfb2s7Ci0gCi0rCS8qIElzIHNl dCB3aGVuIGxpc3RlbmluZyBmb3IgbmV3IGNvbm5lY3Rpb25zIHdpdGggZHRsczFfbGlzdGVuKCkg Ki8KLSsJdW5zaWduZWQgaW50IGxpc3RlbjsKLSsKLSsJdW5zaWduZWQgaW50IGxpbmtfbXR1OyAv KiBtYXggb24tdGhlLXdpcmUgRFRMUyBwYWNrZXQgc2l6ZSAqLwotKwotICNpZm5kZWYgT1BFTlNT TF9OT19TQ1RQCi0gCS8qIHVzZWQgd2hlbiBTU0xfU1RfWFhfRkxVU0ggaXMgZW50ZXJlZCAqLwot IAlpbnQgbmV4dF9zdGF0ZTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4xay1lY2Mtc3VpdGVi LnBhdGNoIGIvb3BlbnNzbC0xLjAuMWstZWNjLXN1aXRlYi5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggYmYwMDY1Zi4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4xay1lY2Mt c3VpdGViLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLWRpZmYgLXVwIG9w ZW5zc2wtMS4wLjFrL2FwcHMvc3BlZWQuYy5zdWl0ZWIgb3BlbnNzbC0xLjAuMWsvYXBwcy9zcGVl ZC5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvYXBwcy9zcGVlZC5jLnN1aXRlYgkyMDE1LTAxLTA5IDEw OjAzOjM4LjQwNjkwODM4OCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2FwcHMvc3BlZWQuYwky MDE1LTAxLTA5IDEwOjAzOjM4LjYwMjkxMjgyMSArMDEwMAotQEAgLTk2Niw0OSArOTY2LDIzIEBA IGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCWVsc2UKLSAjZW5kaWYKLSAjaWZu ZGVmIE9QRU5TU0xfTk9fRUNEU0EKLS0JCSAgICAgaWYgKHN0cmNtcCgqYXJndiwiZWNkc2FwMTYw IikgPT0gMCkgZWNkc2FfZG9pdFtSX0VDX1AxNjBdPTI7Ci0tCQllbHNlIGlmIChzdHJjbXAoKmFy Z3YsImVjZHNhcDE5MiIpID09IDApIGVjZHNhX2RvaXRbUl9FQ19QMTkyXT0yOwotLQkJZWxzZSBp ZiAoc3RyY21wKCphcmd2LCJlY2RzYXAyMjQiKSA9PSAwKSBlY2RzYV9kb2l0W1JfRUNfUDIyNF09 MjsKLS0JCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiZWNkc2FwMjU2IikgPT0gMCkgZWNkc2FfZG9p dFtSX0VDX1AyNTZdPTI7Ci0rCQlpZiAoc3RyY21wKCphcmd2LCJlY2RzYXAyNTYiKSA9PSAwKSBl Y2RzYV9kb2l0W1JfRUNfUDI1Nl09MjsKLSAJCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiZWNkc2Fw Mzg0IikgPT0gMCkgZWNkc2FfZG9pdFtSX0VDX1AzODRdPTI7Ci0gCQllbHNlIGlmIChzdHJjbXAo KmFyZ3YsImVjZHNhcDUyMSIpID09IDApIGVjZHNhX2RvaXRbUl9FQ19QNTIxXT0yOwotLQkJZWxz ZSBpZiAoc3RyY21wKCphcmd2LCJlY2RzYWsxNjMiKSA9PSAwKSBlY2RzYV9kb2l0W1JfRUNfSzE2 M109MjsKLS0JCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiZWNkc2FrMjMzIikgPT0gMCkgZWNkc2Ff ZG9pdFtSX0VDX0syMzNdPTI7Ci0tCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsImVjZHNhazI4MyIp ID09IDApIGVjZHNhX2RvaXRbUl9FQ19LMjgzXT0yOwotLQkJZWxzZSBpZiAoc3RyY21wKCphcmd2 LCJlY2RzYWs0MDkiKSA9PSAwKSBlY2RzYV9kb2l0W1JfRUNfSzQwOV09MjsKLS0JCWVsc2UgaWYg KHN0cmNtcCgqYXJndiwiZWNkc2FrNTcxIikgPT0gMCkgZWNkc2FfZG9pdFtSX0VDX0s1NzFdPTI7 Ci0tCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsImVjZHNhYjE2MyIpID09IDApIGVjZHNhX2RvaXRb Ul9FQ19CMTYzXT0yOwotLQkJZWxzZSBpZiAoc3RyY21wKCphcmd2LCJlY2RzYWIyMzMiKSA9PSAw KSBlY2RzYV9kb2l0W1JfRUNfQjIzM109MjsKLS0JCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiZWNk c2FiMjgzIikgPT0gMCkgZWNkc2FfZG9pdFtSX0VDX0IyODNdPTI7Ci0tCQllbHNlIGlmIChzdHJj bXAoKmFyZ3YsImVjZHNhYjQwOSIpID09IDApIGVjZHNhX2RvaXRbUl9FQ19CNDA5XT0yOwotLQkJ ZWxzZSBpZiAoc3RyY21wKCphcmd2LCJlY2RzYWI1NzEiKSA9PSAwKSBlY2RzYV9kb2l0W1JfRUNf QjU3MV09MjsKLSAJCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiZWNkc2EiKSA9PSAwKQotIAkJCXsK LS0JCQlmb3IgKGk9MDsgaSA8IEVDX05VTTsgaSsrKQotKwkJCWZvciAoaT1SX0VDX1AyNTY7IGkg PD0gUl9FQ19QNTIxOyBpKyspCi0gCQkJCWVjZHNhX2RvaXRbaV09MTsKLSAJCQl9Ci0gCQllbHNl Ci0gI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKLS0JCSAgICAgaWYgKHN0cmNtcCgq YXJndiwiZWNkaHAxNjAiKSA9PSAwKSBlY2RoX2RvaXRbUl9FQ19QMTYwXT0yOwotLQkJZWxzZSBp ZiAoc3RyY21wKCphcmd2LCJlY2RocDE5MiIpID09IDApIGVjZGhfZG9pdFtSX0VDX1AxOTJdPTI7 Ci0tCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsImVjZGhwMjI0IikgPT0gMCkgZWNkaF9kb2l0W1Jf RUNfUDIyNF09MjsKLS0JCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiZWNkaHAyNTYiKSA9PSAwKSBl Y2RoX2RvaXRbUl9FQ19QMjU2XT0yOwotKwkJaWYgKHN0cmNtcCgqYXJndiwiZWNkaHAyNTYiKSA9 PSAwKSBlY2RoX2RvaXRbUl9FQ19QMjU2XT0yOwotIAkJZWxzZSBpZiAoc3RyY21wKCphcmd2LCJl Y2RocDM4NCIpID09IDApIGVjZGhfZG9pdFtSX0VDX1AzODRdPTI7Ci0gCQllbHNlIGlmIChzdHJj bXAoKmFyZ3YsImVjZGhwNTIxIikgPT0gMCkgZWNkaF9kb2l0W1JfRUNfUDUyMV09MjsKLS0JCWVs c2UgaWYgKHN0cmNtcCgqYXJndiwiZWNkaGsxNjMiKSA9PSAwKSBlY2RoX2RvaXRbUl9FQ19LMTYz XT0yOwotLQkJZWxzZSBpZiAoc3RyY21wKCphcmd2LCJlY2RoazIzMyIpID09IDApIGVjZGhfZG9p dFtSX0VDX0syMzNdPTI7Ci0tCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsImVjZGhrMjgzIikgPT0g MCkgZWNkaF9kb2l0W1JfRUNfSzI4M109MjsKLS0JCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiZWNk aGs0MDkiKSA9PSAwKSBlY2RoX2RvaXRbUl9FQ19LNDA5XT0yOwotLQkJZWxzZSBpZiAoc3RyY21w KCphcmd2LCJlY2RoazU3MSIpID09IDApIGVjZGhfZG9pdFtSX0VDX0s1NzFdPTI7Ci0tCQllbHNl IGlmIChzdHJjbXAoKmFyZ3YsImVjZGhiMTYzIikgPT0gMCkgZWNkaF9kb2l0W1JfRUNfQjE2M109 MjsKLS0JCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiZWNkaGIyMzMiKSA9PSAwKSBlY2RoX2RvaXRb Ul9FQ19CMjMzXT0yOwotLQkJZWxzZSBpZiAoc3RyY21wKCphcmd2LCJlY2RoYjI4MyIpID09IDAp IGVjZGhfZG9pdFtSX0VDX0IyODNdPTI7Ci0tCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsImVjZGhi NDA5IikgPT0gMCkgZWNkaF9kb2l0W1JfRUNfQjQwOV09MjsKLS0JCWVsc2UgaWYgKHN0cmNtcCgq YXJndiwiZWNkaGI1NzEiKSA9PSAwKSBlY2RoX2RvaXRbUl9FQ19CNTcxXT0yOwotIAkJZWxzZSBp ZiAoc3RyY21wKCphcmd2LCJlY2RoIikgPT0gMCkKLSAJCQl7Ci0tCQkJZm9yIChpPTA7IGkgPCBF Q19OVU07IGkrKykKLSsJCQlmb3IgKGk9Ul9FQ19QMjU2OyBpIDw9IFJfRUNfUDUyMTsgaSsrKQot IAkJCQllY2RoX2RvaXRbaV09MTsKLSAJCQl9Ci0gCQllbHNlCi1AQCAtMTA5NywxNSArMTA3MSwx MSBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJQklPX3ByaW50ZihiaW9f ZXJyLCJkc2E1MTIgICBkc2ExMDI0ICBkc2EyMDQ4XG4iKTsKLSAjZW5kaWYKLSAjaWZuZGVmIE9Q RU5TU0xfTk9fRUNEU0EKLS0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImVjZHNhcDE2MCBlY2RzYXAx OTIgZWNkc2FwMjI0IGVjZHNhcDI1NiBlY2RzYXAzODQgZWNkc2FwNTIxXG4iKTsKLS0JCQlCSU9f cHJpbnRmKGJpb19lcnIsImVjZHNhazE2MyBlY2RzYWsyMzMgZWNkc2FrMjgzIGVjZHNhazQwOSBl Y2RzYWs1NzFcbiIpOwotLQkJCUJJT19wcmludGYoYmlvX2VyciwiZWNkc2FiMTYzIGVjZHNhYjIz MyBlY2RzYWIyODMgZWNkc2FiNDA5IGVjZHNhYjU3MVxuIik7Ci0rCQkJQklPX3ByaW50ZihiaW9f ZXJyLCJlY2RzYXAyNTYgZWNkc2FwMzg0IGVjZHNhcDUyMVxuIik7Ci0gCQkJQklPX3ByaW50Zihi aW9fZXJyLCJlY2RzYVxuIik7Ci0gI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKLS0J CQlCSU9fcHJpbnRmKGJpb19lcnIsImVjZGhwMTYwICBlY2RocDE5MiAgZWNkaHAyMjQgIGVjZGhw MjU2ICBlY2RocDM4NCAgZWNkaHA1MjFcbiIpOwotLQkJCUJJT19wcmludGYoYmlvX2VyciwiZWNk aGsxNjMgIGVjZGhrMjMzICBlY2RoazI4MyAgZWNkaGs0MDkgIGVjZGhrNTcxXG4iKTsKLS0JCQlC SU9fcHJpbnRmKGJpb19lcnIsImVjZGhiMTYzICBlY2RoYjIzMyAgZWNkaGIyODMgIGVjZGhiNDA5 ICBlY2RoYjU3MVxuIik7Ci0rCQkJQklPX3ByaW50ZihiaW9fZXJyLCJlY2RocDI1NiAgZWNkaHAz ODQgZWNkaHA1MjFcbiIpOwotIAkJCUJJT19wcmludGYoYmlvX2VyciwiZWNkaFxuIik7Ci0gI2Vu ZGlmCi0gCi1AQCAtMTE4NCwxMSArMTE1NCwxMSBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCi0gCQkgICAgaWYgKCFGSVBTX21vZGUoKSB8fCBpICE9IFJfRFNBXzUxMikKLSAJCQlk c2FfZG9pdFtpXT0xOwotICNpZm5kZWYgT1BFTlNTTF9OT19FQ0RTQQotLQkJZm9yIChpPTA7IGk8 RUNfTlVNOyBpKyspCi0rCQlmb3IgKGk9Ul9FQ19QMjU2OyBpIDw9IFJfRUNfUDUyMTsgaSsrKQot IAkJCWVjZHNhX2RvaXRbaV09MTsKLSAjZW5kaWYKLSAjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAot LQkJZm9yIChpPTA7IGk8RUNfTlVNOyBpKyspCi0rCQlmb3IgKGk9Ul9FQ19QMjU2OyBpIDw9IFJf RUNfUDUyMTsgaSsrKQotIAkJCWVjZGhfZG9pdFtpXT0xOwotICNlbmRpZgotIAkJfQotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMWsvc3NsL3QxX2xpYi5jLnN1aXRlYiBvcGVuc3NsLTEuMC4xay9zc2wv dDFfbGliLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9zc2wvdDFfbGliLmMuc3VpdGViCTIwMTUtMDEt MDkgMTA6MDM6MzguNjAzOTEyODQ0ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvc3NsL3QxX2xp Yi5jCTIwMTUtMDEtMDkgMTA6MDY6MzUuNDcwOTEyODM0ICswMTAwCi1AQCAtMjE4LDI5ICsyMTgs MjEgQEAgc3RhdGljIGludCBwcmVmX2xpc3RbXSA9Ci0gCQlOSURfc2VjdDI4M2sxLCAvKiBzZWN0 MjgzazEgKDkpICovCi0gCQlOSURfc2VjdDI4M3IxLCAvKiBzZWN0MjgzcjEgKDEwKSAqLyAKLSAj ZW5kaWYKLS0JCU5JRF9zZWNwMjU2azEsIC8qIHNlY3AyNTZrMSAoMjIpICovIAotIAkJTklEX1g5 XzYyX3ByaW1lMjU2djEsIC8qIHNlY3AyNTZyMSAoMjMpICovIAotICNpZm5kZWYgT1BFTlNTTF9O T19FQzJNCi0gCQlOSURfc2VjdDIzOWsxLCAvKiBzZWN0MjM5azEgKDgpICovIAotIAkJTklEX3Nl Y3QyMzNrMSwgLyogc2VjdDIzM2sxICg2KSAqLwotIAkJTklEX3NlY3QyMzNyMSwgLyogc2VjdDIz M3IxICg3KSAqLyAKLSAjZW5kaWYKLS0JCU5JRF9zZWNwMjI0azEsIC8qIHNlY3AyMjRrMSAoMjAp ICovIAotLQkJTklEX3NlY3AyMjRyMSwgLyogc2VjcDIyNHIxICgyMSkgKi8KLSAjaWZuZGVmIE9Q RU5TU0xfTk9fRUMyTQotIAkJTklEX3NlY3QxOTNyMSwgLyogc2VjdDE5M3IxICg0KSAqLyAKLSAJ CU5JRF9zZWN0MTkzcjIsIC8qIHNlY3QxOTNyMiAoNSkgKi8gCi0gI2VuZGlmCi0tCQlOSURfc2Vj cDE5MmsxLCAvKiBzZWNwMTkyazEgKDE4KSAqLwotLQkJTklEX1g5XzYyX3ByaW1lMTkydjEsIC8q IHNlY3AxOTJyMSAoMTkpICovIAotICNpZm5kZWYgT1BFTlNTTF9OT19FQzJNCi0gCQlOSURfc2Vj dDE2M2sxLCAvKiBzZWN0MTYzazEgKDEpICovCi0gCQlOSURfc2VjdDE2M3IxLCAvKiBzZWN0MTYz cjEgKDIpICovCi0gCQlOSURfc2VjdDE2M3IyLCAvKiBzZWN0MTYzcjIgKDMpICovCi0gI2VuZGlm Ci0tCQlOSURfc2VjcDE2MGsxLCAvKiBzZWNwMTYwazEgKDE1KSAqLwotLQkJTklEX3NlY3AxNjBy MSwgLyogc2VjcDE2MHIxICgxNikgKi8gCi0tCQlOSURfc2VjcDE2MHIyLCAvKiBzZWNwMTYwcjIg KDE3KSAqLyAKLSAJfTsKLSAKLSBpbnQgdGxzMV9lY19jdXJ2ZV9pZDJuaWQoaW50IGN1cnZlX2lk KQotQEAgLTE4MjAsNyArMTgxMiw2IEBAIGludCBzc2xfcHJlcGFyZV9jbGllbnRoZWxsb190bHNl eHQoU1NMICoKLSAJCXMtPnRsc2V4dF9lY3BvaW50Zm9ybWF0bGlzdFsxXSA9IFRMU0VYVF9FQ1BP SU5URk9STUFUX2Fuc2lYOTYyX2NvbXByZXNzZWRfcHJpbWU7Ci0gCQlzLT50bHNleHRfZWNwb2lu dGZvcm1hdGxpc3RbMl0gPSBUTFNFWFRfRUNQT0lOVEZPUk1BVF9hbnNpWDk2Ml9jb21wcmVzc2Vk X2NoYXIyOwotIAotLQkJLyogd2Ugc3VwcG9ydCBhbGwgbmFtZWQgZWxsaXB0aWMgY3VydmVzIGlu IFJGQyA0NDkyICovCi0gCQlpZiAocy0+dGxzZXh0X2VsbGlwdGljY3VydmVsaXN0ICE9IE5VTEwp IE9QRU5TU0xfZnJlZShzLT50bHNleHRfZWxsaXB0aWNjdXJ2ZWxpc3QpOwotIAkJcy0+dGxzZXh0 X2VsbGlwdGljY3VydmVsaXN0X2xlbmd0aCA9IHNpemVvZihwcmVmX2xpc3QpL3NpemVvZihwcmVm X2xpc3RbMF0pICogMjsKLSAJCWlmICgocy0+dGxzZXh0X2VsbGlwdGljY3VydmVsaXN0ID0gT1BF TlNTTF9tYWxsb2Mocy0+dGxzZXh0X2VsbGlwdGljY3VydmVsaXN0X2xlbmd0aCkpID09IE5VTEwp CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMWstZXBoZW1lcmFsLWtleS1zaXplLnBhdGNoIGIv b3BlbnNzbC0xLjAuMWstZXBoZW1lcmFsLWtleS1zaXplLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAyM2Q0ZjMzLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjFrLWVwaGVt ZXJhbC1rZXktc2l6ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi1kaWZm IC11cCBvcGVuc3NsLTEuMC4xay9hcHBzL3NfYXBwcy5oLmVwaGVtZXJhbCBvcGVuc3NsLTEuMC4x ay9hcHBzL3NfYXBwcy5oCi0tLS0gb3BlbnNzbC0xLjAuMWsvYXBwcy9zX2FwcHMuaC5lcGhlbWVy YWwJMjAxNS0wMS0wOSAxMDoyMjowMy4yODk4OTYyMTEgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4x ay9hcHBzL3NfYXBwcy5oCTIwMTUtMDEtMDkgMTA6MjI6MDMuMzczODk4MTExICswMTAwCi1AQCAt MTU2LDYgKzE1Niw3IEBAIGludCBNU19DQUxMQkFDSyB2ZXJpZnlfY2FsbGJhY2soaW50IG9rLAot IGludCBzZXRfY2VydF9zdHVmZihTU0xfQ1RYICpjdHgsIGNoYXIgKmNlcnRfZmlsZSwgY2hhciAq a2V5X2ZpbGUpOwotIGludCBzZXRfY2VydF9rZXlfc3R1ZmYoU1NMX0NUWCAqY3R4LCBYNTA5ICpj ZXJ0LCBFVlBfUEtFWSAqa2V5KTsKLSAjZW5kaWYKLStpbnQgc3NsX3ByaW50X3RtcF9rZXkoQklP ICpvdXQsIFNTTCAqcyk7Ci0gaW50IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAqc2VydmVy LCBjaGFyICpwb3J0LCBpbnQgdHlwZSk7Ci0gaW50IHNob3VsZF9yZXRyeShpbnQgaSk7Ci0gaW50 IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0cixjaGFyICoqaG9zdF9wdHIsY2hhciAqKnBvcnRf cHRyKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2FwcHMvc19jYi5jLmVwaGVtZXJhbCBvcGVu c3NsLTEuMC4xay9hcHBzL3NfY2IuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2FwcHMvc19jYi5jLmVw aGVtZXJhbAkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wt MS4wLjFrL2FwcHMvc19jYi5jCTIwMTUtMDEtMDkgMTA6MjI6MDMuMzczODk4MTExICswMTAwCi1A QCAtMzM4LDYgKzMzOCwzOCBAQCB2b2lkIE1TX0NBTExCQUNLIGFwcHNfc3NsX2luZm9fY2FsbGJh Y2soCi0gCQl9Ci0gCX0KLSAKLStpbnQgc3NsX3ByaW50X3RtcF9rZXkoQklPICpvdXQsIFNTTCAq cykKLSsJewotKwlFVlBfUEtFWSAqa2V5OwotKwlpZiAoIVNTTF9nZXRfc2VydmVyX3RtcF9rZXko cywgJmtleSkpCi0rCQlyZXR1cm4gMTsKLSsJQklPX3B1dHMob3V0LCAiU2VydmVyIFRlbXAgS2V5 OiAiKTsKLSsJc3dpdGNoIChFVlBfUEtFWV9pZChrZXkpKQotKwkJewotKwljYXNlIEVWUF9QS0VZ X1JTQToKLSsJCUJJT19wcmludGYob3V0LCAiUlNBLCAlZCBiaXRzXG4iLCBFVlBfUEtFWV9iaXRz KGtleSkpOwotKwkJYnJlYWs7Ci0rCi0rCWNhc2UgRVZQX1BLRVlfREg6Ci0rCQlCSU9fcHJpbnRm KG91dCwgIkRILCAlZCBiaXRzXG4iLCBFVlBfUEtFWV9iaXRzKGtleSkpOwotKwkJYnJlYWs7Ci0r Ci0rCWNhc2UgRVZQX1BLRVlfRUM6Ci0rCQkJewotKwkJCUVDX0tFWSAqZWMgPSBFVlBfUEtFWV9n ZXQxX0VDX0tFWShrZXkpOwotKwkJCWludCBuaWQ7Ci0rCQkJY29uc3QgY2hhciAqY25hbWU7Ci0r CQkJbmlkID0gRUNfR1JPVVBfZ2V0X2N1cnZlX25hbWUoRUNfS0VZX2dldDBfZ3JvdXAoZWMpKTsK LSsJCQlFQ19LRVlfZnJlZShlYyk7Ci0rCQkJY25hbWUgPSBPQkpfbmlkMnNuKG5pZCk7Ci0rCQkJ QklPX3ByaW50ZihvdXQsICJFQ0RILCAlcywgJWQgYml0c1xuIiwKLSsJCQkJCQljbmFtZSwgRVZQ X1BLRVlfYml0cyhrZXkpKTsKLSsJCQl9Ci0rCQl9Ci0rCUVWUF9QS0VZX2ZyZWUoa2V5KTsKLSsJ cmV0dXJuIDE7Ci0rCX0KLSsJCQotIAotIHZvaWQgTVNfQ0FMTEJBQ0sgbXNnX2NiKGludCB3cml0 ZV9wLCBpbnQgdmVyc2lvbiwgaW50IGNvbnRlbnRfdHlwZSwgY29uc3Qgdm9pZCAqYnVmLCBzaXpl X3QgbGVuLCBTU0wgKnNzbCwgdm9pZCAqYXJnKQotIAl7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4x ay9hcHBzL3NfY2xpZW50LmMuZXBoZW1lcmFsIG9wZW5zc2wtMS4wLjFrL2FwcHMvc19jbGllbnQu YwotLS0tIG9wZW5zc2wtMS4wLjFrL2FwcHMvc19jbGllbnQuYy5lcGhlbWVyYWwJMjAxNS0wMS0w OSAxMDoyMjowMy4zNjc4OTc5NzUgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9hcHBzL3NfY2xp ZW50LmMJMjAxNS0wMS0wOSAxMDoyMjowMy4zNzM4OTgxMTEgKzAxMDAKLUBAIC0yMDU4LDYgKzIw NTgsOCBAQCBzdGF0aWMgdm9pZCBwcmludF9zdHVmZihCSU8gKmJpbywgU1NMICpzCi0gCQkJQklP X3dyaXRlKGJpbywiXG4iLDEpOwotIAkJCX0KLSAKLSsJCXNzbF9wcmludF90bXBfa2V5KGJpbywg cyk7Ci0rCi0gCQlCSU9fcHJpbnRmKGJpbywiLS0tXG5TU0wgaGFuZHNoYWtlIGhhcyByZWFkICVs ZCBieXRlcyBhbmQgd3JpdHRlbiAlbGQgYnl0ZXNcbiIsCi0gCQkJQklPX251bWJlcl9yZWFkKFNT TF9nZXRfcmJpbyhzKSksCi0gCQkJQklPX251bWJlcl93cml0dGVuKFNTTF9nZXRfd2JpbyhzKSkp OwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvc3NsL3NzbC5oLmVwaGVtZXJhbCBvcGVuc3NsLTEu MC4xay9zc2wvc3NsLmgKLS0tLSBvcGVuc3NsLTEuMC4xay9zc2wvc3NsLmguZXBoZW1lcmFsCTIw MTUtMDEtMDkgMTA6MjI6MDMuMzU4ODk3NzcyICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvc3Ns L3NzbC5oCTIwMTUtMDEtMDkgMTA6MjU6MDguNjQ0MDg4MTQ2ICswMTAwCi1AQCAtMTU5Myw2ICsx NTkzLDcgQEAgREVDTEFSRV9QRU1fcncoU1NMX1NFU1NJT04sIFNTTF9TRVNTSU9OKQotICNkZWZp bmUgU1NMX0NUUkxfR0VUX0VYVFJBX0NIQUlOX0NFUlRTCQk4MgotICNkZWZpbmUgU1NMX0NUUkxf Q0xFQVJfRVhUUkFfQ0hBSU5fQ0VSVFMJODMKLSAKLSsjZGVmaW5lIFNTTF9DVFJMX0dFVF9TRVJW RVJfVE1QX0tFWQkJMTA5Ci0gI2RlZmluZSBTU0xfQ1RSTF9DSEVDS19QUk9UT19WRVJTSU9OCQkx MTkKLSAjZGVmaW5lIERUTFNfQ1RSTF9TRVRfTElOS19NVFUJCQkxMjAKLSAjZGVmaW5lIERUTFNf Q1RSTF9HRVRfTElOS19NSU5fTVRVCQkxMjEKLUBAIC0xNjM4LDYgKzE2MzksOSBAQCBERUNMQVJF X1BFTV9ydyhTU0xfU0VTU0lPTiwgU1NMX1NFU1NJT04pCi0gI2RlZmluZSBTU0xfQ1RYX2NsZWFy X2V4dHJhX2NoYWluX2NlcnRzKGN0eCkgXAotIAlTU0xfQ1RYX2N0cmwoY3R4LFNTTF9DVFJMX0NM RUFSX0VYVFJBX0NIQUlOX0NFUlRTLDAsTlVMTCkKLSAKLSsjZGVmaW5lIFNTTF9nZXRfc2VydmVy X3RtcF9rZXkocywgcGspIFwKLSsJU1NMX2N0cmwocyxTU0xfQ1RSTF9HRVRfU0VSVkVSX1RNUF9L RVksMCxwaykKLSsKLSAjaWZuZGVmIE9QRU5TU0xfTk9fQklPCi0gQklPX01FVEhPRCAqQklPX2Zf c3NsKHZvaWQpOwotIEJJTyAqQklPX25ld19zc2woU1NMX0NUWCAqY3R4LGludCBjbGllbnQpOwot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvc3NsL3MzX2xpYi5jLmVwaGVtZXJhbCBvcGVuc3NsLTEu MC4xay9zc2wvczNfbGliLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9zc2wvczNfbGliLmMuZXBoZW1l cmFsCTIwMTUtMDEtMDggMTU6MDA6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAu MWsvc3NsL3MzX2xpYi5jCTIwMTUtMDEtMDkgMTA6MjI6MDMuMzc0ODk4MTMzICswMTAwCi1AQCAt MzM1Niw2ICszMzU2LDQ1IEBAIGxvbmcgc3NsM19jdHJsKFNTTCAqcywgaW50IGNtZCwgbG9uZyBs YXIKLSAKLSAjZW5kaWYgLyogIU9QRU5TU0xfTk9fVExTRVhUICovCi0gCi0rCWNhc2UgU1NMX0NU UkxfR0VUX1NFUlZFUl9UTVBfS0VZOgotKwkJaWYgKHMtPnNlcnZlciB8fCAhcy0+c2Vzc2lvbiB8 fCAhcy0+c2Vzc2lvbi0+c2Vzc19jZXJ0KQotKwkJCXJldHVybiAwOwotKwkJZWxzZQotKwkJCXsK LSsJCQlTRVNTX0NFUlQgKnNjOwotKwkJCUVWUF9QS0VZICpwdG1wOwotKwkJCWludCBydiA9IDA7 Ci0rCQkJc2MgPSBzLT5zZXNzaW9uLT5zZXNzX2NlcnQ7Ci0rI2lmICFkZWZpbmVkKE9QRU5TU0xf Tk9fUlNBKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0RIKSAmJiAhZGVmaW5lZChPUEVOU1NMX05P X0VDKQotKwkJCWlmICghc2MtPnBlZXJfcnNhX3RtcCAmJiAhc2MtPnBlZXJfZGhfdG1wCi0rCQkJ CQkJCSYmICFzYy0+cGVlcl9lY2RoX3RtcCkKLSsJCQkJcmV0dXJuIDA7Ci0rI2VuZGlmCi0rCQkJ cHRtcCA9IEVWUF9QS0VZX25ldygpOwotKwkJCWlmICghcHRtcCkKLSsJCQkJcmV0dXJuIDA7Ci0r CQkJaWYgKDApOwotKyNpZm5kZWYgT1BFTlNTTF9OT19SU0EKLSsJCQllbHNlIGlmIChzYy0+cGVl cl9yc2FfdG1wKQotKwkJCQlydiA9IEVWUF9QS0VZX3NldDFfUlNBKHB0bXAsIHNjLT5wZWVyX3Jz YV90bXApOwotKyNlbmRpZgotKyNpZm5kZWYgT1BFTlNTTF9OT19ESAotKwkJCWVsc2UgaWYgKHNj LT5wZWVyX2RoX3RtcCkKLSsJCQkJcnYgPSBFVlBfUEtFWV9zZXQxX0RIKHB0bXAsIHNjLT5wZWVy X2RoX3RtcCk7Ci0rI2VuZGlmCi0rI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKLSsJCQllbHNlIGlm IChzYy0+cGVlcl9lY2RoX3RtcCkKLSsJCQkJcnYgPSBFVlBfUEtFWV9zZXQxX0VDX0tFWShwdG1w LCBzYy0+cGVlcl9lY2RoX3RtcCk7Ci0rI2VuZGlmCi0rCQkJaWYgKHJ2KQotKwkJCQl7Ci0rCQkJ CSooRVZQX1BLRVkgKiopcGFyZyA9IHB0bXA7Ci0rCQkJCXJldHVybiAxOwotKwkJCQl9Ci0rCQkJ RVZQX1BLRVlfZnJlZShwdG1wKTsKLSsJCQlyZXR1cm4gMDsKLSsJCQl9Ci0rCi0gCWNhc2UgU1NM X0NUUkxfQ0hFQ0tfUFJPVE9fVkVSU0lPTjoKLSAJCS8qIEZvciBsaWJyYXJ5LWludGVybmFsIHVz ZTsgY2hlY2tzIHRoYXQgdGhlIGN1cnJlbnQgcHJvdG9jb2wKLSAJCSAqIGlzIHRoZSBoaWdoZXN0 IGVuYWJsZWQgdmVyc2lvbiAoYWNjb3JkaW5nIHRvIHMtPmN0eC0+bWV0aG9kLAoKZGlmZiAtLWdp dCBhL29wZW5zc2wtMS4wLjFrLWZpcHMucGF0Y2ggYi9vcGVuc3NsLTEuMC4xay1maXBzLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzUzMjljLi4wMDAwMDAwCi0tLSBhL29w ZW5zc2wtMS4wLjFrLWZpcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDQwMCArMCwwIEBA Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9hcHBzL3NwZWVkLmMuZmlwcyBvcGVuc3NsLTEuMC4x ay9hcHBzL3NwZWVkLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9hcHBzL3NwZWVkLmMuZmlwcwkyMDE1 LTAxLTA4IDE1OjAwOjU2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2FwcHMv c3BlZWQuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjUzODkyMTk5NyArMDEwMAotQEAgLTE5NSw3ICsx OTUsNiBAQAotICNpZmRlZiBPUEVOU1NMX0RPSU5HX01BS0VERVBFTkQKLSAjdW5kZWYgQUVTX3Nl dF9lbmNyeXB0X2tleQotICN1bmRlZiBBRVNfc2V0X2RlY3J5cHRfa2V5Ci0tI3VuZGVmIERFU19z ZXRfa2V5X3VuY2hlY2tlZAotICNlbmRpZgotICNkZWZpbmUgQkZfc2V0X2tleQlwcml2YXRlX0JG X3NldF9rZXkKLSAjZGVmaW5lIENBU1Rfc2V0X2tleQlwcml2YXRlX0NBU1Rfc2V0X2tleQotQEAg LTIwMyw3ICsyMDIsNiBAQAotICNkZWZpbmUgU0VFRF9zZXRfa2V5CXByaXZhdGVfU0VFRF9zZXRf a2V5Ci0gI2RlZmluZSBSQzJfc2V0X2tleQlwcml2YXRlX1JDMl9zZXRfa2V5Ci0gI2RlZmluZSBS QzRfc2V0X2tleQlwcml2YXRlX1JDNF9zZXRfa2V5Ci0tI2RlZmluZSBERVNfc2V0X2tleV91bmNo ZWNrZWQJcHJpdmF0ZV9ERVNfc2V0X2tleV91bmNoZWNrZWQKLSAjZGVmaW5lIEFFU19zZXRfZW5j cnlwdF9rZXkJcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5Ci0gI2RlZmluZSBBRVNfc2V0X2Rl Y3J5cHRfa2V5CXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQotICNkZWZpbmUgQ2FtZWxsaWFf c2V0X2tleQlwcml2YXRlX0NhbWVsbGlhX3NldF9rZXkKLUBAIC05NDEsNyArOTM5LDEyIEBAIGlu dCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAjaWZuZGVmIE9QRU5TU0xfTk9fUlNBCi0g CQkJaWYgKHN0cmNtcCgqYXJndiwicnNhIikgPT0gMCkKLSAJCQl7Ci0rI2lmZGVmIE9QRU5TU0xf RklQUwotKwkJCQlpZiAoIUZJUFNfbW9kZSgpKQotKyNlbmRpZgotKwkJCQl7Ci0gCQkJcnNhX2Rv aXRbUl9SU0FfNTEyXT0xOwotKwkJCQl9Ci0gCQkJcnNhX2RvaXRbUl9SU0FfMTAyNF09MTsKLSAJ CQlyc2FfZG9pdFtSX1JTQV8yMDQ4XT0xOwotIAkJCXJzYV9kb2l0W1JfUlNBXzQwOTZdPTE7Ci1A QCAtOTUxLDcgKzk1NCwxMiBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gI2lm bmRlZiBPUEVOU1NMX05PX0RTQQotIAkJCWlmIChzdHJjbXAoKmFyZ3YsImRzYSIpID09IDApCi0g CQkJewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJCQkJaWYgKCFGSVBTX21vZGUoKSkKLSsjZW5k aWYKLSsJCQkJewotIAkJCWRzYV9kb2l0W1JfRFNBXzUxMl09MTsKLSsJCQkJfQotIAkJCWRzYV9k b2l0W1JfRFNBXzEwMjRdPTE7Ci0gCQkJZHNhX2RvaXRbUl9EU0FfMjA0OF09MTsKLSAJCQl9Ci1A QCAtMTE2MiwxMiArMTE3MCwxOCBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0g CQl7Ci0gCQlmb3IgKGk9MDsgaTxBTEdPUl9OVU07IGkrKykKLSAJCQl7Ci0tCQkJaWYgKGkgIT0g RF9FVlApCi0rCQkJaWYgKGkgIT0gRF9FVlAgJiYKLSsJCQkgICAgKCFGSVBTX21vZGUoKSB8fCAo aSAhPSBEX1dISVJMUE9PTCAmJgotKwkJCQlpICE9IERfTUQyICYmIGkgIT0gRF9NRDQgJiYKLSsJ CQkJaSAhPSBEX01ENSAmJiBpICE9IERfTURDMiAmJgotKwkJCQlpICE9IERfUk1EMTYwKSkpCi0g CQkJCWRvaXRbaV09MTsKLSAJCQl9Ci0gCQlmb3IgKGk9MDsgaTxSU0FfTlVNOyBpKyspCi0rCQkg ICAgaWYgKCFGSVBTX21vZGUoKSB8fCBpICE9IFJfUlNBXzUxMikKLSAJCQlyc2FfZG9pdFtpXT0x OwotIAkJZm9yIChpPTA7IGk8RFNBX05VTTsgaSsrKQotKwkJICAgIGlmICghRklQU19tb2RlKCkg fHwgaSAhPSBSX0RTQV81MTIpCi0gCQkJZHNhX2RvaXRbaV09MTsKLSAjaWZuZGVmIE9QRU5TU0xf Tk9fRUNEU0EKLSAJCWZvciAoaT0wOyBpPEVDX05VTTsgaSsrKQotQEAgLTEyMjYsMzAgKzEyNDAs NTQgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlBRVNfc2V0X2VuY3J5cHRf a2V5KGtleTMyLDI1NiwmYWVzX2tzMyk7Ci0gI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX0NB TUVMTElBCi0rCWlmIChkb2l0W0RfQ0JDXzEyOF9DTUxdIHx8IGRvaXRbRF9DQkNfMTkyX0NNTF0g fHwgZG9pdFtEX0NCQ18yNTZfQ01MXSkKLSsJICAgIHsKLSAJQ2FtZWxsaWFfc2V0X2tleShrZXkx NiwxMjgsJmNhbWVsbGlhX2tzMSk7Ci0gCUNhbWVsbGlhX3NldF9rZXkoY2tleTI0LDE5MiwmY2Ft ZWxsaWFfa3MyKTsKLSAJQ2FtZWxsaWFfc2V0X2tleShja2V5MzIsMjU2LCZjYW1lbGxpYV9rczMp OwotKwkgICAgfQotICNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9OT19JREVBCi0rCWlmIChkb2l0 W0RfQ0JDX0lERUFdKQotKwkgICAgewotIAlpZGVhX3NldF9lbmNyeXB0X2tleShrZXkxNiwmaWRl YV9rcyk7Ci0rCSAgICB9Ci0gI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX1NFRUQKLSsJaWYg KGRvaXRbRF9DQkNfU0VFRF0pCi0rCSAgICB7Ci0gCVNFRURfc2V0X2tleShrZXkxNiwmc2VlZF9r cyk7Ci0rCSAgICB9Ci0gI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX1JDNAotKwlpZiAoZG9p dFtEX1JDNF0pCi0rCSAgICB7Ci0gCVJDNF9zZXRfa2V5KCZyYzRfa3MsMTYsa2V5MTYpOwotKwkg ICAgfQotICNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9OT19SQzIKLSsJaWYgKGRvaXRbRF9DQkNf UkMyXSkKLSsJICAgIHsKLSAJUkMyX3NldF9rZXkoJnJjMl9rcywxNixrZXkxNiwxMjgpOwotKwkg ICAgfQotICNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9OT19SQzUKLSsJaWYgKGRvaXRbRF9DQkNf UkM1XSkKLSsJICAgIHsKLSAJUkM1XzMyX3NldF9rZXkoJnJjNV9rcywxNixrZXkxNiwxMik7Ci0r CSAgICB9Ci0gI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX0JGCi0rCWlmIChkb2l0W0RfQ0JD X0JGXSkKLSsJICAgIHsKLSAJQkZfc2V0X2tleSgmYmZfa3MsMTYsa2V5MTYpOwotKwkgICAgfQot ICNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9OT19DQVNUCi0rCWlmIChkb2l0W0RfQ0JDX0NBU1Rd KQotKwkgICAgewotIAlDQVNUX3NldF9rZXkoJmNhc3Rfa3MsMTYsa2V5MTYpOwotKwkgICAgfQot ICNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9OT19SU0EKLSAJbWVtc2V0KHJzYV9jLDAsc2l6ZW9m KHJzYV9jKSk7Ci1AQCAtMTU2NCw2ICsxNjAyLDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQotIAkJSE1BQ19DVFggaGN0eDsKLSAKLSAJCUhNQUNfQ1RYX2luaXQoJmhjdHgpOwot KwkJSE1BQ19DVFhfc2V0X2ZsYWdzKCZoY3R4LCBFVlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxM T1cpOwotIAkJSE1BQ19Jbml0X2V4KCZoY3R4LCh1bnNpZ25lZCBjaGFyICopIlRoaXMgaXMgYSBr ZXkuLi4iLAotIAkJCTE2LEVWUF9tZDUoKSwgTlVMTCk7Ci0gCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4xay9Db25maWd1cmUuZmlwcyBvcGVuc3NsLTEuMC4xay9Db25maWd1cmUKLS0tLSBvcGVuc3Ns LTEuMC4xay9Db25maWd1cmUuZmlwcwkyMDE1LTAxLTA5IDA5OjUxOjUxLjI1NzkxNTY0MiArMDEw MAotKysrIG9wZW5zc2wtMS4wLjFrL0NvbmZpZ3VyZQkyMDE1LTAxLTA5IDA5OjUxOjUxLjUzOTky MjAyMCArMDEwMAotQEAgLTEwMDMsMTEgKzEwMDMsNiBAQCBpZiAoZGVmaW5lZCgkZGlzYWJsZWR7 Im1kNSJ9KSB8fCBkZWZpbmVkCi0gCSRkaXNhYmxlZHsic3NsMiJ9ID0gImZvcmNlZCI7Ci0gCX0K LSAKLS1pZiAoJGZpcHMgJiYgJGZpcHNsaWJkaXIgZXEgIiIpCi0tCXsKLS0JJGZpcHNsaWJkaXIg PSAkZmlwc2RpciAuICIvbGliLyI7Ci0tCX0KLS0KLSAjIFJTQVggRU5HSU5FIHNldHMgZGVmYXVs dCBub24tRklQUyBSU0EgbWV0aG9kLgotIGlmICgkZmlwcykKLSAJewotQEAgLTE0ODIsNyArMTQ3 Nyw2IEBAICRjZmxhZ3MuPSIgLURPUEVOU1NMX0JOX0FTTV9HRjJtIiBpZiAoJGIKLSBpZiAoJGZp cHMpCi0gCXsKLSAJJG9wZW5zc2xfb3RoZXJfZGVmaW5lcy49IiNkZWZpbmUgT1BFTlNTTF9GSVBT XG4iOwotLQkkY2ZsYWdzIC49ICIgLUlcJChGSVBTRElSKS9pbmNsdWRlIjsKLSAJfQotIAotICRj cHVpZF9vYmo9Im1lbV9jbHIubyIJdW5sZXNzICgkY3B1aWRfb2JqID1+IC9cLm8kLyk7Ci1AQCAt MTY2OSw5ICsxNjYzLDEyIEBAIHdoaWxlICg8SU4+KQotIAotIAlzL15GSVBTRElSPS4qL0ZJUFNE SVI9JGZpcHNkaXIvOwotIAlzL15GSVBTTElCRElSPS4qL0ZJUFNMSUJESVI9JGZpcHNsaWJkaXIv OwotLQlzL15GSVBTQ0FOTElCPS4qL0ZJUFNDQU5MSUI9bGliY3J5cHRvLyBpZiAkZmlwczsKLSAJ cy9eQkFTRUFERFI9LiovQkFTRUFERFI9JGJhc2VhZGRyLzsKLSAKLSsJaWYgKCRmaXBzKQotKwkJ ewotKwkJcy9eRklQUz0uKi9GSVBTPXllcy87Ci0rCQl9Ci0gCXMvXlNITElCX1RBUkdFVD0uKi9T SExJQl9UQVJHRVQ9JHNoYXJlZF90YXJnZXQvOwotIAlzL15TSExJQl9NQVJLPS4qL1NITElCX01B Uks9JHNoYXJlZF9tYXJrLzsKLSAJcy9eU0hBUkVEX0xJQlM9LiovU0hBUkVEX0xJQlM9XCQoU0hB UkVEX0NSWVBUTykgXCQoU0hBUkVEX1NTTCkvIGlmICghJG5vX3NoYXJlZCk7Ci1kaWZmIC11cCBv cGVuc3NsLTEuMC4xay9jcnlwdG8vYWVzL2Flc19taXNjLmMuZmlwcyBvcGVuc3NsLTEuMC4xay9j cnlwdG8vYWVzL2Flc19taXNjLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vYWVzL2Flc19t aXNjLmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9hZXMvYWVzX21pc2MuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjUzOTky MjAyMCArMDEwMAotQEAgLTY5LDE3ICs2OSwxMSBAQCBjb25zdCBjaGFyICpBRVNfb3B0aW9ucyh2 b2lkKSB7Ci0gaW50IEFFU19zZXRfZW5jcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNl cktleSwgY29uc3QgaW50IGJpdHMsCi0gCQkJQUVTX0tFWSAqa2V5KQotIAl7Ci0tI2lmZGVmIE9Q RU5TU0xfRklQUwotLQlmaXBzX2NpcGhlcl9hYm9ydChBRVMpOwotLSNlbmRpZgotIAlyZXR1cm4g cHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5KHVzZXJLZXksIGJpdHMsIGtleSk7Ci0gCX0KLSAK LSBpbnQgQUVTX3NldF9kZWNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBj b25zdCBpbnQgYml0cywKLSAJCQlBRVNfS0VZICprZXkpCi0gCXsKLS0jaWZkZWYgT1BFTlNTTF9G SVBTCi0tCWZpcHNfY2lwaGVyX2Fib3J0KEFFUyk7Ci0tI2VuZGlmCi0gCXJldHVybiBwcml2YXRl X0FFU19zZXRfZGVjcnlwdF9rZXkodXNlcktleSwgYml0cywga2V5KTsKLSAJfQotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2NtYWMvY21hYy5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5 cHRvL2NtYWMvY21hYy5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2NtYWMvY21hYy5jLmZp cHMJMjAxNS0wMS0wOCAxNTowMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vY21hYy9jbWFjLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NDA5MjIwNDIgKzAxMDAK LUBAIC0xMDcsMTMgKzEwNyw2IEBAIENNQUNfQ1RYICpDTUFDX0NUWF9uZXcodm9pZCkKLSAKLSB2 b2lkIENNQUNfQ1RYX2NsZWFudXAoQ01BQ19DVFggKmN0eCkKLSAJewotLSNpZmRlZiBPUEVOU1NM X0ZJUFMKLS0JaWYgKEZJUFNfbW9kZSgpICYmICFjdHgtPmNjdHguZW5naW5lKQotLQkJewotLQkJ RklQU19jbWFjX2N0eF9jbGVhbnVwKGN0eCk7Ci0tCQlyZXR1cm47Ci0tCQl9Ci0tI2VuZGlmCi0g CUVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eC0+Y2N0eCk7Ci0gCU9QRU5TU0xfY2xlYW5zZShj dHgtPnRibCwgRVZQX01BWF9CTE9DS19MRU5HVEgpOwotIAlPUEVOU1NMX2NsZWFuc2UoY3R4LT5r MSwgRVZQX01BWF9CTE9DS19MRU5HVEgpOwotQEAgLTE2NCwxMSArMTU3LDYgQEAgaW50IENNQUNf SW5pdChDTUFDX0NUWCAqY3R4LCBjb25zdCB2b2lkCi0gCQkJRVZQZXJyKEVWUF9GX0NNQUNfSU5J VCwgRVZQX1JfRElTQUJMRURfRk9SX0ZJUFMpOwotIAkJCXJldHVybiAwOwotIAkJCX0KLS0JCS8q IE90aGVyIGFsZ29yaXRobSBibG9ja2luZyB3aWxsIGJlIGRvbmUgaW4gRklQU19jbWFjX2luaXQs Ci0tCQkgKiB2aWEgRklQU19jaXBoZXJpbml0KCkuCi0tCQkgKi8KLS0JCWlmICghaW1wbCAmJiAh Y3R4LT5jY3R4LmVuZ2luZSkKLS0JCQlyZXR1cm4gRklQU19jbWFjX2luaXQoY3R4LCBrZXksIGtl eWxlbiwgY2lwaGVyLCBOVUxMKTsKLSAJCX0KLSAjZW5kaWYKLSAJLyogQWxsIHplcm9zIG1lYW5z IHJlc3RhcnQgKi8KLUBAIC0yMTYsMTAgKzIwNCw2IEBAIGludCBDTUFDX1VwZGF0ZShDTUFDX0NU WCAqY3R4LCBjb25zdCB2b2kKLSAJewotIAljb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhID0gaW47 Ci0gCXNpemVfdCBibDsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tCWlmIChGSVBTX21vZGUoKSAm JiAhY3R4LT5jY3R4LmVuZ2luZSkKLS0JCXJldHVybiBGSVBTX2NtYWNfdXBkYXRlKGN0eCwgaW4s IGRsZW4pOwotLSNlbmRpZgotIAlpZiAoY3R4LT5ubGFzdF9ibG9jayA9PSAtMSkKLSAJCXJldHVy biAwOwotIAlpZiAoZGxlbiA9PSAwKQotQEAgLTI2MSwxMCArMjQ1LDYgQEAgaW50IENNQUNfVXBk YXRlKENNQUNfQ1RYICpjdHgsIGNvbnN0IHZvaQotIGludCBDTUFDX0ZpbmFsKENNQUNfQ1RYICpj dHgsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90ICpwb3V0bGVuKQotIAl7Ci0gCWludCBpLCBi bCwgbGI7Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLQlpZiAoRklQU19tb2RlKCkgJiYgIWN0eC0+ Y2N0eC5lbmdpbmUpCi0tCQlyZXR1cm4gRklQU19jbWFjX2ZpbmFsKGN0eCwgb3V0LCBwb3V0bGVu KTsKLS0jZW5kaWYKLSAJaWYgKGN0eC0+bmxhc3RfYmxvY2sgPT0gLTEpCi0gCQlyZXR1cm4gMDsK LSAJYmwgPSBFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplKCZjdHgtPmNjdHgpOwotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2NyeXB0by5oLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRv L2NyeXB0by5oCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2NyeXB0by5oLmZpcHMJMjAxNS0w MS0wOSAwOTo1MTo1MS4xMzg5MTI5NTAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8v Y3J5cHRvLmgJMjAxNS0wMS0wOSAwOTo1MTo1MS41NDA5MjIwNDIgKzAxMDAKLUBAIC01NTMsMjQg KzU1MywyOSBAQCBpbnQgRklQU19tb2RlX3NldChpbnQgcik7Ci0gdm9pZCBPUEVOU1NMX2luaXQo dm9pZCk7Ci0gCi0gI2RlZmluZSBmaXBzX21kX2luaXQoYWxnKSBmaXBzX21kX2luaXRfY3R4KGFs ZywgYWxnKQotKyNkZWZpbmUgbm9uZmlwc19tZF9pbml0KGFsZykgbm9uZmlwc19tZF9pbml0X2N0 eChhbGcsIGFsZykKLSsjZGVmaW5lIGZpcHNfbWRfaW5pdF9jdHgoYWxnLCBjeCkgXAotKwlpbnQg YWxnIyNfSW5pdChjeCMjX0NUWCAqYykKLSAKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0tI2RlZmlu ZSBmaXBzX21kX2luaXRfY3R4KGFsZywgY3gpIFwKLSsjZGVmaW5lIG5vbmZpcHNfbWRfaW5pdF9j dHgoYWxnLCBjeCkgXAotIAlpbnQgYWxnIyNfSW5pdChjeCMjX0NUWCAqYykgXAotIAl7IFwKLSAJ aWYgKEZJUFNfbW9kZSgpKSBPcGVuU1NMRGllKF9fRklMRV9fLCBfX0xJTkVfXywgXAotLQkJIkxv dyBsZXZlbCBBUEkgY2FsbCB0byBkaWdlc3QgIiAjYWxnICIgZm9yYmlkZGVuIGluIEZJUFMgbW9k ZSEiKTsgXAotKwkJIkRpZ2VzdCAiICNhbGcgIiBmb3JiaWRkZW4gaW4gRklQUyBtb2RlISIpOyBc Ci0gCXJldHVybiBwcml2YXRlXyMjYWxnIyNfSW5pdChjKTsgXAotIAl9IFwKLSAJaW50IHByaXZh dGVfIyNhbGcjI19Jbml0KGN4IyNfQ1RYICpjKQotIAotICNkZWZpbmUgZmlwc19jaXBoZXJfYWJv cnQoYWxnKSBcCi0gCWlmIChGSVBTX21vZGUoKSkgT3BlblNTTERpZShfX0ZJTEVfXywgX19MSU5F X18sIFwKLS0JCSJMb3cgbGV2ZWwgQVBJIGNhbGwgdG8gY2lwaGVyICIgI2FsZyAiIGZvcmJpZGRl biBpbiBGSVBTIG1vZGUhIikKLSsJCSJDaXBoZXIgIiAjYWxnICIgZm9yYmlkZGVuIGluIEZJUFMg bW9kZSEiKQotKwotKy8qIGRpZSBpZiBGSVBTIHNlbGZ0ZXN0IGZhaWxlZCAqLwotK3ZvaWQgRklQ U19zZWxmdGVzdF9jaGVjayh2b2lkKTsKLSAKLSAjZWxzZQotLSNkZWZpbmUgZmlwc19tZF9pbml0 X2N0eChhbGcsIGN4KSBcCi0tCWludCBhbGcjI19Jbml0KGN4IyNfQ1RYICpjKQotKyNkZWZpbmUg bm9uZmlwc19tZF9pbml0X2N0eChhbGcsIGN4KSBmaXBzX21kX2luaXRfY3R4KGFsZywgY3gpCi0g I2RlZmluZSBmaXBzX2NpcGhlcl9hYm9ydChhbGcpIHdoaWxlKDApCi0gI2VuZGlmCi0gCi1AQCAt NTg3LDYgKzU5Miw5IEBAIGludCBDUllQVE9fbWVtY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHYK LSAgKi8KLSB2b2lkIEVSUl9sb2FkX0NSWVBUT19zdHJpbmdzKHZvaWQpOwotIAotKyNkZWZpbmUg T1BFTlNTTF9IQVZFX0lOSVQJMQotK3ZvaWQgT1BFTlNTTF9pbml0X2xpYnJhcnkodm9pZCk7Ci0r Ci0gLyogRXJyb3IgY29kZXMgZm9yIHRoZSBDUllQVE8gZnVuY3Rpb25zLiAqLwotIAotIC8qIEZ1 bmN0aW9uIGNvZGVzLiAqLwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Rlcy9kZXMu aC5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9kZXMvZGVzLmgKLS0tLSBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vZGVzL2Rlcy5oLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS4xNjg5MTM2MjkgKzAx MDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZGVzL2Rlcy5oCTIwMTUtMDEtMDkgMDk6NTE6 NTEuNTQwOTIyMDQyICswMTAwCi1AQCAtMjI0LDkgKzIyNCw2IEBAIGludCBERVNfc2V0X2tleShj b25zdF9ERVNfY2Jsb2NrICprZXksREUKLSBpbnQgREVTX2tleV9zY2hlZChjb25zdF9ERVNfY2Js b2NrICprZXksREVTX2tleV9zY2hlZHVsZSAqc2NoZWR1bGUpOwotIGludCBERVNfc2V0X2tleV9j aGVja2VkKGNvbnN0X0RFU19jYmxvY2sgKmtleSxERVNfa2V5X3NjaGVkdWxlICpzY2hlZHVsZSk7 Ci0gdm9pZCBERVNfc2V0X2tleV91bmNoZWNrZWQoY29uc3RfREVTX2NibG9jayAqa2V5LERFU19r ZXlfc2NoZWR1bGUgKnNjaGVkdWxlKTsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tdm9pZCBwcml2 YXRlX0RFU19zZXRfa2V5X3VuY2hlY2tlZChjb25zdF9ERVNfY2Jsb2NrICprZXksREVTX2tleV9z Y2hlZHVsZSAqc2NoZWR1bGUpOwotLSNlbmRpZgotIHZvaWQgREVTX3N0cmluZ190b19rZXkoY29u c3QgY2hhciAqc3RyLERFU19jYmxvY2sgKmtleSk7Ci0gdm9pZCBERVNfc3RyaW5nX3RvXzJrZXlz KGNvbnN0IGNoYXIgKnN0cixERVNfY2Jsb2NrICprZXkxLERFU19jYmxvY2sgKmtleTIpOwotIHZv aWQgREVTX2NmYjY0X2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sdW5zaWduZWQgY2hh ciAqb3V0LGxvbmcgbGVuZ3RoLAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Rlcy9z ZXRfa2V5LmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZGVzL3NldF9rZXkuYwotLS0tIG9w ZW5zc2wtMS4wLjFrL2NyeXB0by9kZXMvc2V0X2tleS5jLmZpcHMJMjAxNS0wMS0wOCAxNTowMDoz Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZGVzL3NldF9rZXku YwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU0MTkyMjA2NSArMDEwMAotQEAgLTMzNiwxMyArMzM2LDYg QEAgaW50IERFU19zZXRfa2V5X2NoZWNrZWQoY29uc3RfREVTX2NibG9jawotIAl9Ci0gCi0gdm9p ZCBERVNfc2V0X2tleV91bmNoZWNrZWQoY29uc3RfREVTX2NibG9jayAqa2V5LCBERVNfa2V5X3Nj aGVkdWxlICpzY2hlZHVsZSkKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tCXsKLS0JZmlwc19jaXBo ZXJfYWJvcnQoREVTKTsKLS0JcHJpdmF0ZV9ERVNfc2V0X2tleV91bmNoZWNrZWQoa2V5LCBzY2hl ZHVsZSk7Ci0tCX0KLS12b2lkIHByaXZhdGVfREVTX3NldF9rZXlfdW5jaGVja2VkKGNvbnN0X0RF U19jYmxvY2sgKmtleSwgREVTX2tleV9zY2hlZHVsZSAqc2NoZWR1bGUpCi0tI2VuZGlmCi0gCXsK LSAJc3RhdGljIGNvbnN0IGludCBzaGlmdHMyWzE2XT17MCwwLDEsMSwxLDEsMSwxLDAsMSwxLDEs MSwxLDEsMH07Ci0gCXJlZ2lzdGVyIERFU19MT05HIGMsZCx0LHMsdDI7Ci1kaWZmIC11cCBvcGVu c3NsLTEuMC4xay9jcnlwdG8vZGgvZGhfZ2VuLmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8v ZGgvZGhfZ2VuLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZGgvZGhfZ2VuLmMuZmlwcwky MDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9kaC9kaF9nZW4uYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU0MTkyMjA2NSArMDEwMAotQEAg LTg0LDExICs4NCw2IEBAIGludCBESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KERIICpyZXQsIGkK LSAjZW5kaWYKLSAJaWYocmV0LT5tZXRoLT5nZW5lcmF0ZV9wYXJhbXMpCi0gCQlyZXR1cm4gcmV0 LT5tZXRoLT5nZW5lcmF0ZV9wYXJhbXMocmV0LCBwcmltZV9sZW4sIGdlbmVyYXRvciwgY2IpOwot LSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0JaWYgKEZJUFNfbW9kZSgpKQotLQkJcmV0dXJuIEZJUFNf ZGhfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChyZXQsIHByaW1lX2xlbiwKLS0JCQkJCQkJZ2VuZXJh dG9yLCBjYik7Ci0tI2VuZGlmCi0gCXJldHVybiBkaF9idWlsdGluX2dlbnBhcmFtcyhyZXQsIHBy aW1lX2xlbiwgZ2VuZXJhdG9yLCBjYik7Ci0gCX0KLSAKLUBAIC0xMjMsNiArMTE4LDIwIEBAIHN0 YXRpYyBpbnQgZGhfYnVpbHRpbl9nZW5wYXJhbXMoREggKnJldCwKLSAJaW50IGcsb2s9IC0xOwot IAlCTl9DVFggKmN0eD1OVUxMOwotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJaWYoRklQU19z ZWxmdGVzdF9mYWlsZWQoKSkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0RIX0JVSUxUSU5fR0VO UEFSQU1TLEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0K LSsKLSsJaWYgKEZJUFNfbW9kZSgpICYmIChwcmltZV9sZW4gPCBPUEVOU1NMX0RIX0ZJUFNfTUlO X01PRFVMVVNfQklUUykpCi0rCQl7Ci0rCQlESGVycihESF9GX0RIX0JVSUxUSU5fR0VOUEFSQU1T LCBESF9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsjZW5kaWYK LSsKLSAJY3R4PUJOX0NUWF9uZXcoKTsKLSAJaWYgKGN0eCA9PSBOVUxMKSBnb3RvIGVycjsKLSAJ Qk5fQ1RYX3N0YXJ0KGN0eCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZGgvZGgu aC5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9kaC9kaC5oCi0tLS0gb3BlbnNzbC0xLjAuMWsv Y3J5cHRvL2RoL2RoLmguZmlwcwkyMDE1LTAxLTA5IDA5OjUxOjUxLjExMjkxMjM2MiArMDEwMAot KysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9kaC9kaC5oCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTQx OTIyMDY1ICswMTAwCi1AQCAtNzcsNiArNzcsOCBAQAotICMgZGVmaW5lIE9QRU5TU0xfREhfTUFY X01PRFVMVVNfQklUUwkxMDAwMAotICNlbmRpZgotIAotKyNkZWZpbmUgT1BFTlNTTF9ESF9GSVBT X01JTl9NT0RVTFVTX0JJVFMgMTAyNAotKwotICNkZWZpbmUgREhfRkxBR19DQUNIRV9NT05UX1Ag ICAgIDB4MDEKLSAjZGVmaW5lIERIX0ZMQUdfTk9fRVhQX0NPTlNUVElNRSAweDAyIC8qIG5ldyB3 aXRoIDAuOS43aDsgdGhlIGJ1aWx0LWluIERICi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKiBpbXBsZW1lbnRhdGlvbiBub3cgdXNlcyBjb25zdGFudCB0aW1lCi1AQCAt MjEwLDYgKzIxMiw3IEBAIGludAlESF9jaGVjayhjb25zdCBESCAqZGgsaW50ICpjb2Rlcyk7Ci0g aW50CURIX2NoZWNrX3B1Yl9rZXkoY29uc3QgREggKmRoLGNvbnN0IEJJR05VTSAqcHViX2tleSwg aW50ICpjb2Rlcyk7Ci0gaW50CURIX2dlbmVyYXRlX2tleShESCAqZGgpOwotIGludAlESF9jb21w dXRlX2tleSh1bnNpZ25lZCBjaGFyICprZXksY29uc3QgQklHTlVNICpwdWJfa2V5LERIICpkaCk7 Ci0raW50CURIX2NvbXB1dGVfa2V5X3BhZGRlZCh1bnNpZ25lZCBjaGFyICprZXksY29uc3QgQklH TlVNICpwdWJfa2V5LERIICpkaCk7Ci0gREggKglkMmlfREhwYXJhbXMoREggKiphLGNvbnN0IHVu c2lnbmVkIGNoYXIgKipwcCwgbG9uZyBsZW5ndGgpOwotIGludAlpMmRfREhwYXJhbXMoY29uc3Qg REggKmEsdW5zaWduZWQgY2hhciAqKnBwKTsKLSAjaWZuZGVmIE9QRU5TU0xfTk9fRlBfQVBJCi1k aWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZGgvZGhfa2V5LmMuZmlwcyBvcGVuc3NsLTEu MC4xay9jcnlwdG8vZGgvZGhfa2V5LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZGgvZGhf a2V5LmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9kaC9kaF9rZXkuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU0MjkyMjA4 NyArMDEwMAotQEAgLTYxLDYgKzYxLDkgQEAKLSAjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotICNp bmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9kaC5oPgotKyNpZmRl ZiBPUEVOU1NMX0ZJUFMKLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2VuZGlmCi0gCi0g c3RhdGljIGludCBnZW5lcmF0ZV9rZXkoREggKmRoKTsKLSBzdGF0aWMgaW50IGNvbXB1dGVfa2V5 KHVuc2lnbmVkIGNoYXIgKmtleSwgY29uc3QgQklHTlVNICpwdWJfa2V5LCBESCAqZGgpOwotQEAg LTk3LDYgKzEwMCwyMSBAQCBpbnQgREhfY29tcHV0ZV9rZXkodW5zaWduZWQgY2hhciAqa2V5LCBj Ci0gCXJldHVybiBkaC0+bWV0aC0+Y29tcHV0ZV9rZXkoa2V5LCBwdWJfa2V5LCBkaCk7Ci0gCX0K LSAKLStpbnQgREhfY29tcHV0ZV9rZXlfcGFkZGVkKHVuc2lnbmVkIGNoYXIgKmtleSwgY29uc3Qg QklHTlVNICpwdWJfa2V5LCBESCAqZGgpCi0rCXsKLSsJaW50IHJ2LCBwYWQ7Ci0rCXJ2ID0gREhf Y29tcHV0ZV9rZXkoa2V5LCBwdWJfa2V5LCBkaCk7Ci0rCWlmIChydiA8PSAwKQotKwkJcmV0dXJu IHJ2OwotKwlwYWQgPSBCTl9udW1fYnl0ZXMoZGgtPnApIC0gcnY7Ci0rCWlmIChwYWQgPiAwKQot KwkJewotKwkJbWVtbW92ZShrZXkgKyBwYWQsIGtleSwgcnYpOwotKwkJbWVtc2V0KGtleSwgMCwg cGFkKTsKLSsJCX0KLSsJcmV0dXJuIHJ2ICsgcGFkOwotKwl9Ci0rCi0gc3RhdGljIERIX01FVEhP RCBkaF9vc3NsID0gewotICJPcGVuU1NMIERIIE1ldGhvZCIsCi0gZ2VuZXJhdGVfa2V5LAotQEAg LTEwNCw3ICsxMjIsNyBAQCBjb21wdXRlX2tleSwKLSBkaF9ibl9tb2RfZXhwLAotIGRoX2luaXQs Ci0gZGhfZmluaXNoLAotLTAsCi0rREhfRkxBR19GSVBTX01FVEhPRCwKLSBOVUxMLAotIE5VTEwK LSB9OwotQEAgLTEyMyw2ICsxNDEsMTQgQEAgc3RhdGljIGludCBnZW5lcmF0ZV9rZXkoREggKmRo KQotIAlCTl9NT05UX0NUWCAqbW9udD1OVUxMOwotIAlCSUdOVU0gKnB1Yl9rZXk9TlVMTCwqcHJp dl9rZXk9TlVMTDsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCWlmIChGSVBTX21vZGUoKSAm JiAoQk5fbnVtX2JpdHMoZGgtPnApIDwgT1BFTlNTTF9ESF9GSVBTX01JTl9NT0RVTFVTX0JJVFMp KQotKwkJewotKwkJREhlcnIoREhfRl9HRU5FUkFURV9LRVksIERIX1JfS0VZX1NJWkVfVE9PX1NN QUxMKTsKLSsJCXJldHVybiAwOwotKwkJfQotKyNlbmRpZgotKwotIAljdHggPSBCTl9DVFhfbmV3 KCk7Ci0gCWlmIChjdHggPT0gTlVMTCkgZ290byBlcnI7Ci0gCi1AQCAtMjEzLDYgKzIzOSwxMyBA QCBzdGF0aWMgaW50IGNvbXB1dGVfa2V5KHVuc2lnbmVkIGNoYXIgKmtlCi0gCQlESGVycihESF9G X0NPTVBVVEVfS0VZLERIX1JfTU9EVUxVU19UT09fTEFSR0UpOwotIAkJZ290byBlcnI7Ci0gCQl9 Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlpZiAoRklQU19tb2RlKCkgJiYgKEJOX251bV9iaXRz KGRoLT5wKSA8IE9QRU5TU0xfREhfRklQU19NSU5fTU9EVUxVU19CSVRTKSkKLSsJCXsKLSsJCURI ZXJyKERIX0ZfQ09NUFVURV9LRVksIERIX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKLSsJCWdvdG8g ZXJyOwotKwkJfQotKyNlbmRpZgotIAotIAljdHggPSBCTl9DVFhfbmV3KCk7Ci0gCWlmIChjdHgg PT0gTlVMTCkgZ290byBlcnI7Ci1AQCAtMjgwLDYgKzMxMyw5IEBAIHN0YXRpYyBpbnQgZGhfYm5f bW9kX2V4cChjb25zdCBESCAqZGgsIEIKLSAKLSBzdGF0aWMgaW50IGRoX2luaXQoREggKmRoKQot IAl7Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0rI2Vu ZGlmCi0gCWRoLT5mbGFncyB8PSBESF9GTEFHX0NBQ0hFX01PTlRfUDsKLSAJcmV0dXJuKDEpOwot IAl9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZGgvZGhfbGliLmMuZmlwcyBvcGVu c3NsLTEuMC4xay9jcnlwdG8vZGgvZGhfbGliLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8v ZGgvZGhfbGliLmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysr IG9wZW5zc2wtMS4wLjFrL2NyeXB0by9kaC9kaF9saWIuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU0 MjkyMjA4NyArMDEwMAotQEAgLTgxLDE0ICs4MSw3IEBAIGNvbnN0IERIX01FVEhPRCAqREhfZ2V0 X2RlZmF1bHRfbWV0aG9kKHYKLSAJewotIAlpZighZGVmYXVsdF9ESF9tZXRob2QpCi0gCQl7Ci0t I2lmZGVmIE9QRU5TU0xfRklQUwotLQkJaWYgKEZJUFNfbW9kZSgpKQotLQkJCXJldHVybiBGSVBT X2RoX29wZW5zc2woKTsKLS0JCWVsc2UKLS0JCQlyZXR1cm4gREhfT3BlblNTTCgpOwotLSNlbHNl Ci0gCQlkZWZhdWx0X0RIX21ldGhvZCA9IERIX09wZW5TU0woKTsKLS0jZW5kaWYKLSAJCX0KLSAJ cmV0dXJuIGRlZmF1bHRfREhfbWV0aG9kOwotIAl9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9j cnlwdG8vZHNhL2RzYV9lcnIuYy5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9kc2EvZHNhX2Vy ci5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9kc2FfZXJyLmMuZmlwcwkyMDE1LTAx LTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9k c2EvZHNhX2Vyci5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTQyOTIyMDg3ICswMTAwCi1AQCAtNzQs NiArNzQsOCBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIERTQV9zdHJfZnVuY3RzW109Ci0ge0VS Ul9GVU5DKERTQV9GX0RPX0RTQV9QUklOVCksCSJET19EU0FfUFJJTlQifSwKLSB7RVJSX0ZVTkMo RFNBX0ZfRFNBUEFSQU1TX1BSSU5UKSwJIkRTQXBhcmFtc19wcmludCJ9LAotIHtFUlJfRlVOQyhE U0FfRl9EU0FQQVJBTVNfUFJJTlRfRlApLAkiRFNBcGFyYW1zX3ByaW50X2ZwIn0sCi0re0VSUl9G VU5DKERTQV9GX0RTQV9CVUlMVElOX0tFWUdFTiksCSJkc2FfYnVpbHRpbl9rZXlnZW4ifSwKLSt7 RVJSX0ZVTkMoRFNBX0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4pLAkiZHNhX2J1aWx0aW5fcGFyYW1n ZW4ifSwKLSB7RVJSX0ZVTkMoRFNBX0ZfRFNBX0RPX1NJR04pLAkiRFNBX2RvX3NpZ24ifSwKLSB7 RVJSX0ZVTkMoRFNBX0ZfRFNBX0RPX1ZFUklGWSksCSJEU0FfZG9fdmVyaWZ5In0sCi0ge0VSUl9G VU5DKERTQV9GX0RTQV9HRU5FUkFURV9LRVkpLAkiRFNBX2dlbmVyYXRlX2tleSJ9LAotQEAgLTEw Niw2ICsxMDgsOCBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIERTQV9zdHJfcmVhc29uc1tdCi0g e0VSUl9SRUFTT04oRFNBX1JfREFUQV9UT09fTEFSR0VfRk9SX0tFWV9TSVpFKSwiZGF0YSB0b28g bGFyZ2UgZm9yIGtleSBzaXplIn0sCi0ge0VSUl9SRUFTT04oRFNBX1JfREVDT0RFX0VSUk9SKSAg ICAgICAgICAsImRlY29kZSBlcnJvciJ9LAotIHtFUlJfUkVBU09OKERTQV9SX0lOVkFMSURfRElH RVNUX1RZUEUpICAgLCJpbnZhbGlkIGRpZ2VzdCB0eXBlIn0sCi0re0VSUl9SRUFTT04oRFNBX1Jf S0VZX1NJWkVfSU5WQUxJRCkgICAgICAsImtleSBzaXplIGludmFsaWQifSwKLSt7RVJSX1JFQVNP TihEU0FfUl9LRVlfU0laRV9UT09fU01BTEwpICAgICwia2V5IHNpemUgdG9vIHNtYWxsIn0sCi0g e0VSUl9SRUFTT04oRFNBX1JfTUlTU0lOR19QQVJBTUVURVJTKSAgICAsIm1pc3NpbmcgcGFyYW1l dGVycyJ9LAotIHtFUlJfUkVBU09OKERTQV9SX01PRFVMVVNfVE9PX0xBUkdFKSAgICAgLCJtb2R1 bHVzIHRvbyBsYXJnZSJ9LAotIHtFUlJfUkVBU09OKERTQV9SX05FRURfTkVXX1NFVFVQX1ZBTFVF UykgLCJuZWVkIG5ldyBzZXR1cCB2YWx1ZXMifSwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9kc2EvZHNhX2dlbi5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9kc2FfZ2Vu LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZHNhL2RzYV9nZW4uYy5maXBzCTIwMTUtMDEt MDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Rz YS9kc2FfZ2VuLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NDM5MjIxMTAgKzAxMDAKLUBAIC04NSw2 ICs4NSwxNCBAQAotICNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSAjZW5kaWYKLSAKLSsjaWZu ZGVmIE9QRU5TU0xfRklQUwotK3N0YXRpYyBpbnQgRklQU19kc2FfZ2VuZXJhdGVfcHEoQk5fQ1RY ICpjdHgsIHNpemVfdCBiaXRzLCBzaXplX3QgcWJpdHMsCi0rCQljb25zdCBFVlBfTUQgKmV2cG1k LCB1bnNpZ25lZCBjaGFyICpzZWVkLCBpbnQgc2VlZF9sZW4sCi0rCQlCSUdOVU0gKipwX3JldCwg QklHTlVNICoqcV9yZXQsIGludCAqY291bnRlcl9yZXQsIEJOX0dFTkNCICpjYik7Ci0rc3RhdGlj IGludCBGSVBTX2RzYV9nZW5lcmF0ZV9nKEJOX0NUWCAqY3R4LCBCSUdOVU0gKnAsIEJJR05VTSAq cSwKLSsJCUJJR05VTSAqKmdfcmV0LCB1bnNpZ25lZCBsb25nICpoX3JldCwgQk5fR0VOQ0IgKmNi KTsKLSsjZW5kaWYKLSsKLSBpbnQgRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoRFNBICpyZXQs IGludCBiaXRzLAotIAkJY29uc3QgdW5zaWduZWQgY2hhciAqc2VlZF9pbiwgaW50IHNlZWRfbGVu LAotIAkJaW50ICpjb3VudGVyX3JldCwgdW5zaWduZWQgbG9uZyAqaF9yZXQsIEJOX0dFTkNCICpj YikKLUBAIC0xMDAsMTQgKzEwOCw2IEBAIGludCBEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChE U0EgKnJldCwKLSAJaWYocmV0LT5tZXRoLT5kc2FfcGFyYW1nZW4pCi0gCQlyZXR1cm4gcmV0LT5t ZXRoLT5kc2FfcGFyYW1nZW4ocmV0LCBiaXRzLCBzZWVkX2luLCBzZWVkX2xlbiwKLSAJCQkJY291 bnRlcl9yZXQsIGhfcmV0LCBjYik7Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLQllbHNlIGlmIChG SVBTX21vZGUoKSkKLS0JCXsKLS0JCXJldHVybiBGSVBTX2RzYV9nZW5lcmF0ZV9wYXJhbWV0ZXJz X2V4KHJldCwgYml0cywgCi0tCQkJCQkJCXNlZWRfaW4sIHNlZWRfbGVuLAotLQkJCQkJCQljb3Vu dGVyX3JldCwgaF9yZXQsIGNiKTsKLS0JCX0KLS0jZW5kaWYKLSAJZWxzZQotIAkJewotIAkJY29u c3QgRVZQX01EICpldnBtZDsKLUBAIC0xMjUsMjcgKzEyNSwxMTkgQEAgaW50IERTQV9nZW5lcmF0 ZV9wYXJhbWV0ZXJzX2V4KERTQSAqcmV0LAotIAkJCX0KLSAKLSAJCXJldHVybiBkc2FfYnVpbHRp bl9wYXJhbWdlbihyZXQsIGJpdHMsIHFiaXRzLCBldnBtZCwKLS0JCQlzZWVkX2luLCBzZWVkX2xl biwgTlVMTCwgY291bnRlcl9yZXQsIGhfcmV0LCBjYik7Ci0rCQkJCXNlZWRfaW4sIHNlZWRfbGVu LCBjb3VudGVyX3JldCwgaF9yZXQsIGNiKTsKLSAJCX0KLSAJfQotIAotKyNpZmRlZiBPUEVOU1NM X0ZJUFMKLStpbnQgRklQU19kc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV90IGJp dHMsIHNpemVfdCBxYml0cywKLSsJY29uc3QgRVZQX01EICpldnBtZCwgY29uc3QgdW5zaWduZWQg Y2hhciAqc2VlZF9pbiwgc2l6ZV90IHNlZWRfbGVuLAotKwlpbnQgKmNvdW50ZXJfcmV0LCB1bnNp Z25lZCBsb25nICpoX3JldCwgQk5fR0VOQ0IgKmNiKQotKwl7Ci0rCXJldHVybiBkc2FfYnVpbHRp bl9wYXJhbWdlbihyZXQsIGJpdHMsIHFiaXRzLAotKwkJZXZwbWQsIHNlZWRfaW4sIHNlZWRfbGVu LAotKwkJY291bnRlcl9yZXQsIGhfcmV0LCBjYik7Ci0rCX0KLSsjZW5kaWYKLSsKLSBpbnQgZHNh X2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfdCBiaXRzLCBzaXplX3QgcWJpdHMsCi0g CWNvbnN0IEVWUF9NRCAqZXZwbWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWRfaW4sIHNpemVf dCBzZWVkX2xlbiwKLS0JdW5zaWduZWQgY2hhciAqc2VlZF9vdXQsCi0gCWludCAqY291bnRlcl9y ZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0LCBCTl9HRU5DQiAqY2IpCi0gCXsKLSAJaW50IG9rPTA7 Ci0gCXVuc2lnbmVkIGNoYXIgc2VlZFtTSEEyNTZfRElHRVNUX0xFTkdUSF07Ci0rCUJJR05VTSAq Zz1OVUxMLCpxPU5VTEwsKnA9TlVMTDsKLSsJc2l6ZV90IHFzaXplID0gcWJpdHMgPj4gMzsKLSsJ Qk5fQ1RYICpjdHg9TlVMTDsKLSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCWlmKEZJUFNfc2Vs ZnRlc3RfZmFpbGVkKCkpCi0rCSAgICB7Ci0rCSAgICBGSVBTZXJyKEZJUFNfRl9EU0FfQlVJTFRJ Tl9QQVJBTUdFTiwKLSsJCSAgICBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKwkgICAg Z290byBlcnI7Ci0rCSAgICB9Ci0rCi0rCWlmIChGSVBTX21vZHVsZV9tb2RlKCkgJiYKLSsJICAg IChiaXRzICE9IDEwMjQgfHwgcWJpdHMgIT0gMTYwKSAmJgotKwkgICAgKGJpdHMgIT0gMjA0OCB8 fCBxYml0cyAhPSAyMjQpICYmCi0rCSAgICAoYml0cyAhPSAyMDQ4IHx8IHFiaXRzICE9IDI1Nikg JiYKLSsJICAgIChiaXRzICE9IDMwNzIgfHwgcWJpdHMgIT0gMjU2KSkKLSsJCXsKLSsJCURTQWVy cihEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTiwgRFNBX1JfS0VZX1NJWkVfSU5WQUxJRCk7Ci0r CQlnb3RvIGVycjsKLSsJCX0KLSsjZW5kaWYKLSsJaWYgKHNlZWRfbGVuICYmIChzZWVkX2xlbiA8 IChzaXplX3QpcXNpemUpKQotKwkJc2VlZF9pbiA9IE5VTEw7CQkvKiBzZWVkIGJ1ZmZlciB0b28g c21hbGwgLS0gaWdub3JlICovCi0rCWlmIChzZWVkX2xlbiA+IHNpemVvZihzZWVkKSkgCi0rCQlz ZWVkX2xlbiA9IHNpemVvZihzZWVkKTsJLyogQXBwLiAyLjIgb2YgRklQUyBQVUIgMTg2IGFsbG93 cyBsYXJnZXIgU0VFRCwKLSsJCQkJCQkgKiBidXQgb3VyIGludGVybmFsIGJ1ZmZlcnMgYXJlIHJl c3RyaWN0ZWQgdG8gMjU2IGJpdHMqLwotKwlpZiAoc2VlZF9pbiAhPSBOVUxMKQotKwkJbWVtY3B5 KHNlZWQsIHNlZWRfaW4sIHNlZWRfbGVuKTsKLSsJZWxzZQotKwkJc2VlZF9sZW4gPSAwOwotKwot KwlpZiAoKGN0eD1CTl9DVFhfbmV3KCkpID09IE5VTEwpCi0rCQlnb3RvIGVycjsKLSsKLSsJQk5f Q1RYX3N0YXJ0KGN0eCk7Ci0rCi0rCWlmICghRklQU19kc2FfZ2VuZXJhdGVfcHEoY3R4LCBiaXRz LCBxYml0cywgZXZwbWQsCi0rCQlzZWVkLCBzZWVkX2xlbiwgJnAsICZxLCBjb3VudGVyX3JldCwg Y2IpKQotKwkJZ290byBlcnI7Ci0rCi0rCWlmICghRklQU19kc2FfZ2VuZXJhdGVfZyhjdHgsIHAs IHEsICZnLCBoX3JldCwgY2IpKQotKwkJZ290byBlcnI7Ci0rCi0rCW9rPTE7Ci0rZXJyOgotKwlp ZiAob2spCi0rCQl7Ci0rCQlpZihyZXQtPnApCi0rCQkJewotKwkJCUJOX2ZyZWUocmV0LT5wKTsK LSsJCQlyZXQtPnAgPSBOVUxMOwotKwkJCX0KLSsJCWlmKHJldC0+cSkKLSsJCQl7Ci0rCQkJQk5f ZnJlZShyZXQtPnEpOwotKwkJCXJldC0+cSA9IE5VTEw7Ci0rCQkJfQotKwkJaWYocmV0LT5nKQot KwkJCXsKLSsJCQlCTl9mcmVlKHJldC0+Zyk7Ci0rCQkJcmV0LT5nID0gTlVMTDsKLSsJCQl9Ci0r CQlyZXQtPnA9Qk5fZHVwKHApOwotKwkJcmV0LT5xPUJOX2R1cChxKTsKLSsJCXJldC0+Zz1CTl9k dXAoZyk7Ci0rCQlpZiAocmV0LT5wID09IE5VTEwgfHwgcmV0LT5xID09IE5VTEwgfHwgcmV0LT5n ID09IE5VTEwpCi0rCQkJb2s9MDsKLSsJCX0KLSsJaWYoY3R4KQotKwkJewotKwkJQk5fQ1RYX2Vu ZChjdHgpOwotKwkJQk5fQ1RYX2ZyZWUoY3R4KTsKLSsJCX0KLSsJcmV0dXJuIG9rOwotKwl9Ci0r Ci0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLStzdGF0aWMKLSsjZW5kaWYKLStpbnQgRklQU19kc2Ff Z2VuZXJhdGVfcHEoQk5fQ1RYICpjdHgsIHNpemVfdCBiaXRzLCBzaXplX3QgcWJpdHMsCi0rCQlj b25zdCBFVlBfTUQgKmV2cG1kLCB1bnNpZ25lZCBjaGFyICpzZWVkLCBpbnQgc2VlZF9sZW4sCi0r CQlCSUdOVU0gKipwX3JldCwgQklHTlVNICoqcV9yZXQsIGludCAqY291bnRlcl9yZXQsIEJOX0dF TkNCICpjYikKLSsJewotKwlpbnQgb2s9MDsKLSAJdW5zaWduZWQgY2hhciBtZFtTSEEyNTZfRElH RVNUX0xFTkdUSF07Ci0tCXVuc2lnbmVkIGNoYXIgYnVmW1NIQTI1Nl9ESUdFU1RfTEVOR1RIXSxi dWYyW1NIQTI1Nl9ESUdFU1RfTEVOR1RIXTsKLSsJdW5zaWduZWQgY2hhciBidWZbU0hBMjU2X0RJ R0VTVF9MRU5HVEhdOwotIAlCSUdOVU0gKnIwLCpXLCpYLCpjLCp0ZXN0OwotLQlCSUdOVU0gKmc9 TlVMTCwqcT1OVUxMLCpwPU5VTEw7Ci0tCUJOX01PTlRfQ1RYICptb250PU5VTEw7Ci0tCWludCBp LCBrLCBuPTAsIG09MCwgcXNpemUgPSBxYml0cyA+PiAzOwotKwlCSUdOVU0gKnE9TlVMTCwqcD1O VUxMOwotKwlpbnQgaSwgaywgYiwgbj0wLCBtPTAsIHFzaXplID0gcWJpdHMgPj4gMzsKLSAJaW50 IGNvdW50ZXI9MDsKLSAJaW50IHI9MDsKLS0JQk5fQ1RYICpjdHg9TlVMTDsKLS0JdW5zaWduZWQg aW50IGg9MjsKLSAKLSAJaWYgKHFzaXplICE9IFNIQV9ESUdFU1RfTEVOR1RIICYmIHFzaXplICE9 IFNIQTIyNF9ESUdFU1RfTEVOR1RIICYmCi0gCSAgICBxc2l6ZSAhPSBTSEEyNTZfRElHRVNUX0xF TkdUSCkKLUBAIC0xNTMsNTEgKzI0NSw0MyBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNB ICpyZXQsIHNpemVfCi0gCQlyZXR1cm4gMDsKLSAKLSAJaWYgKGV2cG1kID09IE5VTEwpCi0tCQkv KiB1c2UgU0hBMSBhcyBkZWZhdWx0ICovCi0tCQlldnBtZCA9IEVWUF9zaGExKCk7Ci0rCSAgICB7 Ci0rCQlpZiAocWJpdHMgPD0gMTYwKQotKwkJCWV2cG1kID0gRVZQX3NoYTEoKTsKLSsJCWVsc2Ug aWYgKHFiaXRzIDw9IDIyNCkKLSsJCQlldnBtZCA9IEVWUF9zaGEyMjQoKTsKLSsJCWVsc2UKLSsJ CQlldnBtZCA9IEVWUF9zaGEyNTYoKTsKLSsJICAgIH0KLSAKLSAJaWYgKGJpdHMgPCA1MTIpCi0g CQliaXRzID0gNTEyOwotIAotIAliaXRzID0gKGJpdHMrNjMpLzY0KjY0OwotIAotLQkvKiBOQjog c2VlZF9sZW4gPT0gMCBpcyBzcGVjaWFsIGNhc2U6IGNvcHkgZ2VuZXJhdGVkIHNlZWQgdG8KLS0g CSAqIHNlZWRfaW4gaWYgaXQgaXMgbm90IE5VTEwuCi0tIAkgKi8KLS0JaWYgKHNlZWRfbGVuICYm IChzZWVkX2xlbiA8IChzaXplX3QpcXNpemUpKQotLQkJc2VlZF9pbiA9IE5VTEw7CQkvKiBzZWVk IGJ1ZmZlciB0b28gc21hbGwgLS0gaWdub3JlICovCi0tCWlmIChzZWVkX2xlbiA+IChzaXplX3Qp cXNpemUpIAotLQkJc2VlZF9sZW4gPSBxc2l6ZTsJLyogQXBwLiAyLjIgb2YgRklQUyBQVUIgMTg2 IGFsbG93cyBsYXJnZXIgU0VFRCwKLS0JCQkJCSAqIGJ1dCBvdXIgaW50ZXJuYWwgYnVmZmVycyBh cmUgcmVzdHJpY3RlZCB0byAxNjAgYml0cyovCi0tCWlmIChzZWVkX2luICE9IE5VTEwpCi0tCQlt ZW1jcHkoc2VlZCwgc2VlZF9pbiwgc2VlZF9sZW4pOwotLQotLQlpZiAoKGN0eD1CTl9DVFhfbmV3 KCkpID09IE5VTEwpCi0tCQlnb3RvIGVycjsKLS0KLS0JaWYgKChtb250PUJOX01PTlRfQ1RYX25l dygpKSA9PSBOVUxMKQotLQkJZ290byBlcnI7Ci0tCi0tCUJOX0NUWF9zdGFydChjdHgpOwotIAly MCA9IEJOX0NUWF9nZXQoY3R4KTsKLS0JZyA9IEJOX0NUWF9nZXQoY3R4KTsKLSAJVyA9IEJOX0NU WF9nZXQoY3R4KTsKLS0JcSA9IEJOX0NUWF9nZXQoY3R4KTsKLSsJKnFfcmV0ID0gcSA9IEJOX0NU WF9nZXQoY3R4KTsKLSAJWCA9IEJOX0NUWF9nZXQoY3R4KTsKLSAJYyA9IEJOX0NUWF9nZXQoY3R4 KTsKLS0JcCA9IEJOX0NUWF9nZXQoY3R4KTsKLSsJKnBfcmV0ID0gcCA9IEJOX0NUWF9nZXQoY3R4 KTsKLSAJdGVzdCA9IEJOX0NUWF9nZXQoY3R4KTsKLSAKLSAJaWYgKCFCTl9sc2hpZnQodGVzdCxC Tl92YWx1ZV9vbmUoKSxiaXRzLTEpKQotIAkJZ290byBlcnI7Ci0gCi0rCS8qIHN0ZXAgMyBuID0g XGxjZWlsIGJpdHMgLyBxYml0cyBccmNlaWwgLSAxICovCi0rCW4gPSAoYml0cytxYml0cy0xKS9x Yml0cyAtIDE7Ci0rCS8qIHN0ZXAgNCBiID0gYml0cyAtIDEgLSBuICogcWJpdHMgKi8KLSsJYiA9 IGJpdHMgLSAxIC0gbipxYml0czsKLSsKLSAJZm9yICg7OykKLSAJCXsKLSAJCWZvciAoOzspIC8q IGZpbmQgcSAqLwotIAkJCXsKLSAJCQlpbnQgc2VlZF9pc19yYW5kb207Ci0gCi0tCQkJLyogc3Rl cCAxICovCi0rCQkJLyogc3RlcCA1IGdlbmVyYXRlIHNlZWQgKi8KLSAJCQlpZighQk5fR0VOQ0Jf Y2FsbChjYiwgMCwgbSsrKSkKLSAJCQkJZ290byBlcnI7Ci0gCi1AQCAtMjEyLDMwICsyOTYsMTgg QEAgaW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplXwotIAkJCQlzZWVkX2xl bj0wOyAvKiB1c2UgcmFuZG9tIHNlZWQgaWYgJ3NlZWRfaW4nIHR1cm5zIG91dCB0byBiZSBiYWQq LwotIAkJCQl9Ci0gCQkJbWVtY3B5KGJ1ZiAsIHNlZWQsIHFzaXplKTsKLS0JCQltZW1jcHkoYnVm Miwgc2VlZCwgcXNpemUpOwotLQkJCS8qIHByZWNvbXB1dGUgIlNFRUQgKyAxIiBmb3Igc3RlcCA3 OiAqLwotLQkJCWZvciAoaSA9IHFzaXplLTE7IGkgPj0gMDsgaS0tKQotLQkJCQl7Ci0tCQkJCWJ1 ZltpXSsrOwotLQkJCQlpZiAoYnVmW2ldICE9IDApCi0tCQkJCQlicmVhazsKLS0JCQkJfQotIAot LQkJCS8qIHN0ZXAgMiAqLwotKwkJCS8qIHN0ZXAgNiBVID0gaGFzaChzZWVkKSAqLwotIAkJCWlm ICghRVZQX0RpZ2VzdChzZWVkLCBxc2l6ZSwgbWQsICAgTlVMTCwgZXZwbWQsIE5VTEwpKQotIAkJ CQlnb3RvIGVycjsKLS0JCQlpZiAoIUVWUF9EaWdlc3QoYnVmLCAgcXNpemUsIGJ1ZjIsIE5VTEws IGV2cG1kLCBOVUxMKSkKLS0JCQkJZ290byBlcnI7Ci0tCQkJZm9yIChpID0gMDsgaSA8IHFzaXpl OyBpKyspCi0tCQkJCW1kW2ldXj1idWYyW2ldOwotIAotLQkJCS8qIHN0ZXAgMyAqLwotKwkJCS8q IHN0ZXAgNyBxID0gMl4ocWJpdHMtMSkgKyBVICsgMSAtIChVIG1vZCAyKSAqLwotIAkJCW1kWzBd IHw9IDB4ODA7Ci0gCQkJbWRbcXNpemUtMV0gfD0gMHgwMTsKLSAJCQlpZiAoIUJOX2JpbjJibiht ZCwgcXNpemUsIHEpKQotIAkJCQlnb3RvIGVycjsKLSAKLS0JCQkvKiBzdGVwIDQgKi8KLSsJCQkv KiBzdGVwIDggdGVzdCBmb3IgcHJpbWUgKDY0IHJvdW5kIG9mIFJhYmluLU1pbGxlcikgKi8KLSAJ CQlyID0gQk5faXNfcHJpbWVfZmFzdHRlc3RfZXgocSwgRFNTX3ByaW1lX2NoZWNrcywgY3R4LAot IAkJCQkJc2VlZF9pc19yYW5kb20sIGNiKTsKLSAJCQlpZiAociA+IDApCi1AQCAtMjQzLDI3ICsz MTUsMjIgQEAgaW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplXwotIAkJCWlm IChyICE9IDApCi0gCQkJCWdvdG8gZXJyOwotIAotLQkJCS8qIGRvIGEgY2FsbGJhY2sgY2FsbCAq LwotLQkJCS8qIHN0ZXAgNSAqLwotIAkJCX0KLSAKLSAJCWlmKCFCTl9HRU5DQl9jYWxsKGNiLCAy LCAwKSkgZ290byBlcnI7Ci0gCQlpZighQk5fR0VOQ0JfY2FsbChjYiwgMywgMCkpIGdvdG8gZXJy OwotIAotLQkJLyogc3RlcCA2ICovCi0rCQkvKiBzdGVwIDExICovCi0gCQljb3VudGVyPTA7Ci0t CQkvKiAib2Zmc2V0ID0gMiIgKi8KLS0KLS0JCW49KGJpdHMtMSkvMTYwOwotKwkJLyogIm9mZnNl dCA9IDEiICovCi0gCi0gCQlmb3IgKDs7KQotIAkJCXsKLSAJCQlpZiAoKGNvdW50ZXIgIT0gMCkg JiYgIUJOX0dFTkNCX2NhbGwoY2IsIDAsIGNvdW50ZXIpKQotIAkJCQlnb3RvIGVycjsKLSAKLS0J CQkvKiBzdGVwIDcgKi8KLSsJCQkvKiBzdGVwIDExLjEsIDExLjIgb2J0YWluIFcgKi8KLSAJCQlC Tl96ZXJvKFcpOwotLQkJCS8qIG5vdyAnYnVmJyBjb250YWlucyAiU0VFRCArIG9mZnNldCAtIDEi ICovCi0gCQkJZm9yIChrPTA7IGs8PW47IGsrKykKLSAJCQkJewotIAkJCQkvKiBvYnRhaW4gIlNF RUQgKyBvZmZzZXQgKyBrIiBieSBpbmNyZW1lbnRpbmc6ICovCi1AQCAtMjc4LDI4ICszNDUsMzAg QEAgaW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplXwotIAkJCQkJCQkJCU5V TEwpKQotIAkJCQkJZ290byBlcnI7Ci0gCi0tCQkJCS8qIHN0ZXAgOCAqLwotIAkJCQlpZiAoIUJO X2JpbjJibihtZCwgcXNpemUsIHIwKSkKLSAJCQkJCWdvdG8gZXJyOwotLQkJCQlpZiAoIUJOX2xz aGlmdChyMCxyMCwocXNpemUgPDwgMykqaykpIGdvdG8gZXJyOwotKwkJCQlpZiAoayA9PSBuKQot KwkJCQkJQk5fbWFza19iaXRzKHIwLGIpOwotKwkJCQlpZiAoIUJOX2xzaGlmdChyMCxyMCxxYml0 cyprKSkgZ290byBlcnI7Ci0gCQkJCWlmICghQk5fYWRkKFcsVyxyMCkpIGdvdG8gZXJyOwotIAkJ CQl9Ci0gCi0tCQkJLyogbW9yZSBvZiBzdGVwIDggKi8KLS0JCQlpZiAoIUJOX21hc2tfYml0cyhX LGJpdHMtMSkpIGdvdG8gZXJyOwotKwkJCS8qIHN0ZXAgMTEuMyBYID0gVyArIDJeKEwtMSkgKi8K LSAJCQlpZiAoIUJOX2NvcHkoWCxXKSkgZ290byBlcnI7Ci0gCQkJaWYgKCFCTl9hZGQoWCxYLHRl c3QpKSBnb3RvIGVycjsKLSAKLS0JCQkvKiBzdGVwIDkgKi8KLSsJCQkvKiBzdGVwIDExLjQgYyA9 IFggbW9kIDIqcSAqLwotIAkJCWlmICghQk5fbHNoaWZ0MShyMCxxKSkgZ290byBlcnI7Ci0gCQkJ aWYgKCFCTl9tb2QoYyxYLHIwLGN0eCkpIGdvdG8gZXJyOwotKwotKwkJCS8qIHN0ZXAgMTEuNSBw ID0gWCAtIChjIC0gMSkgKi8KLSAJCQlpZiAoIUJOX3N1YihyMCxjLEJOX3ZhbHVlX29uZSgpKSkg Z290byBlcnI7Ci0gCQkJaWYgKCFCTl9zdWIocCxYLHIwKSkgZ290byBlcnI7Ci0gCi0tCQkJLyog c3RlcCAxMCAqLwotKwkJCS8qIHN0ZXAgMTEuNiAqLwotIAkJCWlmIChCTl9jbXAocCx0ZXN0KSA+ PSAwKQotIAkJCQl7Ci0tCQkJCS8qIHN0ZXAgMTEgKi8KLSsJCQkJLyogc3RlcCAxMS43ICovCi0g CQkJCXIgPSBCTl9pc19wcmltZV9mYXN0dGVzdF9leChwLCBEU1NfcHJpbWVfY2hlY2tzLAotIAkJ CQkJCWN0eCwgMSwgY2IpOwotIAkJCQlpZiAociA+IDApCi1AQCAtMzA4LDE5ICszNzcsNDUgQEAg aW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplXwotIAkJCQkJZ290byBlcnI7 Ci0gCQkJCX0KLSAKLS0JCQkvKiBzdGVwIDEzICovCi0rCQkJLyogc3RlcCAxMS45ICovCi0gCQkJ Y291bnRlcisrOwotIAkJCS8qICJvZmZzZXQgPSBvZmZzZXQgKyBuICsgMSIgKi8KLSAKLS0JCQkv KiBzdGVwIDE0ICovCi0tCQkJaWYgKGNvdW50ZXIgPj0gNDA5NikgYnJlYWs7Ci0rCQkJLyogc3Rl cCAxMiAqLwotKwkJCWlmIChjb3VudGVyID49IDQqYml0cykgYnJlYWs7Ci0gCQkJfQotIAkJfQot IGVuZDoKLSAJaWYoIUJOX0dFTkNCX2NhbGwoY2IsIDIsIDEpKQotIAkJZ290byBlcnI7Ci0gCi0t CS8qIFdlIG5vdyBuZWVkIHRvIGdlbmVyYXRlIGcgKi8KLSsJb2s9MTsKLStlcnI6Ci0rCWlmIChv aykKLSsJCXsKLSsJCWlmIChjb3VudGVyX3JldCAhPSBOVUxMKSAqY291bnRlcl9yZXQ9Y291bnRl cjsKLSsJCX0KLSsJcmV0dXJuIG9rOwotKwl9Ci0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLStz dGF0aWMKLSsjZW5kaWYKLStpbnQgRklQU19kc2FfZ2VuZXJhdGVfZyhCTl9DVFggKmN0eCwgQklH TlVNICpwLCBCSUdOVU0gKnEsCi0rCQlCSUdOVU0gKipnX3JldCwgdW5zaWduZWQgbG9uZyAqaF9y ZXQsIEJOX0dFTkNCICpjYikKLSsJewotKwlpbnQgb2s9MDsKLSsJQklHTlVNICpyMCwgKnRlc3Qs ICpnID0gTlVMTDsKLSsJQk5fTU9OVF9DVFggKm1vbnQ7Ci0rCXVuc2lnbmVkIGludCBoPTI7Ci0r Ci0rCWlmICgobW9udD1CTl9NT05UX0NUWF9uZXcoKSkgPT0gTlVMTCkKLSsJCWdvdG8gZXJyOwot KwotKwlyMCA9IEJOX0NUWF9nZXQoY3R4KTsKLSsJKmdfcmV0ID0gZyA9IEJOX0NUWF9nZXQoY3R4 KTsKLSsJdGVzdCA9IEJOX0NUWF9nZXQoY3R4KTsKLSsKLSAJLyogU2V0IHIwPShwLTEpL3EgKi8K LSAJaWYgKCFCTl9zdWIodGVzdCxwLEJOX3ZhbHVlX29uZSgpKSkgZ290byBlcnI7Ci0gCWlmICgh Qk5fZGl2KHIwLE5VTEwsdGVzdCxxLGN0eCkpIGdvdG8gZXJyOwotQEAgLTM0NCwyNiArNDM5LDcg QEAgZW5kOgotIGVycjoKLSAJaWYgKG9rKQotIAkJewotLQkJaWYocmV0LT5wKSBCTl9mcmVlKHJl dC0+cCk7Ci0tCQlpZihyZXQtPnEpIEJOX2ZyZWUocmV0LT5xKTsKLS0JCWlmKHJldC0+ZykgQk5f ZnJlZShyZXQtPmcpOwotLQkJcmV0LT5wPUJOX2R1cChwKTsKLS0JCXJldC0+cT1CTl9kdXAocSk7 Ci0tCQlyZXQtPmc9Qk5fZHVwKGcpOwotLQkJaWYgKHJldC0+cCA9PSBOVUxMIHx8IHJldC0+cSA9 PSBOVUxMIHx8IHJldC0+ZyA9PSBOVUxMKQotLQkJCXsKLS0JCQlvaz0wOwotLQkJCWdvdG8gZXJy OwotLQkJCX0KLS0JCWlmIChjb3VudGVyX3JldCAhPSBOVUxMKSAqY291bnRlcl9yZXQ9Y291bnRl cjsKLSAJCWlmIChoX3JldCAhPSBOVUxMKSAqaF9yZXQ9aDsKLS0JCWlmIChzZWVkX291dCkKLS0J CQltZW1jcHkoc2VlZF9vdXQsIHNlZWQsIHFzaXplKTsKLS0JCX0KLS0JaWYoY3R4KQotLQkJewot LQkJQk5fQ1RYX2VuZChjdHgpOwotLQkJQk5fQ1RYX2ZyZWUoY3R4KTsKLSAJCX0KLSAJaWYgKG1v bnQgIT0gTlVMTCkgQk5fTU9OVF9DVFhfZnJlZShtb250KTsKLSAJcmV0dXJuIG9rOwotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9kc2EuaC5maXBzIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9kc2EvZHNhLmgKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZHNhL2RzYS5oLmZpcHMJ MjAxNS0wMS0wOSAwOTo1MTo1MS4wMzM5MTA1NzYgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9j cnlwdG8vZHNhL2RzYS5oCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTQzOTIyMTEwICswMTAwCi1AQCAt ODgsNiArODgsOCBAQAotICMgZGVmaW5lIE9QRU5TU0xfRFNBX01BWF9NT0RVTFVTX0JJVFMJMTAw MDAKLSAjZW5kaWYKLSAKLSsjZGVmaW5lIE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNfQklU UyAxMDI0Ci0rCi0gI2RlZmluZSBEU0FfRkxBR19DQUNIRV9NT05UX1AJMHgwMQotICNkZWZpbmUg RFNBX0ZMQUdfTk9fRVhQX0NPTlNUVElNRSAgICAgICAweDAyIC8qIG5ldyB3aXRoIDAuOS43aDsg dGhlIGJ1aWx0LWluIERTQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqIGltcGxlbWVudGF0aW9uIG5vdyB1c2VzIGNvbnN0YW50IHRpbWUKLUBAIC0yNjQs NiArMjY2LDE3IEBAIGludAlEU0FfcHJpbnRfZnAoRklMRSAqYnAsIGNvbnN0IERTQSAqeCwKLSBE SCAqRFNBX2R1cF9ESChjb25zdCBEU0EgKnIpOwotICNlbmRpZgotIAotKyNpZmRlZiBPUEVOU1NM X0ZJUFMKLStpbnQgRklQU19kc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV90IGJp dHMsIHNpemVfdCBxYml0cywKLSsJY29uc3QgRVZQX01EICpldnBtZCwgY29uc3QgdW5zaWduZWQg Y2hhciAqc2VlZF9pbiwgc2l6ZV90IHNlZWRfbGVuLAotKwlpbnQgKmNvdW50ZXJfcmV0LCB1bnNp Z25lZCBsb25nICpoX3JldCwgQk5fR0VOQ0IgKmNiKTsKLStpbnQgRklQU19kc2FfZ2VuZXJhdGVf cHEoQk5fQ1RYICpjdHgsIHNpemVfdCBiaXRzLCBzaXplX3QgcWJpdHMsCi0rCQljb25zdCBFVlBf TUQgKmV2cG1kLCB1bnNpZ25lZCBjaGFyICpzZWVkLCBpbnQgc2VlZF9sZW4sCi0rCQlCSUdOVU0g KipwX3JldCwgQklHTlVNICoqcV9yZXQsIGludCAqY291bnRlcl9yZXQsIEJOX0dFTkNCICpjYik7 Ci0raW50IEZJUFNfZHNhX2dlbmVyYXRlX2coQk5fQ1RYICpjdHgsIEJJR05VTSAqcCwgQklHTlVN ICpxLAotKwkJQklHTlVNICoqZ19yZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0LCBCTl9HRU5DQiAq Y2IpOwotKyNlbmRpZgotKwotICNkZWZpbmUgRVZQX1BLRVlfQ1RYX3NldF9kc2FfcGFyYW1nZW5f Yml0cyhjdHgsIG5iaXRzKSBcCi0gCUVWUF9QS0VZX0NUWF9jdHJsKGN0eCwgRVZQX1BLRVlfRFNB LCBFVlBfUEtFWV9PUF9QQVJBTUdFTiwgXAotIAkJCQlFVlBfUEtFWV9DVFJMX0RTQV9QQVJBTUdF Tl9CSVRTLCBuYml0cywgTlVMTCkKLUBAIC0yODUsMTAgKzI5OCwxMyBAQCB2b2lkIEVSUl9sb2Fk X0RTQV9zdHJpbmdzKHZvaWQpOwotICNkZWZpbmUgRFNBX0ZfRE9fRFNBX1BSSU5UCQkJCSAxMDQK LSAjZGVmaW5lIERTQV9GX0RTQVBBUkFNU19QUklOVAkJCQkgMTAwCi0gI2RlZmluZSBEU0FfRl9E U0FQQVJBTVNfUFJJTlRfRlAJCQkgMTAxCi0rI2RlZmluZSBEU0FfRl9EU0FfQlVJTFRJTl9LRVlH RU4JCQkgMTI0Ci0rI2RlZmluZSBEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTgkJCSAxMjMKLSAj ZGVmaW5lIERTQV9GX0RTQV9ET19TSUdOCQkJCSAxMTIKLSAjZGVmaW5lIERTQV9GX0RTQV9ET19W RVJJRlkJCQkJIDExMwotLSNkZWZpbmUgRFNBX0ZfRFNBX0dFTkVSQVRFX0tFWQkJCQkgMTI0Ci0t I2RlZmluZSBEU0FfRl9EU0FfR0VORVJBVEVfUEFSQU1FVEVSU19FWAkJIDEyMwotKyNkZWZpbmUg RFNBX0ZfRFNBX0dFTkVSQVRFX0tFWQkJCQkgMTI2Ci0rI2RlZmluZSBEU0FfRl9EU0FfR0VORVJB VEVfUEFSQU1FVEVSU19FWAkJIDEyNwotKyNkZWZpbmUgRFNBX0ZfRFNBX0dFTkVSQVRFX1BBUkFN RVRFUlMJLyogdW51c2VkICovCSAxMjUKLSAjZGVmaW5lIERTQV9GX0RTQV9ORVdfTUVUSE9ECQkJ CSAxMDMKLSAjZGVmaW5lIERTQV9GX0RTQV9QQVJBTV9ERUNPREUJCQkJIDExOQotICNkZWZpbmUg RFNBX0ZfRFNBX1BSSU5UX0ZQCQkJCSAxMDUKLUBAIC0zMTQsMTEgKzMzMCwxNSBAQCB2b2lkIEVS Ul9sb2FkX0RTQV9zdHJpbmdzKHZvaWQpOwotICNkZWZpbmUgRFNBX1JfREFUQV9UT09fTEFSR0Vf Rk9SX0tFWV9TSVpFCQkgMTAwCi0gI2RlZmluZSBEU0FfUl9ERUNPREVfRVJST1IJCQkJIDEwNAot ICNkZWZpbmUgRFNBX1JfSU5WQUxJRF9ESUdFU1RfVFlQRQkJCSAxMDYKLSsjZGVmaW5lIERTQV9S X0tFWV9TSVpFX0lOVkFMSUQJCQkJIDExMwotKyNkZWZpbmUgRFNBX1JfS0VZX1NJWkVfVE9PX1NN QUxMCQkJIDExMAotICNkZWZpbmUgRFNBX1JfTUlTU0lOR19QQVJBTUVURVJTCQkJIDEwMQotICNk ZWZpbmUgRFNBX1JfTU9EVUxVU19UT09fTEFSR0UJCQkJIDEwMwotLSNkZWZpbmUgRFNBX1JfTkVF RF9ORVdfU0VUVVBfVkFMVUVTCQkJIDExMAotKyNkZWZpbmUgRFNBX1JfTkVFRF9ORVdfU0VUVVBf VkFMVUVTCQkJIDExMgotICNkZWZpbmUgRFNBX1JfTk9OX0ZJUFNfRFNBX01FVEhPRAkJCSAxMTEK LSsjZGVmaW5lIERTQV9SX05PTl9GSVBTX01FVEhPRAkJCQkgMTExCi0gI2RlZmluZSBEU0FfUl9O T19QQVJBTUVURVJTX1NFVAkJCQkgMTA3Ci0rI2RlZmluZSBEU0FfUl9PUEVSQVRJT05fTk9UX0FM TE9XRURfSU5fRklQU19NT0RFIC8qIHVudXNlZCAqLyAxMTIKLSAjZGVmaW5lIERTQV9SX1BBUkFN RVRFUl9FTkNPRElOR19FUlJPUgkJCSAxMDUKLSAKLSAjaWZkZWYgIF9fY3BsdXNwbHVzCi1kaWZm IC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZHNhL2RzYV9rZXkuYy5maXBzIG9wZW5zc2wtMS4w LjFrL2NyeXB0by9kc2EvZHNhX2tleS5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9k c2Ffa2V5LmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9w ZW5zc2wtMS4wLjFrL2NyeXB0by9kc2EvZHNhX2tleS5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTQz OTIyMTEwICswMTAwCi1AQCAtNjYsNiArNjYsMzUgQEAKLSAKLSAjaWZkZWYgT1BFTlNTTF9GSVBT Ci0gI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgot KwotK3N0YXRpYyBpbnQgZmlwc19jaGVja19kc2EoRFNBICpkc2EpCi0rCXsKLSsJRVZQX1BLRVkg KnBrOwotKwl1bnNpZ25lZCBjaGFyIHRic1tdID0gIkRTQSBQYWlyd2lzZSBDaGVjayBEYXRhIjsK LSsJaW50IHJldCA9IDA7Ci0rCi0rCWlmICgocGs9RVZQX1BLRVlfbmV3KCkpID09IE5VTEwpCi0r CQlnb3RvIGVycjsKLSsKLSsJRVZQX1BLRVlfc2V0MV9EU0EocGssIGRzYSk7Ci0rCi0rCWlmIChm aXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIHRicywgLTEsIE5VTEwsIDAsIE5VTEwsIDAsIE5V TEwpKQotKwkJcmV0ID0gMTsKLSsKLSsJZXJyOgotKwlpZiAocmV0ID09IDApCi0rCQl7Ci0rCQlG SVBTZXJyKEZJUFNfRl9GSVBTX0NIRUNLX0RTQSxGSVBTX1JfUEFJUldJU0VfVEVTVF9GQUlMRUQp OwotKwkJZmlwc19zZXRfc2VsZnRlc3RfZmFpbCgpOwotKwkJfQotKwotKwlpZiAocGspCi0rCQlF VlBfUEtFWV9mcmVlKHBrKTsKLSsKLSsJcmV0dXJuIHJldDsKLSsJfQotKwotICNlbmRpZgotIAot IHN0YXRpYyBpbnQgZHNhX2J1aWx0aW5fa2V5Z2VuKERTQSAqZHNhKTsKLUBAIC04MiwxMCArMTEx LDYgQEAgaW50IERTQV9nZW5lcmF0ZV9rZXkoRFNBICpkc2EpCi0gI2VuZGlmCi0gCWlmKGRzYS0+ bWV0aC0+ZHNhX2tleWdlbikKLSAJCXJldHVybiBkc2EtPm1ldGgtPmRzYV9rZXlnZW4oZHNhKTsK LS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tCWlmIChGSVBTX21vZGUoKSkKLS0JCXJldHVybiBGSVBT X2RzYV9nZW5lcmF0ZV9rZXkoZHNhKTsKLS0jZW5kaWYKLSAJcmV0dXJuIGRzYV9idWlsdGluX2tl eWdlbihkc2EpOwotIAl9Ci0gCi1AQCAtOTUsNiArMTIwLDE1IEBAIHN0YXRpYyBpbnQgZHNhX2J1 aWx0aW5fa2V5Z2VuKERTQSAqZHNhKQotIAlCTl9DVFggKmN0eD1OVUxMOwotIAlCSUdOVU0gKnB1 Yl9rZXk9TlVMTCwqcHJpdl9rZXk9TlVMTDsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCWlm IChGSVBTX21vZGUoKSAmJiAhKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05fRklQU19BTExPVykK LSsJCSYmIChCTl9udW1fYml0cyhkc2EtPnApIDwgT1BFTlNTTF9EU0FfRklQU19NSU5fTU9EVUxV U19CSVRTKSkKLSsJCXsKLSsJCURTQWVycihEU0FfRl9EU0FfQlVJTFRJTl9LRVlHRU4sIERTQV9S X0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsjZW5kaWYKLSsKLSAJ aWYgKChjdHg9Qk5fQ1RYX25ldygpKSA9PSBOVUxMKSBnb3RvIGVycjsKLSAKLSAJaWYgKGRzYS0+ cHJpdl9rZXkgPT0gTlVMTCkKLUBAIC0xMzMsNiArMTY3LDE0IEBAIHN0YXRpYyBpbnQgZHNhX2J1 aWx0aW5fa2V5Z2VuKERTQSAqZHNhKQotIAotIAlkc2EtPnByaXZfa2V5PXByaXZfa2V5OwotIAlk c2EtPnB1Yl9rZXk9cHViX2tleTsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCWlmKEZJUFNfbW9k ZSgpICYmICFmaXBzX2NoZWNrX2RzYShkc2EpKQotKwkJewotKwkJZHNhLT5wdWJfa2V5ID0gTlVM TDsKLSsJCWRzYS0+cHJpdl9rZXkgPSBOVUxMOwotKwkgICAgCWdvdG8gZXJyOwotKwkJfQotKyNl bmRpZgotIAlvaz0xOwotIAotIGVycjoKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9k c2EvZHNhX2xpYi5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9kc2FfbGliLmMKLS0t LSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZHNhL2RzYV9saWIuYy5maXBzCTIwMTUtMDEtMDggMTU6 MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9kc2Ff bGliLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NDM5MjIxMTAgKzAxMDAKLUBAIC04NywxNCArODcs NyBAQCBjb25zdCBEU0FfTUVUSE9EICpEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kCi0gCXsKLSAJaWYo IWRlZmF1bHRfRFNBX21ldGhvZCkKLSAJCXsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tCQlpZiAo RklQU19tb2RlKCkpCi0tCQkJcmV0dXJuIEZJUFNfZHNhX29wZW5zc2woKTsKLS0JCWVsc2UKLS0J CQlyZXR1cm4gRFNBX09wZW5TU0woKTsKLS0jZWxzZQotIAkJZGVmYXVsdF9EU0FfbWV0aG9kID0g RFNBX09wZW5TU0woKTsKLS0jZW5kaWYKLSAJCX0KLSAJcmV0dXJuIGRlZmF1bHRfRFNBX21ldGhv ZDsKLSAJfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9kc2FfbG9jbC5oLmZp cHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9kc2FfbG9jbC5oCi0tLS0gb3BlbnNzbC0xLjAu MWsvY3J5cHRvL2RzYS9kc2FfbG9jbC5oLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS4wMzU5MTA2 MjEgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZHNhL2RzYV9sb2NsLmgJMjAxNS0w MS0wOSAwOTo1MTo1MS41NDQ5MjIxMzMgKzAxMDAKLUBAIC01Niw1ICs1Niw0IEBACi0gCi0gaW50 IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplX3QgYml0cywgc2l6ZV90IHFiaXRz LAotIAljb25zdCBFVlBfTUQgKmV2cG1kLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWVkX2luLCBz aXplX3Qgc2VlZF9sZW4sCi0tCXVuc2lnbmVkIGNoYXIgKnNlZWRfb3V0LAotIAlpbnQgKmNvdW50 ZXJfcmV0LCB1bnNpZ25lZCBsb25nICpoX3JldCwgQk5fR0VOQ0IgKmNiKTsKLWRpZmYgLXVwIG9w ZW5zc2wtMS4wLjFrL2NyeXB0by9kc2EvZHNhX29zc2wuYy5maXBzIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9kc2EvZHNhX29zc2wuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9kc2EvZHNhX29z c2wuYy5maXBzCTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNz bC0xLjAuMWsvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTQ0OTIy MTMzICswMTAwCi1AQCAtNjUsNiArNjUsOSBAQAotICNpbmNsdWRlIDxvcGVuc3NsL2RzYS5oPgot ICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9hc24xLmg+Ci0r I2lmZGVmIE9QRU5TU0xfRklQUwotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYK LSAKLSBzdGF0aWMgRFNBX1NJRyAqZHNhX2RvX3NpZ24oY29uc3QgdW5zaWduZWQgY2hhciAqZGdz dCwgaW50IGRsZW4sIERTQSAqZHNhKTsKLSBzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAq ZHNhLCBCTl9DVFggKmN0eF9pbiwgQklHTlVNICoqa2ludnAsIEJJR05VTSAqKnJwKTsKLUBAIC04 Miw3ICs4NSw3IEBAIE5VTEwsIC8qIGRzYV9tb2RfZXhwLCAqLwotIE5VTEwsIC8qIGRzYV9ibl9t b2RfZXhwLCAqLwotIGRzYV9pbml0LAotIGRzYV9maW5pc2gsCi0tMCwKLStEU0FfRkxBR19GSVBT X01FVEhPRCwKLSBOVUxMLAotIE5VTEwsCi0gTlVMTAotQEAgLTEzOCw2ICsxNDEsMjEgQEAgc3Rh dGljIERTQV9TSUcgKmRzYV9kb19zaWduKGNvbnN0IHVuc2lnbgotIAlEU0FfU0lHICpyZXQ9TlVM TDsKLSAJaW50IG5vcmVkbyA9IDA7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlpZihGSVBT X3NlbGZ0ZXN0X2ZhaWxlZCgpKQotKwkgICAgewotKwkgICAgRklQU2VycihGSVBTX0ZfRFNBX0RP X1NJR04sRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKLSsJICAgIHJldHVybiBOVUxMOwot KwkgICAgfQotKwotKwlpZiAoRklQU19tb2RlKCkgJiYgIShkc2EtPmZsYWdzICYgRFNBX0ZMQUdf Tk9OX0ZJUFNfQUxMT1cpIAotKwkJJiYgKEJOX251bV9iaXRzKGRzYS0+cCkgPCBPUEVOU1NMX0RT QV9GSVBTX01JTl9NT0RVTFVTX0JJVFMpKQotKwkJewotKwkJRFNBZXJyKERTQV9GX0RTQV9ET19T SUdOLCBEU0FfUl9LRVlfU0laRV9UT09fU01BTEwpOwotKwkJcmV0dXJuIE5VTEw7Ci0rCQl9Ci0r I2VuZGlmCi0rCi0gCUJOX2luaXQoJm0pOwotIAlCTl9pbml0KCZ4cik7Ci0gCi1AQCAtMzI1LDYg KzM0MywyMSBAQCBzdGF0aWMgaW50IGRzYV9kb192ZXJpZnkoY29uc3QgdW5zaWduZWQKLSAJCXJl dHVybiAtMTsKLSAJCX0KLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCWlmKEZJUFNfc2VsZnRl c3RfZmFpbGVkKCkpCi0rCSAgICB7Ci0rCSAgICBGSVBTZXJyKEZJUFNfRl9EU0FfRE9fVkVSSUZZ LEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rCSAgICByZXR1cm4gLTE7Ci0rCSAgICB9 Ci0rCi0rCWlmIChGSVBTX21vZGUoKSAmJiAhKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05fRklQ U19BTExPVykgCi0rCQkmJiAoQk5fbnVtX2JpdHMoZHNhLT5wKSA8IE9QRU5TU0xfRFNBX0ZJUFNf TUlOX01PRFVMVVNfQklUUykpCi0rCQl7Ci0rCQlEU0FlcnIoRFNBX0ZfRFNBX0RPX1ZFUklGWSwg RFNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKLSsJCXJldHVybiAtMTsKLSsJCX0KLSsjZW5kaWYK LSsKLSAJaWYgKEJOX251bV9iaXRzKGRzYS0+cCkgPiBPUEVOU1NMX0RTQV9NQVhfTU9EVUxVU19C SVRTKQotIAkJewotIAkJRFNBZXJyKERTQV9GX0RTQV9ET19WRVJJRlksRFNBX1JfTU9EVUxVU19U T09fTEFSR0UpOwotQEAgLTM5OSw2ICs0MzIsOSBAQCBzdGF0aWMgaW50IGRzYV9kb192ZXJpZnko Y29uc3QgdW5zaWduZWQKLSAKLSBzdGF0aWMgaW50IGRzYV9pbml0KERTQSAqZHNhKQotIHsKLSsj aWZkZWYgT1BFTlNTTF9GSVBTCi0rCUZJUFNfc2VsZnRlc3RfY2hlY2soKTsKLSsjZW5kaWYKLSAJ ZHNhLT5mbGFnc3w9RFNBX0ZMQUdfQ0FDSEVfTU9OVF9QOwotIAlyZXR1cm4oMSk7Ci0gfQotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9kc2FfcG1ldGguYy5maXBzIG9wZW5zc2wt MS4wLjFrL2NyeXB0by9kc2EvZHNhX3BtZXRoLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8v ZHNhL2RzYV9wbWV0aC5jLmZpcHMJMjAxNS0wMS0wOCAxNTowMDozNi4wMDAwMDAwMDAgKzAxMDAK LSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZHNhL2RzYV9wbWV0aC5jCTIwMTUtMDEtMDkgMDk6 NTE6NTEuNTQ0OTIyMTMzICswMTAwCi1AQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyBpbnQgcGtl eV9kc2FfcGFyYW1nZW4oRVZQX1BLRVlfQ1QKLSAJaWYgKCFkc2EpCi0gCQlyZXR1cm4gMDsKLSAJ cmV0ID0gZHNhX2J1aWx0aW5fcGFyYW1nZW4oZHNhLCBkY3R4LT5uYml0cywgZGN0eC0+cWJpdHMs IGRjdHgtPnBtZCwKLS0JICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwg TlVMTCwgTlVMTCwgcGNiKTsKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwg TlVMTCwgTlVMTCwgcGNiKTsKLSAJaWYgKHJldCkKLSAJCUVWUF9QS0VZX2Fzc2lnbl9EU0EocGtl eSwgZHNhKTsKLSAJZWxzZQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2RzYS9kc2F0 ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZHNhL2RzYXRlc3QuYwotLS0tIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9kc2EvZHNhdGVzdC5jLmZpcHMJMjAxNS0wMS0wOCAxNTowMDozNi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZHNhL2RzYXRlc3QuYwky MDE1LTAxLTA5IDA5OjUxOjUxLjU0NTkyMjE1NSArMDEwMAotQEAgLTk2LDM2ICs5Niw0MSBAQCBz dGF0aWMgaW50IE1TX0NBTExCQUNLIGRzYV9jYihpbnQgcCwgaW50Ci0gLyogc2VlZCwgb3V0X3As IG91dF9xLCBvdXRfZyBhcmUgdGFrZW4gZnJvbSB0aGUgdXBkYXRlZCBBcHBlbmRpeCA1IHRvCi0g ICogRklQUyBQVUIgMTg2IGFuZCBhbHNvIGFwcGVhciBpbiBBcHBlbmRpeCA1IHRvIEZJUFMgUElC IDE4Ni0xICovCi0gc3RhdGljIHVuc2lnbmVkIGNoYXIgc2VlZFsyMF09ewotLQkweGQ1LDB4MDEs MHg0ZSwweDRiLDB4NjAsMHhlZiwweDJiLDB4YTgsMHhiNiwweDIxLDB4MWIsMHg0MCwKLS0JMHg2 MiwweGJhLDB4MzIsMHgyNCwweGUwLDB4NDIsMHg3ZCwweGQzLAotKwkweDAyLDB4NDcsMHgxMSww eDkyLDB4MTEsMHg4OCwweEM4LDB4RkIsMHhBRiwweDQ4LDB4NEMsMHg2MiwKLSsJMHhERiwweEE1 LDB4QkUsMHhBMCwweEE0LDB4M0MsMHg1NiwweEUzLAotIAl9OwotIAotIHN0YXRpYyB1bnNpZ25l ZCBjaGFyIG91dF9wW109ewotLQkweDhkLDB4ZjIsMHhhNCwweDk0LDB4NDksMHgyMiwweDc2LDB4 YWEsCi0tCTB4M2QsMHgyNSwweDc1LDB4OWIsMHhiMCwweDY4LDB4NjksMHhjYiwKLS0JMHhlYSww eGMwLDB4ZDgsMHgzYSwweGZiLDB4OGQsMHgwYywweGY3LAotLQkweGNiLDB4YjgsMHgzMiwweDRm LDB4MGQsMHg3OCwweDgyLDB4ZTUsCi0tCTB4ZDAsMHg3NiwweDJmLDB4YzUsMHhiNywweDIxLDB4 MGUsMHhhZiwKLS0JMHhjMiwweGU5LDB4YWQsMHhhYywweDMyLDB4YWIsMHg3YSwweGFjLAotLQkw eDQ5LDB4NjksMHgzZCwweGZiLDB4ZjgsMHgzNywweDI0LDB4YzIsCi0tCTB4ZWMsMHgwNywweDM2 LDB4ZWUsMHgzMSwweGM4LDB4MDIsMHg5MSwKLSsJMHhBQywweENCLDB4MUUsMHg2MywweDYwLDB4 NjksMHgwQywweEZCLDB4MDYsMHgxOSwweDY4LDB4M0UsCi0rCTB4QTUsMHgwMSwweDVBLDB4QTIs MHgxNSwweDVDLDB4RTIsMHg5OSwweDJELDB4RDUsMHgzMCwweDk5LAotKwkweDdFLDB4NUYsMHg4 RCwweEUyLDB4RjcsMHhDNiwweDJFLDB4OEQsMHhBMywweDlGLDB4NTgsMHhBRCwKLSsJMHhENiww eEE5LDB4N0QsMHgwRSwweDBELDB4OTUsMHg1MywweEE2LDB4NzEsMHgzQSwweERFLDB4QUIsCi0r CTB4QUMsMHhFOSwweEY0LDB4MzYsMHg1NSwweDlFLDB4QjksMHhENiwweDkzLDB4QkYsMHhGMyww eDE4LAotKwkweDFDLDB4MTQsMHg3QiwweEE1LDB4NDIsMHgyRSwweENELDB4MDAsMHhFQiwweDM1 LDB4M0IsMHgxQiwKLSsJMHhBOCwweDUxLDB4QkIsMHhFMSwweDU4LDB4NDIsMHg4NSwweDg0LDB4 MjIsMHhBNywweDk3LDB4NUUsCi0rCTB4OTksMHg2RiwweDM4LDB4MjAsMHhCRCwweDlELDB4QjYs MHhEOSwweDMzLDB4MzcsMHgyQSwweEZELAotKwkweEJCLDB4RDQsMHhCQywweDBDLDB4MkEsMHg2 NywweENCLDB4OUYsMHhCQiwweERGLDB4RjksMHg5MywKLSsJMHhBQSwweEQ2LDB4RjAsMHhENiww eDk1LDB4MEIsMHg1RCwweDY1LDB4MTQsMHhEMCwweDE4LDB4OUQsCi0rCTB4QzYsMHhBRiwweEYw LDB4QzYsMHgzNywweDdDLDB4RjMsMHg1RiwKLSAJfTsKLSAKLSBzdGF0aWMgdW5zaWduZWQgY2hh ciBvdXRfcVtdPXsKLS0JMHhjNywweDczLDB4MjEsMHg4YywweDczLDB4N2UsMHhjOCwweGVlLAot LQkweDk5LDB4M2IsMHg0ZiwweDJkLDB4ZWQsMHgzMCwweGY0LDB4OGUsCi0tCTB4ZGEsMHhjZSww eDkxLDB4NWYsCi0rCTB4RTMsMHg4RSwweDVFLDB4NkQsMHhCRiwweDJCLDB4NzksMHhGOCwweEM1 LDB4NEIsMHg4OSwweDhCLAotKwkweEJBLDB4MkQsMHg5MSwweEMzLDB4NkMsMHg4MCwweEFDLDB4 ODcsCi0gCX07Ci0gCi0gc3RhdGljIHVuc2lnbmVkIGNoYXIgb3V0X2dbXT17Ci0tCTB4NjIsMHg2 ZCwweDAyLDB4NzgsMHgzOSwweGVhLDB4MGEsMHgxMywKLS0JMHg0MSwweDMxLDB4NjMsMHhhNSww eDViLDB4NGMsMHhiNSwweDAwLAotLQkweDI5LDB4OWQsMHg1NSwweDIyLDB4OTUsMHg2YywweGVm LDB4Y2IsCi0tCTB4M2IsMHhmZiwweDEwLDB4ZjMsMHg5OSwweGNlLDB4MmMsMHgyZSwKLS0JMHg3 MSwweGNiLDB4OWQsMHhlNSwweGZhLDB4MjQsMHhiYSwweGJmLAotLQkweDU4LDB4ZTUsMHhiNyww eDk1LDB4MjEsMHg5MiwweDVjLDB4OWMsCi0tCTB4YzQsMHgyZSwweDlmLDB4NmYsMHg0NiwweDRi LDB4MDgsMHg4YywKLS0JMHhjNSwweDcyLDB4YWYsMHg1MywweGU2LDB4ZDcsMHg4OCwweDAyLAot KwkweDQyLDB4NEEsMHgwNCwweDRFLDB4NzksMHhCNCwweDk5LDB4N0YsMHhGRCwweDU4LDB4MzYs MHgyQywKLSsJMHgxQiwweDVGLDB4MTgsMHg3RSwweDBELDB4Q0MsMHhBQiwweDgxLDB4QzksMHg1 RCwweDEwLDB4Q0UsCi0rCTB4NEUsMHg4MCwweDdFLDB4NTgsMHhCNCwweDM0LDB4M0YsMHhBNyww eDQ1LDB4QzcsMHhBQSwweDM2LAotKwkweDI0LDB4NDIsMHhBOSwweDNCLDB4RTgsMHgwRSwweDA0 LDB4MDIsMHgyRCwweEZCLDB4QTYsMHgxMywKLSsJMHhCOSwweEI1LDB4MTUsMHhBNSwweDU2LDB4 MDcsMHgzNSwweEU0LDB4MDMsMHhCNiwweDc5LDB4N0MsCi0rCTB4NjIsMHhERCwweERGLDB4M0Ys MHg3MSwweDNBLDB4OUQsMHg4QiwweEM0LDB4RjYsMHhFNywweDFELAotKwkweDUyLDB4QTgsMHhB OSwweDQzLDB4MUQsMHgzMywweDUxLDB4ODgsMHgzOSwweEJELDB4NzMsMHhFOSwKLSsJMHg1Riww eEJFLDB4ODIsMHg0OSwweDI3LDB4RTYsMHhCNSwweDUzLDB4QzEsMHgzOCwweEFDLDB4MkYsCi0r CTB4NkQsMHg5NywweDZDLDB4RUIsMHg2NywweEMxLDB4NUYsMHg2NywweEY4LDB4MzUsMHgwNSww eDVFLAotKwkweEQ1LDB4NjgsMHg4MCwweEFBLDB4OTYsMHhDQSwweDBCLDB4OEEsMHhFNiwweEYx LDB4QjEsMHg0MSwKLSsJMHhDNiwweDc1LDB4OTQsMHgwQSwweDBBLDB4MkEsMHhGQSwweDI5LAot IAl9OwotIAotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0cjFbXT0iMTIzNDU2Nzg5MDEy MzQ1Njc4OTAiOwotQEAgLTE1Nyw3ICsxNjIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCi0gCUJJT19wcmludGYoYmlvX2VyciwidGVzdCBnZW5lcmF0aW9uIG9mIERTQSBwYXJh bWV0ZXJzXG4iKTsKLSAKLSAJQk5fR0VOQ0Jfc2V0KCZjYiwgZHNhX2NiLCBiaW9fZXJyKTsKLS0J aWYoKChkc2EgPSBEU0FfbmV3KCkpID09IE5VTEwpIHx8ICFEU0FfZ2VuZXJhdGVfcGFyYW1ldGVy c19leChkc2EsIDUxMiwKLSsJaWYoKChkc2EgPSBEU0FfbmV3KCkpID09IE5VTEwpIHx8ICFEU0Ff Z2VuZXJhdGVfcGFyYW1ldGVyc19leChkc2EsIDEwMjQsCi0gCQkJCXNlZWQsIDIwLCAmY291bnRl ciwgJmgsICZjYikpCi0gCQlnb3RvIGVuZDsKLSAKLUBAIC0xNzAsOSArMTc1LDkgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlCSU9fcHJpbnRmKGJpb19lcnIsIlxuY291bnRl cj0lZCBoPSVsZFxuIixjb3VudGVyLGgpOwotIAkJCi0gCURTQV9wcmludChiaW9fZXJyLGRzYSww KTsKLS0JaWYgKGNvdW50ZXIgIT0gMTA1KSAKLSsJaWYgKGNvdW50ZXIgIT0gMjM5KSAKLSAJCXsK LS0JCUJJT19wcmludGYoYmlvX2VyciwiY291bnRlciBzaG91bGQgYmUgMTA1XG4iKTsKLSsJCUJJ T19wcmludGYoYmlvX2VyciwiY291bnRlciBzaG91bGQgYmUgMjM5XG4iKTsKLSAJCWdvdG8gZW5k OwotIAkJfQotIAlpZiAoaCAhPSAyKQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Vu Z2luZS9lbmdfYWxsLmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZW5naW5lL2VuZ19hbGwu YwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jLmZpcHMJMjAxNS0w MS0wOCAxNTowMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8v ZW5naW5lL2VuZ19hbGwuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU0NTkyMjE1NSArMDEwMAotQEAg LTU4LDExICs1OCwyNSBAQAotIAotICNpbmNsdWRlICJjcnlwdGxpYi5oIgotICNpbmNsdWRlICJl bmdfaW50LmgiCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMu aD4KLSsjZW5kaWYKLSAKLSB2b2lkIEVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lcyh2b2lkKQot IAl7Ci0gCS8qIFNvbWUgRU5HSU5FcyBuZWVkIHRoaXMgKi8KLSAJT1BFTlNTTF9jcHVpZF9zZXR1 cCgpOwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJT1BFTlNTTF9pbml0X2xpYnJhcnkoKTsKLSsJ aWYgKEZJUFNfbW9kZSgpKSB7Ci0rCQkvKiBXZSBhbGxvdyBsb2FkaW5nIGR5bmFtaWMgZW5naW5l IGFzIGEgdGhpcmQgcGFydHkKLSsJCSAgIGVuZ2luZSBtaWdodCBiZSBGSVBTIHZhbGlkYXRlZC4K LSsJCSAgIFVzZXIgaXMgZGlzYWxsb3dlZCB0byBsb2FkIG5vbi12YWxpZGF0ZWQgZW5naW5lcwot KwkJICAgYnkgc2VjdXJpdHkgcG9saWN5LiAqLwotKwkJRU5HSU5FX2xvYWRfZHluYW1pYygpOwot KwkJcmV0dXJuOwotKwl9Ci0rI2VuZGlmCi0gI2lmIDAKLSAJLyogVGhlcmUncyBubyBsb25nZXIg YW55IG5lZWQgZm9yIGFuICJvcGVuc3NsIiBFTkdJTkUgdW5sZXNzLCBvbmUgZGF5LAotIAkgKiBp dCBpcyB0aGUgKm9ubHkqIHdheSBmb3Igc3RhbmRhcmQgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbnMg dG8gYmUgYmUKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvY19hbGxjLmMuZmlw cyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL2NfYWxsYy5jCi0tLS0gb3BlbnNzbC0xLjAuMWsv Y3J5cHRvL2V2cC9jX2FsbGMuYy5maXBzCTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICsw MTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9jX2FsbGMuYwkyMDE1LTAxLTA5IDA5 OjUxOjUxLjU0NTkyMjE1NSArMDEwMAotQEAgLTY1LDYgKzY1LDExIEBACi0gdm9pZCBPcGVuU1NM X2FkZF9hbGxfY2lwaGVycyh2b2lkKQotIAl7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlP UEVOU1NMX2luaXRfbGlicmFyeSgpOwotKwlpZighRklQU19tb2RlKCkpIAotKwkJewotKyNlbmRp ZgotICNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19jZmIo KSk7Ci0gCUVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfY2ZiMSgpKTsKLUBAIC0yMjcsNCArMjMyLDYw IEBAIHZvaWQgT3BlblNTTF9hZGRfYWxsX2NpcGhlcnModm9pZCkKLSAJRVZQX2FkZF9jaXBoZXJf YWxpYXMoU05fY2FtZWxsaWFfMjU2X2NiYywiQ0FNRUxMSUEyNTYiKTsKLSAJRVZQX2FkZF9jaXBo ZXJfYWxpYXMoU05fY2FtZWxsaWFfMjU2X2NiYywiY2FtZWxsaWEyNTYiKTsKLSAjZW5kaWYKLSsj aWZkZWYgT1BFTlNTTF9GSVBTCi0rCQl9Ci0rCWVsc2UKLSsJCXsKLSsjaWZuZGVmIE9QRU5TU0xf Tk9fREVTCi0rCUVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlX2NmYigpKTsKLSsJRVZQX2FkZF9j aXBoZXIoRVZQX2Rlc19lZGUzX2NmYigpKTsKLSsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19l ZGVfb2ZiKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTNfb2ZiKCkpOwotKwotKwlF VlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZV9jYmMoKSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVWUF9k ZXNfZWRlM19jYmMoKSk7Ci0rCUVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Rlc19lZGUzX2NiYywi REVTMyIpOwotKwlFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9kZXNfZWRlM19jYmMsImRlczMiKTsK LSsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUoKSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVW UF9kZXNfZWRlMygpKTsKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIE9QRU5TU0xfTk9fQUVTCi0rCUVW UF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2VjYigpKTsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18xMjhfY2JjKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9jZmIoKSk7Ci0rCUVW UF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2NmYjEoKSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTI4X2NmYjgoKSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X29mYigpKTsKLSsJ RVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY3RyKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBf YWVzXzEyOF9nY20oKSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X3h0cygpKTsKLSsJ RVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzEyOF9jYmMsIkFFUzEyOCIpOwotKwlFVlBfYWRk X2NpcGhlcl9hbGlhcyhTTl9hZXNfMTI4X2NiYywiYWVzMTI4Iik7Ci0rCUVWUF9hZGRfY2lwaGVy KEVWUF9hZXNfMTkyX2VjYigpKTsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY2JjKCkp OwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9jZmIoKSk7Ci0rCUVWUF9hZGRfY2lwaGVy KEVWUF9hZXNfMTkyX2NmYjEoKSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2NmYjgo KSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX29mYigpKTsKLSsJRVZQX2FkZF9jaXBo ZXIoRVZQX2Flc18xOTJfY3RyKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9nY20o KSk7Ci0rCUVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xOTJfY2JjLCJBRVMxOTIiKTsKLSsJ RVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzE5Ml9jYmMsImFlczE5MiIpOwotKwlFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzI1Nl9lY2IoKSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2 X2NiYygpKTsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfY2ZiKCkpOwotKwlFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzI1Nl9jZmIxKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1 Nl9jZmI4KCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9vZmIoKSk7Ci0rCUVWUF9h ZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2N0cigpKTsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18y NTZfZ2NtKCkpOwotKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl94dHMoKSk7Ci0rCUVWUF9h ZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18yNTZfY2JjLCJBRVMyNTYiKTsKLSsJRVZQX2FkZF9jaXBo ZXJfYWxpYXMoU05fYWVzXzI1Nl9jYmMsImFlczI1NiIpOwotKyNlbmRpZgotKwkJfQotKyNlbmRp ZgotIAl9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL2NfYWxsZC5jLmZpcHMg b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9jX2FsbGQuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9ldnAvY19hbGxkLmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEw MAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvY19hbGxkLmMJMjAxNS0wMS0wOSAwOTo1 MTo1MS41NDU5MjIxNTUgKzAxMDAKLUBAIC02NCw2ICs2NCwxMSBAQAotIAotIHZvaWQgT3BlblNT TF9hZGRfYWxsX2RpZ2VzdHModm9pZCkKLSAJewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJT1BF TlNTTF9pbml0X2xpYnJhcnkoKTsKLSsJaWYgKCFGSVBTX21vZGUoKSkKLSsJCXsKLSsjZW5kaWYK LSAjaWZuZGVmIE9QRU5TU0xfTk9fTUQ0Ci0gCUVWUF9hZGRfZGlnZXN0KEVWUF9tZDQoKSk7Ci0g I2VuZGlmCi1AQCAtMTExLDQgKzExNiwzMiBAQCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9kaWdlc3Rz KHZvaWQpCi0gI2lmbmRlZiBPUEVOU1NMX05PX1dISVJMUE9PTAotIAlFVlBfYWRkX2RpZ2VzdChF VlBfd2hpcmxwb29sKCkpOwotICNlbmRpZgotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJCX0KLSsJ ZWxzZQotKwkJewotKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQSkgJiYgIWRlZmluZWQoT1BF TlNTTF9OT19TSEExKQotKwlFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMSgpKTsKLSsJRVZQX2FkZF9k aWdlc3RfYWxpYXMoU05fc2hhMSwic3NsMy1zaGExIik7Ci0rCUVWUF9hZGRfZGlnZXN0X2FsaWFz KFNOX3NoYTFXaXRoUlNBRW5jcnlwdGlvbixTTl9zaGExV2l0aFJTQSk7Ci0rI2lmbmRlZiBPUEVO U1NMX05PX0RTQQotKwlFVlBfYWRkX2RpZ2VzdChFVlBfZHNzMSgpKTsKLSsJRVZQX2FkZF9kaWdl c3RfYWxpYXMoU05fZHNhV2l0aFNIQTEsU05fZHNhV2l0aFNIQTFfMik7Ci0rCUVWUF9hZGRfZGln ZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEExLCJEU1MxIik7Ci0rCUVWUF9hZGRfZGlnZXN0X2FsaWFz KFNOX2RzYVdpdGhTSEExLCJkc3MxIik7Ci0rI2VuZGlmCi0rI2lmbmRlZiBPUEVOU1NMX05PX0VD RFNBCi0rCUVWUF9hZGRfZGlnZXN0KEVWUF9lY2RzYSgpKTsKLSsjZW5kaWYKLSsjZW5kaWYKLSsj aWZuZGVmIE9QRU5TU0xfTk9fU0hBMjU2Ci0rCUVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyMjQoKSk7 Ci0rCUVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyNTYoKSk7Ci0rI2VuZGlmCi0rI2lmbmRlZiBPUEVO U1NMX05PX1NIQTUxMgotKwlFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMzg0KCkpOwotKwlFVlBfYWRk X2RpZ2VzdChFVlBfc2hhNTEyKCkpOwotKyNlbmRpZgotKwkJfQotKyNlbmRpZgotIAl9Ci1kaWZm IC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL2RpZ2VzdC5jLmZpcHMgb3BlbnNzbC0xLjAu MWsvY3J5cHRvL2V2cC9kaWdlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvZGln ZXN0LmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9ldnAvZGlnZXN0LmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NDY5MjIx NzggKzAxMDAKLUBAIC0xNDIsOSArMTQyLDUwIEBAIGludCBFVlBfRGlnZXN0SW5pdChFVlBfTURf Q1RYICpjdHgsIGNvbnMKLSAJcmV0dXJuIEVWUF9EaWdlc3RJbml0X2V4KGN0eCwgdHlwZSwgTlVM TCk7Ci0gCX0KLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rLyogVGhlIHB1cnBvc2Ugb2Yg dGhlc2UgaXMgdG8gdHJhcCBwcm9ncmFtcyB0aGF0IGF0dGVtcHQgdG8gdXNlIG5vbiBGSVBTCi0r ICogYWxnb3JpdGhtcyBpbiBGSVBTIG1vZGUgYW5kIGlnbm9yZSB0aGUgZXJyb3JzLgotKyAqLwot KwotK3N0YXRpYyBpbnQgYmFkX2luaXQoRVZQX01EX0NUWCAqY3R4KQotKwl7IEZJUFNfRVJST1Jf SUdOT1JFRCgiRGlnZXN0IGluaXQiKTsgcmV0dXJuIDA7fQotKwotK3N0YXRpYyBpbnQgYmFkX3Vw ZGF0ZShFVlBfTURfQ1RYICpjdHgsY29uc3Qgdm9pZCAqZGF0YSxzaXplX3QgY291bnQpCi0rCXsg RklQU19FUlJPUl9JR05PUkVEKCJEaWdlc3QgdXBkYXRlIik7IHJldHVybiAwO30KLSsKLStzdGF0 aWMgaW50IGJhZF9maW5hbChFVlBfTURfQ1RYICpjdHgsdW5zaWduZWQgY2hhciAqbWQpCi0rCXsg RklQU19FUlJPUl9JR05PUkVEKCJEaWdlc3QgRmluYWwiKTsgcmV0dXJuIDA7fQotKwotK3N0YXRp YyBjb25zdCBFVlBfTUQgYmFkX21kID0KLSsJewotKwkwLAotKwkwLAotKwkwLAotKwkwLAotKwli YWRfaW5pdCwKLSsJYmFkX3VwZGF0ZSwKLSsJYmFkX2ZpbmFsLAotKwlOVUxMLAotKwlOVUxMLAot KwlOVUxMLAotKwkwLAotKwl7MCwwLDAsMH0sCi0rCX07Ci0rCi0rI2VuZGlmCi0rCi0gaW50IEVW UF9EaWdlc3RJbml0X2V4KEVWUF9NRF9DVFggKmN0eCwgY29uc3QgRVZQX01EICp0eXBlLCBFTkdJ TkUgKmltcGwpCi0gCXsKLSAJRVZQX01EX0NUWF9jbGVhcl9mbGFncyhjdHgsRVZQX01EX0NUWF9G TEFHX0NMRUFORUQpOwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJaWYoRklQU19zZWxmdGVzdF9m YWlsZWQoKSkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0VWUF9ESUdFU1RJTklUX0VYLEZJUFNf Ul9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rCQljdHgtPmRpZ2VzdCA9ICZiYWRfbWQ7Ci0rCQly ZXR1cm4gMDsKLSsJCX0KLSsjZW5kaWYKLSAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi0gCS8q IFdoZXRoZXIgaXQncyBuaWNlIG9yIG5vdCwgIkluaXRzIiBjYW4gYmUgdXNlZCBvbiAiRmluYWwi J2QgY29udGV4dHMKLSAJICogc28gdGhpcyBjb250ZXh0IG1heSBhbHJlYWR5IGhhdmUgYW4gRU5H SU5FISBUcnkgdG8gYXZvaWQgcmVsZWFzaW5nCi1AQCAtMjAxLDYgKzI0MiwxOCBAQCBpbnQgRVZQ X0RpZ2VzdEluaXRfZXgoRVZQX01EX0NUWCAqY3R4LCBjCi0gI2VuZGlmCi0gCWlmIChjdHgtPmRp Z2VzdCAhPSB0eXBlKQotIAkJewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJCWlmIChGSVBTX21v ZGUoKSkKLSsJCQl7Ci0rCQkJaWYgKCEodHlwZS0+ZmxhZ3MgJiBFVlBfTURfRkxBR19GSVBTKSAK LSsJCQkgJiYgIShjdHgtPmZsYWdzICYgRVZQX01EX0NUWF9GTEFHX05PTl9GSVBTX0FMTE9XKSkK LSsJCQkJewotKwkJCQlFVlBlcnIoRVZQX0ZfRVZQX0RJR0VTVElOSVRfRVgsIEVWUF9SX0RJU0FC TEVEX0ZPUl9GSVBTKTsKLSsJCQkJY3R4LT5kaWdlc3QgPSAmYmFkX21kOwotKwkJCQlyZXR1cm4g MDsKLSsJCQkJfQotKwkJCX0KLSsjZW5kaWYKLSAJCWlmIChjdHgtPmRpZ2VzdCAmJiBjdHgtPmRp Z2VzdC0+Y3R4X3NpemUpCi0gCQkJT1BFTlNTTF9mcmVlKGN0eC0+bWRfZGF0YSk7Ci0gCQljdHgt PmRpZ2VzdD10eXBlOwotQEAgLTIyOSwyNiArMjgyLDE1IEBAIHNraXBfdG9faW5pdDoKLSAJCX0K LSAJaWYgKGN0eC0+ZmxhZ3MgJiBFVlBfTURfQ1RYX0ZMQUdfTk9fSU5JVCkKLSAJCXJldHVybiAx OwotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0JaWYgKEZJUFNfbW9kZSgpKQotLQkJewotLQkJaWYg KEZJUFNfZGlnZXN0aW5pdChjdHgsIHR5cGUpKQotLQkJCXJldHVybiAxOwotLQkJT1BFTlNTTF9m cmVlKGN0eC0+bWRfZGF0YSk7Ci0tCQljdHgtPm1kX2RhdGEgPSBOVUxMOwotLQkJcmV0dXJuIDA7 Ci0tCQl9Ci0tI2VuZGlmCi0gCXJldHVybiBjdHgtPmRpZ2VzdC0+aW5pdChjdHgpOwotIAl9Ci0g Ci0gaW50IEVWUF9EaWdlc3RVcGRhdGUoRVZQX01EX0NUWCAqY3R4LCBjb25zdCB2b2lkICpkYXRh LCBzaXplX3QgY291bnQpCi0gCXsKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0tCXJldHVybiBGSVBT X2RpZ2VzdHVwZGF0ZShjdHgsIGRhdGEsIGNvdW50KTsKLS0jZWxzZQotLQlyZXR1cm4gY3R4LT51 cGRhdGUoY3R4LGRhdGEsY291bnQpOwotKwlGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0gI2VuZGlm Ci0rCXJldHVybiBjdHgtPnVwZGF0ZShjdHgsZGF0YSxjb3VudCk7Ci0gCX0KLSAKLSAvKiBUaGUg Y2FsbGVyIGNhbiBhc3N1bWUgdGhhdCB0aGlzIHJlbW92ZXMgYW55IHNlY3JldCBkYXRhIGZyb20g dGhlIGNvbnRleHQgKi8KLUBAIC0yNjMsMTEgKzMwNSwxMSBAQCBpbnQgRVZQX0RpZ2VzdEZpbmFs KEVWUF9NRF9DVFggKmN0eCwgdW5zCi0gLyogVGhlIGNhbGxlciBjYW4gYXNzdW1lIHRoYXQgdGhp cyByZW1vdmVzIGFueSBzZWNyZXQgZGF0YSBmcm9tIHRoZSBjb250ZXh0ICovCi0gaW50IEVWUF9E aWdlc3RGaW5hbF9leChFVlBfTURfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm1kLCB1bnNpZ25l ZCBpbnQgKnNpemUpCi0gCXsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tCXJldHVybiBGSVBTX2Rp Z2VzdGZpbmFsKGN0eCwgbWQsIHNpemUpOwotLSNlbHNlCi0gCWludCByZXQ7Ci0gCi0rI2lmZGVm IE9QRU5TU0xfRklQUwotKwlGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0rI2VuZGlmCi0gCU9QRU5T U0xfYXNzZXJ0KGN0eC0+ZGlnZXN0LT5tZF9zaXplIDw9IEVWUF9NQVhfTURfU0laRSk7Ci0gCXJl dD1jdHgtPmRpZ2VzdC0+ZmluYWwoY3R4LG1kKTsKLSAJaWYgKHNpemUgIT0gTlVMTCkKLUBAIC0y NzksNyArMzIxLDYgQEAgaW50IEVWUF9EaWdlc3RGaW5hbF9leChFVlBfTURfQ1RYICpjdHgsCi0g CQl9Ci0gCW1lbXNldChjdHgtPm1kX2RhdGEsMCxjdHgtPmRpZ2VzdC0+Y3R4X3NpemUpOwotIAly ZXR1cm4gcmV0OwotLSNlbmRpZgotIAl9Ci0gCi0gaW50IEVWUF9NRF9DVFhfY29weShFVlBfTURf Q1RYICpvdXQsIGNvbnN0IEVWUF9NRF9DVFggKmluKQotQEAgLTM3Niw3ICs0MTcsNiBAQCB2b2lk IEVWUF9NRF9DVFhfZGVzdHJveShFVlBfTURfQ1RYICpjdHgpCi0gLyogVGhpcyBjYWxsIGZyZWVz IHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRleHQgKi8KLSBpbnQgRVZQX01EX0NU WF9jbGVhbnVwKEVWUF9NRF9DVFggKmN0eCkKLSAJewotLSNpZm5kZWYgT1BFTlNTTF9GSVBTCi0g CS8qIERvbid0IGFzc3VtZSBjdHgtPm1kX2RhdGEgd2FzIGNsZWFuZWQgaW4gRVZQX0RpZ2VzdF9G aW5hbCwKLSAJICogYmVjYXVzZSBzb21ldGltZXMgb25seSBjb3BpZXMgb2YgdGhlIGNvbnRleHQg YXJlIGV2ZXIgZmluYWxpc2VkLgotIAkgKi8KLUBAIC0zODksNyArNDI5LDYgQEAgaW50IEVWUF9N RF9DVFhfY2xlYW51cChFVlBfTURfQ1RYICpjdHgpCi0gCQlPUEVOU1NMX2NsZWFuc2UoY3R4LT5t ZF9kYXRhLGN0eC0+ZGlnZXN0LT5jdHhfc2l6ZSk7Ci0gCQlPUEVOU1NMX2ZyZWUoY3R4LT5tZF9k YXRhKTsKLSAJCX0KLS0jZW5kaWYKLSAJaWYgKGN0eC0+cGN0eCkKLSAJCUVWUF9QS0VZX0NUWF9m cmVlKGN0eC0+cGN0eCk7Ci0gI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQotQEAgLTM5OCw5ICs0 MzcsNiBAQCBpbnQgRVZQX01EX0NUWF9jbGVhbnVwKEVWUF9NRF9DVFggKmN0eCkKLSAJCSAqIGZ1 bmN0aW9uYWwgcmVmZXJlbmNlIHdlIGhlbGQgZm9yIHRoaXMgcmVhc29uLiAqLwotIAkJRU5HSU5F X2ZpbmlzaChjdHgtPmVuZ2luZSk7Ci0gI2VuZGlmCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLQlG SVBTX21kX2N0eF9jbGVhbnVwKGN0eCk7Ci0tI2VuZGlmCi0gCW1lbXNldChjdHgsJ1wwJyxzaXpl b2YgKmN0eCk7Ci0gCi0gCXJldHVybiAxOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRv L2V2cC9lX2Flcy5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9lX2Flcy5jCi0tLS0g b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9lX2Flcy5jLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1 MS4yNTA5MTU0ODQgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL2VfYWVzLmMJ MjAxNS0wMS0wOSAwOTo1MTo1MS41NDY5MjIxNzggKzAxMDAKLUBAIC01Niw3ICs1Niw2IEBACi0g I2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgotICNpbmNsdWRl ICJldnBfbG9jbC5oIgotLSNpZm5kZWYgT1BFTlNTTF9GSVBTCi0gI2luY2x1ZGUgIm1vZGVzX2xj bC5oIgotICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KLSAKLUBAIC03MzAsNyArNzI5LDcgQEAg c3RhdGljIGludCBhZXNfZ2NtX2N0cmwoRVZQX0NJUEhFUl9DVFggKgotIAkJaWYgKGFyZyA8PSAw KQotIAkJCXJldHVybiAwOwotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0JCWlmIChGSVBTX21vZHVs ZV9tb2RlKCkgJiYgIShjLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCi0r CQlpZiAoRklQU19tb2RlKCkgJiYgIShjLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNf QUxMT1cpCi0gCQkJCQkJICYmIGFyZyA8IDEyKQotIAkJCXJldHVybiAwOwotICNlbmRpZgotQEAg LTExODksNyArMTE4OCw3IEBAIHN0YXRpYyBpbnQgYWVzX3h0c19jaXBoZXIoRVZQX0NJUEhFUl9D VFgKLSAJCXJldHVybiAwOwotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLSAJLyogUmVxdWlyZW1lbnQg b2YgU1A4MDAtMzhFICovCi0tCWlmIChGSVBTX21vZHVsZV9tb2RlKCkgJiYgIShjdHgtPmZsYWdz ICYgRVZQX0NJUEhfRkxBR19OT05fRklQU19BTExPVykgJiYKLSsJaWYgKEZJUFNfbW9kZSgpICYm ICEoY3R4LT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpICYmCi0gCQkJKGxl biA+ICgxVUw8PDIwKSoxNikpCi0gCQl7Ci0gCQlFVlBlcnIoRVZQX0ZfQUVTX1hUU19DSVBIRVIs IEVWUF9SX1RPT19MQVJHRSk7Ci1AQCAtMTM4Niw0ICsxMzg1LDMgQEAgQkxPQ0tfQ0lQSEVSX2N1 c3RvbShOSURfYWVzLDE5MiwxLDEyLGNjbQotIEJMT0NLX0NJUEhFUl9jdXN0b20oTklEX2Flcywy NTYsMSwxMixjY20sQ0NNLEVWUF9DSVBIX0ZMQUdfRklQU3xDVVNUT01fRkxBR1MpCi0gCi0gI2Vu ZGlmCi0tI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL2VfZGVzMy5j LmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9lX2RlczMuYwotLS0tIG9wZW5zc2wtMS4w LjFrL2NyeXB0by9ldnAvZV9kZXMzLmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjU2LjAwMDAwMDAw MCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvZV9kZXMzLmMJMjAxNS0wMS0w OSAwOTo1MTo1MS41NDc5MjIyMDEgKzAxMDAKLUBAIC02NSw4ICs2NSw2IEBACi0gI2luY2x1ZGUg PG9wZW5zc2wvZGVzLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotIAotLSNpZm5kZWYg T1BFTlNTTF9GSVBTCi0tCi0gc3RhdGljIGludCBkZXNfZWRlX2luaXRfa2V5KEVWUF9DSVBIRVJf Q1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKLSAJCQkgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqaXYsaW50IGVuYyk7Ci0gCi1AQCAtMjA3LDkgKzIwNSw5IEBAIHN0YXRpYyBpbnQg ZGVzX2VkZTNfY2ZiOF9jaXBoZXIoRVZQX0NJUEgKLSAgICAgfQotIAotIEJMT0NLX0NJUEhFUl9k ZWZzKGRlc19lZGUsIERFU19FREVfS0VZLCBOSURfZGVzX2VkZSwgOCwgMTYsIDgsIDY0LAotLQkJ CUVWUF9DSVBIX1JBTkRfS0VZLCBkZXNfZWRlX2luaXRfa2V5LCBOVUxMLCAKLS0JCQlFVlBfQ0lQ SEVSX3NldF9hc24xX2l2LAotLQkJCUVWUF9DSVBIRVJfZ2V0X2FzbjFfaXYsCi0rCQlFVlBfQ0lQ SF9SQU5EX0tFWXxFVlBfQ0lQSF9GTEFHX0ZJUFN8RVZQX0NJUEhfRkxBR19ERUZBVUxUX0FTTjEs Ci0rCQkJZGVzX2VkZV9pbml0X2tleSwKLSsJCQlOVUxMLCBOVUxMLCBOVUxMLAotIAkJCWRlczNf Y3RybCkKLSAKLSAjZGVmaW5lIGRlc19lZGUzX2NmYjY0X2NpcGhlciBkZXNfZWRlX2NmYjY0X2Np cGhlcgotQEAgLTIxOCwyMSArMjE2LDIxIEBAIEJMT0NLX0NJUEhFUl9kZWZzKGRlc19lZGUsIERF U19FREVfS0VZLAotICNkZWZpbmUgZGVzX2VkZTNfZWNiX2NpcGhlciBkZXNfZWRlX2VjYl9jaXBo ZXIKLSAKLSBCTE9DS19DSVBIRVJfZGVmcyhkZXNfZWRlMywgREVTX0VERV9LRVksIE5JRF9kZXNf ZWRlMywgOCwgMjQsIDgsIDY0LAotLQkJCUVWUF9DSVBIX1JBTkRfS0VZLCBkZXNfZWRlM19pbml0 X2tleSwgTlVMTCwgCi0tCQkJRVZQX0NJUEhFUl9zZXRfYXNuMV9pdiwKLS0JCQlFVlBfQ0lQSEVS X2dldF9hc24xX2l2LAotKwkJRVZQX0NJUEhfUkFORF9LRVl8RVZQX0NJUEhfRkxBR19GSVBTfEVW UF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xLAotKwkJCWRlc19lZGUzX2luaXRfa2V5LAotKwkJCU5V TEwsIE5VTEwsIE5VTEwsCi0gCQkJZGVzM19jdHJsKQotIAotIEJMT0NLX0NJUEhFUl9kZWZfY2Zi KGRlc19lZGUzLERFU19FREVfS0VZLE5JRF9kZXNfZWRlMywyNCw4LDEsCi0tCQkgICAgIEVWUF9D SVBIX1JBTkRfS0VZLCBkZXNfZWRlM19pbml0X2tleSxOVUxMLAotLQkJICAgICBFVlBfQ0lQSEVS X3NldF9hc24xX2l2LAotLQkJICAgICBFVlBfQ0lQSEVSX2dldF9hc24xX2l2LAotKwkJRVZQX0NJ UEhfUkFORF9LRVl8RVZQX0NJUEhfRkxBR19GSVBTfEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04x LAotKwkJICAgICBkZXNfZWRlM19pbml0X2tleSwKLSsJCSAgICAgTlVMTCwgTlVMTCwgTlVMTCwK LSAJCSAgICAgZGVzM19jdHJsKQotIAotIEJMT0NLX0NJUEhFUl9kZWZfY2ZiKGRlc19lZGUzLERF U19FREVfS0VZLE5JRF9kZXNfZWRlMywyNCw4LDgsCi0tCQkgICAgIEVWUF9DSVBIX1JBTkRfS0VZ LCBkZXNfZWRlM19pbml0X2tleSxOVUxMLAotLQkJICAgICBFVlBfQ0lQSEVSX3NldF9hc24xX2l2 LAotLQkJICAgICBFVlBfQ0lQSEVSX2dldF9hc24xX2l2LAotKwkJRVZQX0NJUEhfUkFORF9LRVl8 RVZQX0NJUEhfRkxBR19GSVBTfEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xLAotKwkJICAgICBk ZXNfZWRlM19pbml0X2tleSwKLSsJCSAgICAgTlVMTCwgTlVMTCwgTlVMTCwKLSAJCSAgICAgZGVz M19jdHJsKQotIAotIHN0YXRpYyBpbnQgZGVzX2VkZV9pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAq Y3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCi1AQCAtMzE1LDQgKzMxMywzIEBAIGNvbnN0 IEVWUF9DSVBIRVIgKkVWUF9kZXNfZWRlMyh2b2lkKQotIAlyZXR1cm4gJmRlc19lZGUzX2VjYjsK LSB9Ci0gI2VuZGlmCi0tI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZw L2VfbnVsbC5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9lX251bGwuYwotLS0tIG9w ZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvZV9udWxsLmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2 LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvZV9udWxsLmMJ MjAxNS0wMS0wOSAwOTo1MTo1MS41NDc5MjIyMDEgKzAxMDAKLUBAIC02MSw4ICs2MSw2IEBACi0g I2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPgot IAotLSNpZm5kZWYgT1BFTlNTTF9GSVBTCi0tCi0gc3RhdGljIGludCBudWxsX2luaXRfa2V5KEVW UF9DSVBIRVJfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKLSAJY29uc3QgdW5z aWduZWQgY2hhciAqaXYsaW50IGVuYyk7Ci0gc3RhdGljIGludCBudWxsX2NpcGhlcihFVlBfQ0lQ SEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCi1AQCAtNzEsNyArNjksNyBAQCBzdGF0 aWMgY29uc3QgRVZQX0NJUEhFUiBuX2NpcGhlcj0KLSAJewotIAlOSURfdW5kZWYsCi0gCTEsMCww LAotLQkwLAotKwlFVlBfQ0lQSF9GTEFHX0ZJUFMsCi0gCW51bGxfaW5pdF9rZXksCi0gCW51bGxf Y2lwaGVyLAotIAlOVUxMLAotQEAgLTEwMSw0ICs5OSwzIEBAIHN0YXRpYyBpbnQgbnVsbF9jaXBo ZXIoRVZQX0NJUEhFUl9DVFggKmMKLSAJCW1lbWNweSgoY2hhciAqKW91dCwoY29uc3QgY2hhciAq KWluLGlubCk7Ci0gCXJldHVybiAxOwotIAl9Ci0tI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4xay9jcnlwdG8vZXZwL2V2cF9lbmMuYy5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAv ZXZwX2VuYy5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9ldnBfZW5jLmMuZmlwcwky MDE1LTAxLTA4IDE1OjAwOjU2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9ldnAvZXZwX2VuYy5jCTIwMTUtMDEtMDkgMDk6NTc6NTcuMzkzMTk2MDg3ICswMTAwCi1A QCAtNjksMTcgKzY5LDU4IEBACi0gI2VuZGlmCi0gI2luY2x1ZGUgImV2cF9sb2NsLmgiCi0gCi0t I2lmZGVmIE9QRU5TU0xfRklQUwotLSNkZWZpbmUgTV9kb19jaXBoZXIoY3R4LCBvdXQsIGluLCBp bmwpIEZJUFNfY2lwaGVyKGN0eCwgb3V0LCBpbiwgaW5sKQotLSNlbHNlCi0gI2RlZmluZSBNX2Rv X2NpcGhlcihjdHgsIG91dCwgaW4sIGlubCkgY3R4LT5jaXBoZXItPmRvX2NpcGhlcihjdHgsIG91 dCwgaW4sIGlubCkKLS0jZW5kaWYKLSAKLSAKLSBjb25zdCBjaGFyIEVWUF92ZXJzaW9uW109IkVW UCIgT1BFTlNTTF9WRVJTSU9OX1BURVhUOwotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsKLSsv KiBUaGUgcHVycG9zZSBvZiB0aGVzZSBpcyB0byB0cmFwIHByb2dyYW1zIHRoYXQgYXR0ZW1wdCB0 byB1c2Ugbm9uIEZJUFMKLSsgKiBhbGdvcml0aG1zIGluIEZJUFMgbW9kZSBhbmQgaWdub3JlIHRo ZSBlcnJvcnMuCi0rICovCi0rCi0rc3RhdGljIGludCBiYWRfaW5pdChFVlBfQ0lQSEVSX0NUWCAq Y3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCi0rCQkgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqaXYsIGludCBlbmMpCi0rCXsgRklQU19FUlJPUl9JR05PUkVEKCJDaXBoZXIgaW5pdCIpOyBy ZXR1cm4gMDt9Ci0rCi0rc3RhdGljIGludCBiYWRfZG9fY2lwaGVyKEVWUF9DSVBIRVJfQ1RYICpj dHgsIHVuc2lnbmVkIGNoYXIgKm91dCwKLSsJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVu c2lnbmVkIGludCBpbmwpCi0rCXsgRklQU19FUlJPUl9JR05PUkVEKCJDaXBoZXIgdXBkYXRlIik7 IHJldHVybiAwO30KLSsKLSsvKiBOQjogbm8gY2xlYW51cCBiZWNhdXNlIGl0IGlzIGFsbG93ZWQg YWZ0ZXIgZmFpbGVkIGluaXQgKi8KLSsKLStzdGF0aWMgaW50IGJhZF9zZXRfYXNuMShFVlBfQ0lQ SEVSX0NUWCAqY3R4LCBBU04xX1RZUEUgKnR5cCkKLSsJeyBGSVBTX0VSUk9SX0lHTk9SRUQoIkNp cGhlciBzZXRfYXNuMSIpOyByZXR1cm4gMDt9Ci0rc3RhdGljIGludCBiYWRfZ2V0X2FzbjEoRVZQ X0NJUEhFUl9DVFggKmN0eCwgQVNOMV9UWVBFICp0eXApCi0rCXsgRklQU19FUlJPUl9JR05PUkVE KCJDaXBoZXIgZ2V0X2FzbjEiKTsgcmV0dXJuIDA7fQotK3N0YXRpYyBpbnQgYmFkX2N0cmwoRVZQ X0NJUEhFUl9DVFggKmN0eCwgaW50IHR5cGUsIGludCBhcmcsIHZvaWQgKnB0cikKLSsJeyBGSVBT X0VSUk9SX0lHTk9SRUQoIkNpcGhlciBjdHJsIik7IHJldHVybiAwO30KLSsKLStzdGF0aWMgY29u c3QgRVZQX0NJUEhFUiBiYWRfY2lwaGVyID0KLSsJewotKwkwLAotKwkwLAotKwkwLAotKwkwLAot KwkwLAotKwliYWRfaW5pdCwKLSsJYmFkX2RvX2NpcGhlciwKLSsJTlVMTCwKLSsJMCwKLSsJYmFk X3NldF9hc24xLAotKwliYWRfZ2V0X2FzbjEsCi0rCWJhZF9jdHJsLAotKwlOVUxMCi0rCX07Ci0r Ci0rI2VuZGlmCi0rCi0gdm9pZCBFVlBfQ0lQSEVSX0NUWF9pbml0KEVWUF9DSVBIRVJfQ1RYICpj dHgpCi0gCXsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCUZJUFNfc2VsZnRlc3RfY2hlY2soKTsK LSsjZW5kaWYKLSAJbWVtc2V0KGN0eCwwLHNpemVvZihFVlBfQ0lQSEVSX0NUWCkpOwotIAkvKiBj dHgtPmNpcGhlcj1OVUxMOyAqLwotIAl9Ci1AQCAtMTExLDYgKzE1MiwxNCBAQCBpbnQgRVZQX0Np cGhlckluaXRfZXgoRVZQX0NJUEhFUl9DVFggKmN0Ci0gCQkJZW5jID0gMTsKLSAJCWN0eC0+ZW5j cnlwdCA9IGVuYzsKLSAJCX0KLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCWlmKEZJUFNfc2VsZnRl c3RfZmFpbGVkKCkpCi0rCQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9FVlBfQ0lQSEVSSU5JVF9FWCxG SVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKwkJY3R4LT5jaXBoZXIgPSAmYmFkX2NpcGhl cjsKLSsJCXJldHVybiAwOwotKwkJfQotKyNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJ TkUKLSAJLyogV2hldGhlciBpdCdzIG5pY2Ugb3Igbm90LCAiSW5pdHMiIGNhbiBiZSB1c2VkIG9u ICJGaW5hbCInZCBjb250ZXh0cwotIAkgKiBzbyB0aGlzIGNvbnRleHQgbWF5IGFscmVhZHkgaGF2 ZSBhbiBFTkdJTkUhIFRyeSB0byBhdm9pZCByZWxlYXNpbmcKLUBAIC0xNjksMTAgKzIxOCw2IEBA IGludCBFVlBfQ2lwaGVySW5pdF9leChFVlBfQ0lQSEVSX0NUWCAqY3QKLSAJCQljdHgtPmVuZ2lu ZSA9IE5VTEw7Ci0gI2VuZGlmCi0gCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLQkJaWYgKEZJUFNf bW9kZSgpKQotLQkJCXJldHVybiBGSVBTX2NpcGhlcmluaXQoY3R4LCBjaXBoZXIsIGtleSwgaXYs IGVuYyk7Ci0tI2VuZGlmCi0gCQljdHgtPmNpcGhlcj1jaXBoZXI7Ci0gCQlpZiAoY3R4LT5jaXBo ZXItPmN0eF9zaXplKQotIAkJCXsKLUBAIC0yMDYsMTAgKzI1MSw2IEBAIGludCBFVlBfQ2lwaGVy SW5pdF9leChFVlBfQ0lQSEVSX0NUWCAqY3QKLSAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi0g c2tpcF90b19pbml0OgotICNlbmRpZgotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0JaWYgKEZJUFNf bW9kZSgpKQotLQkJcmV0dXJuIEZJUFNfY2lwaGVyaW5pdChjdHgsIGNpcGhlciwga2V5LCBpdiwg ZW5jKTsKLS0jZW5kaWYKLSAJLyogd2UgYXNzdW1lIGJsb2NrIHNpemUgaXMgYSBwb3dlciBvZiAy IGluICpjcnlwdFVwZGF0ZSAqLwotIAlPUEVOU1NMX2Fzc2VydChjdHgtPmNpcGhlci0+YmxvY2tf c2l6ZSA9PSAxCi0gCSAgICB8fCBjdHgtPmNpcGhlci0+YmxvY2tfc2l6ZSA9PSA4Ci1AQCAtMjQ5 LDYgKzI5MCwyMiBAQCBza2lwX3RvX2luaXQ6Ci0gCQl9Ci0gCX0KLSAKLSsjaWZkZWYgT1BFTlNT TF9GSVBTCi0rCS8qIEFmdGVyICdrZXknIGlzIHNldCBubyBmdXJ0aGVyIHBhcmFtZXRlcnMgY2hh bmdlcyBhcmUgcGVybWlzc2libGUuCi0rCSAqIFNvIG9ubHkgY2hlY2sgZm9yIG5vbiBGSVBTIGVu YWJsaW5nIGF0IHRoaXMgcG9pbnQuCi0rCSAqLwotKwlpZiAoa2V5ICYmIEZJUFNfbW9kZSgpKQot KwkJewotKwkJaWYgKCEoY3R4LT5jaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfRkxBR19GSVBTKQot KwkJCSYgIShjdHgtPmZsYWdzICYgRVZQX0NJUEhfRkxBR19OT05fRklQU19BTExPVykpCi0rCQkJ ewotKwkJCUVWUGVycihFVlBfRl9FVlBfQ0lQSEVSSU5JVF9FWCwgRVZQX1JfRElTQUJMRURfRk9S X0ZJUFMpOwotKwkJCWN0eC0+Y2lwaGVyID0gJmJhZF9jaXBoZXI7Ci0rCQkJcmV0dXJuIDA7Ci0r CQkJfQotKwkJfQotKyNlbmRpZgotKwotIAlpZihrZXkgfHwgKGN0eC0+Y2lwaGVyLT5mbGFncyAm IEVWUF9DSVBIX0FMV0FZU19DQUxMX0lOSVQpKSB7Ci0gCQlpZighY3R4LT5jaXBoZXItPmluaXQo Y3R4LGtleSxpdixlbmMpKSByZXR1cm4gMDsKLSAJfQotQEAgLTU3Myw3ICs2MzAsNiBAQCB2b2lk IEVWUF9DSVBIRVJfQ1RYX2ZyZWUoRVZQX0NJUEhFUl9DVFgKLSAKLSBpbnQgRVZQX0NJUEhFUl9D VFhfY2xlYW51cChFVlBfQ0lQSEVSX0NUWCAqYykKLSAJewotLSNpZm5kZWYgT1BFTlNTTF9GSVBT Ci0gCWlmIChjLT5jaXBoZXIgIT0gTlVMTCkKLSAJCXsKLSAJCWlmKGMtPmNpcGhlci0+Y2xlYW51 cCAmJiAhYy0+Y2lwaGVyLT5jbGVhbnVwKGMpKQotQEAgLTU4NCwxNiArNjQwLDEyIEBAIGludCBF VlBfQ0lQSEVSX0NUWF9jbGVhbnVwKEVWUF9DSVBIRVJfQ1QKLSAJCX0KLSAJaWYgKGMtPmNpcGhl cl9kYXRhKQotIAkJT1BFTlNTTF9mcmVlKGMtPmNpcGhlcl9kYXRhKTsKLS0jZW5kaWYKLSAjaWZu ZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi0gCWlmIChjLT5lbmdpbmUpCi0gCQkvKiBUaGUgRVZQX0NJ UEhFUiB3ZSB1c2VkIGJlbG9uZ3MgdG8gYW4gRU5HSU5FLCByZWxlYXNlIHRoZQotIAkJICogZnVu Y3Rpb25hbCByZWZlcmVuY2Ugd2UgaGVsZCBmb3IgdGhpcyByZWFzb24uICovCi0gCQlFTkdJTkVf ZmluaXNoKGMtPmVuZ2luZSk7Ci0gI2VuZGlmCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLQlGSVBT X2NpcGhlcl9jdHhfY2xlYW51cChjKTsKLS0jZW5kaWYKLSAJbWVtc2V0KGMsMCxzaXplb2YoRVZQ X0NJUEhFUl9DVFgpKTsKLSAJcmV0dXJuIDE7Ci0gCX0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9ldnAvZXZwLmguZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL2V2cC5oCi0t LS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9ldnAuaC5maXBzCTIwMTUtMDEtMDkgMDk6NTE6 NTEuMTUwOTEzMjIyICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9ldnAuaAky MDE1LTAxLTA5IDA5OjUxOjUxLjU0ODkyMjIyMyArMDEwMAotQEAgLTc1LDYgKzc1LDEwIEBACi0g I2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+Ci0gI2VuZGlmCi0gCi0rI2lmZGVmIE9QRU5TU0xfRklQ UwotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsKLSAvKgotICNkZWZpbmUg RVZQX1JDMl9LRVlfU0laRQkJMTYKLSAjZGVmaW5lIEVWUF9SQzRfS0VZX1NJWkUJCTE2Ci1AQCAt MjgyLDEwICsyODYsNiBAQCBzdHJ1Y3QgZW52X21kX2N0eF9zdAotIAkJCQkJCSogY2xlYW5lZCAq LwotICNkZWZpbmUgRVZQX01EX0NUWF9GTEFHX1JFVVNFCQkweDAwMDQgLyogRG9uJ3QgZnJlZSB1 cCBjdHgtPm1kX2RhdGEKLSAJCQkJCQkqIGluIEVWUF9NRF9DVFhfY2xlYW51cCAqLwotLS8qIEZJ UFMgYW5kIHBhZCBvcHRpb25zIGFyZSBpZ25vcmVkIGluIDEuMC4wLCBkZWZpbml0aW9ucyBhcmUg aGVyZQotLSAqIHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSByZXVzZSB0aGUgdmFsdWVzIGZvciBv dGhlciBwdXJwb3Nlcy4KLS0gKi8KLS0KLSAjZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19OT05fRklQ U19BTExPVwkweDAwMDgJLyogQWxsb3cgdXNlIG9mIG5vbiBGSVBTIGRpZ2VzdAotIAkJCQkJCSAq IGluIEZJUFMgbW9kZSAqLwotIAotQEAgLTI5Nyw2ICsyOTcsMTAgQEAgc3RydWN0IGVudl9tZF9j dHhfc3QKLSAjZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19QQURfUEtDUzEJMHgwMAkvKiBQS0NTIzEg djEuNSBtb2RlICovCi0gI2RlZmluZSBFVlBfTURfQ1RYX0ZMQUdfUEFEX1g5MzEJMHgxMAkvKiBY OS4zMSBtb2RlICovCi0gI2RlZmluZSBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUwkJMHgyMAkvKiBQ U1MgbW9kZSAqLwotKyNkZWZpbmUgTV9FVlBfTURfQ1RYX0ZMQUdfUFNTX1NBTFQoY3R4KSBcCi0r CQkoKGN0eC0+ZmxhZ3M+PjE2KSAmMHhGRkZGKSAvKiBzZWVkIGxlbmd0aCAqLwotKyNkZWZpbmUg RVZQX01EX0NUWF9GTEFHX1BTU19NRExFTgkweEZGRkYJLyogc2FsdCBsZW4gc2FtZSBhcyBkaWdl c3QgKi8KLSsjZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19QU1NfTVJFQwkweEZGRkUJLyogc2FsdCBt YXggb3IgYXV0byByZWNvdmVyZWQgKi8KLSAKLSAjZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19OT19J TklUCQkweDAxMDAgLyogRG9uJ3QgaW5pdGlhbGl6ZSBtZF9kYXRhICovCi0gCi1AQCAtMzQ4LDE1 ICszNTIsMTUgQEAgc3RydWN0IGV2cF9jaXBoZXJfc3QKLSAvKiBjaXBoZXIgaGFuZGxlcyByYW5k b20ga2V5IGdlbmVyYXRpb24gKi8KLSAjZGVmaW5lIAlFVlBfQ0lQSF9SQU5EX0tFWQkJMHgyMDAK LSAvKiBjaXBoZXIgaGFzIGl0cyBvd24gYWRkaXRpb25hbCBjb3B5aW5nIGxvZ2ljICovCi0tI2Rl ZmluZSAJRVZQX0NJUEhfQ1VTVE9NX0NPUFkJCTB4NDAwCi0rI2RlZmluZSAJRVZQX0NJUEhfQ1VT VE9NX0NPUFkJCTB4NDAwMAotIC8qIEFsbG93IHVzZSBkZWZhdWx0IEFTTjEgZ2V0L3NldCBpdiAq LwotICNkZWZpbmUJCUVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xCTB4MTAwMAotIC8qIEJ1ZmZl ciBsZW5ndGggaW4gYml0cyBub3QgYnl0ZXM6IENGQjEgbW9kZSBvbmx5ICovCi0gI2RlZmluZQkJ RVZQX0NJUEhfRkxBR19MRU5HVEhfQklUUwkweDIwMDAKLSAvKiBOb3RlIGlmIHN1aXRhYmxlIGZv ciB1c2UgaW4gRklQUyBtb2RlICovCi0tI2RlZmluZQkJRVZQX0NJUEhfRkxBR19GSVBTCQkweDQw MDAKLSsjZGVmaW5lCQlFVlBfQ0lQSF9GTEFHX0ZJUFMJCTB4NDAwCi0gLyogQWxsb3cgbm9uIEZJ UFMgY2lwaGVyIGluIEZJUFMgbW9kZSAqLwotLSNkZWZpbmUJCUVWUF9DSVBIX0ZMQUdfTk9OX0ZJ UFNfQUxMT1cJMHg4MDAwCi0rI2RlZmluZQkJRVZQX0NJUEhfRkxBR19OT05fRklQU19BTExPVwkw eDgwMAotIC8qIENpcGhlciBoYW5kbGVzIGFueSBhbmQgYWxsIHBhZGRpbmcgbG9naWMgYXMgd2Vs bAotICAqIGFzIGZpbmFsaXNhdGlvbi4KLSAgKi8KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9ldnAvZXZwX2xpYi5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9ldnBfbGli LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL2V2cF9saWIuYy5maXBzCTIwMTUtMDEt MDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2 cC9ldnBfbGliLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NDg5MjIyMjMgKzAxMDAKLUBAIC0xOTAs NiArMTkwLDkgQEAgaW50IEVWUF9DSVBIRVJfQ1RYX2Jsb2NrX3NpemUoY29uc3QgRVZQXwotIAot IGludCBFVlBfQ2lwaGVyKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwg Y29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGludCBpbmwpCi0gCXsKLSsjaWZkZWYg T1BFTlNTTF9GSVBTCi0rCUZJUFNfc2VsZnRlc3RfY2hlY2soKTsKLSsjZW5kaWYKLSAJcmV0dXJu IGN0eC0+Y2lwaGVyLT5kb19jaXBoZXIoY3R4LG91dCxpbixpbmwpOwotIAl9Ci0gCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL2V2cF9sb2NsLmguZmlwcyBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vZXZwL2V2cF9sb2NsLmgKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL2V2 cF9sb2NsLmguZmlwcwkyMDE1LTAxLTA5IDA5OjUxOjUxLjE0NzkxMzE1NCArMDEwMAotKysrIG9w ZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvZXZwX2xvY2wuaAkyMDE1LTAxLTA5IDA5OjUxOjUxLjU0 OTkyMjI0NiArMDEwMAotQEAgLTI1OCwxMCArMjU4LDkgQEAgY29uc3QgRVZQX0NJUEhFUiAqRVZQ XyMjY25hbWUjI19lY2Iodm9pZAotIAlCTE9DS19DSVBIRVJfZnVuY19jZmIoY2lwaGVyIyNfIyNr ZXlzaXplLGNwcmVmaXgsY2JpdHMsa3N0cnVjdCxrc2NoZWQpIFwKLSAJQkxPQ0tfQ0lQSEVSX2Rl Zl9jZmIoY2lwaGVyIyNfIyNrZXlzaXplLGtzdHJ1Y3QsIFwKLSAJCQkgICAgIE5JRF8jI2NpcGhl ciMjXyMja2V5c2l6ZSwga2V5c2l6ZS84LCBpdl9sZW4sIGNiaXRzLCBcCi0tCQkJICAgICAwLCBj aXBoZXIjI19pbml0X2tleSwgTlVMTCwgXAotLQkJCSAgICAgRVZQX0NJUEhFUl9zZXRfYXNuMV9p diwgXAotLQkJCSAgICAgRVZQX0NJUEhFUl9nZXRfYXNuMV9pdiwgXAotLQkJCSAgICAgTlVMTCkK LSsJCQkgICAgIEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xLCBcCi0rCQkJICAgICBjaXBoZXIj I19pbml0X2tleSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKLSsKLSAKLSBzdHJ1Y3QgZXZwX3Br ZXlfY3R4X3N0Ci0gCXsKLUBAIC0zNjcsMTEgKzM2Niw2IEBAIGludCBQS0NTNV92Ml9QQktERjJf a2V5aXZnZW4oRVZQX0NJUEhFUl8KLSAjZGVmaW5lIE1EMl9Jbml0CXByaXZhdGVfTUQyX0luaXQK LSAjZGVmaW5lIE1EQzJfSW5pdAlwcml2YXRlX01EQzJfSW5pdAotICNkZWZpbmUgU0hBX0luaXQJ cHJpdmF0ZV9TSEFfSW5pdAotLSNkZWZpbmUgU0hBMV9Jbml0CXByaXZhdGVfU0hBMV9Jbml0Ci0t I2RlZmluZSBTSEEyMjRfSW5pdAlwcml2YXRlX1NIQTIyNF9Jbml0Ci0tI2RlZmluZSBTSEEyNTZf SW5pdAlwcml2YXRlX1NIQTI1Nl9Jbml0Ci0tI2RlZmluZSBTSEEzODRfSW5pdAlwcml2YXRlX1NI QTM4NF9Jbml0Ci0tI2RlZmluZSBTSEE1MTJfSW5pdAlwcml2YXRlX1NIQTUxMl9Jbml0Ci0gCi0g I2RlZmluZSBCRl9zZXRfa2V5CXByaXZhdGVfQkZfc2V0X2tleQotICNkZWZpbmUgQ0FTVF9zZXRf a2V5CXByaXZhdGVfQ0FTVF9zZXRfa2V5Ci1AQCAtMzc5LDcgKzM3Myw2IEBAIGludCBQS0NTNV92 Ml9QQktERjJfa2V5aXZnZW4oRVZQX0NJUEhFUl8KLSAjZGVmaW5lIFNFRURfc2V0X2tleQlwcml2 YXRlX1NFRURfc2V0X2tleQotICNkZWZpbmUgUkMyX3NldF9rZXkJcHJpdmF0ZV9SQzJfc2V0X2tl eQotICNkZWZpbmUgUkM0X3NldF9rZXkJcHJpdmF0ZV9SQzRfc2V0X2tleQotLSNkZWZpbmUgREVT X3NldF9rZXlfdW5jaGVja2VkCXByaXZhdGVfREVTX3NldF9rZXlfdW5jaGVja2VkCi0gI2RlZmlu ZSBDYW1lbGxpYV9zZXRfa2V5CXByaXZhdGVfQ2FtZWxsaWFfc2V0X2tleQotIAotICNlbmRpZgot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9NYWtlZmlsZS5maXBzIG9wZW5zc2wt MS4wLjFrL2NyeXB0by9ldnAvTWFrZWZpbGUKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZw L01ha2VmaWxlLmZpcHMJMjAxNS0wMS0wOCAxNTowMzozMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBv cGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL01ha2VmaWxlCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTQ5 OTIyMjQ2ICswMTAwCi1AQCAtMjgsNyArMjgsNyBAQCBMSUJTUkM9IGVuY29kZS5jIGRpZ2VzdC5j IGV2cF9lbmMuYyBldnBfCi0gCWJpb19tZC5jIGJpb19iNjQuYyBiaW9fZW5jLmMgZXZwX2Vyci5j IGVfbnVsbC5jIFwKLSAJY19hbGwuYyBjX2FsbGMuYyBjX2FsbGQuYyBldnBfbGliLmMgYmlvX29r LmMgXAotIAlldnBfcGtleS5jIGV2cF9wYmUuYyBwNV9jcnB0LmMgcDVfY3JwdDIuYyBcCi0tCWVf b2xkLmMgcG1ldGhfbGliLmMgcG1ldGhfZm4uYyBwbWV0aF9nbi5jIG1fc2lndmVyLmMgZXZwX2Zp cHMuYwlcCi0rCWVfb2xkLmMgcG1ldGhfbGliLmMgcG1ldGhfZm4uYyBwbWV0aF9nbi5jIG1fc2ln dmVyLmMgXAotIAllX2Flc19jYmNfaG1hY19zaGExLmMgZV9yYzRfaG1hY19tZDUuYwotIAotIExJ Qk9CSj0JZW5jb2RlLm8gZGlnZXN0Lm8gZXZwX2VuYy5vIGV2cF9rZXkubyBldnBfYWNuZi5vIGV2 cF9jbmYubyBcCi1AQCAtNDEsNyArNDEsNyBAQCBMSUJPQko9CWVuY29kZS5vIGRpZ2VzdC5vIGV2 cF9lbmMubyBldnBfCi0gCWJpb19tZC5vIGJpb19iNjQubyBiaW9fZW5jLm8gZXZwX2Vyci5vIGVf bnVsbC5vIFwKLSAJY19hbGwubyBjX2FsbGMubyBjX2FsbGQubyBldnBfbGliLm8gYmlvX29rLm8g XAotIAlldnBfcGtleS5vIGV2cF9wYmUubyBwNV9jcnB0Lm8gcDVfY3JwdDIubyBcCi0tCWVfb2xk Lm8gcG1ldGhfbGliLm8gcG1ldGhfZm4ubyBwbWV0aF9nbi5vIG1fc2lndmVyLm8gZXZwX2ZpcHMu byBcCi0rCWVfb2xkLm8gcG1ldGhfbGliLm8gcG1ldGhfZm4ubyBwbWV0aF9nbi5vIG1fc2lndmVy Lm8gXAotIAllX2Flc19jYmNfaG1hY19zaGExLm8gZV9yYzRfaG1hY19tZDUubwotIAotIFNSQz0g JChMSUJTUkMpCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL21fZHNzLmMuZmlw cyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL21fZHNzLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9j cnlwdG8vZXZwL21fZHNzLmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEw MAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvbV9kc3MuYwkyMDE1LTAxLTA5IDA5OjUx OjUxLjU0OTkyMjI0NiArMDEwMAotQEAgLTY2LDcgKzY2LDYgQEAKLSAjZW5kaWYKLSAKLSAjaWZu ZGVmIE9QRU5TU0xfTk9fU0hBCi0tI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLSAKLSBzdGF0aWMgaW50 IGluaXQoRVZQX01EX0NUWCAqY3R4KQotIAl7IHJldHVybiBTSEExX0luaXQoY3R4LT5tZF9kYXRh KTsgfQotQEAgLTgyLDcgKzgxLDcgQEAgc3RhdGljIGNvbnN0IEVWUF9NRCBkc2FfbWQ9Ci0gCU5J RF9kc2FXaXRoU0hBLAotIAlOSURfZHNhV2l0aFNIQSwKLSAJU0hBX0RJR0VTVF9MRU5HVEgsCi0t CUVWUF9NRF9GTEFHX1BLRVlfRElHRVNULAotKwlFVlBfTURfRkxBR19QS0VZX0RJR0VTVHxFVlBf TURfRkxBR19GSVBTLAotIAlpbml0LAotIAl1cGRhdGUsCi0gCWZpbmFsLAotQEAgLTk4LDQgKzk3 LDMgQEAgY29uc3QgRVZQX01EICpFVlBfZHNzKHZvaWQpCi0gCXJldHVybigmZHNhX21kKTsKLSAJ fQotICNlbmRpZgotLSNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9t X2RzczEuYy5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvbV9kc3MxLmMKLS0tLSBvcGVu c3NsLTEuMC4xay9jcnlwdG8vZXZwL21fZHNzMS5jLmZpcHMJMjAxNS0wMS0wOCAxNTowMDozNi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL21fZHNzMS5jCTIw MTUtMDEtMDkgMDk6NTE6NTEuNTQ5OTIyMjQ2ICswMTAwCi1AQCAtNjgsOCArNjgsNiBAQAotICNp bmNsdWRlIDxvcGVuc3NsL2RzYS5oPgotICNlbmRpZgotIAotLSNpZm5kZWYgT1BFTlNTTF9GSVBT IAotLQotIHN0YXRpYyBpbnQgaW5pdChFVlBfTURfQ1RYICpjdHgpCi0gCXsgcmV0dXJuIFNIQTFf SW5pdChjdHgtPm1kX2RhdGEpOyB9Ci0gCi1AQCAtODQsNyArODIsNyBAQCBzdGF0aWMgY29uc3Qg RVZQX01EIGRzczFfbWQ9Ci0gCU5JRF9kc2EsCi0gCU5JRF9kc2FXaXRoU0hBMSwKLSAJU0hBX0RJ R0VTVF9MRU5HVEgsCi0tCUVWUF9NRF9GTEFHX1BLRVlfRElHRVNULAotKwlFVlBfTURfRkxBR19Q S0VZX0RJR0VTVHxFVlBfTURfRkxBR19GSVBTLAotIAlpbml0LAotIAl1cGRhdGUsCi0gCWZpbmFs LAotQEAgLTEwMCw0ICs5OCwzIEBAIGNvbnN0IEVWUF9NRCAqRVZQX2RzczEodm9pZCkKLSAJcmV0 dXJuKCZkc3MxX21kKTsKLSAJfQotICNlbmRpZgotLSNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0x LjAuMWsvY3J5cHRvL2V2cC9tX21kMi5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9t X21kMi5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9tX21kMi5jLmZpcHMJMjAxNC0x MC0xNSAxNTo0OToxNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8v ZXZwL21fbWQyLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTA5MjIyNjggKzAxMDAKLUBAIC02OCw2 ICs2OCw3IEBACi0gI2lmbmRlZiBPUEVOU1NMX05PX1JTQQotICNpbmNsdWRlIDxvcGVuc3NsL3Jz YS5oPgotICNlbmRpZgotKyNpbmNsdWRlICJldnBfbG9jbC5oIgotIAotIHN0YXRpYyBpbnQgaW5p dChFVlBfTURfQ1RYICpjdHgpCi0gCXsgcmV0dXJuIE1EMl9Jbml0KGN0eC0+bWRfZGF0YSk7IH0K LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvbV9zaGExLmMuZmlwcyBvcGVuc3Ns LTEuMC4xay9jcnlwdG8vZXZwL21fc2hhMS5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2 cC9tX3NoYTEuYy5maXBzCTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysg b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9tX3NoYTEuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU1 MDkyMjI2OCArMDEwMAotQEAgLTU5LDggKzU5LDYgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAj aW5jbHVkZSAiY3J5cHRsaWIuaCIKLSAKLS0jaWZuZGVmIE9QRU5TU0xfRklQUwotLQotICNpZm5k ZWYgT1BFTlNTTF9OT19TSEEKLSAKLSAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLUBAIC04NSw3 ICs4Myw4IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgc2hhMV9tZD0KLSAJTklEX3NoYTEsCi0gCU5J RF9zaGExV2l0aFJTQUVuY3J5cHRpb24sCi0gCVNIQV9ESUdFU1RfTEVOR1RILAotLQlFVlBfTURf RkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkV8RVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5ULAot KwlFVlBfTURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkV8RVZQX01EX0ZMQUdfRElHQUxHSURf QUJTRU5UfAotKwkJRVZQX01EX0ZMQUdfRklQUywKLSAJaW5pdCwKLSAJdXBkYXRlLAotIAlmaW5h bCwKLUBAIC0xMjIsNyArMTIxLDggQEAgc3RhdGljIGNvbnN0IEVWUF9NRCBzaGEyMjRfbWQ9Ci0g CU5JRF9zaGEyMjQsCi0gCU5JRF9zaGEyMjRXaXRoUlNBRW5jcnlwdGlvbiwKLSAJU0hBMjI0X0RJ R0VTVF9MRU5HVEgsCi0tCUVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRXxFVlBfTURf RkxBR19ESUdBTEdJRF9BQlNFTlQsCi0rCUVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVS RXxFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlR8Ci0rCQlFVlBfTURfRkxBR19GSVBTLAotIAlp bml0MjI0LAotIAl1cGRhdGUyNTYsCi0gCWZpbmFsMjU2LAotQEAgLTE0MSw3ICsxNDEsOCBAQCBz dGF0aWMgY29uc3QgRVZQX01EIHNoYTI1Nl9tZD0KLSAJTklEX3NoYTI1NiwKLSAJTklEX3NoYTI1 NldpdGhSU0FFbmNyeXB0aW9uLAotIAlTSEEyNTZfRElHRVNUX0xFTkdUSCwKLS0JRVZQX01EX0ZM QUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFfEVWUF9NRF9GTEFHX0RJR0FMR0lEX0FCU0VOVCwKLSsJ RVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFfEVWUF9NRF9GTEFHX0RJR0FMR0lEX0FC U0VOVHwKLSsJCUVWUF9NRF9GTEFHX0ZJUFMsCi0gCWluaXQyNTYsCi0gCXVwZGF0ZTI1NiwKLSAJ ZmluYWwyNTYsCi1AQCAtMTcyLDcgKzE3Myw4IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgc2hhMzg0 X21kPQotIAlOSURfc2hhMzg0LAotIAlOSURfc2hhMzg0V2l0aFJTQUVuY3J5cHRpb24sCi0gCVNI QTM4NF9ESUdFU1RfTEVOR1RILAotLQlFVlBfTURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkV8 RVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5ULAotKwlFVlBfTURfRkxBR19QS0VZX01FVEhPRF9T SUdOQVRVUkV8RVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5UfAotKwkJRVZQX01EX0ZMQUdfRklQ UywKLSAJaW5pdDM4NCwKLSAJdXBkYXRlNTEyLAotIAlmaW5hbDUxMiwKLUBAIC0xOTEsNyArMTkz LDggQEAgc3RhdGljIGNvbnN0IEVWUF9NRCBzaGE1MTJfbWQ9Ci0gCU5JRF9zaGE1MTIsCi0gCU5J RF9zaGE1MTJXaXRoUlNBRW5jcnlwdGlvbiwKLSAJU0hBNTEyX0RJR0VTVF9MRU5HVEgsCi0tCUVW UF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRXxFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNF TlQsCi0rCUVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRXxFVlBfTURfRkxBR19ESUdB TEdJRF9BQlNFTlR8Ci0rCQlFVlBfTURfRkxBR19GSVBTLAotIAlpbml0NTEyLAotIAl1cGRhdGU1 MTIsCi0gCWZpbmFsNTEyLAotQEAgLTIwNiw0ICsyMDksMyBAQCBjb25zdCBFVlBfTUQgKkVWUF9z aGE1MTIodm9pZCkKLSAJeyByZXR1cm4oJnNoYTUxMl9tZCk7IH0KLSAjZW5kaWYJLyogaWZuZGVm IE9QRU5TU0xfTk9fU0hBNTEyICovCi0gCi0tI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vZXZwL3Bfc2lnbi5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2V2cC9wX3Np Z24uYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9ldnAvcF9zaWduLmMuZmlwcwkyMDE1LTAx LTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9l dnAvcF9zaWduLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTA5MjIyNjggKzAxMDAKLUBAIC02MSw2 ICs2MSw3IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wv b2JqZWN0cy5oPgotICNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9yc2EuaD4KLSAKLSAjaWZkZWYgdW5kZWYKLSB2b2lkIEVWUF9TaWduSW5pdChFVlBfTURfQ1RY ICpjdHgsIEVWUF9NRCAqdHlwZSkKLUBAIC0xMDMsNiArMTA0LDIyIEBAIGludCBFVlBfU2lnbkZp bmFsKEVWUF9NRF9DVFggKmN0eCwgdW5zaWcKLSAJCQlnb3RvIGVycjsKLSAJCWlmIChFVlBfUEtF WV9DVFhfc2V0X3NpZ25hdHVyZV9tZChwa2N0eCwgY3R4LT5kaWdlc3QpIDw9IDApCi0gCQkJZ290 byBlcnI7Ci0rCQlpZiAoY3R4LT5mbGFncyAmIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSkKLSsJ CQlpZiAoRVZQX1BLRVlfQ1RYX3NldF9yc2FfcGFkZGluZyhwa2N0eCwgUlNBX1g5MzFfUEFERElO RykgPD0gMCkKLSsJCQkJZ290byBlcnI7Ci0rCQlpZiAoY3R4LT5mbGFncyAmIEVWUF9NRF9DVFhf RkxBR19QQURfUFNTKQotKwkJCXsKLSsJCQlpbnQgc2FsdGxlbjsKLSsJCQlpZiAoRVZQX1BLRVlf Q1RYX3NldF9yc2FfcGFkZGluZyhwa2N0eCwgUlNBX1BLQ1MxX1BTU19QQURESU5HKSA8PSAwKQot KwkJCQlnb3RvIGVycjsKLSsJCQlzYWx0bGVuID0gTV9FVlBfTURfQ1RYX0ZMQUdfUFNTX1NBTFQo Y3R4KTsKLSsJCQlpZiAoc2FsdGxlbiA9PSBFVlBfTURfQ1RYX0ZMQUdfUFNTX01ETEVOKQotKwkJ CQlzYWx0bGVuID0gLTE7Ci0rCQkJZWxzZSBpZiAoc2FsdGxlbiA9PSBFVlBfTURfQ1RYX0ZMQUdf UFNTX01SRUMpCi0rCQkJCXNhbHRsZW4gPSAtMjsKLSsJCQlpZiAoRVZQX1BLRVlfQ1RYX3NldF9y c2FfcHNzX3NhbHRsZW4ocGtjdHgsIHNhbHRsZW4pIDw9IDApCi0rCQkJCWdvdG8gZXJyOwotKwkJ CX0KLSAJCWlmIChFVlBfUEtFWV9zaWduKHBrY3R4LCBzaWdyZXQsICZzbHRtcCwgbSwgbV9sZW4p IDw9IDApCi0gCQkJZ290byBlcnI7Ci0gCQkqc2lnbGVuID0gc2x0bXA7Ci1kaWZmIC11cCBvcGVu c3NsLTEuMC4xay9jcnlwdG8vZXZwL3BfdmVyaWZ5LmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlw dG8vZXZwL3BfdmVyaWZ5LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZXZwL3BfdmVyaWZ5 LmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wt MS4wLjFrL2NyeXB0by9ldnAvcF92ZXJpZnkuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU1MDkyMjI2 OCArMDEwMAotQEAgLTYxLDYgKzYxLDcgQEAKLSAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSAj aW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgot KyNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgotIAotIGludCBFVlBfVmVyaWZ5RmluYWwoRVZQX01E X0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaWdidWYsCi0gCSAgICAgdW5zaWduZWQg aW50IHNpZ2xlbiwgRVZQX1BLRVkgKnBrZXkpCi1AQCAtODgsNiArODksMjIgQEAgaW50IEVWUF9W ZXJpZnlGaW5hbChFVlBfTURfQ1RYICpjdHgsIGNvbgotIAkJCWdvdG8gZXJyOwotIAkJaWYgKEVW UF9QS0VZX0NUWF9zZXRfc2lnbmF0dXJlX21kKHBrY3R4LCBjdHgtPmRpZ2VzdCkgPD0gMCkKLSAJ CQlnb3RvIGVycjsKLSsJCWlmIChjdHgtPmZsYWdzICYgRVZQX01EX0NUWF9GTEFHX1BBRF9YOTMx KQotKwkJCWlmIChFVlBfUEtFWV9DVFhfc2V0X3JzYV9wYWRkaW5nKHBrY3R4LCBSU0FfWDkzMV9Q QURESU5HKSA8PSAwKQotKwkJCQlnb3RvIGVycjsKLSsJCWlmIChjdHgtPmZsYWdzICYgRVZQX01E X0NUWF9GTEFHX1BBRF9QU1MpCi0rCQkJewotKwkJCWludCBzYWx0bGVuOwotKwkJCWlmIChFVlBf UEtFWV9DVFhfc2V0X3JzYV9wYWRkaW5nKHBrY3R4LCBSU0FfUEtDUzFfUFNTX1BBRERJTkcpIDw9 IDApCi0rCQkJCWdvdG8gZXJyOwotKwkJCXNhbHRsZW4gPSBNX0VWUF9NRF9DVFhfRkxBR19QU1Nf U0FMVChjdHgpOwotKwkJCWlmIChzYWx0bGVuID09IEVWUF9NRF9DVFhfRkxBR19QU1NfTURMRU4p Ci0rCQkJCXNhbHRsZW4gPSAtMTsKLSsJCQllbHNlIGlmIChzYWx0bGVuID09IEVWUF9NRF9DVFhf RkxBR19QU1NfTVJFQykKLSsJCQkJc2FsdGxlbiA9IC0yOwotKwkJCWlmIChFVlBfUEtFWV9DVFhf c2V0X3JzYV9wc3Nfc2FsdGxlbihwa2N0eCwgc2FsdGxlbikgPD0gMCkKLSsJCQkJZ290byBlcnI7 Ci0rCQkJfQotIAkJaSA9IEVWUF9QS0VZX3ZlcmlmeShwa2N0eCwgc2lnYnVmLCBzaWdsZW4sIG0s IG1fbGVuKTsKLSAJCWVycjoKLSAJCUVWUF9QS0VZX0NUWF9mcmVlKHBrY3R4KTsKLWRpZmYgLXVw IG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19hZXNhdnMuYy5maXBzIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19hZXNhdnMuYwotLS0tIG9wZW5zc2wtMS4w LjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19hZXNhdnMuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6 NTEuNTUxOTIyMjkxICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9m aXBzX2Flc2F2cy5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTUxOTIyMjkxICswMTAwCi1AQCAtMCww ICsxLDkzOSBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDA0IFRoZSBP cGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv d2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRv Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAq ICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wu b3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVu U1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHBy aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNv bnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9k dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNT TCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91 dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0 LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVz dCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJU aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFBy b2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cu b3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF IE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBM SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg VEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExB UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElN SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsg KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O KQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF VEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQ T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rICBOSVNUIEFFUyBBbGdvcml0aG0gVmFs aWRhdGlvbiBTdWl0ZQotKyAgVGVzdCBQcm9ncmFtCi0rCi0rICBEb25hdGVkIHRvIE9wZW5TU0wg Ynk6Ci0rICBWLU9ORSBDb3Jwb3JhdGlvbgotKyAgMjAyNTAgQ2VudHVyeSBCbHZkLCBTdWl0ZSAz MDAKLSsgIEdlcm1hbnRvd24sIE1EIDIwODc0Ci0rICBVLlMuQS4KLSsgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotKwotKyNpbmNsdWRlIDxzdGRpby5o PgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUg PGVycm5vLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNp bmNsdWRlIDxvcGVuc3NsL2Flcy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2JuLmg+Ci0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1 ZGUgImVfb3MuaCIKLSsKLSsjaWZuZGVmIE9QRU5TU0xfRklQUwotKwotK2ludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCi0rewotKyAgICBwcmludGYoIk5vIEZJUFMgQUVTIHN1cHBvcnRc biIpOwotKyAgICByZXR1cm4oMCk7Ci0rfQotKwotKyNlbHNlCi0rCi0rI2luY2x1ZGUgPG9wZW5z c2wvZmlwcy5oPgotKyNpbmNsdWRlICJmaXBzX3V0bC5oIgotKwotKyNkZWZpbmUgQUVTX0JMT0NL X1NJWkUgMTYKLSsKLSsjZGVmaW5lIFZFUkJPU0UgMAotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotKwotK2ludCBBRVNUZXN0KEVWUF9DSVBI RVJfQ1RYICpjdHgsCi0rCSAgICBjaGFyICphbW9kZSwgaW50IGFrZXlzeiwgdW5zaWduZWQgY2hh ciAqYUtleSwgCi0rCSAgICB1bnNpZ25lZCBjaGFyICppVmVjLCAKLSsJICAgIGludCBkaXIsICAv KiAwID0gZGVjcnlwdCwgMSA9IGVuY3J5cHQgKi8KLSsJICAgIHVuc2lnbmVkIGNoYXIgKnBsYWlu dGV4dCwgdW5zaWduZWQgY2hhciAqY2lwaGVydGV4dCwgaW50IGxlbikKLSsgICAgewotKyAgICBj b25zdCBFVlBfQ0lQSEVSICpjaXBoZXIgPSBOVUxMOwotKwotKyAgICBpZiAoc3RyY2FzZWNtcChh bW9kZSwgIkNCQyIpID09IDApCi0rCXsKLSsJc3dpdGNoIChha2V5c3opCi0rCQl7Ci0rCQljYXNl IDEyODoKLSsJCWNpcGhlciA9IEVWUF9hZXNfMTI4X2NiYygpOwotKwkJYnJlYWs7Ci0rCi0rCQlj YXNlIDE5MjoKLSsJCWNpcGhlciA9IEVWUF9hZXNfMTkyX2NiYygpOwotKwkJYnJlYWs7Ci0rCi0r CQljYXNlIDI1NjoKLSsJCWNpcGhlciA9IEVWUF9hZXNfMjU2X2NiYygpOwotKwkJYnJlYWs7Ci0r CQl9Ci0rCi0rCX0KLSsgICAgZWxzZSBpZiAoc3RyY2FzZWNtcChhbW9kZSwgIkVDQiIpID09IDAp Ci0rCXsKLSsJc3dpdGNoIChha2V5c3opCi0rCQl7Ci0rCQljYXNlIDEyODoKLSsJCWNpcGhlciA9 IEVWUF9hZXNfMTI4X2VjYigpOwotKwkJYnJlYWs7Ci0rCi0rCQljYXNlIDE5MjoKLSsJCWNpcGhl ciA9IEVWUF9hZXNfMTkyX2VjYigpOwotKwkJYnJlYWs7Ci0rCi0rCQljYXNlIDI1NjoKLSsJCWNp cGhlciA9IEVWUF9hZXNfMjU2X2VjYigpOwotKwkJYnJlYWs7Ci0rCQl9Ci0rCX0KLSsgICAgZWxz ZSBpZiAoc3RyY2FzZWNtcChhbW9kZSwgIkNGQjEyOCIpID09IDApCi0rCXsKLSsJc3dpdGNoIChh a2V5c3opCi0rCQl7Ci0rCQljYXNlIDEyODoKLSsJCWNpcGhlciA9IEVWUF9hZXNfMTI4X2NmYjEy OCgpOwotKwkJYnJlYWs7Ci0rCi0rCQljYXNlIDE5MjoKLSsJCWNpcGhlciA9IEVWUF9hZXNfMTky X2NmYjEyOCgpOwotKwkJYnJlYWs7Ci0rCi0rCQljYXNlIDI1NjoKLSsJCWNpcGhlciA9IEVWUF9h ZXNfMjU2X2NmYjEyOCgpOwotKwkJYnJlYWs7Ci0rCQl9Ci0rCi0rCX0KLSsgICAgZWxzZSBpZiAo c3RybmNhc2VjbXAoYW1vZGUsICJPRkIiLCAzKSA9PSAwKQotKwl7Ci0rCXN3aXRjaCAoYWtleXN6 KQotKwkJewotKwkJY2FzZSAxMjg6Ci0rCQljaXBoZXIgPSBFVlBfYWVzXzEyOF9vZmIoKTsKLSsJ CWJyZWFrOwotKwotKwkJY2FzZSAxOTI6Ci0rCQljaXBoZXIgPSBFVlBfYWVzXzE5Ml9vZmIoKTsK LSsJCWJyZWFrOwotKwotKwkJY2FzZSAyNTY6Ci0rCQljaXBoZXIgPSBFVlBfYWVzXzI1Nl9vZmIo KTsKLSsJCWJyZWFrOwotKwkJfQotKwl9Ci0rICAgIGVsc2UgaWYoIXN0cmNhc2VjbXAoYW1vZGUs IkNGQjEiKSkKLSsJewotKwlzd2l0Y2ggKGFrZXlzeikKLSsJCXsKLSsJCWNhc2UgMTI4OgotKwkJ Y2lwaGVyID0gRVZQX2Flc18xMjhfY2ZiMSgpOwotKwkJYnJlYWs7Ci0rCi0rCQljYXNlIDE5MjoK LSsJCWNpcGhlciA9IEVWUF9hZXNfMTkyX2NmYjEoKTsKLSsJCWJyZWFrOwotKwotKwkJY2FzZSAy NTY6Ci0rCQljaXBoZXIgPSBFVlBfYWVzXzI1Nl9jZmIxKCk7Ci0rCQlicmVhazsKLSsJCX0KLSsJ fQotKyAgICBlbHNlIGlmKCFzdHJjYXNlY21wKGFtb2RlLCJDRkI4IikpCi0rCXsKLSsJc3dpdGNo IChha2V5c3opCi0rCQl7Ci0rCQljYXNlIDEyODoKLSsJCWNpcGhlciA9IEVWUF9hZXNfMTI4X2Nm YjgoKTsKLSsJCWJyZWFrOwotKwotKwkJY2FzZSAxOTI6Ci0rCQljaXBoZXIgPSBFVlBfYWVzXzE5 Ml9jZmI4KCk7Ci0rCQlicmVhazsKLSsKLSsJCWNhc2UgMjU2OgotKwkJY2lwaGVyID0gRVZQX2Fl c18yNTZfY2ZiOCgpOwotKwkJYnJlYWs7Ci0rCQl9Ci0rCX0KLSsgICAgZWxzZQotKwl7Ci0rCXBy aW50ZigiVW5rbm93biBtb2RlOiAlc1xuIiwgYW1vZGUpOwotKwlyZXR1cm4gMDsKLSsJfQotKyAg ICBpZiAoIWNpcGhlcikKLSsJewotKwlwcmludGYoIkludmFsaWQga2V5IHNpemU6ICVkXG4iLCBh a2V5c3opOwotKwlyZXR1cm4gMDsgCi0rCX0KLSsgICAgaWYgKEVWUF9DaXBoZXJJbml0X2V4KGN0 eCwgY2lwaGVyLCBOVUxMLCBhS2V5LCBpVmVjLCBkaXIpIDw9IDApCi0rCXJldHVybiAwOwotKyAg ICBpZighc3RyY2FzZWNtcChhbW9kZSwiQ0ZCMSIpKQotKwlNX0VWUF9DSVBIRVJfQ1RYX3NldF9m bGFncyhjdHgsIEVWUF9DSVBIX0ZMQUdfTEVOR1RIX0JJVFMpOwotKyAgICBpZiAoZGlyKQotKwkJ RVZQX0NpcGhlcihjdHgsIGNpcGhlcnRleHQsIHBsYWludGV4dCwgbGVuKTsKLSsJZWxzZQotKwkJ RVZQX0NpcGhlcihjdHgsIHBsYWludGV4dCwgY2lwaGVydGV4dCwgbGVuKTsKLSsgICAgcmV0dXJu IDE7Ci0rICAgIH0KLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8KLStjaGFyICp0X3RhZ1syXSA9IHsiUExBSU5URVhUIiwgIkNJUEhFUlRFWFQi fTsKLStjaGFyICp0X21vZGVbNl0gPSB7IkNCQyIsIkVDQiIsIk9GQiIsIkNGQjEiLCJDRkI4Iiwi Q0ZCMTI4In07Ci0rZW51bSBNb2RlIHtDQkMsIEVDQiwgT0ZCLCBDRkIxLCBDRkI4LCBDRkIxMjh9 OwotK2VudW0gWENyeXB0IHtYREVDUllQVCwgWEVOQ1JZUFR9OwotKwotKy8qPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0qLwotKy8qICBNb250ZSBDYXJsbyBUZXN0cyAgICAgICAgICAqLwot Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotKwotKy8qI2RlZmluZSBnYihhLGIp ICgoKGEpWyhiKS84XSA+PiAoKGIpJTgpKSYxKSovCi0rLyojZGVmaW5lIHNiKGEsYix2KSAoKGEp WyhiKS84XT0oKGEpWyhiKS84XSZ+KDEgPDwgKChiKSU4KSkpfCghISh2KSA8PCAoKGIpJTgpKSkq LwotKwotKyNkZWZpbmUgZ2IoYSxiKSAoKChhKVsoYikvOF0gPj4gKDctKGIpJTgpKSYxKQotKyNk ZWZpbmUgc2IoYSxiLHYpICgoYSlbKGIpLzhdPSgoYSlbKGIpLzhdJn4oMSA8PCAoNy0oYiklOCkp KXwoISEodikgPDwgKDctKGIpJTgpKSkKLSsKLStpbnQgZG9fbWN0KGNoYXIgKmFtb2RlLCAKLSsJ ICAgaW50IGFrZXlzeiwgdW5zaWduZWQgY2hhciAqYUtleSx1bnNpZ25lZCBjaGFyICppVmVjLAot KwkgICBpbnQgZGlyLCB1bnNpZ25lZCBjaGFyICp0ZXh0LCBpbnQgbGVuLAotKwkgICBGSUxFICpy ZnApCi0rICAgIHsKLSsgICAgaW50IHJldCA9IDA7Ci0rICAgIHVuc2lnbmVkIGNoYXIga2V5WzEw MV1bMzJdOwotKyAgICB1bnNpZ25lZCBjaGFyIGl2WzEwMV1bQUVTX0JMT0NLX1NJWkVdOwotKyAg ICB1bnNpZ25lZCBjaGFyIHB0ZXh0WzEwMDFdWzMyXTsKLSsgICAgdW5zaWduZWQgY2hhciBjdGV4 dFsxMDAxXVszMl07Ci0rICAgIHVuc2lnbmVkIGNoYXIgY2lwaGVydGV4dFs2NCs0XTsKLSsgICAg aW50IGksIGosIG4sIG4xLCBuMjsKLSsgICAgaW50IGltb2RlID0gMCwgbmtleXN6ID0gYWtleXN6 Lzg7Ci0rICAgIEVWUF9DSVBIRVJfQ1RYIGN0eDsKLSsgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgm Y3R4KTsKLSsKLSsgICAgaWYgKGxlbiA+IDMyKQotKwl7Ci0rCXByaW50ZigiXG4+Pj4+IExlbmd0 aCBleGNlZWRzIDMyIGZvciAlcyAlZCA8PDw8XG5cbiIsIAotKwkgICAgICAgYW1vZGUsIGFrZXlz eik7Ci0rCXJldHVybiAtMTsKLSsJfQotKyAgICBmb3IgKGltb2RlID0gMDsgaW1vZGUgPCA2OyAr K2ltb2RlKQotKwlpZiAoc3RyY21wKGFtb2RlLCB0X21vZGVbaW1vZGVdKSA9PSAwKQotKwkgICAg YnJlYWs7Ci0rICAgIGlmIChpbW9kZSA9PSA2KQotKwl7IAotKwlwcmludGYoIlVucmVjb2duaXpl ZCBtb2RlOiAlc1xuIiwgYW1vZGUpOwotKwlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsgICAgbWVtY3B5 KGtleVswXSwgYUtleSwgbmtleXN6KTsKLSsgICAgaWYgKGlWZWMpCi0rCW1lbWNweShpdlswXSwg aVZlYywgQUVTX0JMT0NLX1NJWkUpOwotKyAgICBpZiAoZGlyID09IFhFTkNSWVBUKQotKwltZW1j cHkocHRleHRbMF0sIHRleHQsIGxlbik7Ci0rICAgIGVsc2UKLSsJbWVtY3B5KGN0ZXh0WzBdLCB0 ZXh0LCBsZW4pOwotKyAgICBmb3IgKGkgPSAwOyBpIDwgMTAwOyArK2kpCi0rCXsKLSsJLyogcHJp bnRmKCJJdGVyYXRpb24gJWRcbiIsIGkpOyAqLwotKwlpZiAoaSA+IDApCi0rCSAgICB7Ci0rCSAg ICBmcHJpbnRmKHJmcCwiQ09VTlQgPSAlZFxuIixpKTsKLSsJICAgIE91dHB1dFZhbHVlKCJLRVki LGtleVtpXSxua2V5c3oscmZwLDApOwotKwkgICAgaWYgKGltb2RlICE9IEVDQikgIC8qIEVDQiAq LwotKwkJT3V0cHV0VmFsdWUoIklWIixpdltpXSxBRVNfQkxPQ0tfU0laRSxyZnAsMCk7Ci0rCSAg ICAvKiBPdXRwdXQgQ2lwaGVydGV4dCB8IFBsYWludGV4dCAqLwotKwkgICAgT3V0cHV0VmFsdWUo dF90YWdbZGlyXjFdLGRpciA/IHB0ZXh0WzBdIDogY3RleHRbMF0sbGVuLHJmcCwKLSsJCQlpbW9k ZSA9PSBDRkIxKTsKLSsJICAgIH0KLSsJZm9yIChqID0gMDsgaiA8IDEwMDA7ICsraikKLSsJICAg IHsKLSsJICAgIHN3aXRjaCAoaW1vZGUpCi0rCQl7Ci0rCSAgICBjYXNlIEVDQjoKLSsJCWlmIChq ID09IDApCi0rCQkgICAgeyAvKiBzZXQgdXAgZW5jcnlwdGlvbiAqLwotKwkJICAgIHJldCA9IEFF U1Rlc3QoJmN0eCwgYW1vZGUsIGFrZXlzeiwga2V5W2ldLCBOVUxMLCAKLSsJCQkJICBkaXIsICAv KiAwID0gZGVjcnlwdCwgMSA9IGVuY3J5cHQgKi8KLSsJCQkJICBwdGV4dFtqXSwgY3RleHRbal0s IGxlbik7Ci0rCQkgICAgaWYgKGRpciA9PSBYRU5DUllQVCkKLSsJCQltZW1jcHkocHRleHRbaisx XSwgY3RleHRbal0sIGxlbik7Ci0rCQkgICAgZWxzZQotKwkJCW1lbWNweShjdGV4dFtqKzFdLCBw dGV4dFtqXSwgbGVuKTsKLSsJCSAgICB9Ci0rCQllbHNlCi0rCQkgICAgewotKwkJICAgIGlmIChk aXIgPT0gWEVOQ1JZUFQpCi0rCQkJewotKwkJCUVWUF9DaXBoZXIoJmN0eCwgY3RleHRbal0sIHB0 ZXh0W2pdLCBsZW4pOwotKwkJCW1lbWNweShwdGV4dFtqKzFdLCBjdGV4dFtqXSwgbGVuKTsKLSsJ CQl9Ci0rCQkgICAgZWxzZQotKwkJCXsKLSsJCQlFVlBfQ2lwaGVyKCZjdHgsIHB0ZXh0W2pdLCBj dGV4dFtqXSwgbGVuKTsKLSsJCQltZW1jcHkoY3RleHRbaisxXSwgcHRleHRbal0sIGxlbik7Ci0r CQkJfQotKwkJICAgIH0KLSsJCWJyZWFrOwotKwotKwkgICAgY2FzZSBDQkM6Ci0rCSAgICBjYXNl IE9GQjogIAotKwkgICAgY2FzZSBDRkIxMjg6Ci0rCQlpZiAoaiA9PSAwKQotKwkJICAgIHsKLSsJ CSAgICByZXQgPSBBRVNUZXN0KCZjdHgsIGFtb2RlLCBha2V5c3osIGtleVtpXSwgaXZbaV0sIAot KwkJCQkgIGRpciwgIC8qIDAgPSBkZWNyeXB0LCAxID0gZW5jcnlwdCAqLwotKwkJCQkgIHB0ZXh0 W2pdLCBjdGV4dFtqXSwgbGVuKTsKLSsJCSAgICBpZiAoZGlyID09IFhFTkNSWVBUKQotKwkJCW1l bWNweShwdGV4dFtqKzFdLCBpdltpXSwgbGVuKTsKLSsJCSAgICBlbHNlCi0rCQkJbWVtY3B5KGN0 ZXh0W2orMV0sIGl2W2ldLCBsZW4pOwotKwkJICAgIH0KLSsJCWVsc2UKLSsJCSAgICB7Ci0rCQkg ICAgaWYgKGRpciA9PSBYRU5DUllQVCkKLSsJCQl7Ci0rCQkJRVZQX0NpcGhlcigmY3R4LCBjdGV4 dFtqXSwgcHRleHRbal0sIGxlbik7Ci0rCQkJbWVtY3B5KHB0ZXh0W2orMV0sIGN0ZXh0W2otMV0s IGxlbik7Ci0rCQkJfQotKwkJICAgIGVsc2UKLSsJCQl7Ci0rCQkJRVZQX0NpcGhlcigmY3R4LCBw dGV4dFtqXSwgY3RleHRbal0sIGxlbik7Ci0rCQkJbWVtY3B5KGN0ZXh0W2orMV0sIHB0ZXh0W2ot MV0sIGxlbik7Ci0rCQkJfQotKwkJICAgIH0KLSsJCWJyZWFrOwotKwotKwkgICAgY2FzZSBDRkI4 OgotKwkJaWYgKGogPT0gMCkKLSsJCSAgICB7Ci0rCQkgICAgcmV0ID0gQUVTVGVzdCgmY3R4LCBh bW9kZSwgYWtleXN6LCBrZXlbaV0sIGl2W2ldLCAKLSsJCQkJICBkaXIsICAvKiAwID0gZGVjcnlw dCwgMSA9IGVuY3J5cHQgKi8KLSsJCQkJICBwdGV4dFtqXSwgY3RleHRbal0sIGxlbik7Ci0rCQkg ICAgfQotKwkJZWxzZQotKwkJICAgIHsKLSsJCSAgICBpZiAoZGlyID09IFhFTkNSWVBUKQotKwkJ CUVWUF9DaXBoZXIoJmN0eCwgY3RleHRbal0sIHB0ZXh0W2pdLCBsZW4pOwotKwkJICAgIGVsc2UK LSsJCQlFVlBfQ2lwaGVyKCZjdHgsIHB0ZXh0W2pdLCBjdGV4dFtqXSwgbGVuKTsKLSsJCSAgICB9 Ci0rCQlpZiAoZGlyID09IFhFTkNSWVBUKQotKwkJICAgIHsKLSsJCSAgICBpZiAoaiA8IDE2KQot KwkJCW1lbWNweShwdGV4dFtqKzFdLCAmaXZbaV1bal0sIGxlbik7Ci0rCQkgICAgZWxzZQotKwkJ CW1lbWNweShwdGV4dFtqKzFdLCBjdGV4dFtqLTE2XSwgbGVuKTsKLSsJCSAgICB9Ci0rCQllbHNl Ci0rCQkgICAgewotKwkJICAgIGlmIChqIDwgMTYpCi0rCQkJbWVtY3B5KGN0ZXh0W2orMV0sICZp dltpXVtqXSwgbGVuKTsKLSsJCSAgICBlbHNlCi0rCQkJbWVtY3B5KGN0ZXh0W2orMV0sIHB0ZXh0 W2otMTZdLCBsZW4pOwotKwkJICAgIH0KLSsJCWJyZWFrOwotKwotKwkgICAgY2FzZSBDRkIxOgot KwkJaWYoaiA9PSAwKQotKwkJICAgIHsKLSsjaWYgMAotKwkJICAgIC8qIGNvbXBlbnNhdGUgZm9y IHdyb25nIGVuZGlhbm5lc3Mgb2YgaW5wdXQgZmlsZSAqLwotKwkJICAgIGlmKGkgPT0gMCkKLSsJ CQlwdGV4dFswXVswXTw8PTc7Ci0rI2VuZGlmCi0rCQkgICAgcmV0ID0gQUVTVGVzdCgmY3R4LGFt b2RlLGFrZXlzeixrZXlbaV0saXZbaV0sZGlyLAotKwkJCQlwdGV4dFtqXSwgY3RleHRbal0sIGxl bik7Ci0rCQkgICAgfQotKwkJZWxzZQotKwkJICAgIHsKLSsJCSAgICBpZiAoZGlyID09IFhFTkNS WVBUKQotKwkJCUVWUF9DaXBoZXIoJmN0eCwgY3RleHRbal0sIHB0ZXh0W2pdLCBsZW4pOwotKwkJ ICAgIGVsc2UKLSsJCQlFVlBfQ2lwaGVyKCZjdHgsIHB0ZXh0W2pdLCBjdGV4dFtqXSwgbGVuKTsK LSsKLSsJCSAgICB9Ci0rCQlpZihkaXIgPT0gWEVOQ1JZUFQpCi0rCQkgICAgewotKwkJICAgIGlm KGogPCAxMjgpCi0rCQkJc2IocHRleHRbaisxXSwwLGdiKGl2W2ldLGopKTsKLSsJCSAgICBlbHNl Ci0rCQkJc2IocHRleHRbaisxXSwwLGdiKGN0ZXh0W2otMTI4XSwwKSk7Ci0rCQkgICAgfQotKwkJ ZWxzZQotKwkJICAgIHsKLSsJCSAgICBpZihqIDwgMTI4KQotKwkJCXNiKGN0ZXh0W2orMV0sMCxn YihpdltpXSxqKSk7Ci0rCQkgICAgZWxzZQotKwkJCXNiKGN0ZXh0W2orMV0sMCxnYihwdGV4dFtq LTEyOF0sMCkpOwotKwkJICAgIH0KLSsJCWJyZWFrOwotKwkJfQotKwkgICAgfQotKwktLWo7IC8q IHJlc2V0IHRvIGxhc3Qgb2YgcmFuZ2UgKi8KLSsJLyogT3V0cHV0IENpcGhlcnRleHQgfCBQbGFp bnRleHQgKi8KLSsJT3V0cHV0VmFsdWUodF90YWdbZGlyXSxkaXIgPyBjdGV4dFtqXSA6IHB0ZXh0 W2pdLGxlbixyZnAsCi0rCQkgICAgaW1vZGUgPT0gQ0ZCMSk7Ci0rCWZwcmludGYocmZwLCAiXG4i KTsgIC8qIGFkZCBzZXBhcmF0b3IgKi8KLSsKLSsJLyogQ29tcHV0ZSBuZXh0IEtFWSAqLwotKwlp ZiAoZGlyID09IFhFTkNSWVBUKQotKwkgICAgewotKwkgICAgaWYgKGltb2RlID09IENGQjgpCi0r CQl7IC8qIGN0ID0gQ1Rbai0xNV0gfHwgQ1Rbai0xNF0gfHwgLi4uIHx8IENUW2pdICovCi0rCQlm b3IgKG4xID0gMCwgbjIgPSBua2V5c3otMTsgbjEgPCBua2V5c3o7ICsrbjEsIC0tbjIpCi0rCQkg ICAgY2lwaGVydGV4dFtuMV0gPSBjdGV4dFtqLW4yXVswXTsKLSsJCX0KLSsJICAgIGVsc2UgaWYo aW1vZGUgPT0gQ0ZCMSkKLSsJCXsKLSsJCWZvcihuMT0wLG4yPWFrZXlzei0xIDsgbjEgPCBha2V5 c3ogOyArK24xLC0tbjIpCi0rCQkgICAgc2IoY2lwaGVydGV4dCxuMSxnYihjdGV4dFtqLW4yXSww KSk7Ci0rCQl9Ci0rCSAgICBlbHNlCi0rCQlzd2l0Y2ggKGFrZXlzeikKLSsJCSAgICB7Ci0rCQlj YXNlIDEyODoKLSsJCSAgICBtZW1jcHkoY2lwaGVydGV4dCwgY3RleHRbal0sIDE2KTsKLSsJCSAg ICBicmVhazsKLSsJCWNhc2UgMTkyOgotKwkJICAgIG1lbWNweShjaXBoZXJ0ZXh0LCBjdGV4dFtq LTFdKzgsIDgpOwotKwkJICAgIG1lbWNweShjaXBoZXJ0ZXh0KzgsIGN0ZXh0W2pdLCAxNik7Ci0r CQkgICAgYnJlYWs7Ci0rCQljYXNlIDI1NjoKLSsJCSAgICBtZW1jcHkoY2lwaGVydGV4dCwgY3Rl eHRbai0xXSwgMTYpOwotKwkJICAgIG1lbWNweShjaXBoZXJ0ZXh0KzE2LCBjdGV4dFtqXSwgMTYp OwotKwkJICAgIGJyZWFrOwotKwkJICAgIH0KLSsJICAgIH0KLSsJZWxzZQotKwkgICAgewotKwkg ICAgaWYgKGltb2RlID09IENGQjgpCi0rCQl7IC8qIGN0ID0gQ1Rbai0xNV0gfHwgQ1Rbai0xNF0g fHwgLi4uIHx8IENUW2pdICovCi0rCQlmb3IgKG4xID0gMCwgbjIgPSBua2V5c3otMTsgbjEgPCBu a2V5c3o7ICsrbjEsIC0tbjIpCi0rCQkgICAgY2lwaGVydGV4dFtuMV0gPSBwdGV4dFtqLW4yXVsw XTsKLSsJCX0KLSsJICAgIGVsc2UgaWYoaW1vZGUgPT0gQ0ZCMSkKLSsJCXsKLSsJCWZvcihuMT0w LG4yPWFrZXlzei0xIDsgbjEgPCBha2V5c3ogOyArK24xLC0tbjIpCi0rCQkgICAgc2IoY2lwaGVy dGV4dCxuMSxnYihwdGV4dFtqLW4yXSwwKSk7Ci0rCQl9Ci0rCSAgICBlbHNlCi0rCQlzd2l0Y2gg KGFrZXlzeikKLSsJCSAgICB7Ci0rCQljYXNlIDEyODoKLSsJCSAgICBtZW1jcHkoY2lwaGVydGV4 dCwgcHRleHRbal0sIDE2KTsKLSsJCSAgICBicmVhazsKLSsJCWNhc2UgMTkyOgotKwkJICAgIG1l bWNweShjaXBoZXJ0ZXh0LCBwdGV4dFtqLTFdKzgsIDgpOwotKwkJICAgIG1lbWNweShjaXBoZXJ0 ZXh0KzgsIHB0ZXh0W2pdLCAxNik7Ci0rCQkgICAgYnJlYWs7Ci0rCQljYXNlIDI1NjoKLSsJCSAg ICBtZW1jcHkoY2lwaGVydGV4dCwgcHRleHRbai0xXSwgMTYpOwotKwkJICAgIG1lbWNweShjaXBo ZXJ0ZXh0KzE2LCBwdGV4dFtqXSwgMTYpOwotKwkJICAgIGJyZWFrOwotKwkJICAgIH0KLSsJICAg IH0KLSsJLyogQ29tcHV0ZSBuZXh0IGtleTogS2V5W2krMV0gPSBLZXlbaV0geG9yIGN0ICovCi0r CWZvciAobiA9IDA7IG4gPCBua2V5c3o7ICsrbikKLSsJICAgIGtleVtpKzFdW25dID0ga2V5W2ld W25dIF4gY2lwaGVydGV4dFtuXTsKLSsJCi0rCS8qIENvbXB1dGUgbmV4dCBJViBhbmQgdGV4dCAq LwotKwlpZiAoZGlyID09IFhFTkNSWVBUKQotKwkgICAgewotKwkgICAgc3dpdGNoIChpbW9kZSkK LSsJCXsKLSsJICAgIGNhc2UgRUNCOgotKwkJbWVtY3B5KHB0ZXh0WzBdLCBjdGV4dFtqXSwgQUVT X0JMT0NLX1NJWkUpOwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENCQzoKLSsJICAgIGNhc2UgT0ZC OgotKwkgICAgY2FzZSBDRkIxMjg6Ci0rCQltZW1jcHkoaXZbaSsxXSwgY3RleHRbal0sIEFFU19C TE9DS19TSVpFKTsKLSsJCW1lbWNweShwdGV4dFswXSwgY3RleHRbai0xXSwgQUVTX0JMT0NLX1NJ WkUpOwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENGQjg6Ci0rCQkvKiBJVltpKzFdID0gY3QgKi8K LSsJCWZvciAobjEgPSAwLCBuMiA9IDE1OyBuMSA8IDE2OyArK24xLCAtLW4yKQotKwkJICAgIGl2 W2krMV1bbjFdID0gY3RleHRbai1uMl1bMF07Ci0rCQlwdGV4dFswXVswXSA9IGN0ZXh0W2otMTZd WzBdOwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENGQjE6Ci0rCQlmb3IobjE9MCxuMj0xMjcgOyBu MSA8IDEyOCA7ICsrbjEsLS1uMikKLSsJCSAgICBzYihpdltpKzFdLG4xLGdiKGN0ZXh0W2otbjJd LDApKTsKLSsJCXB0ZXh0WzBdWzBdPWN0ZXh0W2otMTI4XVswXSYweDgwOwotKwkJYnJlYWs7Ci0r CQl9Ci0rCSAgICB9Ci0rCWVsc2UKLSsJICAgIHsKLSsJICAgIHN3aXRjaCAoaW1vZGUpCi0rCQl7 Ci0rCSAgICBjYXNlIEVDQjoKLSsJCW1lbWNweShjdGV4dFswXSwgcHRleHRbal0sIEFFU19CTE9D S19TSVpFKTsKLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDQkM6Ci0rCSAgICBjYXNlIE9GQjoKLSsJ ICAgIGNhc2UgQ0ZCMTI4OgotKwkJbWVtY3B5KGl2W2krMV0sIHB0ZXh0W2pdLCBBRVNfQkxPQ0tf U0laRSk7Ci0rCQltZW1jcHkoY3RleHRbMF0sIHB0ZXh0W2otMV0sIEFFU19CTE9DS19TSVpFKTsK LSsJCWJyZWFrOwotKwkgICAgY2FzZSBDRkI4OgotKwkJZm9yIChuMSA9IDAsIG4yID0gMTU7IG4x IDwgMTY7ICsrbjEsIC0tbjIpCi0rCQkgICAgaXZbaSsxXVtuMV0gPSBwdGV4dFtqLW4yXVswXTsK LSsJCWN0ZXh0WzBdWzBdID0gcHRleHRbai0xNl1bMF07Ci0rCQlicmVhazsKLSsJICAgIGNhc2Ug Q0ZCMToKLSsJCWZvcihuMT0wLG4yPTEyNyA7IG4xIDwgMTI4IDsgKytuMSwtLW4yKQotKwkJICAg IHNiKGl2W2krMV0sbjEsZ2IocHRleHRbai1uMl0sMCkpOwotKwkJY3RleHRbMF1bMF09cHRleHRb ai0xMjhdWzBdJjB4ODA7Ci0rCQlicmVhazsKLSsJCX0KLSsJICAgIH0KLSsJfQotKyAgICAKLSsg ICAgcmV0dXJuIHJldDsKLSsgICAgfQotKwotKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ki8KLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSsgICMgQ29uZmlnIGluZm8gZm9yIHYtb25lCi0rICAjIEFFU1ZTIE1NVCB0ZXN0IGRhdGEgZm9y IEVDQgotKyAgIyBTdGF0ZSA6IEVuY3J5cHQgYW5kIERlY3J5cHQKLSsgICMgS2V5IExlbmd0aCA6 IDI1NgotKyAgIyBGcmkgQXVnIDMwIDA0OjA3OjIyIFBNCi0rICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8KLSsKLStpbnQgcHJvY19maWxlKGNoYXIgKnJxZmlsZSwgY2hhciAqcnNwZmls ZSkKLSsgICAgewotKyAgICBjaGFyIGFmblsyNTZdLCByZm5bMjU2XTsKLSsgICAgRklMRSAqYWZw ID0gTlVMTCwgKnJmcCA9IE5VTEw7Ci0rICAgIGNoYXIgaWJ1ZlsyMDQ4XTsKLSsgICAgY2hhciB0 YnVmWzIwNDhdOwotKyAgICBpbnQgaWxlbiwgbGVuLCByZXQgPSAwOwotKyAgICBjaGFyIGFsZ29b OF0gPSAiIjsKLSsgICAgY2hhciBhbW9kZVs4XSA9ICIiOwotKyAgICBjaGFyIGF0ZXN0WzhdID0g IiI7Ci0rICAgIGludCBha2V5c3ogPSAwOwotKyAgICB1bnNpZ25lZCBjaGFyIGlWZWNbMjBdLCBh S2V5WzQwXTsKLSsgICAgaW50IGRpciA9IC0xLCBlcnIgPSAwLCBzdGVwID0gMDsKLSsgICAgdW5z aWduZWQgY2hhciBwbGFpbnRleHRbMjA0OF07Ci0rICAgIHVuc2lnbmVkIGNoYXIgY2lwaGVydGV4 dFsyMDQ4XTsKLSsgICAgY2hhciAqcnA7Ci0rICAgIEVWUF9DSVBIRVJfQ1RYIGN0eDsKLSsgICAg RVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKLSsKLSsgICAgaWYgKCFycWZpbGUgfHwgISgqcnFm aWxlKSkKLSsJewotKwlwcmludGYoIk5vIHJlcSBmaWxlXG4iKTsKLSsJcmV0dXJuIC0xOwotKwl9 Ci0rICAgIHN0cmNweShhZm4sIHJxZmlsZSk7Ci0rCi0rICAgIGlmICgoYWZwID0gZm9wZW4oYWZu LCAiciIpKSA9PSBOVUxMKQotKwl7Ci0rCXByaW50ZigiQ2Fubm90IG9wZW4gZmlsZTogJXMsICVz XG4iLCAKLSsJICAgICAgIGFmbiwgc3RyZXJyb3IoZXJybm8pKTsKLSsJcmV0dXJuIC0xOwotKwl9 Ci0rICAgIGlmICghcnNwZmlsZSkKLSsJewotKwlzdHJjcHkocmZuLGFmbik7Ci0rCXJwPXN0cnN0 cihyZm4sInJlcS8iKTsKLSsjaWZkZWYgT1BFTlNTTF9TWVNfV0lOMzIKLSsJaWYgKCFycCkKLSsJ ICAgIHJwPXN0cnN0cihyZm4sInJlcVxcIik7Ci0rI2VuZGlmCi0rCWFzc2VydChycCk7Ci0rCW1l bWNweShycCwicnNwIiwzKTsKLSsJcnAgPSBzdHJzdHIocmZuLCAiLnJlcSIpOwotKwltZW1jcHko cnAsICIucnNwIiwgNCk7Ci0rCXJzcGZpbGUgPSByZm47Ci0rCX0KLSsgICAgaWYgKChyZnAgPSBm b3Blbihyc3BmaWxlLCAidyIpKSA9PSBOVUxMKQotKwl7Ci0rCXByaW50ZigiQ2Fubm90IG9wZW4g ZmlsZTogJXMsICVzXG4iLCAKLSsJICAgICAgIHJmbiwgc3RyZXJyb3IoZXJybm8pKTsKLSsJZmNs b3NlKGFmcCk7Ci0rCWFmcCA9IE5VTEw7Ci0rCXJldHVybiAtMTsKLSsJfQotKyAgICB3aGlsZSAo IWVyciAmJiAoZmdldHMoaWJ1Ziwgc2l6ZW9mKGlidWYpLCBhZnApKSAhPSBOVUxMKQotKwl7Ci0r CXRpZHlfbGluZSh0YnVmLCBpYnVmKTsKLSsJaWxlbiA9IHN0cmxlbihpYnVmKTsKLSsJLyogICAg ICBwcmludGYoInN0ZXA9JWQgaWJ1Zj0lcyIsc3RlcCxpYnVmKTsgKi8KLSsJc3dpdGNoIChzdGVw KQotKwkgICAgewotKwljYXNlIDA6ICAvKiByZWFkIHByZWFtYmxlICovCi0rCSAgICBpZiAoaWJ1 ZlswXSA9PSAnXG4nKQotKwkJeyAvKiBlbmQgb2YgcHJlYW1ibGUgKi8KLSsJCWlmICgoKmFsZ28g PT0gJ1wwJykgfHwKLSsJCSAgICAoKmFtb2RlID09ICdcMCcpIHx8Ci0rCQkgICAgKGFrZXlzeiA9 PSAwKSkKLSsJCSAgICB7Ci0rCQkgICAgcHJpbnRmKCJNaXNzaW5nIEFsZ29yaXRobSwgTW9kZSBv ciBLZXlTaXplICglcy8lcy8lZClcbiIsCi0rCQkJICAgYWxnbyxhbW9kZSxha2V5c3opOwotKwkJ ICAgIGVyciA9IDE7Ci0rCQkgICAgfQotKwkJZWxzZQotKwkJICAgIHsKLSsJCSAgICBmcHV0cyhp YnVmLCByZnApOwotKwkJICAgICsrIHN0ZXA7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgZWxzZSBp ZiAoaWJ1ZlswXSAhPSAnIycpCi0rCQl7Ci0rCQlwcmludGYoIkludmFsaWQgcHJlYW1ibGUgaXRl bTogJXNcbiIsIGlidWYpOwotKwkJZXJyID0gMTsKLSsJCX0KLSsJICAgIGVsc2UKLSsJCXsgLyog cHJvY2VzcyBwcmVhbWJsZSAqLwotKwkJY2hhciAqeHAsICpwcCA9IGlidWYrMjsKLSsJCWludCBu OwotKwkJaWYgKGFrZXlzeikKLSsJCSAgICB7IC8qIGluc2VydCBjdXJyZW50IHRpbWUgJiBkYXRl ICovCi0rCQkgICAgdGltZV90IHJ0aW0gPSB0aW1lKDApOwotKwkJICAgIGZwcmludGYocmZwLCAi IyAlcyIsIGN0aW1lKCZydGltKSk7Ci0rCQkgICAgfQotKwkJZWxzZQotKwkJICAgIHsKLSsJCSAg ICBmcHV0cyhpYnVmLCByZnApOwotKwkJICAgIGlmIChzdHJuY21wKHBwLCAiQUVTVlMgIiwgNikg PT0gMCkKLSsJCQl7Ci0rCQkJc3RyY3B5KGFsZ28sICJBRVMiKTsKLSsJCQkvKiBnZXQgdGVzdCB0 eXBlICovCi0rCQkJcHAgKz0gNjsKLSsJCQl4cCA9IHN0cmNocihwcCwgJyAnKTsKLSsJCQluID0g eHAtcHA7Ci0rCQkJc3RybmNweShhdGVzdCwgcHAsIG4pOwotKwkJCWF0ZXN0W25dID0gJ1wwJzsK LSsJCQkvKiBnZXQgbW9kZSAqLwotKwkJCXhwID0gc3RycmNocihwcCwgJyAnKTsgLyogZ2V0IG1v ZGUiICovCi0rCQkJbiA9IHN0cmxlbih4cCsxKS0xOwotKwkJCXN0cm5jcHkoYW1vZGUsIHhwKzEs IG4pOwotKwkJCWFtb2RlW25dID0gJ1wwJzsKLSsJCQkvKiBhbW9kZVszXSA9ICdcMCc7ICovCi0r CQkJaWYgKFZFUkJPU0UpCi0rCQkJCXByaW50ZigiVGVzdCA9ICVzLCBNb2RlID0gJXNcbiIsIGF0 ZXN0LCBhbW9kZSk7Ci0rCQkJfQotKwkJICAgIGVsc2UgaWYgKHN0cm5jYXNlY21wKHBwLCAiS2V5 IExlbmd0aCA6ICIsIDEzKSA9PSAwKQotKwkJCXsKLSsJCQlha2V5c3ogPSBhdG9pKHBwKzEzKTsK LSsJCQlpZiAoVkVSQk9TRSkKLSsJCQkJcHJpbnRmKCJLZXkgc2l6ZSA9ICVkXG4iLCBha2V5c3op OwotKwkJCX0KLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICBicmVhazsKLSsKLSsJY2FzZSAxOiAgLyog W0VOQ1JZUFRdIHwgW0RFQ1JZUFRdICovCi0rCSAgICBpZiAoaWJ1ZlswXSA9PSAnWycpCi0rCQl7 Ci0rCQlmcHV0cyhpYnVmLCByZnApOwotKwkJKytzdGVwOwotKwkJaWYgKHN0cm5jYXNlY21wKGli dWYsICJbRU5DUllQVF0iLCA5KSA9PSAwKQotKwkJICAgIGRpciA9IDE7Ci0rCQllbHNlIGlmIChz dHJuY2FzZWNtcChpYnVmLCAiW0RFQ1JZUFRdIiwgOSkgPT0gMCkKLSsJCSAgICBkaXIgPSAwOwot KwkJZWxzZQotKwkJICAgIHsKLSsJCSAgICBwcmludGYoIkludmFsaWQga2V5d29yZDogJXNcbiIs IGlidWYpOwotKwkJICAgIGVyciA9IDE7Ci0rCQkgICAgfQotKwkJYnJlYWs7Ci0rCQl9Ci0rCSAg ICBlbHNlIGlmIChkaXIgPT0gLTEpCi0rCQl7Ci0rCQllcnIgPSAxOwotKwkJcHJpbnRmKCJNaXNz aW5nIEVOQ1JZUFQvREVDUllQVCBrZXl3b3JkXG4iKTsKLSsJCWJyZWFrOwotKwkJfQotKwkgICAg ZWxzZSAKLSsJCXN0ZXAgPSAyOwotKwotKwljYXNlIDI6IC8qIEtFWSA9IHh4eHggKi8KLSsJICAg IGZwdXRzKGlidWYsIHJmcCk7Ci0rCSAgICBpZigqaWJ1ZiA9PSAnXG4nKQotKwkJYnJlYWs7Ci0r CSAgICBpZighc3RybmNhc2VjbXAoaWJ1ZiwiQ09VTlQgPSAiLDgpKQotKwkJYnJlYWs7Ci0rCi0r CSAgICBpZiAoc3RybmNhc2VjbXAoaWJ1ZiwgIktFWSA9ICIsIDYpICE9IDApCi0rCQl7Ci0rCQlw cmludGYoIk1pc3NpbmcgS0VZXG4iKTsKLSsJCWVyciA9IDE7Ci0rCQl9Ci0rCSAgICBlbHNlCi0r CQl7Ci0rCQlsZW4gPSBoZXgyYmluKChjaGFyKilpYnVmKzYsIGFLZXkpOwotKwkJaWYgKGxlbiA8 IDApCi0rCQkgICAgewotKwkJICAgIHByaW50ZigiSW52YWxpZCBLRVlcbiIpOwotKwkJICAgIGVy ciA9MTsKLSsJCSAgICBicmVhazsKLSsJCSAgICB9Ci0rCQlQcmludFZhbHVlKCJLRVkiLCBhS2V5 LCBsZW4pOwotKwkJaWYgKHN0cmNtcChhbW9kZSwgIkVDQiIpID09IDApCi0rCQkgICAgewotKwkJ ICAgIG1lbXNldChpVmVjLCAwLCBzaXplb2YoaVZlYykpOwotKwkJICAgIHN0ZXAgPSAoZGlyKT8g NDogNTsgIC8qIG5vIGl2ZWMgZm9yIEVDQiAqLwotKwkJICAgIH0KLSsJCWVsc2UKLSsJCSAgICAr K3N0ZXA7Ci0rCQl9Ci0rCSAgICBicmVhazsKLSsKLSsJY2FzZSAzOiAvKiBJViA9IHh4eHggKi8K LSsJICAgIGZwdXRzKGlidWYsIHJmcCk7Ci0rCSAgICBpZiAoc3RybmNhc2VjbXAoaWJ1ZiwgIklW ID0gIiwgNSkgIT0gMCkKLSsJCXsKLSsJCXByaW50ZigiTWlzc2luZyBJVlxuIik7Ci0rCQllcnIg PSAxOwotKwkJfQotKwkgICAgZWxzZQotKwkJewotKwkJbGVuID0gaGV4MmJpbigoY2hhciopaWJ1 Zis1LCBpVmVjKTsKLSsJCWlmIChsZW4gPCAwKQotKwkJICAgIHsKLSsJCSAgICBwcmludGYoIklu dmFsaWQgSVZcbiIpOwotKwkJICAgIGVyciA9MTsKLSsJCSAgICBicmVhazsKLSsJCSAgICB9Ci0r CQlQcmludFZhbHVlKCJJViIsIGlWZWMsIGxlbik7Ci0rCQlzdGVwID0gKGRpcik/IDQ6IDU7Ci0r CQl9Ci0rCSAgICBicmVhazsKLSsKLSsJY2FzZSA0OiAvKiBQTEFJTlRFWFQgPSB4eHh4ICovCi0r CSAgICBmcHV0cyhpYnVmLCByZnApOwotKwkgICAgaWYgKHN0cm5jYXNlY21wKGlidWYsICJQTEFJ TlRFWFQgPSAiLCAxMikgIT0gMCkKLSsJCXsKLSsJCXByaW50ZigiTWlzc2luZyBQTEFJTlRFWFRc biIpOwotKwkJZXJyID0gMTsKLSsJCX0KLSsJICAgIGVsc2UKLSsJCXsKLSsJCWludCBubiA9IHN0 cmxlbihpYnVmKzEyKTsKLSsJCWlmKCFzdHJjbXAoYW1vZGUsIkNGQjEiKSkKLSsJCSAgICBsZW49 YmludDJiaW4oaWJ1ZisxMixubi0xLHBsYWludGV4dCk7Ci0rCQllbHNlCi0rCQkgICAgbGVuPWhl eDJiaW4oaWJ1ZisxMiwgcGxhaW50ZXh0KTsKLSsJCWlmIChsZW4gPCAwKQotKwkJICAgIHsKLSsJ CSAgICBwcmludGYoIkludmFsaWQgUExBSU5URVhUOiAlcyIsIGlidWYrMTIpOwotKwkJICAgIGVy ciA9MTsKLSsJCSAgICBicmVhazsKLSsJCSAgICB9Ci0rCQlpZiAobGVuID49IHNpemVvZihwbGFp bnRleHQpKQotKwkJICAgIHsKLSsJCSAgICBwcmludGYoIkJ1ZmZlciBvdmVyZmxvd1xuIik7Ci0r CQkgICAgfQotKwkJUHJpbnRWYWx1ZSgiUExBSU5URVhUIiwgKHVuc2lnbmVkIGNoYXIqKXBsYWlu dGV4dCwgbGVuKTsKLSsJCWlmIChzdHJjbXAoYXRlc3QsICJNQ1QiKSA9PSAwKSAgLyogTW9udGUg Q2FybG8gVGVzdCAqLwotKwkJICAgIHsKLSsJCSAgICBpZihkb19tY3QoYW1vZGUsIGFrZXlzeiwg YUtleSwgaVZlYywgCi0rCQkJICAgICAgZGlyLCAodW5zaWduZWQgY2hhciopcGxhaW50ZXh0LCBs ZW4sIAotKwkJCSAgICAgIHJmcCkgPCAwKQotKwkJCUVYSVQoMSk7Ci0rCQkgICAgfQotKwkJZWxz ZQotKwkJICAgIHsKLSsJCSAgICByZXQgPSBBRVNUZXN0KCZjdHgsIGFtb2RlLCBha2V5c3osIGFL ZXksIGlWZWMsIAotKwkJCQkgIGRpciwgIC8qIDAgPSBkZWNyeXB0LCAxID0gZW5jcnlwdCAqLwot KwkJCQkgIHBsYWludGV4dCwgY2lwaGVydGV4dCwgbGVuKTsKLSsJCSAgICBPdXRwdXRWYWx1ZSgi Q0lQSEVSVEVYVCIsY2lwaGVydGV4dCxsZW4scmZwLAotKwkJCQkhc3RyY21wKGFtb2RlLCJDRkIx IikpOwotKwkJICAgIH0KLSsJCXN0ZXAgPSA2OwotKwkJfQotKwkgICAgYnJlYWs7Ci0rCi0rCWNh c2UgNTogLyogQ0lQSEVSVEVYVCA9IHh4eHggKi8KLSsJICAgIGZwdXRzKGlidWYsIHJmcCk7Ci0r CSAgICBpZiAoc3RybmNhc2VjbXAoaWJ1ZiwgIkNJUEhFUlRFWFQgPSAiLCAxMykgIT0gMCkKLSsJ CXsKLSsJCXByaW50ZigiTWlzc2luZyBLRVlcbiIpOwotKwkJZXJyID0gMTsKLSsJCX0KLSsJICAg IGVsc2UKLSsJCXsKLSsJCWlmKCFzdHJjbXAoYW1vZGUsIkNGQjEiKSkKLSsJCSAgICBsZW49Ymlu dDJiaW4oaWJ1ZisxMyxzdHJsZW4oaWJ1ZisxMyktMSxjaXBoZXJ0ZXh0KTsKLSsJCWVsc2UKLSsJ CSAgICBsZW4gPSBoZXgyYmluKGlidWYrMTMsY2lwaGVydGV4dCk7Ci0rCQlpZiAobGVuIDwgMCkK LSsJCSAgICB7Ci0rCQkgICAgcHJpbnRmKCJJbnZhbGlkIENJUEhFUlRFWFRcbiIpOwotKwkJICAg IGVyciA9MTsKLSsJCSAgICBicmVhazsKLSsJCSAgICB9Ci0rCi0rCQlQcmludFZhbHVlKCJDSVBI RVJURVhUIiwgY2lwaGVydGV4dCwgbGVuKTsKLSsJCWlmIChzdHJjbXAoYXRlc3QsICJNQ1QiKSA9 PSAwKSAgLyogTW9udGUgQ2FybG8gVGVzdCAqLwotKwkJICAgIHsKLSsJCSAgICBkb19tY3QoYW1v ZGUsIGFrZXlzeiwgYUtleSwgaVZlYywgCi0rCQkJICAgZGlyLCBjaXBoZXJ0ZXh0LCBsZW4sIHJm cCk7Ci0rCQkgICAgfQotKwkJZWxzZQotKwkJICAgIHsKLSsJCSAgICByZXQgPSBBRVNUZXN0KCZj dHgsIGFtb2RlLCBha2V5c3osIGFLZXksIGlWZWMsIAotKwkJCQkgIGRpciwgIC8qIDAgPSBkZWNy eXB0LCAxID0gZW5jcnlwdCAqLwotKwkJCQkgIHBsYWludGV4dCwgY2lwaGVydGV4dCwgbGVuKTsK LSsJCSAgICBPdXRwdXRWYWx1ZSgiUExBSU5URVhUIiwodW5zaWduZWQgY2hhciAqKXBsYWludGV4 dCxsZW4scmZwLAotKwkJCQkhc3RyY21wKGFtb2RlLCJDRkIxIikpOwotKwkJICAgIH0KLSsJCXN0 ZXAgPSA2OwotKwkJfQotKwkgICAgYnJlYWs7Ci0rCi0rCWNhc2UgNjoKLSsJICAgIGlmIChpYnVm WzBdICE9ICdcbicpCi0rCQl7Ci0rCQllcnIgPSAxOwotKwkJcHJpbnRmKCJNaXNzaW5nIHRlcm1p bmF0b3JcbiIpOwotKwkJfQotKwkgICAgZWxzZSBpZiAoc3RyY21wKGF0ZXN0LCAiTUNUIikgIT0g MCkKLSsJCXsgLyogTUNUIGFscmVhZHkgYWRkZWQgdGVybWluYXRpbmcgbmwgKi8KLSsJCWZwdXRz KGlidWYsIHJmcCk7Ci0rCQl9Ci0rCSAgICBzdGVwID0gMTsKLSsJICAgIGJyZWFrOwotKwkgICAg fQotKwl9Ci0rICAgIGlmIChyZnApCi0rCWZjbG9zZShyZnApOwotKyAgICBpZiAoYWZwKQotKwlm Y2xvc2UoYWZwKTsKLSsgICAgcmV0dXJuIGVycjsKLSsgICAgfQotKwotKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsgIFByb2Nlc3NlcyBlaXRo ZXIgYSBzaW5nbGUgZmlsZSBvciAKLSsgIGEgc2V0IG9mIGZpbGVzIHdob3NlIG5hbWVzIGFyZSBw YXNzZWQgaW4gYSBmaWxlLgotKyAgQSBzaW5nbGUgZmlsZSBpcyBzcGVjaWZpZWQgYXM6Ci0rICAg IGFlc190ZXN0IC1mIHh4eC5yZXEKLSsgIEEgc2V0IG9mIGZpbGVzIGlzIHNwZWNpZmllZCBhczoK LSsgICAgYWVzX3Rlc3QgLWQgeHh4eHgueHh4Ci0rICBUaGUgZGVmYXVsdCBpczogLWQgcmVxLnR4 dAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K LStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rICAgIHsKLSsgICAgY2hhciAqcnFs aXN0ID0gInJlcS50eHQiLCAqcnNwZmlsZSA9IE5VTEw7Ci0rICAgIEZJTEUgKmZwID0gTlVMTDsK LSsgICAgY2hhciBmblsyNTBdID0gIiIsIHJmblsyNTZdID0gIiI7Ci0rICAgIGludCBmX29wdCA9 IDAsIGRfb3B0ID0gMTsKLSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlmKCFGSVBTX21v ZGVfc2V0KDEpKQotKwl7Ci0rCWRvX3ByaW50X2Vycm9ycygpOwotKwlFWElUKDEpOwotKwl9Ci0r I2VuZGlmCi0rICAgIGlmIChhcmdjID4gMSkKLSsJewotKwlpZiAoc3RyY2FzZWNtcChhcmd2WzFd LCAiLWQiKSA9PSAwKQotKwkgICAgewotKwkgICAgZF9vcHQgPSAxOwotKwkgICAgfQotKwllbHNl IGlmIChzdHJjYXNlY21wKGFyZ3ZbMV0sICItZiIpID09IDApCi0rCSAgICB7Ci0rCSAgICBmX29w dCA9IDE7Ci0rCSAgICBkX29wdCA9IDA7Ci0rCSAgICB9Ci0rCWVsc2UKLSsJICAgIHsKLSsJICAg IHByaW50ZigiSW52YWxpZCBwYXJhbWV0ZXI6ICVzXG4iLCBhcmd2WzFdKTsKLSsJICAgIHJldHVy biAwOwotKwkgICAgfQotKwlpZiAoYXJnYyA8IDMpCi0rCSAgICB7Ci0rCSAgICBwcmludGYoIk1p c3NpbmcgcGFyYW1ldGVyXG4iKTsKLSsJICAgIHJldHVybiAwOwotKwkgICAgfQotKwlpZiAoZF9v cHQpCi0rCSAgICBycWxpc3QgPSBhcmd2WzJdOwotKwllbHNlCi0rCSAgICB7Ci0rCSAgICBzdHJj cHkoZm4sIGFyZ3ZbMl0pOwotKwkgICAgcnNwZmlsZSA9IGFyZ3ZbM107Ci0rCSAgICB9Ci0rCX0K LSsgICAgaWYgKGRfb3B0KQotKwl7IC8qIGxpc3Qgb2YgZmlsZXMgKGRpcmVjdG9yeSkgKi8KLSsJ aWYgKCEoZnAgPSBmb3BlbihycWxpc3QsICJyIikpKQotKwkgICAgewotKwkgICAgcHJpbnRmKCJD YW5ub3Qgb3BlbiByZXEgbGlzdCBmaWxlXG4iKTsKLSsJICAgIHJldHVybiAtMTsKLSsJICAgIH0K LSsJd2hpbGUgKGZnZXRzKGZuLCBzaXplb2YoZm4pLCBmcCkpCi0rCSAgICB7Ci0rCSAgICBzdHJ0 b2soZm4sICJcclxuIik7Ci0rCSAgICBzdHJjcHkocmZuLCBmbik7Ci0rCSAgICBpZiAoVkVSQk9T RSkKLSsJCXByaW50ZigiUHJvY2Vzc2luZzogJXNcbiIsIHJmbik7Ci0rCSAgICBpZiAocHJvY19m aWxlKHJmbiwgcnNwZmlsZSkpCi0rCQl7Ci0rCQlwcmludGYoIj4+PiBQcm9jZXNzaW5nIGZhaWxl ZCBmb3I6ICVzIDw8PFxuIiwgcmZuKTsKLSsJCUVYSVQoMSk7Ci0rCQl9Ci0rCSAgICB9Ci0rCWZj bG9zZShmcCk7Ci0rCX0KLSsgICAgZWxzZSAvKiBzaW5nbGUgZmlsZSAqLwotKwl7Ci0rCWlmIChW RVJCT1NFKQotKwkgICAgcHJpbnRmKCJQcm9jZXNzaW5nOiAlc1xuIiwgZm4pOwotKwlpZiAocHJv Y19maWxlKGZuLCByc3BmaWxlKSkKLSsJICAgIHsKLSsJICAgIHByaW50ZigiPj4+IFByb2Nlc3Np bmcgZmFpbGVkIGZvcjogJXMgPDw8XG4iLCBmbik7Ci0rCSAgICB9Ci0rCX0KLSsgICAgRVhJVCgw KTsKLSsgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19jbWFjdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAu MWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX2NtYWN0ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9j cnlwdG8vZmlwcy9jYXZzL2ZpcHNfY21hY3Rlc3QuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEu NTUyOTIyMzE0ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBz X2NtYWN0ZXN0LmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTI5MjIzMTQgKzAxMDAKLUBAIC0wLDAg KzEsNTE3IEBACi0rLyogZmlwc19jbWFjdGVzdC5jICovCi0rLyogV3JpdHRlbiBieSBEciBTdGVw aGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCi0rICogcHJv amVjdCAyMDA1LgotKyAqLwotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDA1 IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0r ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAg dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo ZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRl cmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJl IG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlz IHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2pl Y3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9w ZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5k ICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9y IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAq ICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxl YXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0rICoKLSsgKiA1LiBQ cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3Bl blNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0 aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9q ZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIg bXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAg ICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NM IFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93 d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg VEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsg KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB TEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVN UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1Qg TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK LSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg V0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9V VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRI RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqCi0rICog VGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieSBF cmljIFlvdW5nCi0rICogKGVheUBjcnlwdHNvZnQuY29tKS4gIFRoaXMgcHJvZHVjdCBpbmNsdWRl cyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQotKyAqIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20p LgotKyAqCi0rICovCi0rCi0rI2RlZmluZSBPUEVOU1NMX0ZJUFNBUEkKLSsKLSsjaW5jbHVkZSA8 c3RkaW8uaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvYmlvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1 ZGUgPG9wZW5zc2wvY21hYy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRl IDxvcGVuc3NsL2JuLmg+Ci0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLSsKLStpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQotK3sKLSsgICAgcHJpbnRmKCJObyBGSVBTIENNQUMgc3Vw cG9ydFxuIik7Ci0rICAgIHJldHVybigwKTsKLSt9Ci0rCi0rI2Vsc2UKLSsKLSsjaW5jbHVkZSA8 b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgImZpcHNfdXRsLmgiCi0rCi0rc3RhdGljIGludCBj bWFjX3Rlc3QoY29uc3QgRVZQX0NJUEhFUiAqY2lwaGVyLCBGSUxFICpvdXQsIEZJTEUgKmluLAot KwlpbnQgbW9kZSwgaW50IEtsZW5fY291bnRzX2tleXMsIGludCBrbm93bl9rZXlsZW4pOwotK3N0 YXRpYyBpbnQgcHJpbnRfY21hY19nZW4oY29uc3QgRVZQX0NJUEhFUiAqY2lwaGVyLCBGSUxFICpv dXQsCi0rCQl1bnNpZ25lZCBjaGFyICpLZXksIGludCBLbGVuLAotKwkJdW5zaWduZWQgY2hhciAq TXNnLCBpbnQgTXNnbGVuLAotKwkJaW50IFRsZW4pOwotK3N0YXRpYyBpbnQgcHJpbnRfY21hY192 ZXIoY29uc3QgRVZQX0NJUEhFUiAqY2lwaGVyLCBGSUxFICpvdXQsCi0rCQl1bnNpZ25lZCBjaGFy ICpLZXksIGludCBLbGVuLAotKwkJdW5zaWduZWQgY2hhciAqTXNnLCBpbnQgTXNnbGVuLAotKwkJ dW5zaWduZWQgY2hhciAqTWFjLCBpbnQgTWFjbGVuLAotKwkJaW50IFRsZW4pOwotKwotKyNpZmRl ZiBGSVBTX0FMR1ZTCi0raW50IGZpcHNfY21hY3Rlc3RfbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCi0rI2Vsc2UKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rI2VuZGlmCi0r CXsKLSsJRklMRSAqaW4gPSBOVUxMLCAqb3V0ID0gTlVMTDsKLSsJaW50IG1vZGUgPSAwOwkJLyog MCA9PiBHZW5lcmF0ZSwgMSA9PiBWZXJpZnkgKi8KLSsJaW50IEtsZW5fY291bnRzX2tleXMgPSAw OyAvKiAwID0+IEtsZW4gaXMgc2l6ZSBvZiBvbmUga2V5Ci0rCQkJCSAgICAgMSA9PiBLbGVuIGlz IGFtb3VudCBvZiBrZXlzCi0rCQkJCSAgKi8KLSsJaW50IGtub3duX2tleWxlbiA9IDA7CS8qIE9u bHkgc2V0IHdoZW4gS2xlbl9jb3VudHNfa2V5cyA9IDEgKi8KLSsJY29uc3QgRVZQX0NJUEhFUiAq Y2lwaGVyID0gMDsKLSsJaW50IHJldCA9IDE7Ci0rCWZpcHNfYWxndGVzdF9pbml0KCk7Ci0rCi0r CXdoaWxlIChhcmdjID4gMSAmJiBhcmd2WzFdWzBdID09ICctJykKLSsJCXsKLSsJCXN3aXRjaCAo YXJndlsxXVsxXSkKLSsJCQl7Ci0rCQljYXNlICdhJzoKLSsJCQl7Ci0rCQkJY2hhciAqcCA9ICZh cmd2WzFdWzJdOwotKwkJCWlmICgqcCA9PSAnXDAnKQotKwkJCQl7Ci0rCQkJCWlmIChhcmdjIDw9 IDIpCi0rCQkJCQl7Ci0rCQkJCQlmcHJpbnRmKHN0ZGVyciwgIk9wdGlvbiAlcyBuZWVkcyBhIHZh bHVlXG4iLCBhcmd2WzFdKTsKLSsJCQkJCWdvdG8gZW5kOwotKwkJCQkJfQotKwkJCQlhcmd2Kys7 Ci0rCQkJCWFyZ2MtLTsKLSsJCQkJcCA9ICZhcmd2WzFdWzBdOwotKwkJCQl9Ci0rCQkJaWYgKCFz dHJjbXAocCwgImFlczEyOCIpKQotKwkJCQljaXBoZXIgPSBFVlBfYWVzXzEyOF9jYmMoKTsKLSsJ CQllbHNlIGlmICghc3RyY21wKHAsICJhZXMxOTIiKSkKLSsJCQkJY2lwaGVyID0gRVZQX2Flc18x OTJfY2JjKCk7Ci0rCQkJZWxzZSBpZiAoIXN0cmNtcChwLCAiYWVzMjU2IikpCi0rCQkJCWNpcGhl ciA9IEVWUF9hZXNfMjU2X2NiYygpOwotKwkJCWVsc2UgaWYgKCFzdHJjbXAocCwgInRkZWEzIikg fHwgIXN0cmNtcChwLCAidGRlczMiKSkKLSsJCQkJewotKwkJCQljaXBoZXIgPSBFVlBfZGVzX2Vk ZTNfY2JjKCk7Ci0rCQkJCUtsZW5fY291bnRzX2tleXMgPSAxOwotKwkJCQlrbm93bl9rZXlsZW4g PSA4OwotKwkJCQl9Ci0rCQkJZWxzZQotKwkJCQl7Ci0rCQkJCWZwcmludGYoc3RkZXJyLCAiVW5r bm93biBhbGdvcml0aG0gJXNcbiIsIHApOwotKwkJCQlnb3RvIGVuZDsKLSsJCQkJfQotKwkJCX0K LSsJCQlicmVhazsKLSsJCWNhc2UgJ2cnOgotKwkJCW1vZGUgPSAwOwotKwkJCWJyZWFrOwotKwkJ Y2FzZSAndic6Ci0rCQkJbW9kZSA9IDE7Ci0rCQkJYnJlYWs7Ci0rCQlkZWZhdWx0OgotKwkJCWZw cmludGYoc3RkZXJyLCAiVW5rbm93biBvcHRpb24gJXNcbiIsIGFyZ3ZbMV0pOwotKwkJCWdvdG8g ZW5kOwotKwkJCX0KLSsJCWFyZ3YrKzsKLSsJCWFyZ2MtLTsKLSsJCX0KLSsJaWYgKGFyZ2MgPT0g MSkKLSsJCWluID0gc3RkaW47Ci0rCWVsc2UKLSsJCWluID0gZm9wZW4oYXJndlsxXSwgInIiKTsK LSsKLSsJaWYgKGFyZ2MgPCAyKQotKwkJb3V0ID0gc3Rkb3V0OwotKwllbHNlCi0rCQlvdXQgPSBm b3Blbihhcmd2WzJdLCAidyIpOwotKwotKwlpZiAoIWluKQotKwkJewotKwkJZnByaW50ZihzdGRl cnIsICJGQVRBTCBpbnB1dCBpbml0aWFsaXphdGlvbiBlcnJvclxuIik7Ci0rCQlnb3RvIGVuZDsK LSsJCX0KLSsKLSsJaWYgKCFvdXQpCi0rCQl7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIkZBVEFMIG91 dHB1dCBpbml0aWFsaXphdGlvbiBlcnJvclxuIik7Ci0rCQlnb3RvIGVuZDsKLSsJCX0KLSsKLSsJ aWYgKCFjbWFjX3Rlc3QoY2lwaGVyLCBvdXQsIGluLCBtb2RlLAotKwkJCUtsZW5fY291bnRzX2tl eXMsIGtub3duX2tleWxlbikpCi0rCQl7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIkZBVEFMIGNtYWMg ZmlsZSBwcm9jZXNzaW5nIGVycm9yXG4iKTsKLSsJCWdvdG8gZW5kOwotKwkJfQotKwllbHNlCi0r CQlyZXQgPSAwOwotKwotKwllbmQ6Ci0rCi0rCWlmIChpbiAmJiAoaW4gIT0gc3RkaW4pKQotKwkJ ZmNsb3NlKGluKTsKLSsJaWYgKG91dCAmJiAob3V0ICE9IHN0ZG91dCkpCi0rCQlmY2xvc2Uob3V0 KTsKLSsKLSsJcmV0dXJuIHJldDsKLSsKLSsJfQotKwotKyNkZWZpbmUgQ01BQ19URVNUX01BWExJ TkVMRU4JMTUwMDAwCi0rCi0raW50IGNtYWNfdGVzdChjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXIs IEZJTEUgKm91dCwgRklMRSAqaW4sCi0rCWludCBtb2RlLCBpbnQgS2xlbl9jb3VudHNfa2V5cywg aW50IGtub3duX2tleWxlbikKLSsJewotKwljaGFyICpsaW5lYnVmLCAqb2xpbmVidWYsICpwLCAq cTsKLSsJY2hhciAqa2V5d29yZCwgKnZhbHVlOwotKwl1bnNpZ25lZCBjaGFyICoqS2V5cyA9IE5V TEwsICpNc2cgPSBOVUxMLCAqTWFjID0gTlVMTDsKLSsJdW5zaWduZWQgY2hhciAqS2V5ID0gTlVM TDsKLSsJaW50IENvdW50LCBLbGVuLCBNbGVuLCBUbGVuOwotKwlsb25nIEtleWxlbiwgTXNnbGVu LCBNYWNsZW47Ci0rCWludCByZXQgPSAwOwotKwlpbnQgbG51bSA9IDA7Ci0rCi0rCW9saW5lYnVm ID0gT1BFTlNTTF9tYWxsb2MoQ01BQ19URVNUX01BWExJTkVMRU4pOwotKwlsaW5lYnVmID0gT1BF TlNTTF9tYWxsb2MoQ01BQ19URVNUX01BWExJTkVMRU4pOwotKwotKwlpZiAoIWxpbmVidWYgfHwg IW9saW5lYnVmKQotKwkJZ290byBlcnJvcjsKLSsKLSsJQ291bnQgPSAtMTsKLSsJS2xlbiA9IC0x OwotKwlNbGVuID0gLTE7Ci0rCVRsZW4gPSAtMTsKLSsKLSsJd2hpbGUgKGZnZXRzKG9saW5lYnVm LCBDTUFDX1RFU1RfTUFYTElORUxFTiwgaW4pKQotKwkJewotKwkJbG51bSsrOwotKwkJc3RyY3B5 KGxpbmVidWYsIG9saW5lYnVmKTsKLSsJCWtleXdvcmQgPSBsaW5lYnVmOwotKwkJLyogU2tpcCBs ZWFkaW5nIHNwYWNlICovCi0rCQl3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hhcikqa2V5d29y ZCkpCi0rCQkJa2V5d29yZCsrOwotKwotKwkJLyogU2tpcCBjb21tZW50cyAqLwotKwkJaWYgKGtl eXdvcmRbMF0gPT0gJyMnKQotKwkJCXsKLSsJCQlpZiAoZnB1dHMob2xpbmVidWYsIG91dCkgPCAw KQotKwkJCQlnb3RvIGVycm9yOwotKwkJCWNvbnRpbnVlOwotKwkJCX0KLSsKLSsJCS8qIExvb2sg Zm9yID0gc2lnbiAqLwotKwkJcCA9IHN0cmNocihsaW5lYnVmLCAnPScpOwotKwotKwkJLyogSWYg bm8gPSBvciBzdGFydHMgd2l0aCBbIChmb3IgW0w9MjBdIGxpbmUpIGp1c3QgY29weSAqLwotKwkJ aWYgKCFwKQotKwkJCXsKLSsJCQlpZiAoZnB1dHMob2xpbmVidWYsIG91dCkgPCAwKQotKwkJCQln b3RvIGVycm9yOwotKwkJCWNvbnRpbnVlOwotKwkJCX0KLSsKLSsJCXEgPSBwIC0gMTsKLSsKLSsJ CS8qIFJlbW92ZSB0cmFpbGluZyBzcGFjZSAqLwotKwkJd2hpbGUgKGlzc3BhY2UoKHVuc2lnbmVk IGNoYXIpKnEpKQotKwkJCSpxLS0gPSAwOwotKwotKwkJKnAgPSAwOwotKwkJdmFsdWUgPSBwICsg MTsKLSsKLSsJCS8qIFJlbW92ZSBsZWFkaW5nIHNwYWNlIGZyb20gdmFsdWUgKi8KLSsJCXdoaWxl IChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSp2YWx1ZSkpCi0rCQkJdmFsdWUrKzsKLSsKLSsJCS8q IFJlbW92ZSB0cmFpbGluZyBzcGFjZSBmcm9tIHZhbHVlICovCi0rCQlwID0gdmFsdWUgKyBzdHJs ZW4odmFsdWUpIC0gMTsKLSsKLSsJCXdoaWxlICgqcCA9PSAnXG4nIHx8IGlzc3BhY2UoKHVuc2ln bmVkIGNoYXIpKnApKQotKwkJCSpwLS0gPSAwOwotKwotKwkJaWYgKCFzdHJjbXAoa2V5d29yZCwg IkNvdW50IikpCi0rCQkJewotKwkJCWlmIChDb3VudCAhPSAtMSkKLSsJCQkJZ290byBwYXJzZV9l cnJvcjsKLSsJCQlDb3VudCA9IGF0b2kodmFsdWUpOwotKwkJCWlmIChDb3VudCA8IDApCi0rCQkJ CWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAi S2xlbiIpKQotKwkJCXsKLSsJCQlpZiAoS2xlbiAhPSAtMSkKLSsJCQkJZ290byBwYXJzZV9lcnJv cjsKLSsJCQlLbGVuID0gYXRvaSh2YWx1ZSk7Ci0rCQkJaWYgKEtsZW4gPCAwKQotKwkJCQlnb3Rv IHBhcnNlX2Vycm9yOwotKwkJCWlmIChLbGVuX2NvdW50c19rZXlzKQotKwkJCQl7Ci0rCQkJCUtl eXMgPSBPUEVOU1NMX21hbGxvYyhzaXplb2YoKktleXMpICogS2xlbik7Ci0rCQkJCW1lbXNldChL ZXlzLCAnXDAnLCBzaXplb2YoKktleXMpICogS2xlbik7Ci0rCQkJCX0KLSsJCQllbHNlCi0rCQkJ CXsKLSsJCQkJS2V5cyA9IE9QRU5TU0xfbWFsbG9jKHNpemVvZigqS2V5cykpOwotKwkJCQltZW1z ZXQoS2V5cywgJ1wwJywgc2l6ZW9mKCpLZXlzKSk7Ci0rCQkJCX0KLSsJCQl9Ci0rCQllbHNlIGlm ICghc3RyY21wKGtleXdvcmQsICJNbGVuIikpCi0rCQkJewotKwkJCWlmIChNbGVuICE9IC0xKQot KwkJCQlnb3RvIHBhcnNlX2Vycm9yOwotKwkJCU1sZW4gPSBhdG9pKHZhbHVlKTsKLSsJCQlpZiAo TWxlbiA8IDApCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0 cmNtcChrZXl3b3JkLCAiVGxlbiIpKQotKwkJCXsKLSsJCQlpZiAoVGxlbiAhPSAtMSkKLSsJCQkJ Z290byBwYXJzZV9lcnJvcjsKLSsJCQlUbGVuID0gYXRvaSh2YWx1ZSk7Ci0rCQkJaWYgKFRsZW4g PCAwKQotKwkJCQlnb3RvIHBhcnNlX2Vycm9yOwotKwkJCX0KLSsJCWVsc2UgaWYgKCFzdHJjbXAo a2V5d29yZCwgIktleSIpICYmICFLbGVuX2NvdW50c19rZXlzKQotKwkJCXsKLSsJCQlpZiAoS2V5 c1swXSkKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQlLZXlzWzBdID0gaGV4MmJpbl9tKHZh bHVlLCAmS2V5bGVuKTsKLSsJCQlpZiAoIUtleXNbMF0pCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7 Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0cm5jbXAoa2V5d29yZCwgIktleSIsIDMpICYmIEtsZW5f Y291bnRzX2tleXMpCi0rCQkJewotKwkJCWludCBrZXludW0gPSBhdG9pKGtleXdvcmQgKyAzKTsK LSsJCQlpZiAoIWtleW51bSB8fCBrZXludW0gPiBLbGVuIHx8IEtleXNba2V5bnVtLTFdKQotKwkJ CQlnb3RvIHBhcnNlX2Vycm9yOwotKwkJCUtleXNba2V5bnVtLTFdID0gaGV4MmJpbl9tKHZhbHVl LCAmS2V5bGVuKTsKLSsJCQlpZiAoIUtleXNba2V5bnVtLTFdKQotKwkJCQlnb3RvIHBhcnNlX2Vy cm9yOwotKwkJCX0KLSsJCWVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgIk1zZyIpKQotKwkJCXsK LSsJCQlpZiAoTXNnKQotKwkJCQlnb3RvIHBhcnNlX2Vycm9yOwotKwkJCU1zZyA9IGhleDJiaW5f bSh2YWx1ZSwgJk1zZ2xlbik7Ci0rCQkJaWYgKCFNc2cpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7 Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiTWFjIikpCi0rCQkJewotKwkJ CWlmIChtb2RlID09IDApCi0rCQkJCWNvbnRpbnVlOwotKwkJCWlmIChNYWMpCi0rCQkJCWdvdG8g cGFyc2VfZXJyb3I7Ci0rCQkJTWFjID0gaGV4MmJpbl9tKHZhbHVlLCAmTWFjbGVuKTsKLSsJCQlp ZiAoIU1hYykKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQl9Ci0rCQllbHNlIGlmICghc3Ry Y21wKGtleXdvcmQsICJSZXN1bHQiKSkKLSsJCQl7Ci0rCQkJaWYgKG1vZGUgPT0gMSkKLSsJCQkJ Y29udGludWU7Ci0rCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQl9Ci0rCQllbHNlCi0rCQkJZ290 byBwYXJzZV9lcnJvcjsKLSsKLSsJCWZwdXRzKG9saW5lYnVmLCBvdXQpOwotKwotKwkJaWYgKEtl eXMgJiYgTXNnICYmICghbW9kZSB8fCBNYWMpICYmIChUbGVuID4gMCkgJiYgKEtsZW4gPiAwKSkK LSsJCQl7Ci0rCQkJaWYgKEtsZW5fY291bnRzX2tleXMpCi0rCQkJCXsKLSsJCQkJaW50IHg7Ci0r CQkJCUtleSA9IE9QRU5TU0xfbWFsbG9jKEtsZW4gKiBrbm93bl9rZXlsZW4pOwotKwkJCQlmb3Ig KHggPSAwOyB4IDwgS2xlbjsgeCsrKQotKwkJCQkJewotKwkJCQkJbWVtY3B5KEtleSArIHggKiBr bm93bl9rZXlsZW4sCi0rCQkJCQkJS2V5c1t4XSwga25vd25fa2V5bGVuKTsKLSsJCQkJCU9QRU5T U0xfZnJlZShLZXlzW3hdKTsKLSsJCQkJCX0KLSsJCQkJS2xlbiAqPSBrbm93bl9rZXlsZW47Ci0r CQkJCX0KLSsJCQllbHNlCi0rCQkJCXsKLSsJCQkJS2V5ID0gT1BFTlNTTF9tYWxsb2MoS2xlbik7 Ci0rCQkJCW1lbWNweShLZXksIEtleXNbMF0sIEtsZW4pOwotKwkJCQlPUEVOU1NMX2ZyZWUoS2V5 c1swXSk7Ci0rCQkJCX0KLSsJCQlPUEVOU1NMX2ZyZWUoS2V5cyk7Ci0rCi0rCQkJc3dpdGNoKG1v ZGUpCi0rCQkJCXsKLSsJCQljYXNlIDA6Ci0rCQkJCWlmICghcHJpbnRfY21hY19nZW4oY2lwaGVy LCBvdXQsCi0rCQkJCQkJS2V5LCBLbGVuLAotKwkJCQkJCU1zZywgTWxlbiwKLSsJCQkJCQlUbGVu KSkKLSsJCQkJCWdvdG8gZXJyb3I7Ci0rCQkJCWJyZWFrOwotKwkJCWNhc2UgMToKLSsJCQkJaWYg KCFwcmludF9jbWFjX3ZlcihjaXBoZXIsIG91dCwKLSsJCQkJCQlLZXksIEtsZW4sCi0rCQkJCQkJ TXNnLCBNbGVuLAotKwkJCQkJCU1hYywgTWFjbGVuLAotKwkJCQkJCVRsZW4pKQotKwkJCQkJZ290 byBlcnJvcjsKLSsJCQkJYnJlYWs7Ci0rCQkJCX0KLSsKLSsJCQlPUEVOU1NMX2ZyZWUoS2V5KTsK LSsJCQlLZXkgPSBOVUxMOwotKwkJCU9QRU5TU0xfZnJlZShNc2cpOwotKwkJCU1zZyA9IE5VTEw7 Ci0rCQkJT1BFTlNTTF9mcmVlKE1hYyk7Ci0rCQkJTWFjID0gTlVMTDsKLSsJCQlLbGVuID0gLTE7 Ci0rCQkJTWxlbiA9IC0xOwotKwkJCVRsZW4gPSAtMTsKLSsJCQlDb3VudCA9IC0xOwotKwkJCX0K LSsJCX0KLSsKLSsKLSsJcmV0ID0gMTsKLSsKLSsKLSsJZXJyb3I6Ci0rCi0rCWlmIChvbGluZWJ1 ZikKLSsJCU9QRU5TU0xfZnJlZShvbGluZWJ1Zik7Ci0rCWlmIChsaW5lYnVmKQotKwkJT1BFTlNT TF9mcmVlKGxpbmVidWYpOwotKwlpZiAoS2V5KQotKwkJT1BFTlNTTF9mcmVlKEtleSk7Ci0rCWlm IChNc2cpCi0rCQlPUEVOU1NMX2ZyZWUoTXNnKTsKLSsJaWYgKE1hYykKLSsJCU9QRU5TU0xfZnJl ZShNYWMpOwotKwotKwlyZXR1cm4gcmV0OwotKwotKwlwYXJzZV9lcnJvcjoKLSsKLSsJZnByaW50 ZihzdGRlcnIsICJGQVRBTCBwYXJzZSBlcnJvciBwcm9jZXNzaW5nIGxpbmUgJWRcbiIsIGxudW0p OwotKwotKwlnb3RvIGVycm9yOwotKwotKwl9Ci0rCi0rc3RhdGljIGludCBwcmludF9jbWFjX2dl bihjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXIsIEZJTEUgKm91dCwKLSsJCXVuc2lnbmVkIGNoYXIg KktleSwgaW50IEtsZW4sCi0rCQl1bnNpZ25lZCBjaGFyICpNc2csIGludCBNbGVuLAotKwkJaW50 IFRsZW4pCi0rCXsKLSsJaW50IHJjLCBpOwotKwlzaXplX3QgcmVzbGVuOwotKwl1bnNpZ25lZCBj aGFyIHJlc1sxMjhdOwotKwlDTUFDX0NUWCAqY21hY19jdHggPSBDTUFDX0NUWF9uZXcoKTsKLSsK LSsJQ01BQ19Jbml0KGNtYWNfY3R4LCBLZXksIEtsZW4sIGNpcGhlciwgMCk7Ci0rCUNNQUNfVXBk YXRlKGNtYWNfY3R4LCBNc2csIE1sZW4pOwotKwlpZiAoIUNNQUNfRmluYWwoY21hY19jdHgsIHJl cywgJnJlc2xlbikpCi0rCQl7Ci0rCQlmcHV0cygiRXJyb3IgY2FsY3VsYXRpbmcgQ01BQ1xuIiwg c3RkZXJyKTsKLSsJCXJjID0gMDsKLSsJCX0KLSsJZWxzZSBpZiAoVGxlbiA+IChpbnQpcmVzbGVu KQotKwkJewotKwkJZnB1dHMoIlBhcmFtZXRlciBlcnJvciwgVGxlbiA+IENNQUMgbGVuZ3RoXG4i LCBzdGRlcnIpOwotKwkJcmMgPSAwOwotKwkJfQotKwllbHNlCi0rCQl7Ci0rCQlmcHV0cygiTWFj ID0gIiwgb3V0KTsKLSsJCWZvciAoaSA9IDA7IGkgPCBUbGVuOyBpKyspCi0rCQkJZnByaW50Zihv dXQsICIlMDJ4IiwgcmVzW2ldKTsKLSsJCWZwdXRzKFJFU1BfRU9MLCBvdXQpOwotKwkJcmMgPSAx OwotKwkJfQotKwlDTUFDX0NUWF9mcmVlKGNtYWNfY3R4KTsKLSsJcmV0dXJuIHJjOwotKwl9Ci0r Ci0rc3RhdGljIGludCBwcmludF9jbWFjX3Zlcihjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXIsIEZJ TEUgKm91dCwKLSsJCXVuc2lnbmVkIGNoYXIgKktleSwgaW50IEtsZW4sCi0rCQl1bnNpZ25lZCBj aGFyICpNc2csIGludCBNbGVuLAotKwkJdW5zaWduZWQgY2hhciAqTWFjLCBpbnQgTWFjbGVuLAot KwkJaW50IFRsZW4pCi0rCXsKLSsJaW50IHJjID0gMTsKLSsJc2l6ZV90IHJlc2xlbjsKLSsJdW5z aWduZWQgY2hhciByZXNbMTI4XTsKLSsJQ01BQ19DVFggKmNtYWNfY3R4ID0gQ01BQ19DVFhfbmV3 KCk7Ci0rCi0rCUNNQUNfSW5pdChjbWFjX2N0eCwgS2V5LCBLbGVuLCBjaXBoZXIsIDApOwotKwlD TUFDX1VwZGF0ZShjbWFjX2N0eCwgTXNnLCBNbGVuKTsKLSsJaWYgKCFDTUFDX0ZpbmFsKGNtYWNf Y3R4LCByZXMsICZyZXNsZW4pKQotKwkJewotKwkJZnB1dHMoIkVycm9yIGNhbGN1bGF0aW5nIENN QUNcbiIsIHN0ZGVycik7Ci0rCQlyYyA9IDA7Ci0rCQl9Ci0rCWVsc2UgaWYgKFRsZW4gPiAoaW50 KXJlc2xlbikKLSsJCXsKLSsJCWZwdXRzKCJQYXJhbWV0ZXIgZXJyb3IsIFRsZW4gPiBDTUFDIGxl bmd0aFxuIiwgc3RkZXJyKTsKLSsJCXJjID0gMDsKLSsJCX0KLSsJZWxzZSBpZiAoVGxlbiAhPSBN YWNsZW4pCi0rCQl7Ci0rCQlmcHV0cygiUGFyYW1ldGVyIGVycm9yLCBUbGVuICE9IHJlc3VsdGlu ZyBNYWMgbGVuZ3RoXG4iLCBzdGRlcnIpOwotKwkJcmMgPSAwOwotKwkJfQotKwllbHNlCi0rCQl7 Ci0rCQlpZiAoIW1lbWNtcChNYWMsIHJlcywgTWFjbGVuKSkKLSsJCQlmcHV0cygiUmVzdWx0ID0g UCIgUkVTUF9FT0wsIG91dCk7Ci0rCQllbHNlCi0rCQkJZnB1dHMoIlJlc3VsdCA9IEYiIFJFU1Bf RU9MLCBvdXQpOwotKwkJfQotKwlDTUFDX0NUWF9mcmVlKGNtYWNfY3R4KTsKLSsJcmV0dXJuIHJj OwotKwl9Ci0rCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9j YXZzL2ZpcHNfZGVzbW92cy5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9m aXBzX2Rlc21vdnMuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19k ZXNtb3ZzLmMuZmlwcwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU1MjkyMjMxNCArMDEwMAotKysrIG9w ZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19kZXNtb3ZzLmMJMjAxNS0wMS0wOSAw OTo1MTo1MS41NTI5MjIzMTQgKzAxMDAKLUBAIC0wLDAgKzEsNzAyIEBACi0rLyogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDQgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUg bWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0 cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln aHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0r ICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVz ZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNr bm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZl bG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5T U0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBu YW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUg dXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g dGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBG b3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29y ZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5T U0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBw ZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1 dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0r ICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0 d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4g dGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICog VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMn JyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJF IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0r ICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ TkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B R0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNU UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF LgotKyAqCi0rICovCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSsgIE5JU1QgREVTIE1vZGVzIG9mIE9wZXJhdGlvbiBWYWxpZGF0aW9uIFN5c3RlbQot KyAgVGVzdCBQcm9ncmFtCi0rCi0rICBCYXNlZCBvbiB0aGUgQUVTIFZhbGlkYXRpb24gU3VpdGUs IHdoaWNoIHdhczoKLSsgIERvbmF0ZWQgdG8gT3BlblNTTCBieToKLSsgIFYtT05FIENvcnBvcmF0 aW9uCi0rICAyMDI1MCBDZW50dXJ5IEJsdmQsIFN1aXRlIDMwMAotKyAgR2VybWFudG93biwgTUQg MjA4NzQKLSsgIFUuUy5BLgotKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5o PgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8 YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZGVzLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSsK LSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSAiZV9vcy5oIgotKwotKyNpZm5k ZWYgT1BFTlNTTF9GSVBTCi0rCi0raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSt7 Ci0rICAgIHByaW50ZigiTm8gRklQUyBERVMgc3VwcG9ydFxuIik7Ci0rICAgIHJldHVybigwKTsK LSt9Ci0rCi0rI2Vsc2UKLSsKLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUg ImZpcHNfdXRsLmgiCi0rCi0rI2RlZmluZSBERVNfQkxPQ0tfU0laRSA4Ci0rCi0rI2RlZmluZSBW RVJCT1NFIDAKLSsKLStpbnQgREVTVGVzdChFVlBfQ0lQSEVSX0NUWCAqY3R4LAotKwkgICAgY2hh ciAqYW1vZGUsIGludCBha2V5c3osIHVuc2lnbmVkIGNoYXIgKmFLZXksIAotKwkgICAgdW5zaWdu ZWQgY2hhciAqaVZlYywgCi0rCSAgICBpbnQgZGlyLCAgLyogMCA9IGRlY3J5cHQsIDEgPSBlbmNy eXB0ICovCi0rCSAgICB1bnNpZ25lZCBjaGFyICpvdXQsIHVuc2lnbmVkIGNoYXIgKmluLCBpbnQg bGVuKQotKyAgICB7Ci0rICAgIGNvbnN0IEVWUF9DSVBIRVIgKmNpcGhlciA9IE5VTEw7Ci0rCi0r ICAgIGlmIChha2V5c3ogIT0gMTkyKQotKwl7Ci0rCXByaW50ZigiSW52YWxpZCBrZXkgc2l6ZTog JWRcbiIsIGFrZXlzeik7Ci0rCUVYSVQoMSk7Ci0rCX0KLSsKLSsgICAgaWYgKHN0cmNhc2VjbXAo YW1vZGUsICJDQkMiKSA9PSAwKQotKwljaXBoZXIgPSBFVlBfZGVzX2VkZTNfY2JjKCk7Ci0rICAg IGVsc2UgaWYgKHN0cmNhc2VjbXAoYW1vZGUsICJFQ0IiKSA9PSAwKQotKwljaXBoZXIgPSBFVlBf ZGVzX2VkZTNfZWNiKCk7Ci0rICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAoYW1vZGUsICJDRkI2NCIp ID09IDApCi0rCWNpcGhlciA9IEVWUF9kZXNfZWRlM19jZmI2NCgpOwotKyAgICBlbHNlIGlmIChz dHJuY2FzZWNtcChhbW9kZSwgIk9GQiIsIDMpID09IDApCi0rCWNpcGhlciA9IEVWUF9kZXNfZWRl M19vZmIoKTsKLSsgICAgZWxzZSBpZighc3RyY2FzZWNtcChhbW9kZSwiQ0ZCOCIpKQotKwljaXBo ZXIgPSBFVlBfZGVzX2VkZTNfY2ZiOCgpOwotKyAgICBlbHNlIGlmKCFzdHJjYXNlY21wKGFtb2Rl LCJDRkIxIikpCi0rCWNpcGhlciA9IEVWUF9kZXNfZWRlM19jZmIxKCk7Ci0rICAgIGVsc2UKLSsJ ewotKwlwcmludGYoIlVua25vd24gbW9kZTogJXNcbiIsIGFtb2RlKTsKLSsJRVhJVCgxKTsKLSsJ fQotKwotKyAgICBpZiAoRVZQX0NpcGhlckluaXRfZXgoY3R4LCBjaXBoZXIsIE5VTEwsIGFLZXks IGlWZWMsIGRpcikgPD0gMCkKLSsJcmV0dXJuIDA7Ci0rICAgIGlmKCFzdHJjYXNlY21wKGFtb2Rl LCJDRkIxIikpCi0rCU1fRVZQX0NJUEhFUl9DVFhfc2V0X2ZsYWdzKGN0eCwgRVZQX0NJUEhfRkxB R19MRU5HVEhfQklUUyk7Ci0rICAgIEVWUF9DaXBoZXIoY3R4LCBvdXQsIGluLCBsZW4pOwotKwot KyAgICByZXR1cm4gMTsKLSsgICAgfQotKwotK3ZvaWQgRGVidWdWYWx1ZShjaGFyICp0YWcsIHVu c2lnbmVkIGNoYXIgKnZhbCwgaW50IGxlbikKLSsgICAgewotKyAgICBjaGFyIG9idWZbMjA0OF07 Ci0rICAgIGludCBvbGVuOwotKyAgICBvbGVuID0gYmluMmhleCh2YWwsIGxlbiwgb2J1Zik7Ci0r ICAgIHByaW50ZigiJXMgPSAlLipzXG4iLCB0YWcsIG9sZW4sIG9idWYpOwotKyAgICB9Ci0rCi0r dm9pZCBzaGlmdGluKHVuc2lnbmVkIGNoYXIgKmRzdCx1bnNpZ25lZCBjaGFyICpzcmMsaW50IG5i aXRzKQotKyAgICB7Ci0rICAgIGludCBuOwotKwotKyAgICAvKiBtb3ZlIHRoZSBieXRlcy4uLiAq LwotKyAgICBtZW1tb3ZlKGRzdCxkc3QrbmJpdHMvOCwzKjgtbmJpdHMvOCk7Ci0rICAgIC8qIGFw cGVuZCBuZXcgZGF0YSAqLwotKyAgICBtZW1jcHkoZHN0KzMqOC1uYml0cy84LHNyYywobmJpdHMr NykvOCk7Ci0rICAgIC8qIGxlZnQgc2hpZnQgdGhlIGJpdHMgKi8KLSsgICAgaWYobmJpdHMlOCkK LSsJZm9yKG49MCA7IG4gPCAzKjggOyArK24pCi0rCSAgICBkc3Rbbl09KGRzdFtuXSA8PCAobmJp dHMlOCkpfChkc3RbbisxXSA+PiAoOC1uYml0cyU4KSk7Ci0rICAgIH0JCi0rCi0rLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0rY2hhciAqdF90YWdb Ml0gPSB7IlBMQUlOVEVYVCIsICJDSVBIRVJURVhUIn07Ci0rY2hhciAqdF9tb2RlWzZdID0geyJD QkMiLCJFQ0IiLCJPRkIiLCJDRkIxIiwiQ0ZCOCIsIkNGQjY0In07Ci0rZW51bSBNb2RlIHtDQkMs IEVDQiwgT0ZCLCBDRkIxLCBDRkI4LCBDRkI2NH07Ci0raW50IFNpemVzWzZdPXs2NCw2NCw2NCwx LDgsNjR9OwotKwotK3ZvaWQgZG9fbWN0KGNoYXIgKmFtb2RlLCAKLSsJICAgIGludCBha2V5c3os IGludCBudW1rZXlzLCB1bnNpZ25lZCBjaGFyICpha2V5LHVuc2lnbmVkIGNoYXIgKml2ZWMsCi0r CSAgICBpbnQgZGlyLCB1bnNpZ25lZCBjaGFyICp0ZXh0LCBpbnQgbGVuLAotKwkgICAgRklMRSAq cmZwKQotKyAgICB7Ci0rICAgIGludCBpLGltb2RlOwotKyAgICB1bnNpZ25lZCBjaGFyIG5rWzQq OF07IC8qIGxvbmdlc3Qga2V5KzggKi8KLSsgICAgdW5zaWduZWQgY2hhciB0ZXh0MFs4XTsKLSsK LSsgICAgZm9yIChpbW9kZT0wIDsgaW1vZGUgPCA2IDsgKytpbW9kZSkKLSsJaWYoIXN0cmNtcChh bW9kZSx0X21vZGVbaW1vZGVdKSkKLSsJICAgIGJyZWFrOwotKyAgICBpZiAoaW1vZGUgPT0gNikK LSsJeyAKLSsJcHJpbnRmKCJVbnJlY29nbml6ZWQgbW9kZTogJXNcbiIsIGFtb2RlKTsKLSsJRVhJ VCgxKTsKLSsJfQotKwotKyAgICBmb3IoaT0wIDsgaSA8IDQwMCA7ICsraSkKLSsJewotKwlpbnQg ajsKLSsJaW50IG47Ci0rCWludCBrcD1ha2V5c3ovNjQ7Ci0rCXVuc2lnbmVkIGNoYXIgb2xkX2l2 WzhdOwotKwlFVlBfQ0lQSEVSX0NUWCBjdHg7Ci0rCUVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0eCk7 Ci0rCi0rCWZwcmludGYocmZwLCJcbkNPVU5UID0gJWRcbiIsaSk7Ci0rCWlmKGtwID09IDEpCi0r CSAgICBPdXRwdXRWYWx1ZSgiS0VZIixha2V5LDgscmZwLDApOwotKwllbHNlCi0rCSAgICBmb3Io bj0wIDsgbiA8IGtwIDsgKytuKQotKwkJewotKwkJZnByaW50ZihyZnAsIktFWSVkIixuKzEpOwot KwkJT3V0cHV0VmFsdWUoIiIsYWtleStuKjgsOCxyZnAsMCk7Ci0rCQl9Ci0rCi0rCWlmKGltb2Rl ICE9IEVDQikKLSsJICAgIE91dHB1dFZhbHVlKCJJViIsaXZlYyw4LHJmcCwwKTsKLSsJT3V0cHV0 VmFsdWUodF90YWdbZGlyXjFdLHRleHQsbGVuLHJmcCxpbW9kZSA9PSBDRkIxKTsKLSsjaWYgMAot KwkvKiBjb21wZW5zYXRlIGZvciBlbmRpYW5uZXNzICovCi0rCWlmKGltb2RlID09IENGQjEpCi0r CSAgICB0ZXh0WzBdPDw9NzsKLSsjZW5kaWYKLSsJbWVtY3B5KHRleHQwLHRleHQsOCk7Ci0rCi0r CWZvcihqPTAgOyBqIDwgMTAwMDAgOyArK2opCi0rCSAgICB7Ci0rCSAgICB1bnNpZ25lZCBjaGFy IG9sZF90ZXh0WzhdOwotKwotKwkgICAgbWVtY3B5KG9sZF90ZXh0LHRleHQsOCk7Ci0rCSAgICBp ZihqID09IDApCi0rCQl7Ci0rCQltZW1jcHkob2xkX2l2LGl2ZWMsOCk7Ci0rCQlERVNUZXN0KCZj dHgsYW1vZGUsYWtleXN6LGFrZXksaXZlYyxkaXIsdGV4dCx0ZXh0LGxlbik7Ci0rCQl9Ci0rCSAg ICBlbHNlCi0rCQl7Ci0rCQltZW1jcHkob2xkX2l2LGN0eC5pdiw4KTsKLSsJCUVWUF9DaXBoZXIo JmN0eCx0ZXh0LHRleHQsbGVuKTsKLSsJCX0KLSsJICAgIGlmKGogPT0gOTk5OSkKLSsJCXsKLSsJ CU91dHB1dFZhbHVlKHRfdGFnW2Rpcl0sdGV4dCxsZW4scmZwLGltb2RlID09IENGQjEpOwotKwkJ LyoJCW1lbWNweShpdmVjLHRleHQsOCk7ICovCi0rCQl9Ci0rCSAgICAvKgkgICAgRGVidWdWYWx1 ZSgiaXYiLGN0eC5pdiw4KTsgKi8KLSsJICAgIC8qIGFjY3VtdWxhdGUgbWF0ZXJpYWwgZm9yIHRo ZSBuZXh0IGtleSAqLwotKwkgICAgc2hpZnRpbihuayx0ZXh0LFNpemVzW2ltb2RlXSk7Ci0rCSAg ICAvKgkgICAgRGVidWdWYWx1ZSgibmsiLG5rLDI0KTsqLwotKwkgICAgaWYoKGRpciAmJiAoaW1v ZGUgPT0gQ0ZCMSB8fCBpbW9kZSA9PSBDRkI4IHx8IGltb2RlID09IENGQjY0Ci0rCQkJfHwgaW1v ZGUgPT0gQ0JDKSkgfHwgaW1vZGUgPT0gT0ZCKQotKwkJbWVtY3B5KHRleHQsb2xkX2l2LDgpOwot KwotKwkgICAgaWYoIWRpciAmJiAoaW1vZGUgPT0gQ0ZCMSB8fCBpbW9kZSA9PSBDRkI4IHx8IGlt b2RlID09IENGQjY0KSkKLSsJCXsKLSsJCS8qIHRoZSB0ZXN0IHNwZWNpZmllcyB1c2luZyB0aGUg b3V0cHV0IG9mIHRoZSByYXcgREVTIG9wZXJhdGlvbgotKwkJICAgd2hpY2ggd2UgZG9uJ3QgaGF2 ZSwgc28gcmVjb25zdHJ1Y3QgaXQuLi4gKi8KLSsJCWZvcihuPTAgOyBuIDwgOCA7ICsrbikKLSsJ CSAgICB0ZXh0W25dXj1vbGRfdGV4dFtuXTsKLSsJCX0KLSsJICAgIH0KLSsJZm9yKG49MCA7IG4g PCA4IDsgKytuKQotKwkgICAgYWtleVtuXV49bmtbMTYrbl07Ci0rCWZvcihuPTAgOyBuIDwgOCA7 ICsrbikKLSsJICAgIGFrZXlbOCtuXV49bmtbOCtuXTsKLSsJZm9yKG49MCA7IG4gPCA4IDsgKytu KQotKwkgICAgYWtleVsxNituXV49bmtbbl07Ci0rCWlmKG51bWtleXMgPCAzKQotKwkgICAgbWVt Y3B5KCZha2V5WzIqOF0sYWtleSw4KTsKLSsJaWYobnVta2V5cyA8IDIpCi0rCSAgICBtZW1jcHko JmFrZXlbOF0sYWtleSw4KTsKLSsJREVTX3NldF9vZGRfcGFyaXR5KChERVNfY2Jsb2NrICopYWtl eSk7Ci0rCURFU19zZXRfb2RkX3Bhcml0eSgoREVTX2NibG9jayAqKShha2V5KzgpKTsKLSsJREVT X3NldF9vZGRfcGFyaXR5KChERVNfY2Jsb2NrICopKGFrZXkrMTYpKTsKLSsJbWVtY3B5KGl2ZWMs Y3R4Lml2LDgpOwotKwotKwkvKiBwb2ludGxlc3MgZXhlcmNpc2UgLSB0aGUgZmluYWwgdGV4dCBk b2Vzbid0IGRlcGVuZCBvbiB0aGUKLSsJICAgaW5pdGlhbCB0ZXh0IGluIE9GQiBtb2RlLCBzbyB3 aG8gY2FyZXMgd2hhdCBpdCBpcz8gKFdobwotKwkgICBkZXNpZ25lZCB0aGVzZSB0ZXN0cz8pICov Ci0rCWlmKGltb2RlID09IE9GQikKLSsJICAgIGZvcihuPTAgOyBuIDwgOCA7ICsrbikKLSsJCXRl eHRbbl09dGV4dDBbbl1eb2xkX2l2W25dOwotKwl9Ci0rICAgIH0KLSsgICAgCi0raW50IHByb2Nf ZmlsZShjaGFyICpycWZpbGUsIGNoYXIgKnJzcGZpbGUpCi0rICAgIHsKLSsgICAgY2hhciBhZm5b MjU2XSwgcmZuWzI1Nl07Ci0rICAgIEZJTEUgKmFmcCA9IE5VTEwsICpyZnAgPSBOVUxMOwotKyAg ICBjaGFyIGlidWZbMjA0OF0sIHRidWZbMjA0OF07Ci0rICAgIGludCBpbGVuLCBsZW4sIHJldCA9 IDA7Ci0rICAgIGNoYXIgYW1vZGVbOF0gPSAiIjsKLSsgICAgY2hhciBhdGVzdFsxMDBdID0gIiI7 Ci0rICAgIGludCBha2V5c3o9MDsKLSsgICAgdW5zaWduZWQgY2hhciBpVmVjWzIwXSwgYUtleVs0 MF07Ci0rICAgIGludCBkaXIgPSAtMSwgZXJyID0gMCwgc3RlcCA9IDA7Ci0rICAgIHVuc2lnbmVk IGNoYXIgcGxhaW50ZXh0WzIwNDhdOwotKyAgICB1bnNpZ25lZCBjaGFyIGNpcGhlcnRleHRbMjA0 OF07Ci0rICAgIGNoYXIgKnJwOwotKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7Ci0rICAgIGludCBu dW1rZXlzPTE7Ci0rICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0eCk7Ci0rCi0rICAgIGlmICgh cnFmaWxlIHx8ICEoKnJxZmlsZSkpCi0rCXsKLSsJcHJpbnRmKCJObyByZXEgZmlsZVxuIik7Ci0r CXJldHVybiAtMTsKLSsJfQotKyAgICBzdHJjcHkoYWZuLCBycWZpbGUpOwotKwotKyAgICBpZiAo KGFmcCA9IGZvcGVuKGFmbiwgInIiKSkgPT0gTlVMTCkKLSsJewotKwlwcmludGYoIkNhbm5vdCBv cGVuIGZpbGU6ICVzLCAlc1xuIiwgCi0rCSAgICAgICBhZm4sIHN0cmVycm9yKGVycm5vKSk7Ci0r CXJldHVybiAtMTsKLSsJfQotKyAgICBpZiAoIXJzcGZpbGUpCi0rCXsKLSsJc3RyY3B5KHJmbixh Zm4pOwotKwlycD1zdHJzdHIocmZuLCJyZXEvIik7Ci0rI2lmZGVmIE9QRU5TU0xfU1lTX1dJTjMy Ci0rCWlmICghcnApCi0rCSAgICBycD1zdHJzdHIocmZuLCJyZXFcXCIpOwotKyNlbmRpZgotKwlh c3NlcnQocnApOwotKwltZW1jcHkocnAsInJzcCIsMyk7Ci0rCXJwID0gc3Ryc3RyKHJmbiwgIi5y ZXEiKTsKLSsJbWVtY3B5KHJwLCAiLnJzcCIsIDQpOwotKwlyc3BmaWxlID0gcmZuOwotKwl9Ci0r ICAgIGlmICgocmZwID0gZm9wZW4ocnNwZmlsZSwgInciKSkgPT0gTlVMTCkKLSsJewotKwlwcmlu dGYoIkNhbm5vdCBvcGVuIGZpbGU6ICVzLCAlc1xuIiwgCi0rCSAgICAgICByZm4sIHN0cmVycm9y KGVycm5vKSk7Ci0rCWZjbG9zZShhZnApOwotKwlhZnAgPSBOVUxMOwotKwlyZXR1cm4gLTE7Ci0r CX0KLSsgICAgd2hpbGUgKCFlcnIgJiYgKGZnZXRzKGlidWYsIHNpemVvZihpYnVmKSwgYWZwKSkg IT0gTlVMTCkKLSsJewotKwl0aWR5X2xpbmUodGJ1ZiwgaWJ1Zik7Ci0rCWlsZW4gPSBzdHJsZW4o aWJ1Zik7Ci0rCS8qCXByaW50Zigic3RlcD0lZCBpYnVmPSVzIixzdGVwLGlidWYpOyovCi0rCWlm KHN0ZXAgPT0gMyAmJiAhc3RyY21wKGFtb2RlLCJFQ0IiKSkKLSsJICAgIHsKLSsJICAgIG1lbXNl dChpVmVjLCAwLCBzaXplb2YoaVZlYykpOwotKwkgICAgc3RlcCA9IChkaXIpPyA0OiA1OyAgLyog bm8gaXZlYyBmb3IgRUNCICovCi0rCSAgICB9Ci0rCXN3aXRjaCAoc3RlcCkKLSsJICAgIHsKLSsJ Y2FzZSAwOiAgLyogcmVhZCBwcmVhbWJsZSAqLwotKwkgICAgaWYgKGlidWZbMF0gPT0gJ1xuJykK LSsJCXsgLyogZW5kIG9mIHByZWFtYmxlICovCi0rCQlpZiAoKmFtb2RlID09ICdcMCcpCi0rCQkg ICAgewotKwkJICAgIHByaW50ZigiTWlzc2luZyBNb2RlXG4iKTsKLSsJCSAgICBlcnIgPSAxOwot KwkJICAgIH0KLSsJCWVsc2UKLSsJCSAgICB7Ci0rCQkgICAgZnB1dHMoaWJ1ZiwgcmZwKTsKLSsJ CSAgICArKyBzdGVwOwotKwkJICAgIH0KLSsJCX0KLSsJICAgIGVsc2UgaWYgKGlidWZbMF0gIT0g JyMnKQotKwkJewotKwkJcHJpbnRmKCJJbnZhbGlkIHByZWFtYmxlIGl0ZW06ICVzXG4iLCBpYnVm KTsKLSsJCWVyciA9IDE7Ci0rCQl9Ci0rCSAgICBlbHNlCi0rCQl7IC8qIHByb2Nlc3MgcHJlYW1i bGUgKi8KLSsJCWNoYXIgKnhwLCAqcHAgPSBpYnVmKzI7Ci0rCQlpbnQgbjsKLSsJCWlmKCphbW9k ZSkKLSsJCSAgICB7IC8qIGluc2VydCBjdXJyZW50IHRpbWUgJiBkYXRlICovCi0rCQkgICAgdGlt ZV90IHJ0aW0gPSB0aW1lKDApOwotKwkJICAgIGZwcmludGYocmZwLCAiIyAlcyIsIGN0aW1lKCZy dGltKSk7Ci0rCQkgICAgfQotKwkJZWxzZQotKwkJICAgIHsKLSsJCSAgICBmcHV0cyhpYnVmLCBy ZnApOwotKwkJICAgIGlmKCFzdHJuY21wKHBwLCJJTlZFUlNFICIsOCkgfHwgIXN0cm5jbXAocHAs IkRFUyAiLDQpCi0rCQkgICAgICAgfHwgIXN0cm5jbXAocHAsIlRERVMgIiw1KQotKwkJICAgICAg IHx8ICFzdHJuY21wKHBwLCJQRVJNVVRBVElPTiAiLDEyKQotKwkJICAgICAgIHx8ICFzdHJuY21w KHBwLCJTVUJTVElUVVRJT04gIiwxMykKLSsJCSAgICAgICB8fCAhc3RybmNtcChwcCwiVkFSSUFC TEUgIiw5KSkKLSsJCQl7Ci0rCQkJLyogZ2V0IHRlc3QgdHlwZSAqLwotKwkJCWlmKCFzdHJuY21w KHBwLCJERVMgIiw0KSkKLSsJCQkgICAgcHArPTQ7Ci0rCQkJZWxzZSBpZighc3RybmNtcChwcCwi VERFUyAiLDUpKQotKwkJCSAgICBwcCs9NTsKLSsJCQl4cCA9IHN0cmNocihwcCwgJyAnKTsKLSsJ CQluID0geHAtcHA7Ci0rCQkJc3RybmNweShhdGVzdCwgcHAsIG4pOwotKwkJCWF0ZXN0W25dID0g J1wwJzsKLSsJCQkvKiBnZXQgbW9kZSAqLwotKwkJCXhwID0gc3RycmNocihwcCwgJyAnKTsgLyog Z2V0IG1vZGUiICovCi0rCQkJbiA9IHN0cmxlbih4cCsxKS0xOwotKwkJCXN0cm5jcHkoYW1vZGUs IHhwKzEsIG4pOwotKwkJCWFtb2RlW25dID0gJ1wwJzsKLSsJCQkvKiBhbW9kZVszXSA9ICdcMCc7 ICovCi0rCQkJaWYgKFZFUkJPU0UpCi0rCQkJCXByaW50ZigiVGVzdD0lcywgTW9kZT0lc1xuIixh dGVzdCxhbW9kZSk7Ci0rCQkJfQotKwkJICAgIH0KLSsJCX0KLSsJICAgIGJyZWFrOwotKwotKwlj YXNlIDE6ICAvKiBbRU5DUllQVF0gfCBbREVDUllQVF0gKi8KLSsJICAgIGlmKGlidWZbMF0gPT0g J1xuJykKLSsJCWJyZWFrOwotKwkgICAgaWYgKGlidWZbMF0gPT0gJ1snKQotKwkJewotKwkJZnB1 dHMoaWJ1ZiwgcmZwKTsKLSsJCSsrc3RlcDsKLSsJCWlmIChzdHJuY2FzZWNtcChpYnVmLCAiW0VO Q1JZUFRdIiwgOSkgPT0gMCkKLSsJCSAgICBkaXIgPSAxOwotKwkJZWxzZSBpZiAoc3RybmNhc2Vj bXAoaWJ1ZiwgIltERUNSWVBUXSIsIDkpID09IDApCi0rCQkgICAgZGlyID0gMDsKLSsJCWVsc2UK LSsJCSAgICB7Ci0rCQkgICAgcHJpbnRmKCJJbnZhbGlkIGtleXdvcmQ6ICVzXG4iLCBpYnVmKTsK LSsJCSAgICBlcnIgPSAxOwotKwkJICAgIH0KLSsJCWJyZWFrOwotKwkJfQotKwkgICAgZWxzZSBp ZiAoZGlyID09IC0xKQotKwkJewotKwkJZXJyID0gMTsKLSsJCXByaW50ZigiTWlzc2luZyBFTkNS WVBUL0RFQ1JZUFQga2V5d29yZFxuIik7Ci0rCQlicmVhazsKLSsJCX0KLSsJICAgIGVsc2UgCi0r CQlzdGVwID0gMjsKLSsKLSsJY2FzZSAyOiAvKiBLRVkgPSB4eHh4ICovCi0rCSAgICBpZigqaWJ1 ZiA9PSAnXG4nKQotKwkJewotKwkgICAgICAgIGZwdXRzKGlidWYsIHJmcCk7Ci0rCQlicmVhazsK LSsgICAgICAgICAgICAgICAgfQotKwkgICAgaWYoIXN0cm5jYXNlY21wKGlidWYsIkNPVU5UID0g Iiw4KSkKLSsJCXsKLSsJICAgICAgICBmcHV0cyhpYnVmLCByZnApOwotKwkJYnJlYWs7Ci0rICAg ICAgICAgICAgICAgIH0KLSsJICAgIGlmKCFzdHJuY2FzZWNtcChpYnVmLCJDT1VOVD0iLDYpKQot KwkJewotKwkgICAgICAgIGZwdXRzKGlidWYsIHJmcCk7Ci0rCQlicmVhazsKLSsgICAgICAgICAg ICAgICAgfQotKwkgICAgaWYoIXN0cm5jYXNlY21wKGlidWYsIk51bUtleXMgPSAiLDEwKSkKLSsJ CXsKLSsJCW51bWtleXM9YXRvaShpYnVmKzEwKTsKLSsJCWJyZWFrOwotKwkJfQotKwkgIAotKwkg ICAgZnB1dHMoaWJ1ZiwgcmZwKTsKLSsJICAgIGlmKCFzdHJuY2FzZWNtcChpYnVmLCJLRVkgPSAi LDYpKQotKwkJewotKwkJYWtleXN6PTY0OwotKwkJbGVuID0gaGV4MmJpbigoY2hhciopaWJ1Zis2 LCBhS2V5KTsKLSsJCWlmIChsZW4gPCAwKQotKwkJICAgIHsKLSsJCSAgICBwcmludGYoIkludmFs aWQgS0VZXG4iKTsKLSsJCSAgICBlcnI9MTsKLSsJCSAgICBicmVhazsKLSsJCSAgICB9Ci0rCQlQ cmludFZhbHVlKCJLRVkiLCBhS2V5LCBsZW4pOwotKwkJKytzdGVwOwotKwkJfQotKwkgICAgZWxz ZSBpZighc3RybmNhc2VjbXAoaWJ1ZiwiS0VZcyA9ICIsNykpCi0rCQl7Ci0rCQlha2V5c3o9NjQq MzsKLSsJCWxlbj1oZXgyYmluKGlidWYrNyxhS2V5KTsKLSsJCWlmKGxlbiAhPSA4KQotKwkJICAg IHsKLSsJCSAgICBwcmludGYoIkludmFsaWQgS0VZXG4iKTsKLSsJCSAgICBlcnI9MTsKLSsJCSAg ICBicmVhazsKLSsJCSAgICB9Ci0rCQltZW1jcHkoYUtleSs4LGFLZXksOCk7Ci0rCQltZW1jcHko YUtleSsxNixhS2V5LDgpOwotKwkJaWJ1Zls0XT0nXDAnOwotKwkJUHJpbnRWYWx1ZSgiS0VZcyIs YUtleSxsZW4pOwotKwkJKytzdGVwOwotKwkJfQotKwkgICAgZWxzZSBpZighc3RybmNhc2VjbXAo aWJ1ZiwiS0VZIiwzKSkKLSsJCXsKLSsJCWludCBuPWlidWZbM10tJzEnOwotKwotKwkJYWtleXN6 PTY0KjM7Ci0rCQlsZW49aGV4MmJpbihpYnVmKzcsYUtleStuKjgpOwotKwkJaWYobGVuICE9IDgp Ci0rCQkgICAgewotKwkJICAgIHByaW50ZigiSW52YWxpZCBLRVlcbiIpOwotKwkJICAgIGVycj0x OwotKwkJICAgIGJyZWFrOwotKwkJICAgIH0KLSsJCWlidWZbNF09J1wwJzsKLSsJCVByaW50VmFs dWUoaWJ1ZixhS2V5LGxlbik7Ci0rCQlpZihuID09IDIpCi0rCQkgICAgKytzdGVwOwotKwkJfQot KwkgICAgZWxzZQotKwkJewotKwkJcHJpbnRmKCJNaXNzaW5nIEtFWVxuIik7Ci0rCQllcnIgPSAx OwotKwkJfQotKwkgICAgYnJlYWs7Ci0rCi0rCWNhc2UgMzogLyogSVYgPSB4eHh4ICovCi0rCSAg ICBmcHV0cyhpYnVmLCByZnApOwotKwkgICAgaWYgKHN0cm5jYXNlY21wKGlidWYsICJJViA9ICIs IDUpICE9IDApCi0rCQl7Ci0rCQlwcmludGYoIk1pc3NpbmcgSVZcbiIpOwotKwkJZXJyID0gMTsK LSsJCX0KLSsJICAgIGVsc2UKLSsJCXsKLSsJCWxlbiA9IGhleDJiaW4oKGNoYXIqKWlidWYrNSwg aVZlYyk7Ci0rCQlpZiAobGVuIDwgMCkKLSsJCSAgICB7Ci0rCQkgICAgcHJpbnRmKCJJbnZhbGlk IElWXG4iKTsKLSsJCSAgICBlcnIgPTE7Ci0rCQkgICAgYnJlYWs7Ci0rCQkgICAgfQotKwkJUHJp bnRWYWx1ZSgiSVYiLCBpVmVjLCBsZW4pOwotKwkJc3RlcCA9IChkaXIpPyA0OiA1OwotKwkJfQot KwkgICAgYnJlYWs7Ci0rCi0rCWNhc2UgNDogLyogUExBSU5URVhUID0geHh4eCAqLwotKwkgICAg ZnB1dHMoaWJ1ZiwgcmZwKTsKLSsJICAgIGlmIChzdHJuY2FzZWNtcChpYnVmLCAiUExBSU5URVhU ID0gIiwgMTIpICE9IDApCi0rCQl7Ci0rCQlwcmludGYoIk1pc3NpbmcgUExBSU5URVhUXG4iKTsK LSsJCWVyciA9IDE7Ci0rCQl9Ci0rCSAgICBlbHNlCi0rCQl7Ci0rCQlpbnQgbm4gPSBzdHJsZW4o aWJ1ZisxMik7Ci0rCQlpZighc3RyY21wKGFtb2RlLCJDRkIxIikpCi0rCQkgICAgbGVuPWJpbnQy YmluKGlidWYrMTIsbm4tMSxwbGFpbnRleHQpOwotKwkJZWxzZQotKwkJICAgIGxlbj1oZXgyYmlu KGlidWYrMTIsIHBsYWludGV4dCk7Ci0rCQlpZiAobGVuIDwgMCkKLSsJCSAgICB7Ci0rCQkgICAg cHJpbnRmKCJJbnZhbGlkIFBMQUlOVEVYVDogJXMiLCBpYnVmKzEyKTsKLSsJCSAgICBlcnIgPTE7 Ci0rCQkgICAgYnJlYWs7Ci0rCQkgICAgfQotKwkJaWYgKGxlbiA+PSBzaXplb2YocGxhaW50ZXh0 KSkKLSsJCSAgICB7Ci0rCQkgICAgcHJpbnRmKCJCdWZmZXIgb3ZlcmZsb3dcbiIpOwotKwkJICAg IH0KLSsJCVByaW50VmFsdWUoIlBMQUlOVEVYVCIsICh1bnNpZ25lZCBjaGFyKilwbGFpbnRleHQs IGxlbik7Ci0rCQlpZiAoc3RyY21wKGF0ZXN0LCAiTW9udGUiKSA9PSAwKSAgLyogTW9udGUgQ2Fy bG8gVGVzdCAqLwotKwkJICAgIHsKLSsJCSAgICBkb19tY3QoYW1vZGUsYWtleXN6LG51bWtleXMs YUtleSxpVmVjLGRpcixwbGFpbnRleHQsbGVuLHJmcCk7Ci0rCQkgICAgfQotKwkJZWxzZQotKwkJ ICAgIHsKLSsJCSAgICBhc3NlcnQoZGlyID09IDEpOwotKwkJICAgIHJldCA9IERFU1Rlc3QoJmN0 eCwgYW1vZGUsIGFrZXlzeiwgYUtleSwgaVZlYywgCi0rCQkJCSAgZGlyLCAgLyogMCA9IGRlY3J5 cHQsIDEgPSBlbmNyeXB0ICovCi0rCQkJCSAgY2lwaGVydGV4dCwgcGxhaW50ZXh0LCBsZW4pOwot KwkJICAgIE91dHB1dFZhbHVlKCJDSVBIRVJURVhUIixjaXBoZXJ0ZXh0LGxlbixyZnAsCi0rCQkJ CSFzdHJjbXAoYW1vZGUsIkNGQjEiKSk7Ci0rCQkgICAgfQotKwkJc3RlcCA9IDY7Ci0rCQl9Ci0r CSAgICBicmVhazsKLSsKLSsJY2FzZSA1OiAvKiBDSVBIRVJURVhUID0geHh4eCAqLwotKwkgICAg ZnB1dHMoaWJ1ZiwgcmZwKTsKLSsJICAgIGlmIChzdHJuY2FzZWNtcChpYnVmLCAiQ0lQSEVSVEVY VCA9ICIsIDEzKSAhPSAwKQotKwkJewotKwkJcHJpbnRmKCJNaXNzaW5nIEtFWVxuIik7Ci0rCQll cnIgPSAxOwotKwkJfQotKwkgICAgZWxzZQotKwkJewotKwkJaWYoIXN0cmNtcChhbW9kZSwiQ0ZC MSIpKQotKwkJICAgIGxlbj1iaW50MmJpbihpYnVmKzEzLHN0cmxlbihpYnVmKzEzKS0xLGNpcGhl cnRleHQpOwotKwkJZWxzZQotKwkJICAgIGxlbiA9IGhleDJiaW4oaWJ1ZisxMyxjaXBoZXJ0ZXh0 KTsKLSsJCWlmIChsZW4gPCAwKQotKwkJICAgIHsKLSsJCSAgICBwcmludGYoIkludmFsaWQgQ0lQ SEVSVEVYVFxuIik7Ci0rCQkgICAgZXJyID0xOwotKwkJICAgIGJyZWFrOwotKwkJICAgIH0KLSsJ CQotKwkJUHJpbnRWYWx1ZSgiQ0lQSEVSVEVYVCIsIGNpcGhlcnRleHQsIGxlbik7Ci0rCQlpZiAo c3RyY21wKGF0ZXN0LCAiTW9udGUiKSA9PSAwKSAgLyogTW9udGUgQ2FybG8gVGVzdCAqLwotKwkJ ICAgIHsKLSsJCSAgICBkb19tY3QoYW1vZGUsIGFrZXlzeiwgbnVta2V5cywgYUtleSwgaVZlYywg Ci0rCQkJICAgZGlyLCBjaXBoZXJ0ZXh0LCBsZW4sIHJmcCk7Ci0rCQkgICAgfQotKwkJZWxzZQot KwkJICAgIHsKLSsJCSAgICBhc3NlcnQoZGlyID09IDApOwotKwkJICAgIHJldCA9IERFU1Rlc3Qo JmN0eCwgYW1vZGUsIGFrZXlzeiwgYUtleSwgaVZlYywgCi0rCQkJCSAgZGlyLCAgLyogMCA9IGRl Y3J5cHQsIDEgPSBlbmNyeXB0ICovCi0rCQkJCSAgcGxhaW50ZXh0LCBjaXBoZXJ0ZXh0LCBsZW4p OwotKwkJICAgIE91dHB1dFZhbHVlKCJQTEFJTlRFWFQiLCh1bnNpZ25lZCBjaGFyICopcGxhaW50 ZXh0LGxlbixyZnAsCi0rCQkJCSFzdHJjbXAoYW1vZGUsIkNGQjEiKSk7Ci0rCQkgICAgfQotKwkJ c3RlcCA9IDY7Ci0rCQl9Ci0rCSAgICBicmVhazsKLSsKLSsJY2FzZSA2OgotKwkgICAgaWYgKGli dWZbMF0gIT0gJ1xuJykKLSsJCXsKLSsJCWVyciA9IDE7Ci0rCQlwcmludGYoIk1pc3NpbmcgdGVy bWluYXRvclxuIik7Ci0rCQl9Ci0rCSAgICBlbHNlIGlmIChzdHJjbXAoYXRlc3QsICJNQ1QiKSAh PSAwKQotKwkJeyAvKiBNQ1QgYWxyZWFkeSBhZGRlZCB0ZXJtaW5hdGluZyBubCAqLwotKwkJZnB1 dHMoaWJ1ZiwgcmZwKTsKLSsJCX0KLSsJICAgIHN0ZXAgPSAxOwotKwkgICAgYnJlYWs7Ci0rCSAg ICB9Ci0rCX0KLSsgICAgaWYgKHJmcCkKLSsJZmNsb3NlKHJmcCk7Ci0rICAgIGlmIChhZnApCi0r CWZjbG9zZShhZnApOwotKyAgICByZXR1cm4gZXJyOwotKyAgICB9Ci0rCi0rLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyAgUHJvY2Vzc2VzIGVp dGhlciBhIHNpbmdsZSBmaWxlIG9yIAotKyAgYSBzZXQgb2YgZmlsZXMgd2hvc2UgbmFtZXMgYXJl IHBhc3NlZCBpbiBhIGZpbGUuCi0rICBBIHNpbmdsZSBmaWxlIGlzIHNwZWNpZmllZCBhczoKLSsg ICAgYWVzX3Rlc3QgLWYgeHh4LnJlcQotKyAgQSBzZXQgb2YgZmlsZXMgaXMgc3BlY2lmaWVkIGFz OgotKyAgICBhZXNfdGVzdCAtZCB4eHh4eC54eHgKLSsgIFRoZSBkZWZhdWx0IGlzOiAtZCByZXEu dHh0Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q LwotK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsgICAgewotKyAgICBjaGFyICpy cWxpc3QgPSAicmVxLnR4dCIsICpyc3BmaWxlID0gTlVMTDsKLSsgICAgRklMRSAqZnAgPSBOVUxM OwotKyAgICBjaGFyIGZuWzI1MF0gPSAiIiwgcmZuWzI1Nl0gPSAiIjsKLSsgICAgaW50IGZfb3B0 ID0gMCwgZF9vcHQgPSAxOwotKwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYoIUZJUFNf bW9kZV9zZXQoMSkpCi0rCXsKLSsJZG9fcHJpbnRfZXJyb3JzKCk7Ci0rCUVYSVQoMSk7Ci0rCX0K LSsjZW5kaWYKLSsgICAgaWYgKGFyZ2MgPiAxKQotKwl7Ci0rCWlmIChzdHJjYXNlY21wKGFyZ3Zb MV0sICItZCIpID09IDApCi0rCSAgICB7Ci0rCSAgICBkX29wdCA9IDE7Ci0rCSAgICB9Ci0rCWVs c2UgaWYgKHN0cmNhc2VjbXAoYXJndlsxXSwgIi1mIikgPT0gMCkKLSsJICAgIHsKLSsJICAgIGZf b3B0ID0gMTsKLSsJICAgIGRfb3B0ID0gMDsKLSsJICAgIH0KLSsJZWxzZQotKwkgICAgewotKwkg ICAgcHJpbnRmKCJJbnZhbGlkIHBhcmFtZXRlcjogJXNcbiIsIGFyZ3ZbMV0pOwotKwkgICAgcmV0 dXJuIDA7Ci0rCSAgICB9Ci0rCWlmIChhcmdjIDwgMykKLSsJICAgIHsKLSsJICAgIHByaW50Zigi TWlzc2luZyBwYXJhbWV0ZXJcbiIpOwotKwkgICAgcmV0dXJuIDA7Ci0rCSAgICB9Ci0rCWlmIChk X29wdCkKLSsJICAgIHJxbGlzdCA9IGFyZ3ZbMl07Ci0rCWVsc2UKLSsJICAgIHsKLSsJICAgIHN0 cmNweShmbiwgYXJndlsyXSk7Ci0rCSAgICByc3BmaWxlID0gYXJndlszXTsKLSsJICAgIH0KLSsJ fQotKyAgICBpZiAoZF9vcHQpCi0rCXsgLyogbGlzdCBvZiBmaWxlcyAoZGlyZWN0b3J5KSAqLwot KwlpZiAoIShmcCA9IGZvcGVuKHJxbGlzdCwgInIiKSkpCi0rCSAgICB7Ci0rCSAgICBwcmludGYo IkNhbm5vdCBvcGVuIHJlcSBsaXN0IGZpbGVcbiIpOwotKwkgICAgcmV0dXJuIC0xOwotKwkgICAg fQotKwl3aGlsZSAoZmdldHMoZm4sIHNpemVvZihmbiksIGZwKSkKLSsJICAgIHsKLSsJICAgIHN0 cnRvayhmbiwgIlxyXG4iKTsKLSsJICAgIHN0cmNweShyZm4sIGZuKTsKLSsJICAgIHByaW50Zigi UHJvY2Vzc2luZzogJXNcbiIsIHJmbik7Ci0rCSAgICBpZiAocHJvY19maWxlKHJmbiwgcnNwZmls ZSkpCi0rCQl7Ci0rCQlwcmludGYoIj4+PiBQcm9jZXNzaW5nIGZhaWxlZCBmb3I6ICVzIDw8PFxu IiwgcmZuKTsKLSsJCUVYSVQoMSk7Ci0rCQl9Ci0rCSAgICB9Ci0rCWZjbG9zZShmcCk7Ci0rCX0K LSsgICAgZWxzZSAvKiBzaW5nbGUgZmlsZSAqLwotKwl7Ci0rCWlmIChWRVJCT1NFKQotKwkJcHJp bnRmKCJQcm9jZXNzaW5nOiAlc1xuIiwgZm4pOwotKwlpZiAocHJvY19maWxlKGZuLCByc3BmaWxl KSkKLSsJICAgIHsKLSsJICAgIHByaW50ZigiPj4+IFByb2Nlc3NpbmcgZmFpbGVkIGZvcjogJXMg PDw8XG4iLCBmbik7Ci0rCSAgICB9Ci0rCX0KLSsgICAgRVhJVCgwKTsKLSsgICAgcmV0dXJuIDA7 Ci0rICAgIH0KLSsKLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBz L2NhdnMvZmlwc19kaHZzLmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9jYXZzL2Zp cHNfZGh2cy5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX2RodnMu Yy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTUzOTIyMzM2ICswMTAwCi0rKysgb3BlbnNzbC0x LjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX2RodnMuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU1 MzkyMjMzNiArMDEwMAotQEAgLTAsMCArMSwyOTIgQEAKLSsvKiBmaXBzL2RoL2ZpcHNfZGh2cy5j ICovCi0rLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9y ZykgZm9yIHRoZSBPcGVuU1NMCi0rICogcHJvamVjdC4KLSsgKi8KLSsvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot KyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6 Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAz LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m IHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVz ICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2Vk IHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3 cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgbGljZW5zaW5nQE9wZW5T U0wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg bWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBw ZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Np b24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBv ZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBh Y2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl dmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3Bl blNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiBUSElTIFNP RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBB TlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xB SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMg Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAq IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLSsgKi8KLSsKLSsKLSsjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQotKyNpbmNs dWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+Ci0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLSsj aW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0r ewotKyAgICBwcmludGYoIk5vIEZJUFMgREggc3VwcG9ydFxuIik7Ci0rICAgIHJldHVybigwKTsK LSt9Ci0rI2Vsc2UKLSsKLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9ibi5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2RoLmg+Ci0rI2luY2x1ZGUgPG9wZW5z c2wvZmlwcy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3Ns L2V2cC5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsKLSsj aW5jbHVkZSAiZmlwc191dGwuaCIKLSsKLStzdGF0aWMgY29uc3QgRVZQX01EICpwYXJzZV9tZChj aGFyICpsaW5lKQotKwl7Ci0rCWNoYXIgKnA7Ci0rCWlmIChsaW5lWzBdICE9ICdbJyB8fCBsaW5l WzFdICE9ICdGJykKLSsJCXJldHVybiBOVUxMOwotKwlwID0gc3RyY2hyKGxpbmUsICctJyk7Ci0r CWlmICghcCkKLSsJCXJldHVybiBOVUxMOwotKwlsaW5lID0gcCArIDE7Ci0rCXAgPSBzdHJjaHIo bGluZSwgJ10nKTsKLSsJaWYgKCFwKQotKwkJcmV0dXJuIE5VTEw7Ci0rCSpwID0gMDsKLSsJcCA9 IGxpbmU7Ci0rCXdoaWxlKGlzc3BhY2UoKnApKQotKwkJcCsrOwotKwlpZiAoIXN0cmNtcChwLCAi U0hBMSIpKQotKwkJcmV0dXJuIEVWUF9zaGExKCk7Ci0rCWVsc2UgaWYgKCFzdHJjbXAocCwgIlNI QTIyNCIpKQotKwkJcmV0dXJuIEVWUF9zaGEyMjQoKTsKLSsJZWxzZSBpZiAoIXN0cmNtcChwLCAi U0hBMjU2IikpCi0rCQlyZXR1cm4gRVZQX3NoYTI1NigpOwotKwllbHNlIGlmICghc3RyY21wKHAs ICJTSEEzODQiKSkKLSsJCXJldHVybiBFVlBfc2hhMzg0KCk7Ci0rCWVsc2UgaWYgKCFzdHJjbXAo cCwgIlNIQTUxMiIpKQotKwkJcmV0dXJuIEVWUF9zaGE1MTIoKTsKLSsJZWxzZQotKwkJcmV0dXJu IE5VTEw7Ci0rCX0KLSsKLStzdGF0aWMgdm9pZCBvdXRwdXRfWmhhc2goRklMRSAqb3V0LCBpbnQg ZXhvdXQsCi0rCQkJCURIICpkaCwgQklHTlVNICpwZWVya2V5LCBjb25zdCBFVlBfTUQgKm1kLAot KwkJCQl1bnNpZ25lZCBjaGFyICpyaGFzaCwgc2l6ZV90IHJoYXNobGVuKQotKwl7Ci0rCXVuc2ln bmVkIGNoYXIgKlo7Ci0rCXVuc2lnbmVkIGNoYXIgY2hhc2hbRVZQX01BWF9NRF9TSVpFXTsKLSsJ aW50IFpsZW47Ci0rCWlmIChyaGFzaCA9PSBOVUxMKQotKwkJewotKwkJcmhhc2hsZW4gPSBNX0VW UF9NRF9zaXplKG1kKTsKLSsJCWlmICghREhfZ2VuZXJhdGVfa2V5KGRoKSkKLSsJCQlleGl0ICgx KTsKLSsJCWRvX2JuX3ByaW50X25hbWUob3V0LCAiWWVwaGVtSVVUIiwgZGgtPnB1Yl9rZXkpOwot KwkJaWYgKGV4b3V0KQotKwkJCWRvX2JuX3ByaW50X25hbWUob3V0LCAiWGVwaGVtSVVUIiwgZGgt PnByaXZfa2V5KTsKLSsJCX0KLSsJWiA9IE9QRU5TU0xfbWFsbG9jKEJOX251bV9ieXRlcyhkaC0+ cCkpOwotKwlpZiAoIVopCi0rCQlleGl0KDEpOwotKwlabGVuID0gREhfY29tcHV0ZV9rZXlfcGFk ZGVkKFosIHBlZXJrZXksIGRoKTsKLSsJaWYgKGV4b3V0KQotKwkJT3V0cHV0VmFsdWUoIloiLCBa LCBabGVuLCBvdXQsIDApOwotKwlGSVBTX2RpZ2VzdChaLCBabGVuLCBjaGFzaCwgTlVMTCwgbWQp OwotKwlPdXRwdXRWYWx1ZShyaGFzaCA/ICJJVVRIYXNoWloiIDogIkhhc2haWiIsIGNoYXNoLCBy aGFzaGxlbiwgb3V0LCAwKTsKLSsJaWYgKHJoYXNoKQotKwkJewotKwkJZnByaW50ZihvdXQsICJS ZXN1bHQgPSAlc1xuIiwKLSsJCQkJbWVtY21wKGNoYXNoLCByaGFzaCwgcmhhc2hsZW4pID8gIkYi IDogIlAiKTsKLSsJCX0KLSsJZWxzZQotKwkJewotKwkJQk5fY2xlYXJfZnJlZShkaC0+cHJpdl9r ZXkpOwotKwkJQk5fY2xlYXJfZnJlZShkaC0+cHViX2tleSk7Ci0rCQlkaC0+cHJpdl9rZXkgPSBO VUxMOwotKwkJZGgtPnB1Yl9rZXkgPSBOVUxMOwotKwkJfQotKwlPUEVOU1NMX2NsZWFuc2UoWiwg Wmxlbik7Ci0rCU9QRU5TU0xfZnJlZShaKTsKLSsJfQotKwotKyNpZmRlZiBGSVBTX0FMR1ZTCi0r aW50IGZpcHNfZGh2c19tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsjZWxzZQotK2ludCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsjZW5kaWYKLSsJewotKwljaGFyICoqYXJncyA9 IGFyZ3YgKyAxOwotKwlpbnQgYXJnbiA9IGFyZ2MgLSAxOwotKwlGSUxFICppbiwgKm91dDsKLSsJ Y2hhciBidWZbMjA0OF0sIGxidWZbMjA0OF07Ci0rCXVuc2lnbmVkIGNoYXIgKnJoYXNoOwotKwls b25nIHJoYXNobGVuOwotKwlESCAqZGggPSBOVUxMOwotKwljb25zdCBFVlBfTUQgKm1kID0gTlVM TDsKLSsJQklHTlVNICpwZWVya2V5ID0gTlVMTDsKLSsJY2hhciAqa2V5d29yZCA9IE5VTEwsICp2 YWx1ZSA9IE5VTEw7Ci0rCWludCBkb192ZXJpZnkgPSAtMSwgZXhvdXQgPSAwOwotKwotKwlmaXBz X2FsZ3Rlc3RfaW5pdCgpOwotKwotKwlpZiAoYXJnbiAmJiAhc3RyY21wKCphcmdzLCAiZGh2ZXIi KSkKLSsJCXsKLSsJCWRvX3ZlcmlmeSA9IDE7Ci0rCQlhcmdzKys7Ci0rCQlhcmduLS07Ci0rCQl9 Ci0rCWVsc2UgaWYgKGFyZ24gJiYgIXN0cmNtcCgqYXJncywgImRoZ2VuIikpCi0rCQl7Ci0rCQlk b192ZXJpZnkgPSAwOwotKwkJYXJncysrOwotKwkJYXJnbi0tOwotKwkJfQotKwotKwlpZiAoYXJn biAmJiAhc3RyY21wKCphcmdzLCAiLWV4b3V0IikpCi0rCQl7Ci0rCQlleG91dCA9IDE7Ci0rCQlh cmdzKys7Ci0rCQlhcmduLS07Ci0rCQl9Ci0rCi0rCWlmIChkb192ZXJpZnkgPT0gLTEpCi0rCQl7 Ci0rCQlmcHJpbnRmKHN0ZGVyciwiJXMgW2RodmVyfGRoZ2VufF0gWy1leG91dF0gKGluZmlsZSBv dXRmaWxlKVxuIixhcmd2WzBdKTsKLSsJCWV4aXQoMSk7Ci0rCQl9Ci0rCi0rCWlmIChhcmduID09 IDIpCi0rCQl7Ci0rCQlpbiA9IGZvcGVuKCphcmdzLCAiciIpOwotKwkJaWYgKCFpbikKLSsJCQl7 Ci0rCQkJZnByaW50ZihzdGRlcnIsICJFcnJvciBvcGVuaW5nIGlucHV0IGZpbGVcbiIpOwotKwkJ CWV4aXQoMSk7Ci0rCQkJfQotKwkJb3V0ID0gZm9wZW4oYXJnc1sxXSwgInciKTsKLSsJCWlmICgh b3V0KQotKwkJCXsKLSsJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgb3V0cHV0IGZp bGVcbiIpOwotKwkJCWV4aXQoMSk7Ci0rCQkJfQotKwkJfQotKwllbHNlIGlmIChhcmduID09IDAp Ci0rCQl7Ci0rCQlpbiA9IHN0ZGluOwotKwkJb3V0ID0gc3Rkb3V0OwotKwkJfQotKwllbHNlCi0r CQl7Ci0rCQlmcHJpbnRmKHN0ZGVyciwiJXMgW2RodmVyfGRoZ2VufF0gWy1leG91dF0gKGluZmls ZSBvdXRmaWxlKVxuIixhcmd2WzBdKTsKLSsJCWV4aXQoMSk7Ci0rCQl9Ci0rCi0rCWRoID0gRklQ U19kaF9uZXcoKTsKLSsKLSsJd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGluKSAhPSBO VUxMKQotKwkJewotKwkJZnB1dHMoYnVmLCBvdXQpOwotKwkJaWYgKHN0cmxlbihidWYpID4gNiAm JiAhc3RybmNtcChidWYsICJbRiIsIDIpKQotKwkJCXsKLSsJCQltZCA9IHBhcnNlX21kKGJ1Zik7 Ci0rCQkJaWYgKG1kID09IE5VTEwpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJaWYgKGRo KQotKwkJCQlGSVBTX2RoX2ZyZWUoZGgpOwotKwkJCWRoID0gRklQU19kaF9uZXcoKTsKLSsJCQlj b250aW51ZTsKLSsJCQl9Ci0rCQlpZiAoIXBhcnNlX2xpbmUoJmtleXdvcmQsICZ2YWx1ZSwgbGJ1 ZiwgYnVmKSkKLSsJCQljb250aW51ZTsKLSsJCWlmICghc3RyY21wKGtleXdvcmQsICJQIikpCi0r CQkJewotKwkJCWlmICghZG9faGV4MmJuKCZkaC0+cCwgdmFsdWUpKQotKwkJCQlnb3RvIHBhcnNl X2Vycm9yOwotKwkJCX0KLSsJCWVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgIlEiKSkKLSsJCQl7 Ci0rCQkJaWYgKCFkb19oZXgyYm4oJmRoLT5xLCB2YWx1ZSkpCi0rCQkJCWdvdG8gcGFyc2VfZXJy b3I7Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiRyIpKQotKwkJCXsKLSsJ CQlpZiAoIWRvX2hleDJibigmZGgtPmcsIHZhbHVlKSkKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsK LSsJCQl9Ci0rCQllbHNlIGlmICghc3RyY21wKGtleXdvcmQsICJYZXBoZW1JVVQiKSkKLSsJCQl7 Ci0rCQkJaWYgKCFkb19oZXgyYm4oJmRoLT5wcml2X2tleSwgdmFsdWUpKQotKwkJCQlnb3RvIHBh cnNlX2Vycm9yOwotKwkJCX0KLSsJCWVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgIlllcGhlbUlV VCIpKQotKwkJCXsKLSsJCQlpZiAoIWRvX2hleDJibigmZGgtPnB1Yl9rZXksIHZhbHVlKSkKLSsJ CQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQl9Ci0rCQllbHNlIGlmICghc3RyY21wKGtleXdvcmQs ICJZZXBoZW1DQVZTIikpCi0rCQkJewotKwkJCWlmICghZG9faGV4MmJuKCZwZWVya2V5LCB2YWx1 ZSkpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJaWYgKGRvX3ZlcmlmeSA9PSAwKQotKwkJ CQlvdXRwdXRfWmhhc2gob3V0LCBleG91dCwgZGgsIHBlZXJrZXksIG1kLAotKwkJCQkJCQlOVUxM LCAwKTsKLSsJCQl9Ci0rCQllbHNlIGlmICghc3RyY21wKGtleXdvcmQsICJDQVZTSGFzaFpaIikp Ci0rCQkJewotKwkJCWlmICghbWQpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJcmhhc2gg PSBoZXgyYmluX20odmFsdWUsICZyaGFzaGxlbik7Ci0rCQkJaWYgKCFyaGFzaCB8fCByaGFzaGxl biAhPSBNX0VWUF9NRF9zaXplKG1kKSkKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQlvdXRw dXRfWmhhc2gob3V0LCBleG91dCwgZGgsIHBlZXJrZXksIG1kLAotKwkJCQkJCQlyaGFzaCwgcmhh c2hsZW4pOwotKwkJCX0KLSsJCX0KLSsJaWYgKGluICYmIGluICE9IHN0ZGluKQotKwkJZmNsb3Nl KGluKTsKLSsJaWYgKG91dCAmJiBvdXQgIT0gc3Rkb3V0KQotKwkJZmNsb3NlKG91dCk7Ci0rCXJl dHVybiAwOwotKwlwYXJzZV9lcnJvcjoKLSsJZnByaW50ZihzdGRlcnIsICJFcnJvciBQYXJzaW5n IHJlcXVlc3QgZmlsZVxuIik7Ci0rCWV4aXQoMSk7Ci0rCX0KLSsKLSsjZW5kaWYKLWRpZmYgLXVw IG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19kcmJndnMuYy5maXBzIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19kcmJndnMuYwotLS0tIG9wZW5zc2wtMS4w LjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19kcmJndnMuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6 NTEuNTUzOTIyMzM2ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9m aXBzX2RyYmd2cy5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTUzOTIyMzM2ICswMTAwCi1AQCAtMCww ICsxLDQxNiBAQAotKy8qIGZpcHMvcmFuZC9maXBzX2RyYmd2cy5jICovCi0rLyogV3JpdHRlbiBi eSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NM Ci0rICogcHJvamVjdC4KLSsgKi8KLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykg MjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAq IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAq ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcg bWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0 d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3 dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQi IGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK LSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24s IHBsZWFzZSBjb250YWN0Ci0rICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICog NS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQg Ik9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVz IHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wg UHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29l dmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRw Oi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF Ci0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICog Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKi8K LSsKLSsKLSsjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQotKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5z c2xjb25mLmg+Ci0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLSsjaW5jbHVkZSA8c3RkaW8uaD4K LSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgICBwcmludGYoIk5v IEZJUFMgRFJCRyBzdXBwb3J0XG4iKTsKLSsgICAgcmV0dXJuKDApOwotK30KLSsjZWxzZQotKwot KyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZHNhLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgot KyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotKyNp bmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsKLSsjaW5jbHVkZSAiZmlw c191dGwuaCIKLSsKLStzdGF0aWMgaW50IGRwYXJzZV9tZChjaGFyICpzdHIpCi0rCXsKLSsJc3dp dGNoKGF0b2koc3RyICsgNSkpCi0rCQl7Ci0rCQljYXNlIDE6Ci0rCQlyZXR1cm4gTklEX3NoYTE7 Ci0rCi0rCQljYXNlIDIyNDoKLSsJCXJldHVybiBOSURfc2hhMjI0OwotKwotKwkJY2FzZSAyNTY6 Ci0rCQlyZXR1cm4gTklEX3NoYTI1NjsKLSsKLSsJCWNhc2UgMzg0OgotKwkJcmV0dXJuIE5JRF9z aGEzODQ7Ci0rCi0rCQljYXNlIDUxMjoKLSsJCXJldHVybiBOSURfc2hhNTEyOwotKwotKwkJfQot KwotKwlyZXR1cm4gTklEX3VuZGVmOwotKwl9Ci0rCi0rc3RhdGljIGludCBwYXJzZV9lYyhjaGFy ICpzdHIpCi0rCXsKLSsJaW50IGN1cnZlX25pZCwgbWRfbmlkOwotKwljaGFyICptZDsKLSsJbWQg PSBzdHJjaHIoc3RyLCAnICcpOwotKwlpZiAoIW1kKQotKwkJcmV0dXJuIE5JRF91bmRlZjsKLSsJ aWYgKCFzdHJuY21wKHN0ciwgIltQLTI1NiIsIDYpKQotKwkJY3VydmVfbmlkID0gTklEX1g5XzYy X3ByaW1lMjU2djE7Ci0rCWVsc2UgaWYgKCFzdHJuY21wKHN0ciwgIltQLTM4NCIsIDYpKQotKwkJ Y3VydmVfbmlkID0gTklEX3NlY3AzODRyMTsKLSsJZWxzZSBpZiAoIXN0cm5jbXAoc3RyLCAiW1At NTIxIiwgNikpCi0rCQljdXJ2ZV9uaWQgPSBOSURfc2VjcDUyMXIxOwotKwllbHNlCi0rCQlyZXR1 cm4gTklEX3VuZGVmOwotKwltZF9uaWQgPSBkcGFyc2VfbWQobWQpOwotKwlpZiAobWRfbmlkID09 IE5JRF91bmRlZikKLSsJCXJldHVybiBOSURfdW5kZWY7Ci0rCXJldHVybiAoY3VydmVfbmlkIDw8 IDE2KSB8IG1kX25pZDsKLSsJfQotKwotK3N0YXRpYyBpbnQgcGFyc2VfYWVzKGNoYXIgKnN0ciwg aW50ICpwZGYpCi0rCXsKLSsKLSsJaWYgKCFzdHJuY21wKHN0ciArIDksICJubyIsIDIpKQotKwkJ KnBkZiA9IDA7Ci0rCWVsc2UKLSsJCSpwZGYgPSBEUkJHX0ZMQUdfQ1RSX1VTRV9ERjsKLSsKLSsJ c3dpdGNoKGF0b2koc3RyICsgNSkpCi0rCQl7Ci0rCQljYXNlIDEyODoKLSsJCXJldHVybiBOSURf YWVzXzEyOF9jdHI7Ci0rCi0rCQljYXNlIDE5MjoKLSsJCXJldHVybiBOSURfYWVzXzE5Ml9jdHI7 Ci0rCi0rCQljYXNlIDI1NjoKLSsJCXJldHVybiBOSURfYWVzXzI1Nl9jdHI7Ci0rCi0rCQlkZWZh dWx0OgotKwkJcmV0dXJuIE5JRF91bmRlZjsKLSsKLSsJCX0KLSsJfQotKwotK3R5cGVkZWYgc3Ry dWN0IAotKwl7Ci0rCXVuc2lnbmVkIGNoYXIgKmVudDsKLSsJc2l6ZV90IGVudGxlbjsKLSsJdW5z aWduZWQgY2hhciAqbm9uY2U7Ci0rCXNpemVfdCBub25jZWxlbjsKLSsJfSBURVNUX0VOVDsKLSsK LStzdGF0aWMgc2l6ZV90IHRlc3RfZW50cm9weShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hh ciAqKnBvdXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwg c2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVuKQotKwl7Ci0rCVRFU1RfRU5UICp0ID0gRklQ U19kcmJnX2dldF9hcHBfZGF0YShkY3R4KTsKLSsJKnBvdXQgPSAodW5zaWduZWQgY2hhciAqKXQt PmVudDsKLSsJcmV0dXJuIHQtPmVudGxlbjsKLSsJfQotKwotK3N0YXRpYyBzaXplX3QgdGVzdF9u b25jZShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqKnBvdXQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBt YXhfbGVuKQotKwl7Ci0rCVRFU1RfRU5UICp0ID0gRklQU19kcmJnX2dldF9hcHBfZGF0YShkY3R4 KTsKLSsJKnBvdXQgPSAodW5zaWduZWQgY2hhciAqKXQtPm5vbmNlOwotKwlyZXR1cm4gdC0+bm9u Y2VsZW47Ci0rCX0KLSsKLSsjaWZkZWYgRklQU19BTEdWUwotK2ludCBmaXBzX2RyYmd2c19tYWlu KGludCBhcmdjLGNoYXIgKiphcmd2KQotKyNlbHNlCi0raW50IG1haW4oaW50IGFyZ2MsY2hhciAq KmFyZ3YpCi0rI2VuZGlmCi0rCXsKLSsJRklMRSAqaW4gPSBOVUxMLCAqb3V0ID0gTlVMTDsKLSsJ RFJCR19DVFggKmRjdHggPSBOVUxMOwotKwlURVNUX0VOVCB0OwotKwlpbnQgciwgbmlkID0gMDsK LSsJaW50IHByID0gMDsKLSsJY2hhciBidWZbMjA0OF0sIGxidWZbMjA0OF07Ci0rCXVuc2lnbmVk IGNoYXIgcmFuZG91dFsyMDQ4XTsKLSsJY2hhciAqa2V5d29yZCA9IE5VTEwsICp2YWx1ZSA9IE5V TEw7Ci0rCi0rCXVuc2lnbmVkIGNoYXIgKmVudCA9IE5VTEwsICpub25jZSA9IE5VTEwsICpwZXJz ID0gTlVMTCwgKmFkaW4gPSBOVUxMOwotKwlsb25nIGVudGxlbiwgbm9uY2VsZW4sIHBlcnNsZW4s IGFkaW5sZW47Ci0rCWludCBkZiA9IDA7Ci0rCi0rCWVudW0gZHR5cGUgeyBEUkJHX05PTkUsIERS QkdfQ1RSLCBEUkJHX0hBU0gsIERSQkdfSE1BQywgRFJCR19EVUFMX0VDIH0KLSsJCWRyYmdfdHlw ZSA9IERSQkdfTk9ORTsKLSsKLSsJaW50IHJhbmRvdXRsZW4gPSAwOwotKwotKwlpbnQgZ2VuID0g MDsKLSsKLSsJZmlwc19hbGd0ZXN0X2luaXQoKTsKLSsKLSsJaWYgKGFyZ2MgPT0gMykKLSsJCXsK LSsJCWluID0gZm9wZW4oYXJndlsxXSwgInIiKTsKLSsJCWlmICghaW4pCi0rCQkJewotKwkJCWZw cmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBpbnB1dCBmaWxlXG4iKTsKLSsJCQlleGl0KDEp OwotKwkJCX0KLSsJCW91dCA9IGZvcGVuKGFyZ3ZbMl0sICJ3Iik7Ci0rCQlpZiAoIW91dCkKLSsJ CQl7Ci0rCQkJZnByaW50ZihzdGRlcnIsICJFcnJvciBvcGVuaW5nIG91dHB1dCBmaWxlXG4iKTsK LSsJCQlleGl0KDEpOwotKwkJCX0KLSsJCX0KLSsJZWxzZSBpZiAoYXJnYyA9PSAxKQotKwkJewot KwkJaW4gPSBzdGRpbjsKLSsJCW91dCA9IHN0ZG91dDsKLSsJCX0KLSsJZWxzZQotKwkJewotKwkJ ZnByaW50ZihzdGRlcnIsIiVzIChpbmZpbGUgb3V0ZmlsZSlcbiIsYXJndlswXSk7Ci0rCQlleGl0 KDEpOwotKwkJfQotKwotKwl3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgaW4pICE9IE5V TEwpCi0rCQl7Ci0rCQlmcHV0cyhidWYsIG91dCk7Ci0rCQlpZiAoZHJiZ190eXBlID09IERSQkdf Tk9ORSkKLSsJCQl7Ci0rCQkJaWYgKHN0cnN0cihidWYsICJDVFJfRFJCRyIpKQotKwkJCQlkcmJn X3R5cGUgPSBEUkJHX0NUUjsKLSsJCQllbHNlIGlmIChzdHJzdHIoYnVmLCAiSGFzaF9EUkJHIikp Ci0rCQkJCWRyYmdfdHlwZSA9IERSQkdfSEFTSDsKLSsJCQllbHNlIGlmIChzdHJzdHIoYnVmLCAi SE1BQ19EUkJHIikpCi0rCQkJCWRyYmdfdHlwZSA9IERSQkdfSE1BQzsKLSsJCQllbHNlIGlmIChz dHJzdHIoYnVmLCAiRHVhbF9FQ19EUkJHIikpCi0rCQkJCWRyYmdfdHlwZSA9IERSQkdfRFVBTF9F QzsKLSsJCQllbHNlCi0rCQkJCWNvbnRpbnVlOwotKwkJCX0KLSsJCWlmIChzdHJsZW4oYnVmKSA+ IDQgJiYgIXN0cm5jbXAoYnVmLCAiW1NIQS0iLCA1KSkKLSsJCQl7Ci0rCQkJbmlkID0gZHBhcnNl X21kKGJ1Zik7Ci0rCQkJaWYgKG5pZCA9PSBOSURfdW5kZWYpCi0rCQkJCWV4aXQoMSk7Ci0rCQkJ aWYgKGRyYmdfdHlwZSA9PSBEUkJHX0hNQUMpCi0rCQkJCXsKLSsJCQkJc3dpdGNoIChuaWQpCi0r CQkJCQl7Ci0rCQkJCQljYXNlIE5JRF9zaGExOgotKwkJCQkJbmlkID0gTklEX2htYWNXaXRoU0hB MTsKLSsJCQkJCWJyZWFrOwotKwotKwkJCQkJY2FzZSBOSURfc2hhMjI0OgotKwkJCQkJbmlkID0g TklEX2htYWNXaXRoU0hBMjI0OwotKwkJCQkJYnJlYWs7Ci0rCi0rCQkJCQljYXNlIE5JRF9zaGEy NTY6Ci0rCQkJCQluaWQgPSBOSURfaG1hY1dpdGhTSEEyNTY7Ci0rCQkJCQlicmVhazsKLSsKLSsJ CQkJCWNhc2UgTklEX3NoYTM4NDoKLSsJCQkJCW5pZCA9IE5JRF9obWFjV2l0aFNIQTM4NDsKLSsJ CQkJCWJyZWFrOwotKwotKwkJCQkJY2FzZSBOSURfc2hhNTEyOgotKwkJCQkJbmlkID0gTklEX2ht YWNXaXRoU0hBNTEyOwotKwkJCQkJYnJlYWs7Ci0rCi0rCQkJCQlkZWZhdWx0OgotKwkJCQkJZXhp dCgxKTsKLSsJCQkJCX0KLSsJCQkJfQotKwkJCX0KLSsJCWlmIChzdHJsZW4oYnVmKSA+IDEyICYm ICFzdHJuY21wKGJ1ZiwgIltBRVMtIiwgNSkpCi0rCQkJewotKwkJCW5pZCA9IHBhcnNlX2Flcyhi dWYsICZkZik7Ci0rCQkJaWYgKG5pZCA9PSBOSURfdW5kZWYpCi0rCQkJCWV4aXQoMSk7Ci0rCQkJ fQotKwkJaWYgKHN0cmxlbihidWYpID4gMTIgJiYgIXN0cm5jbXAoYnVmLCAiW1AtIiwgMykpCi0r CQkJewotKwkJCW5pZCA9IHBhcnNlX2VjKGJ1Zik7Ci0rCQkJaWYgKG5pZCA9PSBOSURfdW5kZWYp Ci0rCQkJCWV4aXQoMSk7Ci0rCQkJfQotKwkJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFs dWUsIGxidWYsIGJ1ZikpCi0rCQkJY29udGludWU7Ci0rCi0rCQlpZiAoIXN0cmNtcChrZXl3b3Jk LCAiW1ByZWRpY3Rpb25SZXNpc3RhbmNlIikpCi0rCQkJewotKwkJCWlmICghc3RyY21wKHZhbHVl LCAiVHJ1ZV0iKSkKLSsJCQkJcHIgPSAxOwotKwkJCWVsc2UgaWYgKCFzdHJjbXAodmFsdWUsICJG YWxzZV0iKSkKLSsJCQkJcHIgPSAwOwotKwkJCWVsc2UKLSsJCQkJZXhpdCgxKTsKLSsJCQl9Ci0r Ci0rCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiRW50cm9weUlucHV0IikpCi0rCQkJewotKwkJCWVu dCA9IGhleDJiaW5fbSh2YWx1ZSwgJmVudGxlbik7Ci0rCQkJdC5lbnQgPSBlbnQ7Ci0rCQkJdC5l bnRsZW4gPSBlbnRsZW47Ci0rCQkJfQotKwotKwkJaWYgKCFzdHJjbXAoa2V5d29yZCwgIk5vbmNl IikpCi0rCQkJewotKwkJCW5vbmNlID0gaGV4MmJpbl9tKHZhbHVlLCAmbm9uY2VsZW4pOwotKwkJ CXQubm9uY2UgPSBub25jZTsKLSsJCQl0Lm5vbmNlbGVuID0gbm9uY2VsZW47Ci0rCQkJfQotKwot KwkJaWYgKCFzdHJjbXAoa2V5d29yZCwgIlBlcnNvbmFsaXphdGlvblN0cmluZyIpKQotKwkJCXsK LSsJCQlwZXJzID0gaGV4MmJpbl9tKHZhbHVlLCAmcGVyc2xlbik7Ci0rCQkJaWYgKG5pZCA9PSAw KQotKwkJCQl7Ci0rCQkJCWZwcmludGYoc3RkZXJyLCAiRFJCRyB0eXBlIG5vdCByZWNvZ25pc2Vk IVxuIik7Ci0rCQkJCWV4aXQgKDEpOwotKwkJCQl9Ci0rCQkJZGN0eCA9IEZJUFNfZHJiZ19uZXco bmlkLCBkZiB8IERSQkdfRkxBR19URVNUKTsKLSsJCQlpZiAoIWRjdHgpCi0rCQkJCWV4aXQgKDEp OwotKwkJCUZJUFNfZHJiZ19zZXRfY2FsbGJhY2tzKGRjdHgsIHRlc3RfZW50cm9weSwgMCwgMCwK LSsJCQkJCQkJdGVzdF9ub25jZSwgMCk7Ci0rCQkJRklQU19kcmJnX3NldF9hcHBfZGF0YShkY3R4 LCAmdCk7Ci0rCQkJcmFuZG91dGxlbiA9IChpbnQpRklQU19kcmJnX2dldF9ibG9ja2xlbmd0aChk Y3R4KTsKLSsJCQlyID0gRklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHBlcnMsIHBlcnNsZW4p OwotKwkJCWlmICghcikKLSsJCQkJewotKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGluc3Rh bnRpYXRpbmcgRFJCR1xuIik7Ci0rCQkJCWV4aXQoMSk7Ci0rCQkJCX0KLSsJCQlPUEVOU1NMX2Zy ZWUocGVycyk7Ci0rCQkJT1BFTlNTTF9mcmVlKGVudCk7Ci0rCQkJT1BFTlNTTF9mcmVlKG5vbmNl KTsKLSsJCQllbnQgPSBub25jZSA9IHBlcnMgPSBOVUxMOwotKwkJCWdlbiA9IDA7Ci0rCQkJfQot KwotKwkJaWYgKCFzdHJjbXAoa2V5d29yZCwgIkFkZGl0aW9uYWxJbnB1dCIpKQotKwkJCXsKLSsJ CQlhZGluID0gaGV4MmJpbl9tKHZhbHVlLCAmYWRpbmxlbik7Ci0rCQkJaWYgKHByKQotKwkJCQlj b250aW51ZTsKLSsJCQlyID0gRklQU19kcmJnX2dlbmVyYXRlKGRjdHgsIHJhbmRvdXQsIHJhbmRv dXRsZW4sIDAsCi0rCQkJCQkJCQlhZGluLCBhZGlubGVuKTsKLSsJCQlpZiAoIXIpCi0rCQkJCXsK LSsJCQkJZnByaW50ZihzdGRlcnIsICJFcnJvciBnZW5lcmF0aW5nIERSQkcgYml0c1xuIik7Ci0r CQkJCWV4aXQoMSk7Ci0rCQkJCX0KLSsJCQlpZiAoIXIpCi0rCQkJCWV4aXQoMSk7Ci0rCQkJT1BF TlNTTF9mcmVlKGFkaW4pOwotKwkJCWFkaW4gPSBOVUxMOwotKwkJCWdlbisrOwotKwkJCX0KLSsK LSsJCWlmIChwcikKLSsJCQl7Ci0rCQkJaWYgKCFzdHJjbXAoa2V5d29yZCwgIkVudHJvcHlJbnB1 dFBSIikpCi0rCQkJCXsKLSsJCQkJZW50ID0gaGV4MmJpbl9tKHZhbHVlLCAmZW50bGVuKTsKLSsJ CQkJdC5lbnQgPSBlbnQ7Ci0rCQkJCXQuZW50bGVuID0gZW50bGVuOwotKwkJCQlyID0gRklQU19k cmJnX2dlbmVyYXRlKGRjdHgsCi0rCQkJCQkJCXJhbmRvdXQsIHJhbmRvdXRsZW4sCi0rCQkJCQkJ CTEsIGFkaW4sIGFkaW5sZW4pOwotKwkJCQlpZiAoIXIpCi0rCQkJCQl7Ci0rCQkJCQlmcHJpbnRm KHN0ZGVyciwKLSsJCQkJCQkiRXJyb3IgZ2VuZXJhdGluZyBEUkJHIGJpdHNcbiIpOwotKwkJCQkJ ZXhpdCgxKTsKLSsJCQkJCX0KLSsJCQkJT1BFTlNTTF9mcmVlKGFkaW4pOwotKwkJCQlPUEVOU1NM X2ZyZWUoZW50KTsKLSsJCQkJYWRpbiA9IGVudCA9IE5VTEw7Ci0rCQkJCWdlbisrOwotKwkJCQl9 Ci0rCQkJfQotKwkJaWYgKCFzdHJjbXAoa2V5d29yZCwgIkVudHJvcHlJbnB1dFJlc2VlZCIpKQot KwkJCXsKLSsJCQllbnQgPSBoZXgyYmluX20odmFsdWUsICZlbnRsZW4pOwotKwkJCXQuZW50ID0g ZW50OwotKwkJCXQuZW50bGVuID0gZW50bGVuOwotKwkJCX0KLSsJCWlmICghc3RyY21wKGtleXdv cmQsICJBZGRpdGlvbmFsSW5wdXRSZXNlZWQiKSkKLSsJCQl7Ci0rCQkJYWRpbiA9IGhleDJiaW5f bSh2YWx1ZSwgJmFkaW5sZW4pOwotKwkJCUZJUFNfZHJiZ19yZXNlZWQoZGN0eCwgYWRpbiwgYWRp bmxlbik7Ci0rCQkJT1BFTlNTTF9mcmVlKGVudCk7Ci0rCQkJT1BFTlNTTF9mcmVlKGFkaW4pOwot KwkJCWVudCA9IGFkaW4gPSBOVUxMOwotKwkJCX0KLSsJCWlmIChnZW4gPT0gMikKLSsJCQl7Ci0r CQkJT3V0cHV0VmFsdWUoIlJldHVybmVkQml0cyIsIHJhbmRvdXQsIHJhbmRvdXRsZW4sCi0rCQkJ CQkJCQkJb3V0LCAwKTsKLSsJCQlGSVBTX2RyYmdfZnJlZShkY3R4KTsKLSsJCQlkY3R4ID0gTlVM TDsKLSsJCQlnZW4gPSAwOwotKwkJCX0KLSsKLSsJCX0KLSsJaWYgKGluICYmIGluICE9IHN0ZGlu KQotKwkJZmNsb3NlKGluKTsKLSsJaWYgKG91dCAmJiBvdXQgIT0gc3Rkb3V0KQotKwkJZmNsb3Nl KG91dCk7Ci0rCXJldHVybiAwOwotKwl9Ci0rCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4xay9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfZHNzdnMuYy5maXBzIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9maXBzL2NhdnMvZmlwc19kc3N2cy5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Zp cHMvY2F2cy9maXBzX2Rzc3ZzLmMuZmlwcwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU1MzkyMjMzNiAr MDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19kc3N2cy5jCTIw MTUtMDEtMDkgMDk6NTE6NTEuNTUzOTIyMzM2ICswMTAwCi1AQCAtMCwwICsxLDUzNyBAQAotKyNp bmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+Ci0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMK LSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp Ci0rewotKyAgICBwcmludGYoIk5vIEZJUFMgRFNBIHN1cHBvcnRcbiIpOwotKyAgICByZXR1cm4o MCk7Ci0rfQotKyNlbHNlCi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9kc2EuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgPG9w ZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPHN0cmlu Zy5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotKwotKyNpbmNsdWRlICJmaXBzX3V0bC5oIgotKwot K3N0YXRpYyB2b2lkIHBibihjb25zdCBjaGFyICpuYW1lLCBCSUdOVU0gKmJuKQotKwl7Ci0rCWlu dCBsZW4sIGk7Ci0rCXVuc2lnbmVkIGNoYXIgKnRtcDsKLSsJbGVuID0gQk5fbnVtX2J5dGVzKGJu KTsKLSsJdG1wID0gT1BFTlNTTF9tYWxsb2MobGVuKTsKLSsJaWYgKCF0bXApCi0rCQl7Ci0rCQlm cHJpbnRmKHN0ZGVyciwgIk1lbW9yeSBhbGxvY2F0aW9uIGVycm9yXG4iKTsKLSsJCXJldHVybjsK LSsJCX0KLSsJQk5fYm4yYmluKGJuLCB0bXApOwotKwlwcmludGYoIiVzID0gIiwgbmFtZSk7Ci0r CWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSsJCXByaW50ZigiJTAyWCIsIHRtcFtpXSk7Ci0r CWZwdXRzKCJcbiIsIHN0ZG91dCk7Ci0rCU9QRU5TU0xfZnJlZSh0bXApOwotKwlyZXR1cm47Ci0r CX0KLSsKLSt2b2lkIHByaW1lcygpCi0rICAgIHsKLSsgICAgY2hhciBidWZbMTAyNDBdOwotKyAg ICBjaGFyIGxidWZbMTAyNDBdOwotKyAgICBjaGFyICprZXl3b3JkLCAqdmFsdWU7Ci0rCi0rICAg IHdoaWxlKGZnZXRzKGJ1ZixzaXplb2YgYnVmLHN0ZGluKSAhPSBOVUxMKQotKwl7Ci0rCWZwdXRz KGJ1ZixzdGRvdXQpOwotKwlpZiAoIXBhcnNlX2xpbmUoJmtleXdvcmQsICZ2YWx1ZSwgbGJ1Ziwg YnVmKSkKLSsJCWNvbnRpbnVlOwotKwlpZighc3RyY21wKGtleXdvcmQsIlByaW1lIikpCi0rCSAg ICB7Ci0rCSAgICBCSUdOVU0gKnBwOwotKwotKwkgICAgcHA9Qk5fbmV3KCk7Ci0rCSAgICBkb19o ZXgyYm4oJnBwLHZhbHVlKTsKLSsJICAgIHByaW50ZigicmVzdWx0PSAlY1xuIiwKLSsJCSAgIEJO X2lzX3ByaW1lX2V4KHBwLDIwLE5VTEwsTlVMTCkgPyAnUCcgOiAnRicpOwotKwkgICAgfQkgICAg Ci0rCX0KLSsgICAgfQotKwotK3ZvaWQgcHFnKCkKLSsgICAgewotKyAgICBjaGFyIGJ1ZlsxMDI0 XTsKLSsgICAgY2hhciBsYnVmWzEwMjRdOwotKyAgICBjaGFyICprZXl3b3JkLCAqdmFsdWU7Ci0r ICAgIGludCBubW9kPTA7Ci0rCi0rICAgIHdoaWxlKGZnZXRzKGJ1ZixzaXplb2YgYnVmLHN0ZGlu KSAhPSBOVUxMKQotKwl7Ci0rCWlmICghcGFyc2VfbGluZSgma2V5d29yZCwgJnZhbHVlLCBsYnVm LCBidWYpKQotKwkJewotKwkJZnB1dHMoYnVmLHN0ZG91dCk7Ci0rCQljb250aW51ZTsKLSsJCX0K LSsJaWYoIXN0cmNtcChrZXl3b3JkLCJbbW9kIikpCi0rCSAgICBubW9kPWF0b2kodmFsdWUpOwot KwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiTiIpKQotKwkgICAgewotKwkgICAgaW50IG49YXRv aSh2YWx1ZSk7Ci0rCi0rCSAgICBwcmludGYoIlttb2QgPSAlZF1cblxuIixubW9kKTsKLSsKLSsJ ICAgIHdoaWxlKG4tLSkKLSsJCXsKLSsJCXVuc2lnbmVkIGNoYXIgc2VlZFsyMF07Ci0rCQlEU0Eg KmRzYTsKLSsJCWludCBjb3VudGVyOwotKwkJdW5zaWduZWQgbG9uZyBoOwotKwkJZHNhID0gRklQ U19kc2FfbmV3KCk7Ci0rCi0rCQlpZiAoIURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KGRzYSwg bm1vZCxzZWVkLDAsJmNvdW50ZXIsJmgsTlVMTCkpCi0rCQkJewotKwkJCWRvX3ByaW50X2Vycm9y cygpOwotKwkJCWV4aXQoMSk7Ci0rCQkJfQotKwkJcGJuKCJQIixkc2EtPnApOwotKwkJcGJuKCJR Iixkc2EtPnEpOwotKwkJcGJuKCJHIixkc2EtPmcpOwotKwkJcHYoIlNlZWQiLHNlZWQsMjApOwot KwkJcHJpbnRmKCJjID0gJWRcbiIsY291bnRlcik7Ci0rCQlwcmludGYoIkggPSAlbHhcbiIsaCk7 Ci0rCQlwdXRjKCdcbicsc3Rkb3V0KTsKLSsJCX0KLSsJICAgIH0KLSsJZWxzZQotKwkgICAgZnB1 dHMoYnVmLHN0ZG91dCk7Ci0rCX0KLSsgICAgfQotKwotK3ZvaWQgcHFndmVyKCkKLSsgICAgewot KyAgICBjaGFyIGJ1ZlsxMDI0XTsKLSsgICAgY2hhciBsYnVmWzEwMjRdOwotKyAgICBjaGFyICpr ZXl3b3JkLCAqdmFsdWU7Ci0rICAgIEJJR05VTSAqcCA9IE5VTEwsICpxID0gTlVMTCwgKmcgPSBO VUxMOwotKyAgICBpbnQgY291bnRlciwgY291bnRlcjI7Ci0rICAgIHVuc2lnbmVkIGxvbmcgaCwg aDI7Ci0rICAgIERTQSAqZHNhPU5VTEw7Ci0rICAgIGludCBubW9kPTA7Ci0rICAgIHVuc2lnbmVk IGNoYXIgc2VlZFsxMDI0XTsKLSsKLSsgICAgd2hpbGUoZmdldHMoYnVmLHNpemVvZiBidWYsc3Rk aW4pICE9IE5VTEwpCi0rCXsKLSsJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxi dWYsIGJ1ZikpCi0rCQl7Ci0rCQlmcHV0cyhidWYsc3Rkb3V0KTsKLSsJCWNvbnRpbnVlOwotKwkJ fQotKwlmcHV0cyhidWYsIHN0ZG91dCk7Ci0rCWlmKCFzdHJjbXAoa2V5d29yZCwiW21vZCIpKQot KwkgICAgbm1vZD1hdG9pKHZhbHVlKTsKLSsJZWxzZSBpZighc3RyY21wKGtleXdvcmQsIlAiKSkK LSsJICAgIHA9aGV4MmJuKHZhbHVlKTsKLSsJZWxzZSBpZighc3RyY21wKGtleXdvcmQsIlEiKSkK LSsJICAgIHE9aGV4MmJuKHZhbHVlKTsKLSsJZWxzZSBpZighc3RyY21wKGtleXdvcmQsIkciKSkK LSsJICAgIGc9aGV4MmJuKHZhbHVlKTsKLSsJZWxzZSBpZighc3RyY21wKGtleXdvcmQsIlNlZWQi KSkKLSsJICAgIHsKLSsJICAgIGludCBzbGVuID0gaGV4MmJpbih2YWx1ZSwgc2VlZCk7Ci0rCSAg ICBpZiAoc2xlbiAhPSAyMCkKLSsJCXsKLSsJCWZwcmludGYoc3RkZXJyLCAiU2VlZCBwYXJzZSBs ZW5ndGggZXJyb3JcbiIpOwotKwkJZXhpdCAoMSk7Ci0rCQl9Ci0rCSAgICB9Ci0rCWVsc2UgaWYo IXN0cmNtcChrZXl3b3JkLCJjIikpCi0rCSAgICBjb3VudGVyID1hdG9pKGJ1Zis0KTsKLSsJZWxz ZSBpZighc3RyY21wKGtleXdvcmQsIkgiKSkKLSsJICAgIHsKLSsJICAgIGggPSBhdG9pKHZhbHVl KTsKLSsJICAgIGlmICghcCB8fCAhcSB8fCAhZykKLSsJCXsKLSsJCWZwcmludGYoc3RkZXJyLCAi UGFyc2UgRXJyb3JcbiIpOwotKwkJZXhpdCAoMSk7Ci0rCQl9Ci0rCSAgICBkc2EgPSBGSVBTX2Rz YV9uZXcoKTsKLSsJICAgIGlmICghRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoZHNhLCBubW9k LHNlZWQsMjAgLCZjb3VudGVyMiwmaDIsTlVMTCkpCi0rCQkJewotKwkJCWRvX3ByaW50X2Vycm9y cygpOwotKwkJCWV4aXQoMSk7Ci0rCQkJfQotKyAgICAgICAgICAgIGlmIChCTl9jbXAoZHNhLT5w LCBwKSB8fCBCTl9jbXAoZHNhLT5xLCBxKSB8fCBCTl9jbXAoZHNhLT5nLCBnKQotKwkJfHwgKGNv dW50ZXIgIT0gY291bnRlcjIpIHx8IChoICE9IGgyKSkKLSsJICAgIAlwcmludGYoIlJlc3VsdCA9 IEZcbiIpOwotKwkgICAgZWxzZQotKwkgICAgCXByaW50ZigiUmVzdWx0ID0gUFxuIik7Ci0rCSAg ICBCTl9mcmVlKHApOwotKwkgICAgQk5fZnJlZShxKTsKLSsJICAgIEJOX2ZyZWUoZyk7Ci0rCSAg ICBwID0gTlVMTDsKLSsJICAgIHEgPSBOVUxMOwotKwkgICAgZyA9IE5VTEw7Ci0rCSAgICBGSVBT X2RzYV9mcmVlKGRzYSk7Ci0rCSAgICBkc2EgPSBOVUxMOwotKwkgICAgfQotKwl9Ci0rICAgIH0K LSsKLSsvKiBLZXlwYWlyIHZlcmlmaWNhdGlvbiByb3V0aW5lLiBOQjogdGhpcyBpc24ndCBwYXJ0 IG9mIHRoZSBzdGFuZGFyZCBGSVBTMTQwLTIKLSsgKiBhbGdvcml0aG0gdGVzdHMuIEl0IGlzIGFu IGFkZGl0aW9uYWwgdGVzdCB0byBwZXJmb3JtIHNhbml0eSBjaGVja3Mgb24gdGhlCi0rICogb3V0 cHV0IG9mIHRoZSBLZXlQYWlyIHRlc3QuCi0rICovCi0rCi0rc3RhdGljIGludCBkc3NfcGFyYW1j aGVjayhpbnQgbm1vZCwgQklHTlVNICpwLCBCSUdOVU0gKnEsIEJJR05VTSAqZywKLSsJCQkJCQkJ Qk5fQ1RYICpjdHgpCi0rICAgIHsKLSsgICAgQklHTlVNICpyZW0gPSBOVUxMOwotKyAgICBpZiAo Qk5fbnVtX2JpdHMocCkgIT0gbm1vZCkKLSsJcmV0dXJuIDA7Ci0rICAgIGlmIChCTl9udW1fYml0 cyhxKSAhPSAxNjApCi0rCXJldHVybiAwOwotKyAgICBpZiAoQk5faXNfcHJpbWVfZXgocCwgQk5f cHJpbWVfY2hlY2tzLCBjdHgsIE5VTEwpICE9IDEpCi0rCXJldHVybiAwOwotKyAgICBpZiAoQk5f aXNfcHJpbWVfZXgocSwgQk5fcHJpbWVfY2hlY2tzLCBjdHgsIE5VTEwpICE9IDEpCi0rCXJldHVy biAwOwotKyAgICByZW0gPSBCTl9uZXcoKTsKLSsgICAgaWYgKCFCTl9tb2QocmVtLCBwLCBxLCBj dHgpIHx8ICFCTl9pc19vbmUocmVtKQotKyAgICAJfHwgKEJOX2NtcChnLCBCTl92YWx1ZV9vbmUo KSkgPD0gMCkKLSsJfHwgIUJOX21vZF9leHAocmVtLCBnLCBxLCBwLCBjdHgpIHx8ICFCTl9pc19v bmUocmVtKSkKLSsJewotKwlCTl9mcmVlKHJlbSk7Ci0rCXJldHVybiAwOwotKwl9Ci0rICAgIC8q IFRvZG86IGNoZWNrIGcgKi8KLSsgICAgQk5fZnJlZShyZW0pOwotKyAgICByZXR1cm4gMTsKLSsg ICAgfQotKwotK3ZvaWQga2V5dmVyKCkKLSsgICAgewotKyAgICBjaGFyIGJ1ZlsxMDI0XTsKLSsg ICAgY2hhciBsYnVmWzEwMjRdOwotKyAgICBjaGFyICprZXl3b3JkLCAqdmFsdWU7Ci0rICAgIEJJ R05VTSAqcCA9IE5VTEwsICpxID0gTlVMTCwgKmcgPSBOVUxMLCAqWCA9IE5VTEwsICpZID0gTlVM TDsKLSsgICAgQklHTlVNICpZMjsKLSsgICAgQk5fQ1RYICpjdHggPSBOVUxMOwotKyAgICBpbnQg bm1vZD0wLCBwYXJhbWNoZWNrID0gMDsKLSsKLSsgICAgY3R4ID0gQk5fQ1RYX25ldygpOwotKyAg ICBZMiA9IEJOX25ldygpOwotKwotKyAgICB3aGlsZShmZ2V0cyhidWYsc2l6ZW9mIGJ1ZixzdGRp bikgIT0gTlVMTCkKLSsJewotKwlpZiAoIXBhcnNlX2xpbmUoJmtleXdvcmQsICZ2YWx1ZSwgbGJ1 ZiwgYnVmKSkKLSsJCXsKLSsJCWZwdXRzKGJ1ZixzdGRvdXQpOwotKwkJY29udGludWU7Ci0rCQl9 Ci0rCWlmKCFzdHJjbXAoa2V5d29yZCwiW21vZCIpKQotKwkgICAgewotKwkgICAgaWYgKHApCi0r CQlCTl9mcmVlKHApOwotKwkgICAgcCA9IE5VTEw7Ci0rCSAgICBpZiAocSkKLSsJCUJOX2ZyZWUo cSk7Ci0rCSAgICBxID0gTlVMTDsKLSsJICAgIGlmIChnKQotKwkJQk5fZnJlZShnKTsKLSsJICAg IGcgPSBOVUxMOwotKwkgICAgcGFyYW1jaGVjayA9IDA7Ci0rCSAgICBubW9kPWF0b2kodmFsdWUp OwotKwkgICAgfQotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiUCIpKQotKwkgICAgcD1oZXgy Ym4odmFsdWUpOwotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiUSIpKQotKwkgICAgcT1oZXgy Ym4odmFsdWUpOwotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiRyIpKQotKwkgICAgZz1oZXgy Ym4odmFsdWUpOwotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiWCIpKQotKwkgICAgWD1oZXgy Ym4odmFsdWUpOwotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiWSIpKQotKwkgICAgewotKwkg ICAgWT1oZXgyYm4odmFsdWUpOwotKwkgICAgaWYgKCFwIHx8ICFxIHx8ICFnIHx8ICFYIHx8ICFZ KQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJQYXJzZSBFcnJvclxuIik7Ci0rCQlleGl0ICgx KTsKLSsJCX0KLSsJICAgIHBibigiUCIscCk7Ci0rCSAgICBwYm4oIlEiLHEpOwotKwkgICAgcGJu KCJHIixnKTsKLSsJICAgIHBibigiWCIsWCk7Ci0rCSAgICBwYm4oIlkiLFkpOwotKwkgICAgaWYg KCFwYXJhbWNoZWNrKQotKwkJewotKwkJaWYgKGRzc19wYXJhbWNoZWNrKG5tb2QsIHAsIHEsIGcs IGN0eCkpCi0rCQkJcGFyYW1jaGVjayA9IDE7Ci0rCQllbHNlCi0rCQkJcGFyYW1jaGVjayA9IC0x OwotKwkJfQotKwkgICAgaWYgKHBhcmFtY2hlY2sgIT0gMSkKLSsJICAgCXByaW50ZigiUmVzdWx0 ID0gRlxuIik7Ci0rCSAgICBlbHNlCi0rCQl7Ci0rCQlpZiAoIUJOX21vZF9leHAoWTIsIGcsIFgs IHAsIGN0eCkgfHwgQk5fY21wKFkyLCBZKSkKLSsJICAgIAkJcHJpbnRmKCJSZXN1bHQgPSBGXG4i KTsKLSsJICAgICAgICBlbHNlCi0rCSAgICAJCXByaW50ZigiUmVzdWx0ID0gUFxuIik7Ci0rCQl9 Ci0rCSAgICBCTl9mcmVlKFgpOwotKwkgICAgQk5fZnJlZShZKTsKLSsJICAgIFggPSBOVUxMOwot KwkgICAgWSA9IE5VTEw7Ci0rCSAgICB9Ci0rCX0KLSsJaWYgKHApCi0rCSAgICBCTl9mcmVlKHAp OwotKwlpZiAocSkKLSsJICAgIEJOX2ZyZWUocSk7Ci0rCWlmIChnKQotKwkgICAgQk5fZnJlZShn KTsKLSsJaWYgKFkyKQotKwkgICAgQk5fZnJlZShZMik7Ci0rICAgIH0KLSsKLSt2b2lkIGtleXBh aXIoKQotKyAgICB7Ci0rICAgIGNoYXIgYnVmWzEwMjRdOwotKyAgICBjaGFyIGxidWZbMTAyNF07 Ci0rICAgIGNoYXIgKmtleXdvcmQsICp2YWx1ZTsKLSsgICAgaW50IG5tb2Q9MDsKLSsKLSsgICAg d2hpbGUoZmdldHMoYnVmLHNpemVvZiBidWYsc3RkaW4pICE9IE5VTEwpCi0rCXsKLSsJaWYgKCFw YXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1ZikpCi0rCQl7Ci0rCQlmcHV0cyhi dWYsc3Rkb3V0KTsKLSsJCWNvbnRpbnVlOwotKwkJfQotKwlpZighc3RyY21wKGtleXdvcmQsIltt b2QiKSkKLSsJICAgIG5tb2Q9YXRvaSh2YWx1ZSk7Ci0rCWVsc2UgaWYoIXN0cmNtcChrZXl3b3Jk LCJOIikpCi0rCSAgICB7Ci0rCSAgICBEU0EgKmRzYTsKLSsJICAgIGludCBuPWF0b2kodmFsdWUp OwotKwotKwkgICAgcHJpbnRmKCJbbW9kID0gJWRdXG5cbiIsbm1vZCk7Ci0rCSAgICBkc2EgPSBG SVBTX2RzYV9uZXcoKTsKLSsJICAgIGlmICghRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoZHNh LCBubW9kLE5VTEwsMCxOVUxMLE5VTEwsTlVMTCkpCi0rCQl7Ci0rCQlkb19wcmludF9lcnJvcnMo KTsKLSsJCWV4aXQoMSk7Ci0rCQl9Ci0rCSAgICBwYm4oIlAiLGRzYS0+cCk7Ci0rCSAgICBwYm4o IlEiLGRzYS0+cSk7Ci0rCSAgICBwYm4oIkciLGRzYS0+Zyk7Ci0rCSAgICBwdXRjKCdcbicsc3Rk b3V0KTsKLSsKLSsJICAgIHdoaWxlKG4tLSkKLSsJCXsKLSsJCWlmICghRFNBX2dlbmVyYXRlX2tl eShkc2EpKQotKwkJCXsKLSsJCQlkb19wcmludF9lcnJvcnMoKTsKLSsJCQlleGl0KDEpOwotKwkJ CX0KLSsKLSsJCXBibigiWCIsZHNhLT5wcml2X2tleSk7Ci0rCQlwYm4oIlkiLGRzYS0+cHViX2tl eSk7Ci0rCQlwdXRjKCdcbicsc3Rkb3V0KTsKLSsJCX0KLSsJICAgIH0KLSsJfQotKyAgICB9Ci0r Ci0rdm9pZCBzaWdnZW4oKQotKyAgICB7Ci0rICAgIGNoYXIgYnVmWzEwMjRdOwotKyAgICBjaGFy IGxidWZbMTAyNF07Ci0rICAgIGNoYXIgKmtleXdvcmQsICp2YWx1ZTsKLSsgICAgaW50IG5tb2Q9 MDsKLSsgICAgRFNBICpkc2E9TlVMTDsKLSsKLSsgICAgd2hpbGUoZmdldHMoYnVmLHNpemVvZiBi dWYsc3RkaW4pICE9IE5VTEwpCi0rCXsKLSsJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFs dWUsIGxidWYsIGJ1ZikpCi0rCQl7Ci0rCQlmcHV0cyhidWYsc3Rkb3V0KTsKLSsJCWNvbnRpbnVl OwotKwkJfQotKwlpZighc3RyY21wKGtleXdvcmQsIlttb2QiKSkKLSsJICAgIHsKLSsJICAgIG5t b2Q9YXRvaSh2YWx1ZSk7Ci0rCSAgICBwcmludGYoIlttb2QgPSAlZF1cblxuIixubW9kKTsKLSsJ ICAgIGlmIChkc2EpCi0rCQlGSVBTX2RzYV9mcmVlKGRzYSk7Ci0rCSAgICBkc2EgPSBGSVBTX2Rz YV9uZXcoKTsKLSsJICAgIGlmICghRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoZHNhLCBubW9k LE5VTEwsMCxOVUxMLE5VTEwsTlVMTCkpCi0rCQl7Ci0rCQlkb19wcmludF9lcnJvcnMoKTsKLSsJ CWV4aXQoMSk7Ci0rCQl9Ci0rCSAgICBwYm4oIlAiLGRzYS0+cCk7Ci0rCSAgICBwYm4oIlEiLGRz YS0+cSk7Ci0rCSAgICBwYm4oIkciLGRzYS0+Zyk7Ci0rCSAgICBwdXRjKCdcbicsc3Rkb3V0KTsK LSsJICAgIH0KLSsJZWxzZSBpZighc3RyY21wKGtleXdvcmQsIk1zZyIpKQotKwkgICAgewotKwkg ICAgdW5zaWduZWQgY2hhciBtc2dbMTAyNF07Ci0rCSAgICB1bnNpZ25lZCBjaGFyIHNidWZbNjBd OwotKwkgICAgdW5zaWduZWQgaW50IHNsZW47Ci0rCSAgICBpbnQgbjsKLSsJICAgIEVWUF9QS0VZ IHBrOwotKwkgICAgRVZQX01EX0NUWCBtY3R4OwotKwkgICAgRFNBX1NJRyAqc2lnOwotKwkgICAg RVZQX01EX0NUWF9pbml0KCZtY3R4KTsKLSsKLSsJICAgIG49aGV4MmJpbih2YWx1ZSxtc2cpOwot KwkgICAgcHYoIk1zZyIsbXNnLG4pOwotKwotKwkgICAgaWYgKCFEU0FfZ2VuZXJhdGVfa2V5KGRz YSkpCi0rCQl7Ci0rCQlkb19wcmludF9lcnJvcnMoKTsKLSsJCWV4aXQoMSk7Ci0rCQl9Ci0rCSAg ICBway50eXBlID0gRVZQX1BLRVlfRFNBOwotKwkgICAgcGsucGtleS5kc2EgPSBkc2E7Ci0rCSAg ICBwYm4oIlkiLGRzYS0+cHViX2tleSk7Ci0rCi0rCSAgICBFVlBfU2lnbkluaXRfZXgoJm1jdHgs IEVWUF9kc3MxKCksIE5VTEwpOwotKwkgICAgRVZQX1NpZ25VcGRhdGUoJm1jdHgsIG1zZywgbik7 Ci0rCSAgICBFVlBfU2lnbkZpbmFsKCZtY3R4LCBzYnVmLCAmc2xlbiwgJnBrKTsKLSsKLSsJICAg IHNpZyA9IERTQV9TSUdfbmV3KCk7Ci0rCSAgICBGSVBTX2RzYV9zaWdfZGVjb2RlKHNpZywgc2J1 Ziwgc2xlbik7Ci0rCi0rCSAgICBwYm4oIlIiLHNpZy0+cik7Ci0rCSAgICBwYm4oIlMiLHNpZy0+ cyk7Ci0rCSAgICBwdXRjKCdcbicsc3Rkb3V0KTsKLSsJICAgIERTQV9TSUdfZnJlZShzaWcpOwot KwkgICAgRVZQX01EX0NUWF9jbGVhbnVwKCZtY3R4KTsKLSsJICAgIH0KLSsJfQotKwlpZiAoZHNh KQotKwkJRklQU19kc2FfZnJlZShkc2EpOwotKyAgICB9Ci0rCi0rdm9pZCBzaWd2ZXIoKQotKyAg ICB7Ci0rICAgIERTQSAqZHNhPU5VTEw7Ci0rICAgIGNoYXIgYnVmWzEwMjRdOwotKyAgICBjaGFy IGxidWZbMTAyNF07Ci0rICAgIHVuc2lnbmVkIGNoYXIgbXNnWzEwMjRdOwotKyAgICBjaGFyICpr ZXl3b3JkLCAqdmFsdWU7Ci0rICAgIGludCBubW9kPTAsIG49MDsKLSsgICAgRFNBX1NJRyBzZywg KnNpZyA9ICZzZzsKLSsKLSsgICAgc2lnLT5yID0gTlVMTDsKLSsgICAgc2lnLT5zID0gTlVMTDsK LSsKLSsgICAgd2hpbGUoZmdldHMoYnVmLHNpemVvZiBidWYsc3RkaW4pICE9IE5VTEwpCi0rCXsK LSsJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1ZikpCi0rCQl7Ci0r CQlmcHV0cyhidWYsc3Rkb3V0KTsKLSsJCWNvbnRpbnVlOwotKwkJfQotKwlpZighc3RyY21wKGtl eXdvcmQsIlttb2QiKSkKLSsJICAgIHsKLSsJICAgIG5tb2Q9YXRvaSh2YWx1ZSk7Ci0rCSAgICBp Zihkc2EpCi0rCQlGSVBTX2RzYV9mcmVlKGRzYSk7Ci0rCSAgICBkc2E9RklQU19kc2FfbmV3KCk7 Ci0rCSAgICB9Ci0rCWVsc2UgaWYoIXN0cmNtcChrZXl3b3JkLCJQIikpCi0rCSAgICBkc2EtPnA9 aGV4MmJuKHZhbHVlKTsKLSsJZWxzZSBpZighc3RyY21wKGtleXdvcmQsIlEiKSkKLSsJICAgIGRz YS0+cT1oZXgyYm4odmFsdWUpOwotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiRyIpKQotKwkg ICAgewotKwkgICAgZHNhLT5nPWhleDJibih2YWx1ZSk7Ci0rCi0rCSAgICBwcmludGYoIlttb2Qg PSAlZF1cblxuIixubW9kKTsKLSsJICAgIHBibigiUCIsZHNhLT5wKTsKLSsJICAgIHBibigiUSIs ZHNhLT5xKTsKLSsJICAgIHBibigiRyIsZHNhLT5nKTsKLSsJICAgIHB1dGMoJ1xuJyxzdGRvdXQp OwotKwkgICAgfQotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiTXNnIikpCi0rCSAgICB7Ci0r CSAgICBuPWhleDJiaW4odmFsdWUsbXNnKTsKLSsJICAgIHB2KCJNc2ciLG1zZyxuKTsKLSsJICAg IH0KLSsJZWxzZSBpZighc3RyY21wKGtleXdvcmQsIlkiKSkKLSsJICAgIGRzYS0+cHViX2tleT1o ZXgyYm4odmFsdWUpOwotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiUiIpKQotKwkgICAgc2ln LT5yPWhleDJibih2YWx1ZSk7Ci0rCWVsc2UgaWYoIXN0cmNtcChrZXl3b3JkLCJTIikpCi0rCSAg ICB7Ci0rCSAgICBFVlBfTURfQ1RYIG1jdHg7Ci0rCSAgICBFVlBfUEtFWSBwazsKLSsJICAgIHVu c2lnbmVkIGNoYXIgc2lnYnVmWzYwXTsKLSsJICAgIHVuc2lnbmVkIGludCBzbGVuOwotKwkgICAg aW50IHI7Ci0rCSAgICBFVlBfTURfQ1RYX2luaXQoJm1jdHgpOwotKwkgICAgcGsudHlwZSA9IEVW UF9QS0VZX0RTQTsKLSsJICAgIHBrLnBrZXkuZHNhID0gZHNhOwotKwkgICAgc2lnLT5zPWhleDJi bih2YWx1ZSk7Ci0rCQotKwkgICAgcGJuKCJZIixkc2EtPnB1Yl9rZXkpOwotKwkgICAgcGJuKCJS IixzaWctPnIpOwotKwkgICAgcGJuKCJTIixzaWctPnMpOwotKwotKwkgICAgc2xlbiA9IEZJUFNf ZHNhX3NpZ19lbmNvZGUoc2lnYnVmLCBzaWcpOwotKwkgICAgRVZQX1ZlcmlmeUluaXRfZXgoJm1j dHgsIEVWUF9kc3MxKCksIE5VTEwpOwotKwkgICAgRVZQX1ZlcmlmeVVwZGF0ZSgmbWN0eCwgbXNn LCBuKTsKLSsJICAgIHIgPSBFVlBfVmVyaWZ5RmluYWwoJm1jdHgsIHNpZ2J1Ziwgc2xlbiwgJnBr KTsKLSsJICAgIEVWUF9NRF9DVFhfY2xlYW51cCgmbWN0eCk7Ci0rCQotKwkgICAgcHJpbnRmKCJS ZXN1bHQgPSAlY1xuIiwgciA9PSAxID8gJ1AnIDogJ0YnKTsKLSsJICAgIHB1dGMoJ1xuJyxzdGRv dXQpOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLStpbnQgbWFpbihpbnQgYXJnYyxjaGFyICoq YXJndikKLSsgICAgewotKyAgICBpZihhcmdjICE9IDIpCi0rCXsKLSsJZnByaW50ZihzdGRlcnIs IiVzIFtwcmltZXxwcWd8cHFndmVyfGtleXBhaXJ8c2lnZ2VufHNpZ3Zlcl1cbiIsYXJndlswXSk7 Ci0rCWV4aXQoMSk7Ci0rCX0KLSsgICAgaWYoIUZJUFNfbW9kZV9zZXQoMSkpCi0rCXsKLSsJZG9f cHJpbnRfZXJyb3JzKCk7Ci0rCWV4aXQoMSk7Ci0rCX0KLSsgICAgaWYoIXN0cmNtcChhcmd2WzFd LCJwcmltZSIpKQotKwlwcmltZXMoKTsKLSsgICAgZWxzZSBpZighc3RyY21wKGFyZ3ZbMV0sInBx ZyIpKQotKwlwcWcoKTsKLSsgICAgZWxzZSBpZighc3RyY21wKGFyZ3ZbMV0sInBxZ3ZlciIpKQot KwlwcWd2ZXIoKTsKLSsgICAgZWxzZSBpZighc3RyY21wKGFyZ3ZbMV0sImtleXBhaXIiKSkKLSsJ a2V5cGFpcigpOwotKyAgICBlbHNlIGlmKCFzdHJjbXAoYXJndlsxXSwia2V5dmVyIikpCi0rCWtl eXZlcigpOwotKyAgICBlbHNlIGlmKCFzdHJjbXAoYXJndlsxXSwic2lnZ2VuIikpCi0rCXNpZ2dl bigpOwotKyAgICBlbHNlIGlmKCFzdHJjbXAoYXJndlsxXSwic2lndmVyIikpCi0rCXNpZ3Zlcigp OwotKyAgICBlbHNlCi0rCXsKLSsJZnByaW50ZihzdGRlcnIsIkRvbid0IGtub3cgaG93IHRvICVz LlxuIixhcmd2WzFdKTsKLSsJZXhpdCgxKTsKLSsJfQotKwotKyAgICByZXR1cm4gMDsKLSsgICAg fQotKwotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9m aXBzX2djbXRlc3QuYy5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19n Y210ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfZ2NtdGVz dC5jLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTQ5MjIzNTkgKzAxMDAKLSsrKyBvcGVuc3Ns LTEuMC4xay9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfZ2NtdGVzdC5jCTIwMTUtMDEtMDkgMDk6NTE6 NTEuNTU0OTIyMzU5ICswMTAwCi1AQCAtMCwwICsxLDU3MSBAQAotKy8qIGZpcHMvYWVzL2ZpcHNf Z2NtdGVzdC5jICovCi0rLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBv cGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCi0rICogcHJvamVjdC4KLSsgKi8KLSsvKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxs IHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAq IGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv cHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0r ICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg b3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2lu ZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogNC4g VGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5v dCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Np b24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgbGljZW5z aW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3Bl blNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAg IHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJp YnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcK LSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNv ZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBp biB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsg KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJ UycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBB UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IK LSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICog U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuCi0rICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLSsgKi8KLSsKLSsKLSsjZGVmaW5lIE9QRU5TU0xfRklQU0FQ SQotKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+Ci0rCi0rI2lmbmRlZiBPUEVOU1NM X0ZJUFMKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCi0rewotKyAgICBwcmludGYoIk5vIEZJUFMgR0NNIHN1cHBvcnRcbiIpOwotKyAgICBy ZXR1cm4oMCk7Ci0rfQotKyNlbHNlCi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSsjaW5j bHVkZSA8b3BlbnNzbC9kc2EuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1 ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUg PHN0cmluZy5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotKwotKyNpbmNsdWRlICJmaXBzX3V0bC5o IgotKwotK3N0YXRpYyB2b2lkIGdjbXRlc3QoRklMRSAqaW4sIEZJTEUgKm91dCwgaW50IGVuY3J5 cHQpCi0rCXsKLSsJY2hhciBidWZbMjA0OF07Ci0rCWNoYXIgbGJ1ZlsyMDQ4XTsKLSsJY2hhciAq a2V5d29yZCwgKnZhbHVlOwotKwlpbnQga2V5bGVuID0gLTEsIGl2bGVuID0gLTEsIGFhZGxlbiA9 IC0xLCB0YWdsZW4gPSAtMSwgcHRsZW4gPSAtMTsKLSsJaW50IHJ2OwotKwlsb25nIGw7Ci0rCXVu c2lnbmVkIGNoYXIgKmtleSA9IE5VTEwsICppdiA9IE5VTEwsICphYWQgPSBOVUxMLCAqdGFnID0g TlVMTDsKLSsJdW5zaWduZWQgY2hhciAqY3QgPSBOVUxMLCAqcHQgPSBOVUxMOwotKwlFVlBfQ0lQ SEVSX0NUWCBjdHg7Ci0rCWNvbnN0IEVWUF9DSVBIRVIgKmdjbSA9IE5VTEw7Ci0rCUZJUFNfY2lw aGVyX2N0eF9pbml0KCZjdHgpOwotKwotKwl3aGlsZShmZ2V0cyhidWYsc2l6ZW9mIGJ1Zixpbikg IT0gTlVMTCkKLSsJCXsKLSsJCWZwdXRzKGJ1ZixvdXQpOwotKwkJaWYgKCFwYXJzZV9saW5lKCZr ZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1ZikpCi0rCQkJY29udGludWU7Ci0rCQlpZighc3RyY21w KGtleXdvcmQsIltLZXlsZW4iKSkKLSsJCQl7Ci0rCQkJa2V5bGVuID0gYXRvaSh2YWx1ZSk7Ci0r CQkJaWYgKGtleWxlbiA9PSAxMjgpCi0rCQkJCWdjbSA9IEVWUF9hZXNfMTI4X2djbSgpOwotKwkJ CWVsc2UgaWYgKGtleWxlbiA9PSAxOTIpCi0rCQkJCWdjbSA9IEVWUF9hZXNfMTkyX2djbSgpOwot KwkJCWVsc2UgaWYgKGtleWxlbiA9PSAyNTYpCi0rCQkJCWdjbSA9IEVWUF9hZXNfMjU2X2djbSgp OwotKwkJCWVsc2UgCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsICJVbnN1cHBvcnRlZCBr ZXlsZW4gJWRcbiIsCi0rCQkJCQkJCWtleWxlbik7Ci0rCQkJCX0KLSsJCQlrZXlsZW4gPj49IDM7 Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiW0lWbGVuIikpCi0rCQkJaXZs ZW4gPSBhdG9pKHZhbHVlKSA+PiAzOwotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiW0FB RGxlbiIpKQotKwkJCWFhZGxlbiA9IGF0b2kodmFsdWUpID4+IDM7Ci0rCQllbHNlIGlmICghc3Ry Y21wKGtleXdvcmQsICJbVGFnbGVuIikpCi0rCQkJdGFnbGVuID0gYXRvaSh2YWx1ZSkgPj4gMzsK LSsJCWVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgIltQVGxlbiIpKQotKwkJCXB0bGVuID0gYXRv aSh2YWx1ZSkgPj4gMzsKLSsJCWVsc2UgaWYoIXN0cmNtcChrZXl3b3JkLCJLZXkiKSkKLSsJCQl7 Ci0rCQkJa2V5ID0gaGV4MmJpbl9tKHZhbHVlLCAmbCk7Ci0rCQkJaWYgKGwgIT0ga2V5bGVuKQot KwkJCQl7Ci0rCQkJCWZwcmludGYoc3RkZXJyLCAiSW5jb25zaXN0ZW50IEtleSBsZW5ndGhcbiIp OwotKwkJCQlleGl0KDEpOwotKwkJCQl9Ci0rCQkJfQotKwkJZWxzZSBpZighc3RyY21wKGtleXdv cmQsIklWIikpCi0rCQkJewotKwkJCWl2ID0gaGV4MmJpbl9tKHZhbHVlLCAmbCk7Ci0rCQkJaWYg KGwgIT0gaXZsZW4pCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsICJJbmNvbnNpc3RlbnQg SVYgbGVuZ3RoXG4iKTsKLSsJCQkJZXhpdCgxKTsKLSsJCQkJfQotKwkJCX0KLSsJCWVsc2UgaWYo IXN0cmNtcChrZXl3b3JkLCJQVCIpKQotKwkJCXsKLSsJCQlwdCA9IGhleDJiaW5fbSh2YWx1ZSwg JmwpOwotKwkJCWlmIChsICE9IHB0bGVuKQotKwkJCQl7Ci0rCQkJCWZwcmludGYoc3RkZXJyLCAi SW5jb25zaXN0ZW50IFBUIGxlbmd0aFxuIik7Ci0rCQkJCWV4aXQoMSk7Ci0rCQkJCX0KLSsJCQl9 Ci0rCQllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiQ1QiKSkKLSsJCQl7Ci0rCQkJY3QgPSBoZXgy YmluX20odmFsdWUsICZsKTsKLSsJCQlpZiAobCAhPSBwdGxlbikKLSsJCQkJewotKwkJCQlmcHJp bnRmKHN0ZGVyciwgIkluY29uc2lzdGVudCBDVCBsZW5ndGhcbiIpOwotKwkJCQlleGl0KDEpOwot KwkJCQl9Ci0rCQkJfQotKwkJZWxzZSBpZighc3RyY21wKGtleXdvcmQsIkFBRCIpKQotKwkJCXsK LSsJCQlhYWQgPSBoZXgyYmluX20odmFsdWUsICZsKTsKLSsJCQlpZiAobCAhPSBhYWRsZW4pCi0r CQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsICJJbmNvbnNpc3RlbnQgQUFEIGxlbmd0aFxuIik7 Ci0rCQkJCWV4aXQoMSk7Ci0rCQkJCX0KLSsJCQl9Ci0rCQllbHNlIGlmKCFzdHJjbXAoa2V5d29y ZCwiVGFnIikpCi0rCQkJewotKwkJCXRhZyA9IGhleDJiaW5fbSh2YWx1ZSwgJmwpOwotKwkJCWlm IChsICE9IHRhZ2xlbikKLSsJCQkJewotKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkluY29uc2lzdGVu dCBUYWcgbGVuZ3RoXG4iKTsKLSsJCQkJZXhpdCgxKTsKLSsJCQkJfQotKwkJCX0KLSsJCWlmIChl bmNyeXB0ICYmIHB0ICYmIGFhZCAmJiAoaXYgfHwgZW5jcnlwdD09MSkpCi0rCQkJewotKwkJCXRh ZyA9IE9QRU5TU0xfbWFsbG9jKHRhZ2xlbik7Ci0rCQkJRklQU19jaXBoZXJpbml0KCZjdHgsIGdj bSwgTlVMTCwgTlVMTCwgMSk7Ci0rCQkJLyogUmVsYXggRklQUyBjb25zdHJhaW50cyBmb3IgdGVz dGluZyAqLwotKwkJCU1fRVZQX0NJUEhFUl9DVFhfc2V0X2ZsYWdzKCZjdHgsIEVWUF9DSVBIX0ZM QUdfTk9OX0ZJUFNfQUxMT1cpOwotKwkJCUZJUFNfY2lwaGVyX2N0eF9jdHJsKCZjdHgsIEVWUF9D VFJMX0dDTV9TRVRfSVZMRU4sIGl2bGVuLCAwKTsKLSsJCQlpZiAoZW5jcnlwdCA9PSAxKQotKwkJ CQl7Ci0rCQkJCXN0YXRpYyB1bnNpZ25lZCBjaGFyIGl2X2ZpeGVkWzRdID0gezEsMiwzLDR9Owot KwkJCQlpZiAoIWl2KQotKwkJCQkJaXYgPSBPUEVOU1NMX21hbGxvYyhpdmxlbik7Ci0rCQkJCUZJ UFNfY2lwaGVyaW5pdCgmY3R4LCBOVUxMLCBrZXksIE5VTEwsIDEpOwotKwkJCQlGSVBTX2NpcGhl cl9jdHhfY3RybCgmY3R4LAotKwkJCQkJCUVWUF9DVFJMX0dDTV9TRVRfSVZfRklYRUQsCi0rCQkJ CQkJNCwgaXZfZml4ZWQpOwotKwkJCQlpZiAoIUZJUFNfY2lwaGVyX2N0eF9jdHJsKCZjdHgsCi0r CQkJCQlFVlBfQ1RSTF9HQ01fSVZfR0VOLCAwLCBpdikpCi0rCQkJCQl7Ci0rCQkJCQlmcHJpbnRm KHN0ZGVyciwgIklWIGdlbiBlcnJvclxuIik7Ci0rCQkJCQlleGl0KDEpOwotKwkJCQkJfQotKwkJ CQlPdXRwdXRWYWx1ZSgiSVYiLCBpdiwgaXZsZW4sIG91dCwgMCk7Ci0rCQkJCX0KLSsJCQllbHNl Ci0rCQkJCUZJUFNfY2lwaGVyaW5pdCgmY3R4LCBOVUxMLCBrZXksIGl2LCAxKTsKLSsKLSsKLSsJ CQlpZiAoYWFkbGVuKQotKwkJCQlGSVBTX2NpcGhlcigmY3R4LCBOVUxMLCBhYWQsIGFhZGxlbik7 Ci0rCQkJaWYgKHB0bGVuKQotKwkJCQl7Ci0rCQkJCWN0ID0gT1BFTlNTTF9tYWxsb2MocHRsZW4p OwotKwkJCQlydiA9IEZJUFNfY2lwaGVyKCZjdHgsIGN0LCBwdCwgcHRsZW4pOwotKwkJCQl9Ci0r CQkJRklQU19jaXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwgMCk7Ci0rCQkJRklQU19jaXBoZXJfY3R4 X2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX0dFVF9UQUcsCi0rCQkJCQkJCQl0YWdsZW4sIHRhZyk7 CQotKwkJCU91dHB1dFZhbHVlKCJDVCIsIGN0LCBwdGxlbiwgb3V0LCAwKTsKLSsJCQlPdXRwdXRW YWx1ZSgiVGFnIiwgdGFnLCB0YWdsZW4sIG91dCwgMCk7Ci0rCQkJaWYgKGl2KQotKwkJCQlPUEVO U1NMX2ZyZWUoaXYpOwotKwkJCWlmIChhYWQpCi0rCQkJCU9QRU5TU0xfZnJlZShhYWQpOwotKwkJ CWlmIChjdCkKLSsJCQkJT1BFTlNTTF9mcmVlKGN0KTsKLSsJCQlpZiAocHQpCi0rCQkJCU9QRU5T U0xfZnJlZShwdCk7Ci0rCQkJaWYgKGtleSkKLSsJCQkJT1BFTlNTTF9mcmVlKGtleSk7Ci0rCQkJ aWYgKHRhZykKLSsJCQkJT1BFTlNTTF9mcmVlKHRhZyk7Ci0rCQkJaXYgPSBhYWQgPSBjdCA9IHB0 ID0ga2V5ID0gdGFnID0gTlVMTDsKLSsJCQl9CQotKwkJaWYgKCFlbmNyeXB0ICYmIHRhZykKLSsJ CQl7Ci0rCQkJRklQU19jaXBoZXJpbml0KCZjdHgsIGdjbSwgTlVMTCwgTlVMTCwgMCk7Ci0rCQkJ LyogUmVsYXggRklQUyBjb25zdHJhaW50cyBmb3IgdGVzdGluZyAqLwotKwkJCU1fRVZQX0NJUEhF Ul9DVFhfc2V0X2ZsYWdzKCZjdHgsIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpOwotKwkJ CUZJUFNfY2lwaGVyX2N0eF9jdHJsKCZjdHgsIEVWUF9DVFJMX0dDTV9TRVRfSVZMRU4sIGl2bGVu LCAwKTsKLSsJCQlGSVBTX2NpcGhlcmluaXQoJmN0eCwgTlVMTCwga2V5LCBpdiwgMCk7Ci0rCQkJ RklQU19jaXBoZXJfY3R4X2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX1NFVF9UQUcsIHRhZ2xlbiwg dGFnKTsKLSsJCQlpZiAoYWFkbGVuKQotKwkJCQlGSVBTX2NpcGhlcigmY3R4LCBOVUxMLCBhYWQs IGFhZGxlbik7Ci0rCQkJaWYgKHB0bGVuKQotKwkJCQl7Ci0rCQkJCXB0ID0gT1BFTlNTTF9tYWxs b2MocHRsZW4pOwotKwkJCQlydiA9IEZJUFNfY2lwaGVyKCZjdHgsIHB0LCBjdCwgcHRsZW4pOwot KwkJCQl9Ci0rCQkJcnYgPSBGSVBTX2NpcGhlcigmY3R4LCBOVUxMLCBOVUxMLCAwKTsKLSsJCQlp ZiAocnYgPCAwKQotKwkJCQlmcHJpbnRmKG91dCwgIkZBSUwiIFJFU1BfRU9MKTsKLSsJCQllbHNl Ci0rCQkJCU91dHB1dFZhbHVlKCJQVCIsIHB0LCBwdGxlbiwgb3V0LCAwKTsKLSsJCQlpZiAoaXYp Ci0rCQkJCU9QRU5TU0xfZnJlZShpdik7Ci0rCQkJaWYgKGFhZCkKLSsJCQkJT1BFTlNTTF9mcmVl KGFhZCk7Ci0rCQkJaWYgKGN0KQotKwkJCQlPUEVOU1NMX2ZyZWUoY3QpOwotKwkJCWlmIChwdCkK LSsJCQkJT1BFTlNTTF9mcmVlKHB0KTsKLSsJCQlpZiAoa2V5KQotKwkJCQlPUEVOU1NMX2ZyZWUo a2V5KTsKLSsJCQlpZiAodGFnKQotKwkJCQlPUEVOU1NMX2ZyZWUodGFnKTsKLSsJCQlpdiA9IGFh ZCA9IGN0ID0gcHQgPSBrZXkgPSB0YWcgPSBOVUxMOwotKwkJCX0KLSsJCX0KLSsJRklQU19jaXBo ZXJfY3R4X2NsZWFudXAoJmN0eCk7CQotKwl9Ci0rCi0rc3RhdGljIHZvaWQgeHRzdGVzdChGSUxF ICppbiwgRklMRSAqb3V0KQotKwl7Ci0rCWNoYXIgYnVmWzIwNDgwMF07Ci0rCWNoYXIgbGJ1Zlsy MDQ4MDBdOwotKwljaGFyICprZXl3b3JkLCAqdmFsdWU7Ci0rCWludCBpbmxlbiA9IDA7Ci0rCWlu dCBlbmNyeXB0ID0gMDsKLSsJbG9uZyBsOwotKwl1bnNpZ25lZCBjaGFyICprZXkgPSBOVUxMLCAq aXYgPSBOVUxMOwotKwl1bnNpZ25lZCBjaGFyICppbmJ1ZiA9IE5VTEwsICpvdXRidWYgPSBOVUxM OwotKwlFVlBfQ0lQSEVSX0NUWCBjdHg7Ci0rCWNvbnN0IEVWUF9DSVBIRVIgKnh0cyA9IE5VTEw7 Ci0rCUZJUFNfY2lwaGVyX2N0eF9pbml0KCZjdHgpOwotKwotKwl3aGlsZShmZ2V0cyhidWYsc2l6 ZW9mIGJ1ZixpbikgIT0gTlVMTCkKLSsJCXsKLSsJCWZwdXRzKGJ1ZixvdXQpOwotKwkJaWYgKGJ1 ZlswXSA9PSAnWycgJiYgc3RybGVuKGJ1ZikgPj0gOSkKLSsJCQl7Ci0rCQkJaWYoIXN0cm5jbXAo YnVmLCJbRU5DUllQVF0iLCA5KSkKLSsJCQkJZW5jcnlwdCA9IDE7Ci0rCQkJZWxzZSBpZighc3Ry bmNtcChidWYsIltERUNSWVBUXSIsIDkpKQotKwkJCQllbmNyeXB0ID0gMDsKLSsJCQl9Ci0rCQlp ZiAgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1ZikpCi0rCQkJY29udGlu dWU7Ci0rCQllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiS2V5IikpCi0rCQkJewotKwkJCWtleSA9 IGhleDJiaW5fbSh2YWx1ZSwgJmwpOwotKwkJCWlmIChsID09IDMyKQotKwkJCQl4dHMgPSBFVlBf YWVzXzEyOF94dHMoKTsKLSsJCQllbHNlIGlmIChsID09IDY0KQotKwkJCQl4dHMgPSBFVlBfYWVz XzI1Nl94dHMoKTsKLSsJCQllbHNlCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsICJJbmNv bnNpc3RlbnQgS2V5IGxlbmd0aFxuIik7Ci0rCQkJCWV4aXQoMSk7Ci0rCQkJCX0KLSsJCQl9Ci0r CQllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiaSIpKQotKwkJCXsKLSsJCQlpdiA9IGhleDJiaW5f bSh2YWx1ZSwgJmwpOwotKwkJCWlmIChsICE9IDE2KQotKwkJCQl7Ci0rCQkJCWZwcmludGYoc3Rk ZXJyLCAiSW5jb25zaXN0ZW50IGkgbGVuZ3RoXG4iKTsKLSsJCQkJZXhpdCgxKTsKLSsJCQkJfQot KwkJCX0KLSsJCWVsc2UgaWYoZW5jcnlwdCAmJiAhc3RyY21wKGtleXdvcmQsIlBUIikpCi0rCQkJ ewotKwkJCWluYnVmID0gaGV4MmJpbl9tKHZhbHVlLCAmbCk7Ci0rCQkJaW5sZW4gPSBsOwotKwkJ CX0KLSsJCWVsc2UgaWYoIWVuY3J5cHQgJiYgIXN0cmNtcChrZXl3b3JkLCJDVCIpKQotKwkJCXsK LSsJCQlpbmJ1ZiA9IGhleDJiaW5fbSh2YWx1ZSwgJmwpOwotKwkJCWlubGVuID0gbDsKLSsJCQl9 Ci0rCQlpZiAoaW5idWYpCi0rCQkJewotKwkJCUZJUFNfY2lwaGVyaW5pdCgmY3R4LCB4dHMsIGtl eSwgaXYsIGVuY3J5cHQpOwotKwkJCW91dGJ1ZiA9IE9QRU5TU0xfbWFsbG9jKGlubGVuKTsKLSsJ CQlGSVBTX2NpcGhlcigmY3R4LCBvdXRidWYsIGluYnVmLCBpbmxlbik7Ci0rCQkJT3V0cHV0VmFs dWUoZW5jcnlwdCA/ICJDVCI6IlBUIiwgb3V0YnVmLCBpbmxlbiwgb3V0LCAwKTsKLSsJCQlPUEVO U1NMX2ZyZWUoaW5idWYpOwotKwkJCU9QRU5TU0xfZnJlZShvdXRidWYpOwotKwkJCU9QRU5TU0xf ZnJlZShrZXkpOwotKwkJCU9QRU5TU0xfZnJlZShpdik7Ci0rCQkJaXYgPSBrZXkgPSBpbmJ1ZiA9 IG91dGJ1ZiA9IE5VTEw7Ci0rCQkJfQkKLSsJCX0KLSsJRklQU19jaXBoZXJfY3R4X2NsZWFudXAo JmN0eCk7CQotKwl9Ci0rCi0rc3RhdGljIHZvaWQgY2NtdGVzdChGSUxFICppbiwgRklMRSAqb3V0 KQotKwl7Ci0rCWNoYXIgYnVmWzIwMDA0OF07Ci0rCWNoYXIgbGJ1ZlsyMDAwNDhdOwotKwljaGFy ICprZXl3b3JkLCAqdmFsdWU7Ci0rCWxvbmcgbDsKLSsJdW5zaWduZWQgY2hhciAqS2V5ID0gTlVM TCwgKk5vbmNlID0gTlVMTDsKLSsJdW5zaWduZWQgY2hhciAqQWRhdGEgPSBOVUxMLCAqUGF5bG9h ZCA9IE5VTEw7Ci0rCXVuc2lnbmVkIGNoYXIgKkNUID0gTlVMTDsKLSsJaW50IFBsZW4gPSAtMSwg TmxlbiA9IC0xLCBUbGVuID0gLTEsIEFsZW4gPSAtMTsKLSsJaW50IGRlY3IgPSAwOwotKwlFVlBf Q0lQSEVSX0NUWCBjdHg7Ci0rCWNvbnN0IEVWUF9DSVBIRVIgKmNjbSA9IE5VTEw7Ci0rCUZJUFNf Y2lwaGVyX2N0eF9pbml0KCZjdHgpOwotKwotKwl3aGlsZShmZ2V0cyhidWYsc2l6ZW9mIGJ1Zixp bikgIT0gTlVMTCkKLSsJCXsKLSsJCWNoYXIgKnA7Ci0rCQlmcHV0cyhidWYsb3V0KTsKLSsJCXJl ZG86Ci0rCQlpZiAoIXBhcnNlX2xpbmUoJmtleXdvcmQsICZ2YWx1ZSwgbGJ1ZiwgYnVmKSkKLSsJ CQljb250aW51ZTsKLSsKLSsJCS8qIElmIHN1cnJvdW5kZWQgYnkgc3F1YXJlIGJyYWNrZXRzIHph cCB0aGVtICovCi0rCQlpZiAoa2V5d29yZFswXSA9PSAnWycpCi0rCQkJewotKwkJCWtleXdvcmQr KzsKLSsJCQlwID0gc3RyY2hyKHZhbHVlLCAnXScpOwotKwkJCWlmIChwKQotKwkJCQkqcCA9IDA7 Ci0rCQkJfQotKwkJLyogU2VlIGlmIHdlIGhhdmUgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBw YXJhbWV0ZXJzCi0rCQkgKiBpZiBzbyBjb3B5IHJlc3Qgb2YgbGluZSBiYWNrIHRvIGJ1ZmZlciBh bmQgcmVkbyBsYXRlci4KLSsJCSAqLwotKwkJcCA9IHN0cmNocih2YWx1ZSwgJywnKTsKLSsJCWlm IChwKQotKwkJCXsKLSsJCQkqcCA9IDA7Ci0rCQkJc3RyY3B5KGJ1ZiwgcCArIDEpOwotKwkJCXN0 cmNhdChidWYsICJcbiIpOwotKwkJCWRlY3IgPSAxOwotKwkJCX0KLSsJCWlmICghc3RyY21wKGtl eXdvcmQsIlBsZW4iKSkKLSsJCQlQbGVuID0gYXRvaSh2YWx1ZSk7Ci0rCQllbHNlIGlmICghc3Ry Y21wKGtleXdvcmQsIk5sZW4iKSkKLSsJCQlObGVuID0gYXRvaSh2YWx1ZSk7Ci0rCQllbHNlIGlm ICghc3RyY21wKGtleXdvcmQsIlRsZW4iKSkKLSsJCQlUbGVuID0gYXRvaSh2YWx1ZSk7Ci0rCQll bHNlIGlmICghc3RyY21wKGtleXdvcmQsIkFsZW4iKSkKLSsJCQlBbGVuID0gYXRvaSh2YWx1ZSk7 Ci0rCQlpZiAocCkKLSsJCQlnb3RvIHJlZG87Ci0rCQlpZiAoIXN0cmNtcChrZXl3b3JkLCJLZXki KSkKLSsJCQl7Ci0rCQkJaWYgKEtleSkKLSsJCQkJT1BFTlNTTF9mcmVlKEtleSk7Ci0rCQkJS2V5 ID0gaGV4MmJpbl9tKHZhbHVlLCAmbCk7Ci0rCQkJaWYgKGwgPT0gMTYpCi0rCQkJCWNjbSA9IEVW UF9hZXNfMTI4X2NjbSgpOwotKwkJCWVsc2UgaWYgKGwgPT0gMjQpCi0rCQkJCWNjbSA9IEVWUF9h ZXNfMTkyX2NjbSgpOwotKwkJCWVsc2UgaWYgKGwgPT0gMzIpCi0rCQkJCWNjbSA9IEVWUF9hZXNf MjU2X2NjbSgpOwotKwkJCWVsc2UKLSsJCQkJewotKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkluY29u c2lzdGVudCBLZXkgbGVuZ3RoXG4iKTsKLSsJCQkJZXhpdCgxKTsKLSsJCQkJfQotKwkJCX0KLSsJ CWVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwiTm9uY2UiKSkKLSsJCQl7Ci0rCQkJaWYgKE5vbmNl KQotKwkJCQlPUEVOU1NMX2ZyZWUoTm9uY2UpOwotKwkJCU5vbmNlID0gaGV4MmJpbl9tKHZhbHVl LCAmbCk7Ci0rCQkJaWYgKGwgIT0gTmxlbikKLSsJCQkJewotKwkJCQlmcHJpbnRmKHN0ZGVyciwg IkluY29uc2lzdGVudCBub25jZSBsZW5ndGhcbiIpOwotKwkJCQlleGl0KDEpOwotKwkJCQl9Ci0r CQkJfQotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCJQYXlsb2FkIikgJiYgIWRlY3IpCi0r CQkJewotKwkJCVBheWxvYWQgPSBoZXgyYmluX20odmFsdWUsICZsKTsKLSsJCQlpZiAoUGxlbiAm JiBsICE9IFBsZW4pCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsICJJbmNvbnNpc3RlbnQg UGF5bG9hZCBsZW5ndGhcbiIpOwotKwkJCQlleGl0KDEpOwotKwkJCQl9Ci0rCQkJfQotKwkJZWxz ZSBpZiAoIXN0cmNtcChrZXl3b3JkLCJBZGF0YSIpKQotKwkJCXsKLSsJCQlpZiAoQWRhdGEpCi0r CQkJCU9QRU5TU0xfZnJlZShBZGF0YSk7Ci0rCQkJQWRhdGEgPSBoZXgyYmluX20odmFsdWUsICZs KTsKLSsJCQlpZiAoQWxlbiAmJiBsICE9IEFsZW4pCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRl cnIsICJJbmNvbnNpc3RlbnQgUGF5bG9hZCBsZW5ndGhcbiIpOwotKwkJCQlleGl0KDEpOwotKwkJ CQl9Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCJDVCIpICYmIGRlY3IpCi0r CQkJewotKwkJCUNUID0gaGV4MmJpbl9tKHZhbHVlLCAmbCk7Ci0rCQkJaWYgKGwgIT0gKFBsZW4g KyBUbGVuKSkKLSsJCQkJewotKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkluY29uc2lzdGVudCBDVCBs ZW5ndGhcbiIpOwotKwkJCQlleGl0KDEpOwotKwkJCQl9Ci0rCQkJfQotKwkJaWYgKFBheWxvYWQp Ci0rCQkJewotKwkJCUZJUFNfY2lwaGVyaW5pdCgmY3R4LCBjY20sIE5VTEwsIE5VTEwsIDEpOwot KwkJCUZJUFNfY2lwaGVyX2N0eF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sIE5s ZW4sIDApOwotKwkJCUZJUFNfY2lwaGVyX2N0eF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRf VEFHLCBUbGVuLCAwKTsKLSsJCQlGSVBTX2NpcGhlcmluaXQoJmN0eCwgTlVMTCwgS2V5LCBOb25j ZSwgMSk7Ci0rCi0rCQkJRklQU19jaXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwgUGxlbik7Ci0rCQkJ RklQU19jaXBoZXIoJmN0eCwgTlVMTCwgQWRhdGEsIEFsZW4pOwotKwkJCUNUID0gT1BFTlNTTF9t YWxsb2MoUGxlbiArIFRsZW4pOwotKwkJCUZJUFNfY2lwaGVyKCZjdHgsIENULCBQYXlsb2FkLCBQ bGVuKTsKLSsJCQlGSVBTX2NpcGhlcl9jdHhfY3RybCgmY3R4LCBFVlBfQ1RSTF9DQ01fR0VUX1RB RywgVGxlbiwKLSsJCQkJCQlDVCArIFBsZW4pOwotKwkJCU91dHB1dFZhbHVlKCJDVCIsIENULCBQ bGVuICsgVGxlbiwgb3V0LCAwKTsKLSsJCQlPUEVOU1NMX2ZyZWUoQ1QpOwotKwkJCU9QRU5TU0xf ZnJlZShQYXlsb2FkKTsKLSsJCQlDVCA9IFBheWxvYWQgPSBOVUxMOwotKwkJCX0KLSsJCWlmIChD VCkKLSsJCQl7Ci0rCQkJaW50IHJ2OwotKwkJCWludCBsZW4gPSBQbGVuID09IDAgPyAxOiBQbGVu OwotKwkJCUZJUFNfY2lwaGVyaW5pdCgmY3R4LCBjY20sIE5VTEwsIE5VTEwsIDApOwotKwkJCUZJ UFNfY2lwaGVyX2N0eF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sIE5sZW4sIDAp OwotKwkJCUZJUFNfY2lwaGVyX2N0eF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfVEFHLAot KwkJCQkJCVRsZW4sIENUICsgUGxlbik7Ci0rCQkJRklQU19jaXBoZXJpbml0KCZjdHgsIE5VTEws IEtleSwgTm9uY2UsIDApOwotKwkJCUZJUFNfY2lwaGVyKCZjdHgsIE5VTEwsIE5VTEwsIFBsZW4p OwotKwkJCUZJUFNfY2lwaGVyKCZjdHgsIE5VTEwsIEFkYXRhLCBBbGVuKTsKLSsJCQlQYXlsb2Fk ID0gT1BFTlNTTF9tYWxsb2MobGVuKTsKLSsJCQlydiA9IEZJUFNfY2lwaGVyKCZjdHgsIFBheWxv YWQsIENULCBQbGVuKTsKLSsJCQlpZiAocnYgPj0gMCkKLSsJCQkJewotKwkJCQlpZiAocnYgPT0g MCkKLSsJCQkJCVBheWxvYWRbMF0gPSAwOwotKwkJCQlmcHV0cygiUmVzdWx0ID0gUGFzcyIgUkVT UF9FT0wsIG91dCk7Ci0rCQkJCU91dHB1dFZhbHVlKCJQYXlsb2FkIiwgUGF5bG9hZCwgbGVuLCBv dXQsIDApOwotKwkJCQl9Ci0rCQkJZWxzZQotKwkJCQlmcHV0cygiUmVzdWx0ID0gRmFpbCIgUkVT UF9FT0wsIG91dCk7Ci0rCQkJT1BFTlNTTF9mcmVlKENUKTsKLSsJCQlPUEVOU1NMX2ZyZWUoUGF5 bG9hZCk7Ci0rCQkJQ1QgPSBQYXlsb2FkID0gTlVMTDsKLSsJCQl9Ci0rCQl9Ci0rCWlmIChLZXkp Ci0rCQlPUEVOU1NMX2ZyZWUoS2V5KTsKLSsJaWYgKE5vbmNlKQotKwkJT1BFTlNTTF9mcmVlKE5v bmNlKTsKLSsJaWYgKEFkYXRhKQotKwkJT1BFTlNTTF9mcmVlKEFkYXRhKTsKLSsJRklQU19jaXBo ZXJfY3R4X2NsZWFudXAoJmN0eCk7Ci0rCX0KLSsKLSsjaWZkZWYgRklQU19BTEdWUwotK2ludCBm aXBzX2djbXRlc3RfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rI2Vsc2UKLStpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rI2VuZGlmCi0rCXsKLSsJaW50IGVuY3J5cHQ7Ci0r CWludCB4dHMgPSAwLCBjY20gPSAwOwotKwlGSUxFICppbiwgKm91dDsKLSsJaWYgKGFyZ2MgPT0g NCkKLSsJCXsKLSsJCWluID0gZm9wZW4oYXJndlsyXSwgInIiKTsKLSsJCWlmICghaW4pCi0rCQkJ ewotKwkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBpbnB1dCBmaWxlXG4iKTsKLSsJ CQlleGl0KDEpOwotKwkJCX0KLSsJCW91dCA9IGZvcGVuKGFyZ3ZbM10sICJ3Iik7Ci0rCQlpZiAo IW91dCkKLSsJCQl7Ci0rCQkJZnByaW50ZihzdGRlcnIsICJFcnJvciBvcGVuaW5nIG91dHB1dCBm aWxlXG4iKTsKLSsJCQlleGl0KDEpOwotKwkJCX0KLSsJCX0KLSsJZWxzZSBpZiAoYXJnYyA9PSAy KQotKwkJewotKwkJaW4gPSBzdGRpbjsKLSsJCW91dCA9IHN0ZG91dDsKLSsJCX0KLSsJZWxzZQot KwkJewotKwkJZnByaW50ZihzdGRlcnIsIiVzIFstZW5jcnlwdHwtZGVjcnlwdF1cbiIsYXJndlsw XSk7Ci0rCQlleGl0KDEpOwotKwkJfQotKwlmaXBzX2FsZ3Rlc3RfaW5pdCgpOwotKwlpZighc3Ry Y21wKGFyZ3ZbMV0sIi1lbmNyeXB0IikpCi0rCQllbmNyeXB0ID0gMTsKLSsJZWxzZSBpZighc3Ry Y21wKGFyZ3ZbMV0sIi1lbmNyeXB0SVZleHQiKSkKLSsJCWVuY3J5cHQgPSAyOwotKwllbHNlIGlm KCFzdHJjbXAoYXJndlsxXSwiLWRlY3J5cHQiKSkKLSsJCWVuY3J5cHQgPSAwOwotKwllbHNlIGlm KCFzdHJjbXAoYXJndlsxXSwiLWNjbSIpKQotKwkJY2NtID0gMTsKLSsJZWxzZSBpZighc3RyY21w KGFyZ3ZbMV0sIi14dHMiKSkKLSsJCXh0cyA9IDE7Ci0rCWVsc2UKLSsJCXsKLSsJCWZwcmludGYo c3RkZXJyLCJEb24ndCBrbm93IGhvdyB0byAlcy5cbiIsYXJndlsxXSk7Ci0rCQlleGl0KDEpOwot KwkJfQotKwotKwlpZiAoY2NtKQotKwkJY2NtdGVzdChpbiwgb3V0KTsKLSsJZWxzZSBpZiAoeHRz KQotKwkJeHRzdGVzdChpbiwgb3V0KTsKLSsJZWxzZQotKwkJZ2NtdGVzdChpbiwgb3V0LCBlbmNy eXB0KTsKLSsKLSsJaWYgKGFyZ2MgPT0gNCkKLSsJCXsKLSsJCWZjbG9zZShpbik7Ci0rCQlmY2xv c2Uob3V0KTsKLSsJCX0KLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX3JuZ3ZzLmMuZmlwcyBvcGVuc3Ns LTEuMC4xay9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfcm5ndnMuYwotLS0tIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9maXBzL2NhdnMvZmlwc19ybmd2cy5jLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS41 NTQ5MjIzNTkgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNf cm5ndnMuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU1NDkyMjM1OSArMDEwMAotQEAgLTAsMCArMSwy MzAgQEAKLSsvKgotKyAqIENydWRlIHRlc3QgZHJpdmVyIGZvciBwcm9jZXNzaW5nIHRoZSBWU1Qg YW5kIE1DVCB0ZXN0dmVjdG9yIGZpbGVzCi0rICogZ2VuZXJhdGVkIGJ5IHRoZSBDTVZQIFJOR1ZT IHByb2R1Y3QuCi0rICoKLSsgKiBOb3RlIHRoZSBpbnB1dCBmaWxlcyBhcmUgYXNzdW1lZCB0byBo YXZlIGEgX3ZlcnlfIHNwZWNpZmljIGZvcm1hdAotKyAqIGFzIGRlc2NyaWJlZCBpbiB0aGUgTklT VCBkb2N1bWVudCAiVGhlIFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yCi0rICogVmFsaWRhdGlvbiBT eXN0ZW0gKFJOR1ZTKSIsIE1heSAyNSwgMjAwNC4KLSsgKgotKyAqLwotKyNpbmNsdWRlIDxvcGVu c3NsL29wZW5zc2xjb25mLmg+Ci0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLSsjaW5jbHVkZSA8 c3RkaW8uaD4KLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgICBw cmludGYoIk5vIEZJUFMgUk5HIHN1cHBvcnRcbiIpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rI2Vs c2UKLSsKLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2RzYS5o PgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4K LSsjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5k Lmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wveDUwOXYzLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgot KyNpbmNsdWRlIDxjdHlwZS5oPgotKwotKyNpbmNsdWRlICJmaXBzX3V0bC5oIgotKwotK3ZvaWQg dnN0KCkKLSsgICAgewotKyAgICB1bnNpZ25lZCBjaGFyICprZXkgPSBOVUxMOwotKyAgICB1bnNp Z25lZCBjaGFyICp2ID0gTlVMTDsKLSsgICAgdW5zaWduZWQgY2hhciAqZHQgPSBOVUxMOwotKyAg ICB1bnNpZ25lZCBjaGFyIHJldFsxNl07Ci0rICAgIGNoYXIgYnVmWzEwMjRdOwotKyAgICBjaGFy IGxidWZbMTAyNF07Ci0rICAgIGNoYXIgKmtleXdvcmQsICp2YWx1ZTsKLSsgICAgbG9uZyBpLCBr ZXlsZW47Ci0rCi0rICAgIGtleWxlbiA9IDA7Ci0rCi0rICAgIHdoaWxlKGZnZXRzKGJ1ZixzaXpl b2YgYnVmLHN0ZGluKSAhPSBOVUxMKQotKwl7Ci0rCWZwdXRzKGJ1ZixzdGRvdXQpOwotKwlpZigh c3RybmNtcChidWYsIltBRVMgMTI4LUtleV0iLCAxMykpCi0rCQlrZXlsZW4gPSAxNjsKLSsJZWxz ZSBpZighc3RybmNtcChidWYsIltBRVMgMTkyLUtleV0iLCAxMykpCi0rCQlrZXlsZW4gPSAyNDsK LSsJZWxzZSBpZighc3RybmNtcChidWYsIltBRVMgMjU2LUtleV0iLCAxMykpCi0rCQlrZXlsZW4g PSAzMjsKLSsJaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1ZikpCi0r CQljb250aW51ZTsKLSsJaWYoIXN0cmNtcChrZXl3b3JkLCJLZXkiKSkKLSsJICAgIHsKLSsJICAg IGtleT1oZXgyYmluX20odmFsdWUsJmkpOwotKwkgICAgaWYgKGkgIT0ga2V5bGVuKQotKwkJewot KwkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIGtleSBsZW5ndGgsIGV4cGVjdGluZyAlbGRcbiIs IGtleWxlbik7Ci0rCQlyZXR1cm47Ci0rCQl9Ci0rCSAgICB9Ci0rCWVsc2UgaWYoIXN0cmNtcChr ZXl3b3JkLCJEVCIpKQotKwkgICAgewotKwkgICAgZHQ9aGV4MmJpbl9tKHZhbHVlLCZpKTsKLSsJ ICAgIGlmIChpICE9IDE2KQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIERUIGxl bmd0aFxuIik7Ci0rCQlyZXR1cm47Ci0rCQl9Ci0rCSAgICB9Ci0rCWVsc2UgaWYoIXN0cmNtcChr ZXl3b3JkLCJWIikpCi0rCSAgICB7Ci0rCSAgICB2PWhleDJiaW5fbSh2YWx1ZSwmaSk7Ci0rCSAg ICBpZiAoaSAhPSAxNikKLSsJCXsKLSsJCWZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBWIGxlbmd0 aFxuIik7Ci0rCQlyZXR1cm47Ci0rCQl9Ci0rCi0rCSAgICBpZiAoIWtleSB8fCAhZHQpCi0rCQl7 Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIk1pc3Npbmcga2V5IG9yIERUXG4iKTsKLSsJCXJldHVybjsK LSsJCX0KLSsKLSsJICAgIEZJUFNfeDkzMV9zZXRfa2V5KGtleSwga2V5bGVuKTsKLSsJICAgIEZJ UFNfeDkzMV9zZWVkKHYsMTYpOwotKwkgICAgRklQU194OTMxX3NldF9kdChkdCk7Ci0rCSAgICBp ZiAoRklQU194OTMxX2J5dGVzKHJldCwxNikgPD0gMCkKLSsJCXsKLSsJCWZwcmludGYoc3RkZXJy LCAiRXJyb3IgZ2V0dGluZyBQUk5HIHZhbHVlXG4iKTsKLSsJICAgICAgICByZXR1cm47Ci0rCSAg ICAgICAgfQotKwotKwkgICAgcHYoIlIiLHJldCwxNik7Ci0rCSAgICBPUEVOU1NMX2ZyZWUoa2V5 KTsKLSsJICAgIGtleSA9IE5VTEw7Ci0rCSAgICBPUEVOU1NMX2ZyZWUoZHQpOwotKwkgICAgZHQg PSBOVUxMOwotKwkgICAgT1BFTlNTTF9mcmVlKHYpOwotKwkgICAgdiA9IE5VTEw7Ci0rCSAgICB9 Ci0rCX0KLSsgICAgfQotKwotK3ZvaWQgbWN0KCkKLSsgICAgewotKyAgICB1bnNpZ25lZCBjaGFy ICprZXkgPSBOVUxMOwotKyAgICB1bnNpZ25lZCBjaGFyICp2ID0gTlVMTDsKLSsgICAgdW5zaWdu ZWQgY2hhciAqZHQgPSBOVUxMOwotKyAgICB1bnNpZ25lZCBjaGFyIHJldFsxNl07Ci0rICAgIGNo YXIgYnVmWzEwMjRdOwotKyAgICBjaGFyIGxidWZbMTAyNF07Ci0rICAgIGNoYXIgKmtleXdvcmQs ICp2YWx1ZTsKLSsgICAgbG9uZyBpLCBrZXlsZW47Ci0rICAgIGludCBqOwotKwotKyAgICBrZXls ZW4gPSAwOwotKwotKyAgICB3aGlsZShmZ2V0cyhidWYsc2l6ZW9mIGJ1ZixzdGRpbikgIT0gTlVM TCkKLSsJewotKwlmcHV0cyhidWYsc3Rkb3V0KTsKLSsJaWYoIXN0cm5jbXAoYnVmLCJbQUVTIDEy OC1LZXldIiwgMTMpKQotKwkJa2V5bGVuID0gMTY7Ci0rCWVsc2UgaWYoIXN0cm5jbXAoYnVmLCJb QUVTIDE5Mi1LZXldIiwgMTMpKQotKwkJa2V5bGVuID0gMjQ7Ci0rCWVsc2UgaWYoIXN0cm5jbXAo YnVmLCJbQUVTIDI1Ni1LZXldIiwgMTMpKQotKwkJa2V5bGVuID0gMzI7Ci0rCWlmICghcGFyc2Vf bGluZSgma2V5d29yZCwgJnZhbHVlLCBsYnVmLCBidWYpKQotKwkJY29udGludWU7Ci0rCWlmKCFz dHJjbXAoa2V5d29yZCwiS2V5IikpCi0rCSAgICB7Ci0rCSAgICBrZXk9aGV4MmJpbl9tKHZhbHVl LCZpKTsKLSsJICAgIGlmIChpICE9IGtleWxlbikKLSsJCXsKLSsJCWZwcmludGYoc3RkZXJyLCAi SW52YWxpZCBrZXkgbGVuZ3RoLCBleHBlY3RpbmcgJWxkXG4iLCBrZXlsZW4pOwotKwkJcmV0dXJu OwotKwkJfQotKwkgICAgfQotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiRFQiKSkKLSsJICAg IHsKLSsJICAgIGR0PWhleDJiaW5fbSh2YWx1ZSwmaSk7Ci0rCSAgICBpZiAoaSAhPSAxNikKLSsJ CXsKLSsJCWZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBEVCBsZW5ndGhcbiIpOwotKwkJcmV0dXJu OwotKwkJfQotKwkgICAgfQotKwllbHNlIGlmKCFzdHJjbXAoa2V5d29yZCwiViIpKQotKwkgICAg ewotKwkgICAgdj1oZXgyYmluX20odmFsdWUsJmkpOwotKwkgICAgaWYgKGkgIT0gMTYpCi0rCQl7 Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgViBsZW5ndGhcbiIpOwotKwkJcmV0dXJuOwot KwkJfQotKwotKwkgICAgaWYgKCFrZXkgfHwgIWR0KQotKwkJewotKwkJZnByaW50ZihzdGRlcnIs ICJNaXNzaW5nIGtleSBvciBEVFxuIik7Ci0rCQlyZXR1cm47Ci0rCQl9Ci0rCi0rCSAgICBGSVBT X3g5MzFfc2V0X2tleShrZXksIGtleWxlbik7Ci0rCSAgICBGSVBTX3g5MzFfc2VlZCh2LDE2KTsK LSsJICAgIGZvciAoaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQotKwkJewotKwkJICAgIEZJUFNfeDkz MV9zZXRfZHQoZHQpOwotKwkJICAgIGlmIChGSVBTX3g5MzFfYnl0ZXMocmV0LDE2KSA8PSAwKQot KwkJCXsKLSsJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGdldHRpbmcgUFJORyB2YWx1ZVxuIik7 Ci0rCQkgICAgICAgIHJldHVybjsKLSsJCSAgICAgICAgfQotKwkJICAgIC8qIEluY3JlbWVudCBE VCAqLwotKwkJICAgIGZvciAoaiA9IDE1OyBqID49IDA7IGotLSkKLSsJCQl7Ci0rCQkJZHRbal0r KzsKLSsJCQlpZiAoZHRbal0pCi0rCQkJCWJyZWFrOwotKwkJCX0KLSsJCX0KLSsKLSsJICAgIHB2 KCJSIixyZXQsMTYpOwotKwkgICAgT1BFTlNTTF9mcmVlKGtleSk7Ci0rCSAgICBrZXkgPSBOVUxM OwotKwkgICAgT1BFTlNTTF9mcmVlKGR0KTsKLSsJICAgIGR0ID0gTlVMTDsKLSsJICAgIE9QRU5T U0xfZnJlZSh2KTsKLSsJICAgIHYgPSBOVUxMOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLStp bnQgbWFpbihpbnQgYXJnYyxjaGFyICoqYXJndikKLSsgICAgewotKyAgICBpZihhcmdjICE9IDIp Ci0rCXsKLSsJZnByaW50ZihzdGRlcnIsIiVzIFttY3R8dnN0XVxuIixhcmd2WzBdKTsKLSsJZXhp dCgxKTsKLSsJfQotKyAgICBpZighRklQU19tb2RlX3NldCgxKSkKLSsJewotKwlkb19wcmludF9l cnJvcnMoKTsKLSsJZXhpdCgxKTsKLSsJfQotKyAgICBGSVBTX3g5MzFfcmVzZXQoKTsKLSsgICAg aWYgKCFGSVBTX3g5MzFfdGVzdF9tb2RlKCkpCi0rCXsKLSsJZnByaW50ZihzdGRlcnIsICJFcnJv ciBzZXR0aW5nIFBSTkcgdGVzdCBtb2RlXG4iKTsKLSsJZG9fcHJpbnRfZXJyb3JzKCk7Ci0rCWV4 aXQoMSk7Ci0rCX0KLSsgICAgaWYoIXN0cmNtcChhcmd2WzFdLCJtY3QiKSkKLSsJbWN0KCk7Ci0r ICAgIGVsc2UgaWYoIXN0cmNtcChhcmd2WzFdLCJ2c3QiKSkKLSsJdnN0KCk7Ci0rICAgIGVsc2UK LSsJewotKwlmcHJpbnRmKHN0ZGVyciwiRG9uJ3Qga25vdyBob3cgdG8gJXMuXG4iLGFyZ3ZbMV0p OwotKwlleGl0KDEpOwotKwl9Ci0rCi0rICAgIHJldHVybiAwOwotKyAgICB9Ci0rI2VuZGlmCi1k aWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfcnNhZ3Rlc3QuYy5m aXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19yc2FndGVzdC5jCi0tLS0g b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX3JzYWd0ZXN0LmMuZmlwcwkyMDE1 LTAxLTA5IDA5OjUxOjUxLjU1NTkyMjM4MSArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0 by9maXBzL2NhdnMvZmlwc19yc2FndGVzdC5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTU1OTIyMzgx ICswMTAwCi1AQCAtMCwwICsxLDM5MCBAQAotKy8qIGZpcHNfcnNhZ3Rlc3QuYyAqLwotKy8qIFdy aXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUg T3BlblNTTAotKyAqIHByb2plY3QgMjAwNS4KLSsgKi8KLSsvKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENv cHlyaWdodCAoYykgMjAwNSwyMDA3IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJl c2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0 dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoK LSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0 aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0r ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMu IEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2Yg dGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xl ZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRv b2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMg Ik9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQg dG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdy aXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNT TC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBt YXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBl YXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lv biBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9m IGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFj a25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVu U1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFO WQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBD T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB TCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElB QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICog QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g SUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotKyAqCi0rICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMg c29mdHdhcmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCi0rICogKGVheUBjcnlwdHNvZnQuY29tKS4g IFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQotKyAqIEh1ZHNv biAodGpoQGNyeXB0c29mdC5jb20pLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+ Ci0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxv cGVuc3NsL2Jpby5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotKyNpbmNsdWRlIDxvcGVu c3NsL2htYWMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9yc2EuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL3g1 MDl2My5oPgotKwotKyNpZm5kZWYgT1BFTlNTTF9GSVBTCi0rCi0raW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKLSt7Ci0rICAgIHByaW50ZigiTm8gRklQUyBSU0Egc3VwcG9ydFxuIik7 Ci0rICAgIHJldHVybigwKTsKLSt9Ci0rCi0rI2Vsc2UKLSsKLSsjaW5jbHVkZSAiZmlwc191dGwu aCIKLSsKLStpbnQgcnNhX3Rlc3QoRklMRSAqb3V0LCBGSUxFICppbik7Ci0rc3RhdGljIGludCBy c2FfcHJpbnRrZXkxKEZJTEUgKm91dCwgUlNBICpyc2EsCi0rCQlCSUdOVU0gKlhwMSwgQklHTlVN ICpYcDIsIEJJR05VTSAqWHAsCi0rCQlCSUdOVU0gKmUpOwotK3N0YXRpYyBpbnQgcnNhX3ByaW50 a2V5MihGSUxFICpvdXQsIFJTQSAqcnNhLAotKwkJQklHTlVNICpYcTEsIEJJR05VTSAqWHEyLCBC SUdOVU0gKlhxKTsKLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rCXsKLSsJ RklMRSAqaW4gPSBOVUxMLCAqb3V0ID0gTlVMTDsKLSsKLSsJaW50IHJldCA9IDE7Ci0rCi0rCWlm KCFGSVBTX21vZGVfc2V0KDEpKQotKwkJewotKwkJZG9fcHJpbnRfZXJyb3JzKCk7Ci0rCQlnb3Rv IGVuZDsKLSsJCX0KLSsKLSsJaWYgKGFyZ2MgPT0gMSkKLSsJCWluID0gc3RkaW47Ci0rCWVsc2UK LSsJCWluID0gZm9wZW4oYXJndlsxXSwgInIiKTsKLSsKLSsJaWYgKGFyZ2MgPCAyKQotKwkJb3V0 ID0gc3Rkb3V0OwotKwllbHNlCi0rCQlvdXQgPSBmb3Blbihhcmd2WzJdLCAidyIpOwotKwotKwlp ZiAoIWluKQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJGQVRBTCBpbnB1dCBpbml0aWFsaXph dGlvbiBlcnJvclxuIik7Ci0rCQlnb3RvIGVuZDsKLSsJCX0KLSsKLSsJaWYgKCFvdXQpCi0rCQl7 Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIkZBVEFMIG91dHB1dCBpbml0aWFsaXphdGlvbiBlcnJvclxu Iik7Ci0rCQlnb3RvIGVuZDsKLSsJCX0KLSsKLSsJaWYgKCFyc2FfdGVzdChvdXQsIGluKSkKLSsJ CXsKLSsJCWZwcmludGYoc3RkZXJyLCAiRkFUQUwgUlNBR1RFU1QgZmlsZSBwcm9jZXNzaW5nIGVy cm9yXG4iKTsKLSsJCWdvdG8gZW5kOwotKwkJfQotKwllbHNlCi0rCQlyZXQgPSAwOwotKwotKwll bmQ6Ci0rCi0rCWlmIChyZXQpCi0rCQlkb19wcmludF9lcnJvcnMoKTsKLSsKLSsJaWYgKGluICYm IChpbiAhPSBzdGRpbikpCi0rCQlmY2xvc2UoaW4pOwotKwlpZiAob3V0ICYmIChvdXQgIT0gc3Rk b3V0KSkKLSsJCWZjbG9zZShvdXQpOwotKwotKwlyZXR1cm4gcmV0OwotKwotKwl9Ci0rCi0rI2Rl ZmluZSBSU0FfVEVTVF9NQVhMSU5FTEVOCTEwMjQwCi0rCi0raW50IHJzYV90ZXN0KEZJTEUgKm91 dCwgRklMRSAqaW4pCi0rCXsKLSsJY2hhciAqbGluZWJ1ZiwgKm9saW5lYnVmLCAqcCwgKnE7Ci0r CWNoYXIgKmtleXdvcmQsICp2YWx1ZTsKLSsJUlNBICpyc2EgPSBOVUxMOwotKwlCSUdOVU0gKlhw MSA9IE5VTEwsICpYcDIgPSBOVUxMLCAqWHAgPSBOVUxMOwotKwlCSUdOVU0gKlhxMSA9IE5VTEws ICpYcTIgPSBOVUxMLCAqWHEgPSBOVUxMOwotKwlCSUdOVU0gKmUgPSBOVUxMOwotKwlpbnQgcmV0 ID0gMDsKLSsJaW50IGxudW0gPSAwOwotKwotKwlvbGluZWJ1ZiA9IE9QRU5TU0xfbWFsbG9jKFJT QV9URVNUX01BWExJTkVMRU4pOwotKwlsaW5lYnVmID0gT1BFTlNTTF9tYWxsb2MoUlNBX1RFU1Rf TUFYTElORUxFTik7Ci0rCi0rCWlmICghbGluZWJ1ZiB8fCAhb2xpbmVidWYpCi0rCQlnb3RvIGVy cm9yOwotKwotKwl3aGlsZSAoZmdldHMob2xpbmVidWYsIFJTQV9URVNUX01BWExJTkVMRU4sIGlu KSkKLSsJCXsKLSsJCWxudW0rKzsKLSsJCXN0cmNweShsaW5lYnVmLCBvbGluZWJ1Zik7Ci0rCQlr ZXl3b3JkID0gbGluZWJ1ZjsKLSsJCS8qIFNraXAgbGVhZGluZyBzcGFjZSAqLwotKwkJd2hpbGUg KGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKmtleXdvcmQpKQotKwkJCWtleXdvcmQrKzsKLSsKLSsJ CS8qIExvb2sgZm9yID0gc2lnbiAqLwotKwkJcCA9IHN0cmNocihsaW5lYnVmLCAnPScpOwotKwot KwkJLyogSWYgbm8gPSBvciBzdGFydHMgd2l0aCBbIChmb3IgW2ZvbyA9IGJhcl0gbGluZSkganVz dCBjb3B5ICovCi0rCQlpZiAoIXAgfHwgKmtleXdvcmQ9PSdbJykKLSsJCQl7Ci0rCQkJaWYgKGZw dXRzKG9saW5lYnVmLCBvdXQpIDwgMCkKLSsJCQkJZ290byBlcnJvcjsKLSsJCQljb250aW51ZTsK LSsJCQl9Ci0rCi0rCQlxID0gcCAtIDE7Ci0rCi0rCQkvKiBSZW1vdmUgdHJhaWxpbmcgc3BhY2Ug Ki8KLSsJCXdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpxKSkKLSsJCQkqcS0tID0gMDsK LSsKLSsJCSpwID0gMDsKLSsJCXZhbHVlID0gcCArIDE7Ci0rCi0rCQkvKiBSZW1vdmUgbGVhZGlu ZyBzcGFjZSBmcm9tIHZhbHVlICovCi0rCQl3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hhcikq dmFsdWUpKQotKwkJCXZhbHVlKys7Ci0rCi0rCQkvKiBSZW1vdmUgdHJhaWxpbmcgc3BhY2UgZnJv bSB2YWx1ZSAqLwotKwkJcCA9IHZhbHVlICsgc3RybGVuKHZhbHVlKSAtIDE7Ci0rCi0rCQl3aGls ZSAoKnAgPT0gJ1xuJyB8fCBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpwKSkKLSsJCQkqcC0tID0g MDsKLSsKLSsJCWlmICghc3RyY21wKGtleXdvcmQsICJ4cDEiKSkKLSsJCQl7Ci0rCQkJaWYgKFhw MSB8fCAhZG9faGV4MmJuKCZYcDEsdmFsdWUpKQotKwkJCQlnb3RvIHBhcnNlX2Vycm9yOwotKwkJ CX0KLSsJCWVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgInhwMiIpKQotKwkJCXsKLSsJCQlpZiAo WHAyIHx8ICFkb19oZXgyYm4oJlhwMix2YWx1ZSkpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0r CQkJfQotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiWHAiKSkKLSsJCQl7Ci0rCQkJaWYg KFhwIHx8ICFkb19oZXgyYm4oJlhwLHZhbHVlKSkKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJ CQl9Ci0rCQllbHNlIGlmICghc3RyY21wKGtleXdvcmQsICJ4cTEiKSkKLSsJCQl7Ci0rCQkJaWYg KFhxMSB8fCAhZG9faGV4MmJuKCZYcTEsdmFsdWUpKQotKwkJCQlnb3RvIHBhcnNlX2Vycm9yOwot KwkJCX0KLSsJCWVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgInhxMiIpKQotKwkJCXsKLSsJCQlp ZiAoWHEyIHx8ICFkb19oZXgyYm4oJlhxMix2YWx1ZSkpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7 Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiWHEiKSkKLSsJCQl7Ci0rCQkJ aWYgKFhxIHx8ICFkb19oZXgyYm4oJlhxLHZhbHVlKSkKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsK LSsJCQl9Ci0rCQllbHNlIGlmICghc3RyY21wKGtleXdvcmQsICJlIikpCi0rCQkJewotKwkJCWlm IChlIHx8ICFkb19oZXgyYm4oJmUsdmFsdWUpKQotKwkJCQlnb3RvIHBhcnNlX2Vycm9yOwotKwkJ CX0KLSsJCWVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgInAxIikpCi0rCQkJY29udGludWU7Ci0r CQllbHNlIGlmICghc3RyY21wKGtleXdvcmQsICJwMiIpKQotKwkJCWNvbnRpbnVlOwotKwkJZWxz ZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAicCIpKQotKwkJCWNvbnRpbnVlOwotKwkJZWxzZSBpZiAo IXN0cmNtcChrZXl3b3JkLCAicTEiKSkKLSsJCQljb250aW51ZTsKLSsJCWVsc2UgaWYgKCFzdHJj bXAoa2V5d29yZCwgInEyIikpCi0rCQkJY29udGludWU7Ci0rCQllbHNlIGlmICghc3RyY21wKGtl eXdvcmQsICJxIikpCi0rCQkJY29udGludWU7Ci0rCQllbHNlIGlmICghc3RyY21wKGtleXdvcmQs ICJuIikpCi0rCQkJY29udGludWU7Ci0rCQllbHNlIGlmICghc3RyY21wKGtleXdvcmQsICJkIikp Ci0rCQkJY29udGludWU7Ci0rCQllbHNlCi0rCQkJZ290byBwYXJzZV9lcnJvcjsKLSsKLSsJCWZw dXRzKG9saW5lYnVmLCBvdXQpOwotKwotKwkJaWYgKGUgJiYgWHAxICYmIFhwMiAmJiBYcCkKLSsJ CQl7Ci0rCQkJcnNhID0gRklQU19yc2FfbmV3KCk7Ci0rCQkJaWYgKCFyc2EpCi0rCQkJCWdvdG8g ZXJyb3I7Ci0rCQkJaWYgKCFyc2FfcHJpbnRrZXkxKG91dCwgcnNhLCBYcDEsIFhwMiwgWHAsIGUp KQotKwkJCQlnb3RvIGVycm9yOwotKwkJCUJOX2ZyZWUoWHAxKTsKLSsJCQlYcDEgPSBOVUxMOwot KwkJCUJOX2ZyZWUoWHAyKTsKLSsJCQlYcDIgPSBOVUxMOwotKwkJCUJOX2ZyZWUoWHApOwotKwkJ CVhwID0gTlVMTDsKLSsJCQlCTl9mcmVlKGUpOwotKwkJCWUgPSBOVUxMOwotKwkJCX0KLSsKLSsJ CWlmIChyc2EgJiYgWHExICYmIFhxMiAmJiBYcSkKLSsJCQl7Ci0rCQkJaWYgKCFyc2FfcHJpbnRr ZXkyKG91dCwgcnNhLCBYcTEsIFhxMiwgWHEpKQotKwkJCQlnb3RvIGVycm9yOwotKwkJCUJOX2Zy ZWUoWHExKTsKLSsJCQlYcTEgPSBOVUxMOwotKwkJCUJOX2ZyZWUoWHEyKTsKLSsJCQlYcTIgPSBO VUxMOwotKwkJCUJOX2ZyZWUoWHEpOwotKwkJCVhxID0gTlVMTDsKLSsJCQlGSVBTX3JzYV9mcmVl KHJzYSk7Ci0rCQkJcnNhID0gTlVMTDsKLSsJCQl9Ci0rCQl9Ci0rCi0rCXJldCA9IDE7Ci0rCi0r CWVycm9yOgotKwotKwlpZiAob2xpbmVidWYpCi0rCQlPUEVOU1NMX2ZyZWUob2xpbmVidWYpOwot KwlpZiAobGluZWJ1ZikKLSsJCU9QRU5TU0xfZnJlZShsaW5lYnVmKTsKLSsKLSsJaWYgKFhwMSkK LSsJCUJOX2ZyZWUoWHAxKTsKLSsJaWYgKFhwMikKLSsJCUJOX2ZyZWUoWHAyKTsKLSsJaWYgKFhw KQotKwkJQk5fZnJlZShYcCk7Ci0rCWlmIChYcTEpCi0rCQlCTl9mcmVlKFhxMSk7Ci0rCWlmIChY cTEpCi0rCQlCTl9mcmVlKFhxMSk7Ci0rCWlmIChYcTIpCi0rCQlCTl9mcmVlKFhxMik7Ci0rCWlm IChYcSkKLSsJCUJOX2ZyZWUoWHEpOwotKwlpZiAoZSkKLSsJCUJOX2ZyZWUoZSk7Ci0rCWlmIChy c2EpCi0rCQlGSVBTX3JzYV9mcmVlKHJzYSk7Ci0rCi0rCXJldHVybiByZXQ7Ci0rCi0rCXBhcnNl X2Vycm9yOgotKwotKwlmcHJpbnRmKHN0ZGVyciwgIkZBVEFMIHBhcnNlIGVycm9yIHByb2Nlc3Np bmcgbGluZSAlZFxuIiwgbG51bSk7Ci0rCi0rCWdvdG8gZXJyb3I7Ci0rCi0rCX0KLSsKLStzdGF0 aWMgaW50IHJzYV9wcmludGtleTEoRklMRSAqb3V0LCBSU0EgKnJzYSwKLSsJCUJJR05VTSAqWHAx LCBCSUdOVU0gKlhwMiwgQklHTlVNICpYcCwKLSsJCUJJR05VTSAqZSkKLSsJewotKwlpbnQgcmV0 ID0gMDsKLSsJQklHTlVNICpwMSA9IE5VTEwsICpwMiA9IE5VTEw7Ci0rCXAxID0gQk5fbmV3KCk7 Ci0rCXAyID0gQk5fbmV3KCk7Ci0rCWlmICghcDEgfHwgIXAyKQotKwkJZ290byBlcnJvcjsKLSsK LSsJaWYgKCFSU0FfWDkzMV9kZXJpdmVfZXgocnNhLCBwMSwgcDIsIE5VTEwsIE5VTEwsIFhwMSwg WHAyLCBYcCwKLSsJCQkJCQlOVUxMLCBOVUxMLCBOVUxMLCBlLCBOVUxMKSkKLSsJCWdvdG8gZXJy b3I7Ci0rCi0rCWRvX2JuX3ByaW50X25hbWUob3V0LCAicDEiLCBwMSk7Ci0rCWRvX2JuX3ByaW50 X25hbWUob3V0LCAicDIiLCBwMik7Ci0rCWRvX2JuX3ByaW50X25hbWUob3V0LCAicCIsIHJzYS0+ cCk7Ci0rCi0rCXJldCA9IDE7Ci0rCi0rCWVycm9yOgotKwlpZiAocDEpCi0rCQlCTl9mcmVlKHAx KTsKLSsJaWYgKHAyKQotKwkJQk5fZnJlZShwMik7Ci0rCi0rCXJldHVybiByZXQ7Ci0rCX0KLSsK LStzdGF0aWMgaW50IHJzYV9wcmludGtleTIoRklMRSAqb3V0LCBSU0EgKnJzYSwKLSsJCUJJR05V TSAqWHExLCBCSUdOVU0gKlhxMiwgQklHTlVNICpYcSkKLSsJewotKwlpbnQgcmV0ID0gMDsKLSsJ QklHTlVNICpxMSA9IE5VTEwsICpxMiA9IE5VTEw7Ci0rCXExID0gQk5fbmV3KCk7Ci0rCXEyID0g Qk5fbmV3KCk7Ci0rCWlmICghcTEgfHwgIXEyKQotKwkJZ290byBlcnJvcjsKLSsKLSsJaWYgKCFS U0FfWDkzMV9kZXJpdmVfZXgocnNhLCBOVUxMLCBOVUxMLCBxMSwgcTIsIE5VTEwsIE5VTEwsIE5V TEwsCi0rCQkJCQkJWHExLCBYcTIsIFhxLCBOVUxMLCBOVUxMKSkKLSsJCWdvdG8gZXJyb3I7Ci0r Ci0rCWRvX2JuX3ByaW50X25hbWUob3V0LCAicTEiLCBxMSk7Ci0rCWRvX2JuX3ByaW50X25hbWUo b3V0LCAicTIiLCBxMik7Ci0rCWRvX2JuX3ByaW50X25hbWUob3V0LCAicSIsIHJzYS0+cSk7Ci0r CWRvX2JuX3ByaW50X25hbWUob3V0LCAibiIsIHJzYS0+bik7Ci0rCWRvX2JuX3ByaW50X25hbWUo b3V0LCAiZCIsIHJzYS0+ZCk7Ci0rCi0rCXJldCA9IDE7Ci0rCi0rCWVycm9yOgotKwlpZiAocTEp Ci0rCQlCTl9mcmVlKHExKTsKLSsJaWYgKHEyKQotKwkJQk5fZnJlZShxMik7Ci0rCi0rCXJldHVy biByZXQ7Ci0rCX0KLSsKLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9m aXBzL2NhdnMvZmlwc19yc2FzdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMv Y2F2cy9maXBzX3JzYXN0ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9jYXZz L2ZpcHNfcnNhc3Rlc3QuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTU1OTIyMzgxICswMTAw Ci0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX3JzYXN0ZXN0LmMJMjAx NS0wMS0wOSAwOTo1MTo1MS41NTU5MjIzODEgKzAxMDAKLUBAIC0wLDAgKzEsMzcwIEBACi0rLyog Zmlwc19yc2FzdGVzdC5jICovCi0rLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChz dGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCi0rICogcHJvamVjdCAyMDA1LgotKyAq LwotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDA1IFRoZSBPcGVuU1NMIFBy b2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsg KgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3Ry aWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmlu ZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0 aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0r ICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2pl Y3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsg KiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVk IGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBu b3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0 dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICog Ni4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhl IGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3Qg aW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAg ICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcv KSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJP SkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsg KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wg UFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VW RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U UkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D RSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqCi0rICogVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCi0rICog KGVheUBjcnlwdHNvZnQuY29tKS4gIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0 dGVuIGJ5IFRpbQotKyAqIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgotKyAqCi0rICovCi0r Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0 cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Jpby5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2 cC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIu aD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgot KyNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5oPgotKwotKyNpZm5kZWYgT1BFTlNTTF9GSVBTCi0r Ci0raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSt7Ci0rICAgIHByaW50ZigiTm8g RklQUyBSU0Egc3VwcG9ydFxuIik7Ci0rICAgIHJldHVybigwKTsKLSt9Ci0rCi0rI2Vsc2UKLSsK LSsjaW5jbHVkZSAiZmlwc191dGwuaCIKLSsKLStzdGF0aWMgaW50IHJzYV9zdGVzdChGSUxFICpv dXQsIEZJTEUgKmluLCBpbnQgU2FsdGxlbik7Ci0rc3RhdGljIGludCByc2FfcHJpbnRzaWcoRklM RSAqb3V0LCBSU0EgKnJzYSwgY29uc3QgRVZQX01EICpkZ3N0LAotKwkJdW5zaWduZWQgY2hhciAq TXNnLCBsb25nIE1zZ2xlbiwgaW50IFNhbHRsZW4pOwotKwotK2ludCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKLSsJewotKwlGSUxFICppbiA9IE5VTEwsICpvdXQgPSBOVUxMOwotKwotKwlp bnQgcmV0ID0gMSwgU2FsdGxlbiA9IC0xOwotKwotKwlpZighRklQU19tb2RlX3NldCgxKSkKLSsJ CXsKLSsJCWRvX3ByaW50X2Vycm9ycygpOwotKwkJZ290byBlbmQ7Ci0rCQl9Ci0rCi0rCWlmICgo YXJnYyA+IDIpICYmICFzdHJjbXAoIi1zYWx0bGVuIiwgYXJndlsxXSkpCi0rCQl7Ci0rCQlTYWx0 bGVuID0gYXRvaShhcmd2WzJdKTsKLSsJCWlmIChTYWx0bGVuIDwgMCkKLSsJCQl7Ci0rCQkJZnBy aW50ZihzdGRlcnIsICJGQVRBTDogSW52YWxpZCBzYWx0IGxlbmd0aFxuIik7Ci0rCQkJZ290byBl bmQ7Ci0rCQkJfQotKwkJYXJnYyAtPSAyOwotKwkJYXJndiArPSAyOwotKwkJfQotKwllbHNlIGlm ICgoYXJnYyA+IDEpICYmICFzdHJjbXAoIi14OTMxIiwgYXJndlsxXSkpCi0rCQl7Ci0rCQlTYWx0 bGVuID0gLTI7Ci0rCQlhcmdjLS07Ci0rCQlhcmd2Kys7Ci0rCQl9Ci0rCi0rCWlmIChhcmdjID09 IDEpCi0rCQlpbiA9IHN0ZGluOwotKwllbHNlCi0rCQlpbiA9IGZvcGVuKGFyZ3ZbMV0sICJyIik7 Ci0rCi0rCWlmIChhcmdjIDwgMikKLSsJCW91dCA9IHN0ZG91dDsKLSsJZWxzZQotKwkJb3V0ID0g Zm9wZW4oYXJndlsyXSwgInciKTsKLSsKLSsJaWYgKCFpbikKLSsJCXsKLSsJCWZwcmludGYoc3Rk ZXJyLCAiRkFUQUwgaW5wdXQgaW5pdGlhbGl6YXRpb24gZXJyb3JcbiIpOwotKwkJZ290byBlbmQ7 Ci0rCQl9Ci0rCi0rCWlmICghb3V0KQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJGQVRBTCBv dXRwdXQgaW5pdGlhbGl6YXRpb24gZXJyb3JcbiIpOwotKwkJZ290byBlbmQ7Ci0rCQl9Ci0rCi0r CWlmICghcnNhX3N0ZXN0KG91dCwgaW4sIFNhbHRsZW4pKQotKwkJewotKwkJZnByaW50ZihzdGRl cnIsICJGQVRBTCBSU0FTVEVTVCBmaWxlIHByb2Nlc3NpbmcgZXJyb3JcbiIpOwotKwkJZ290byBl bmQ7Ci0rCQl9Ci0rCWVsc2UKLSsJCXJldCA9IDA7Ci0rCi0rCWVuZDoKLSsKLSsJaWYgKHJldCkK LSsJCWRvX3ByaW50X2Vycm9ycygpOwotKwotKwlpZiAoaW4gJiYgKGluICE9IHN0ZGluKSkKLSsJ CWZjbG9zZShpbik7Ci0rCWlmIChvdXQgJiYgKG91dCAhPSBzdGRvdXQpKQotKwkJZmNsb3NlKG91 dCk7Ci0rCi0rCXJldHVybiByZXQ7Ci0rCi0rCX0KLSsKLSsjZGVmaW5lIFJTQV9URVNUX01BWExJ TkVMRU4JMTAyNDAKLSsKLStpbnQgcnNhX3N0ZXN0KEZJTEUgKm91dCwgRklMRSAqaW4sIGludCBT YWx0bGVuKQotKwl7Ci0rCWNoYXIgKmxpbmVidWYsICpvbGluZWJ1ZiwgKnAsICpxOwotKwljaGFy ICprZXl3b3JkLCAqdmFsdWU7Ci0rCVJTQSAqcnNhID0gTlVMTDsKLSsJY29uc3QgRVZQX01EICpk Z3N0ID0gTlVMTDsKLSsJdW5zaWduZWQgY2hhciAqTXNnID0gTlVMTDsKLSsJbG9uZyBNc2dsZW4g PSAtMTsKLSsJaW50IGtleWxlbiA9IC0xLCBjdXJyZW50X2tleWxlbiA9IC0xOwotKwlpbnQgcmV0 ID0gMDsKLSsJaW50IGxudW0gPSAwOwotKwotKwlvbGluZWJ1ZiA9IE9QRU5TU0xfbWFsbG9jKFJT QV9URVNUX01BWExJTkVMRU4pOwotKwlsaW5lYnVmID0gT1BFTlNTTF9tYWxsb2MoUlNBX1RFU1Rf TUFYTElORUxFTik7Ci0rCi0rCWlmICghbGluZWJ1ZiB8fCAhb2xpbmVidWYpCi0rCQlnb3RvIGVy cm9yOwotKwotKwl3aGlsZSAoZmdldHMob2xpbmVidWYsIFJTQV9URVNUX01BWExJTkVMRU4sIGlu KSkKLSsJCXsKLSsJCWxudW0rKzsKLSsJCXN0cmNweShsaW5lYnVmLCBvbGluZWJ1Zik7Ci0rCQlr ZXl3b3JkID0gbGluZWJ1ZjsKLSsJCS8qIFNraXAgbGVhZGluZyBzcGFjZSAqLwotKwkJd2hpbGUg KGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKmtleXdvcmQpKQotKwkJCWtleXdvcmQrKzsKLSsKLSsJ CS8qIExvb2sgZm9yID0gc2lnbiAqLwotKwkJcCA9IHN0cmNocihsaW5lYnVmLCAnPScpOwotKwot KwkJLyogSWYgbm8gPSBqdXN0IGNvcHkgKi8KLSsJCWlmICghcCkKLSsJCQl7Ci0rCQkJaWYgKGZw dXRzKG9saW5lYnVmLCBvdXQpIDwgMCkKLSsJCQkJZ290byBlcnJvcjsKLSsJCQljb250aW51ZTsK LSsJCQl9Ci0rCi0rCQlxID0gcCAtIDE7Ci0rCi0rCQkvKiBSZW1vdmUgdHJhaWxpbmcgc3BhY2Ug Ki8KLSsJCXdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpxKSkKLSsJCQkqcS0tID0gMDsK LSsKLSsJCSpwID0gMDsKLSsJCXZhbHVlID0gcCArIDE7Ci0rCi0rCQkvKiBSZW1vdmUgbGVhZGlu ZyBzcGFjZSBmcm9tIHZhbHVlICovCi0rCQl3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hhcikq dmFsdWUpKQotKwkJCXZhbHVlKys7Ci0rCi0rCQkvKiBSZW1vdmUgdHJhaWxpbmcgc3BhY2UgZnJv bSB2YWx1ZSAqLwotKwkJcCA9IHZhbHVlICsgc3RybGVuKHZhbHVlKSAtIDE7Ci0rCi0rCQl3aGls ZSAoKnAgPT0gJ1xuJyB8fCBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpwKSkKLSsJCQkqcC0tID0g MDsKLSsKLSsJCS8qIExvb2sgZm9yIFttb2QgPSBYWFhdIGZvciBrZXkgbGVuZ3RoICovCi0rCi0r CQlpZiAoIXN0cmNtcChrZXl3b3JkLCAiW21vZCIpKQotKwkJCXsKLSsJCQlwID0gdmFsdWUgKyBz dHJsZW4odmFsdWUpIC0gMTsKLSsJCQlpZiAoKnAgIT0gJ10nKQotKwkJCQlnb3RvIHBhcnNlX2Vy cm9yOwotKwkJCSpwID0gMDsKLSsJCQlrZXlsZW4gPSBhdG9pKHZhbHVlKTsKLSsJCQlpZiAoa2V5 bGVuIDwgMCkKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQl9Ci0rCQllbHNlIGlmICghc3Ry Y21wKGtleXdvcmQsICJTSEFBbGciKSkKLSsJCQl7Ci0rCQkJaWYgKCFzdHJjbXAodmFsdWUsICJT SEExIikpCi0rCQkJCWRnc3QgPSBFVlBfc2hhMSgpOwotKwkJCWVsc2UgaWYgKCFzdHJjbXAodmFs dWUsICJTSEEyMjQiKSkKLSsJCQkJZGdzdCA9IEVWUF9zaGEyMjQoKTsKLSsJCQllbHNlIGlmICgh c3RyY21wKHZhbHVlLCAiU0hBMjU2IikpCi0rCQkJCWRnc3QgPSBFVlBfc2hhMjU2KCk7Ci0rCQkJ ZWxzZSBpZiAoIXN0cmNtcCh2YWx1ZSwgIlNIQTM4NCIpKQotKwkJCQlkZ3N0ID0gRVZQX3NoYTM4 NCgpOwotKwkJCWVsc2UgaWYgKCFzdHJjbXAodmFsdWUsICJTSEE1MTIiKSkKLSsJCQkJZGdzdCA9 IEVWUF9zaGE1MTIoKTsKLSsJCQllbHNlCi0rCQkJCXsKLSsJCQkJZnByaW50ZihzdGRlcnIsCi0r CQkJCQkiRkFUQUw6IHVuc3VwcG9ydGVkIGFsZ29yaXRobSBcIiVzXCJcbiIsCi0rCQkJCQkJCQl2 YWx1ZSk7Ci0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJCX0KLSsJCQl9Ci0rCQllbHNlIGlm ICghc3RyY21wKGtleXdvcmQsICJNc2ciKSkKLSsJCQl7Ci0rCQkJaWYgKE1zZykKLSsJCQkJZ290 byBwYXJzZV9lcnJvcjsKLSsJCQlpZiAoc3RybGVuKHZhbHVlKSAmIDEpCi0rCQkJCSooLS12YWx1 ZSkgPSAnMCc7Ci0rCQkJTXNnID0gaGV4MmJpbl9tKHZhbHVlLCAmTXNnbGVuKTsKLSsJCQlpZiAo IU1zZykKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQl9Ci0rCi0rCQlmcHV0cyhvbGluZWJ1 Ziwgb3V0KTsKLSsKLSsJCS8qIElmIGtleSBsZW5ndGggaGFzIGNoYW5nZWQsIGdlbmVyYXRlIGFu ZCBvdXRwdXQgcHVibGljCi0rCQkgKiBrZXkgY29tcG9uZW50cyBvZiBuZXcgUlNBIHByaXZhdGUg a2V5LgotKwkJICovCi0rCi0rCQlpZiAoa2V5bGVuICE9IGN1cnJlbnRfa2V5bGVuKQotKwkJCXsK LSsJCQlCSUdOVU0gKmJuX2U7Ci0rCQkJaWYgKHJzYSkKLSsJCQkJRklQU19yc2FfZnJlZShyc2Ep OwotKwkJCXJzYSA9IEZJUFNfcnNhX25ldygpOwotKwkJCWlmICghcnNhKQotKwkJCQlnb3RvIGVy cm9yOwotKwkJCWJuX2UgPSBCTl9uZXcoKTsKLSsJCQlpZiAoIWJuX2UgfHwgIUJOX3NldF93b3Jk KGJuX2UsIDB4MTAwMSkpCi0rCQkJCWdvdG8gZXJyb3I7Ci0rCQkJaWYgKCFSU0FfWDkzMV9nZW5l cmF0ZV9rZXlfZXgocnNhLCBrZXlsZW4sIGJuX2UsIE5VTEwpKQotKwkJCQlnb3RvIGVycm9yOwot KwkJCUJOX2ZyZWUoYm5fZSk7Ci0rCQkJZnB1dHMoIm4gPSAiLCBvdXQpOwotKwkJCWRvX2JuX3By aW50KG91dCwgcnNhLT5uKTsKLSsJCQlmcHV0cygiXG5lID0gIiwgb3V0KTsKLSsJCQlkb19ibl9w cmludChvdXQsIHJzYS0+ZSk7Ci0rCQkJZnB1dHMoIlxuIiwgb3V0KTsKLSsJCQljdXJyZW50X2tl eWxlbiA9IGtleWxlbjsKLSsJCQl9Ci0rCi0rCQlpZiAoTXNnICYmIGRnc3QpCi0rCQkJewotKwkJ CWlmICghcnNhX3ByaW50c2lnKG91dCwgcnNhLCBkZ3N0LCBNc2csIE1zZ2xlbiwKLSsJCQkJCQkJ CVNhbHRsZW4pKQotKwkJCQlnb3RvIGVycm9yOwotKwkJCU9QRU5TU0xfZnJlZShNc2cpOwotKwkJ CU1zZyA9IE5VTEw7Ci0rCQkJfQotKwotKwkJfQotKwotKwlyZXQgPSAxOwotKwotKwllcnJvcjoK LSsKLSsJaWYgKG9saW5lYnVmKQotKwkJT1BFTlNTTF9mcmVlKG9saW5lYnVmKTsKLSsJaWYgKGxp bmVidWYpCi0rCQlPUEVOU1NMX2ZyZWUobGluZWJ1Zik7Ci0rCWlmIChyc2EpCi0rCQlGSVBTX3Jz YV9mcmVlKHJzYSk7Ci0rCi0rCXJldHVybiByZXQ7Ci0rCi0rCXBhcnNlX2Vycm9yOgotKwotKwlm cHJpbnRmKHN0ZGVyciwgIkZBVEFMIHBhcnNlIGVycm9yIHByb2Nlc3NpbmcgbGluZSAlZFxuIiwg bG51bSk7Ci0rCi0rCWdvdG8gZXJyb3I7Ci0rCi0rCX0KLSsKLStzdGF0aWMgaW50IHJzYV9wcmlu dHNpZyhGSUxFICpvdXQsIFJTQSAqcnNhLCBjb25zdCBFVlBfTUQgKmRnc3QsCi0rCQl1bnNpZ25l ZCBjaGFyICpNc2csIGxvbmcgTXNnbGVuLCBpbnQgU2FsdGxlbikKLSsJewotKwlpbnQgcmV0ID0g MDsKLSsJdW5zaWduZWQgY2hhciAqc2lnYnVmID0gTlVMTDsKLSsJaW50IGksIHNpZ2xlbjsKLSsJ LyogRVZQX1BLRVkgc3RydWN0dXJlICovCi0rCUVWUF9QS0VZIHBrOwotKwlFVlBfTURfQ1RYIGN0 eDsKLSsJcGsudHlwZSA9IEVWUF9QS0VZX1JTQTsKLSsJcGsucGtleS5yc2EgPSByc2E7Ci0rCi0r CXNpZ2xlbiA9IFJTQV9zaXplKHJzYSk7Ci0rCXNpZ2J1ZiA9IE9QRU5TU0xfbWFsbG9jKHNpZ2xl bik7Ci0rCWlmICghc2lnYnVmKQotKwkJZ290byBlcnJvcjsKLSsKLSsJRVZQX01EX0NUWF9pbml0 KCZjdHgpOwotKwotKwlpZiAoU2FsdGxlbiA+PSAwKQotKwkJewotKwkJTV9FVlBfTURfQ1RYX3Nl dF9mbGFncygmY3R4LAotKwkJCUVWUF9NRF9DVFhfRkxBR19QQURfUFNTIHwgKFNhbHRsZW4gPDwg MTYpKTsKLSsJCX0KLSsJZWxzZSBpZiAoU2FsdGxlbiA9PSAtMikKLSsJCU1fRVZQX01EX0NUWF9z ZXRfZmxhZ3MoJmN0eCwgRVZQX01EX0NUWF9GTEFHX1BBRF9YOTMxKTsKLSsJaWYgKCFFVlBfU2ln bkluaXRfZXgoJmN0eCwgZGdzdCwgTlVMTCkpCi0rCQlnb3RvIGVycm9yOwotKwlpZiAoIUVWUF9T aWduVXBkYXRlKCZjdHgsIE1zZywgTXNnbGVuKSkKLSsJCWdvdG8gZXJyb3I7Ci0rCWlmICghRVZQ X1NpZ25GaW5hbCgmY3R4LCBzaWdidWYsICh1bnNpZ25lZCBpbnQgKikmc2lnbGVuLCAmcGspKQot KwkJZ290byBlcnJvcjsKLSsKLSsJRVZQX01EX0NUWF9jbGVhbnVwKCZjdHgpOwotKwotKwlmcHV0 cygiUyA9ICIsIG91dCk7Ci0rCi0rCWZvciAoaSA9IDA7IGkgPCBzaWdsZW47IGkrKykKLSsJCWZw cmludGYob3V0LCAiJTAyWCIsIHNpZ2J1ZltpXSk7Ci0rCi0rCWZwdXRzKCJcbiIsIG91dCk7Ci0r Ci0rCXJldCA9IDE7Ci0rCi0rCWVycm9yOgotKwotKwlyZXR1cm4gcmV0OwotKwl9Ci0rI2VuZGlm Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfcnNhdnRlc3Qu Yy5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19yc2F2dGVzdC5jCi0t LS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX3JzYXZ0ZXN0LmMuZmlwcwky MDE1LTAxLTA5IDA5OjUxOjUxLjU1NTkyMjM4MSArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9maXBzL2NhdnMvZmlwc19yc2F2dGVzdC5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTU1OTIy MzgxICswMTAwCi1AQCAtMCwwICsxLDM3NyBAQAotKy8qIGZpcHNfcnNhdnRlc3QuYyAqLwotKy8q IFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0 aGUgT3BlblNTTAotKyAqIHByb2plY3QgMjAwNS4KLSsgKi8KLSsvKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAq IENvcHlyaWdodCAoYykgMjAwNSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNl cnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0r ICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBB bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRo aXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRn bWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29s a2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJP cGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRv Ci0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0 dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgbGljZW5zaW5nQE9wZW5TU0wu b3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5 IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFy IGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24g b2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBh bnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tu b3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkK LSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws Ci0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLSsgKgotKyAqIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNv ZnR3YXJlIHdyaXR0ZW4gYnkgRXJpYyBZb3VuZwotKyAqIChlYXlAY3J5cHRzb2Z0LmNvbSkuICBU aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0KLSsgKiBIdWRzb24g KHRqaEBjcnlwdHNvZnQuY29tKS4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgot KyNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8b3Bl bnNzbC9iaW8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9obWFjLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wv eDUwOXYzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9y c2EuaD4KLSsKLSsjaWZuZGVmIE9QRU5TU0xfRklQUwotKwotK2ludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCi0rewotKyAgICBwcmludGYoIk5vIEZJUFMgUlNBIHN1cHBvcnRcbiIpOwot KyAgICByZXR1cm4oMCk7Ci0rfQotKwotKyNlbHNlCi0rCi0rI2luY2x1ZGUgImZpcHNfdXRsLmgi Ci0rCi0raW50IHJzYV90ZXN0KEZJTEUgKm91dCwgRklMRSAqaW4sIGludCBzYWx0bGVuKTsKLStz dGF0aWMgaW50IHJzYV9wcmludHZlcihGSUxFICpvdXQsCi0rCQlCSUdOVU0gKm4sIEJJR05VTSAq ZSwKLSsJCWNvbnN0IEVWUF9NRCAqZGdzdCwKLSsJCXVuc2lnbmVkIGNoYXIgKk1zZywgbG9uZyBN c2dsZW4sCi0rCQl1bnNpZ25lZCBjaGFyICpTLCBsb25nIFNsZW4sIGludCBTYWx0bGVuKTsKLSsK LStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rCXsKLSsJRklMRSAqaW4gPSBOVUxM LCAqb3V0ID0gTlVMTDsKLSsKLSsJaW50IHJldCA9IDE7Ci0rCWludCBTYWx0bGVuID0gLTE7Ci0r Ci0rCWlmKCFGSVBTX21vZGVfc2V0KDEpKQotKwkJewotKwkJZG9fcHJpbnRfZXJyb3JzKCk7Ci0r CQlnb3RvIGVuZDsKLSsJCX0KLSsKLSsJaWYgKChhcmdjID4gMikgJiYgIXN0cmNtcCgiLXNhbHRs ZW4iLCBhcmd2WzFdKSkKLSsJCXsKLSsJCVNhbHRsZW4gPSBhdG9pKGFyZ3ZbMl0pOwotKwkJaWYg KFNhbHRsZW4gPCAwKQotKwkJCXsKLSsJCQlmcHJpbnRmKHN0ZGVyciwgIkZBVEFMOiBJbnZhbGlk IHNhbHQgbGVuZ3RoXG4iKTsKLSsJCQlnb3RvIGVuZDsKLSsJCQl9Ci0rCQlhcmdjIC09IDI7Ci0r CQlhcmd2ICs9IDI7Ci0rCQl9Ci0rCWVsc2UgaWYgKChhcmdjID4gMSkgJiYgIXN0cmNtcCgiLXg5 MzEiLCBhcmd2WzFdKSkKLSsJCXsKLSsJCVNhbHRsZW4gPSAtMjsKLSsJCWFyZ2MtLTsKLSsJCWFy Z3YrKzsKLSsJCX0KLSsKLSsJaWYgKGFyZ2MgPT0gMSkKLSsJCWluID0gc3RkaW47Ci0rCWVsc2UK LSsJCWluID0gZm9wZW4oYXJndlsxXSwgInIiKTsKLSsKLSsJaWYgKGFyZ2MgPCAyKQotKwkJb3V0 ID0gc3Rkb3V0OwotKwllbHNlCi0rCQlvdXQgPSBmb3Blbihhcmd2WzJdLCAidyIpOwotKwotKwlp ZiAoIWluKQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJGQVRBTCBpbnB1dCBpbml0aWFsaXph dGlvbiBlcnJvclxuIik7Ci0rCQlnb3RvIGVuZDsKLSsJCX0KLSsKLSsJaWYgKCFvdXQpCi0rCQl7 Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIkZBVEFMIG91dHB1dCBpbml0aWFsaXphdGlvbiBlcnJvclxu Iik7Ci0rCQlnb3RvIGVuZDsKLSsJCX0KLSsKLSsJaWYgKCFyc2FfdGVzdChvdXQsIGluLCBTYWx0 bGVuKSkKLSsJCXsKLSsJCWZwcmludGYoc3RkZXJyLCAiRkFUQUwgUlNBVlRFU1QgZmlsZSBwcm9j ZXNzaW5nIGVycm9yXG4iKTsKLSsJCWdvdG8gZW5kOwotKwkJfQotKwllbHNlCi0rCQlyZXQgPSAw OwotKwotKwllbmQ6Ci0rCi0rCWlmIChyZXQpCi0rCQlkb19wcmludF9lcnJvcnMoKTsKLSsKLSsJ aWYgKGluICYmIChpbiAhPSBzdGRpbikpCi0rCQlmY2xvc2UoaW4pOwotKwlpZiAob3V0ICYmIChv dXQgIT0gc3Rkb3V0KSkKLSsJCWZjbG9zZShvdXQpOwotKwotKwlyZXR1cm4gcmV0OwotKwotKwl9 Ci0rCi0rI2RlZmluZSBSU0FfVEVTVF9NQVhMSU5FTEVOCTEwMjQwCi0rCi0raW50IHJzYV90ZXN0 KEZJTEUgKm91dCwgRklMRSAqaW4sIGludCBTYWx0bGVuKQotKwl7Ci0rCWNoYXIgKmxpbmVidWYs ICpvbGluZWJ1ZiwgKnAsICpxOwotKwljaGFyICprZXl3b3JkLCAqdmFsdWU7Ci0rCWNvbnN0IEVW UF9NRCAqZGdzdCA9IE5VTEw7Ci0rCUJJR05VTSAqbiA9IE5VTEwsICplID0gTlVMTDsKLSsJdW5z aWduZWQgY2hhciAqTXNnID0gTlVMTCwgKlMgPSBOVUxMOwotKwlsb25nIE1zZ2xlbiwgU2xlbjsK LSsJaW50IHJldCA9IDA7Ci0rCWludCBsbnVtID0gMDsKLSsKLSsJb2xpbmVidWYgPSBPUEVOU1NM X21hbGxvYyhSU0FfVEVTVF9NQVhMSU5FTEVOKTsKLSsJbGluZWJ1ZiA9IE9QRU5TU0xfbWFsbG9j KFJTQV9URVNUX01BWExJTkVMRU4pOwotKwotKwlpZiAoIWxpbmVidWYgfHwgIW9saW5lYnVmKQot KwkJZ290byBlcnJvcjsKLSsKLSsJd2hpbGUgKGZnZXRzKG9saW5lYnVmLCBSU0FfVEVTVF9NQVhM SU5FTEVOLCBpbikpCi0rCQl7Ci0rCQlsbnVtKys7Ci0rCQlzdHJjcHkobGluZWJ1Ziwgb2xpbmVi dWYpOwotKwkJa2V5d29yZCA9IGxpbmVidWY7Ci0rCQkvKiBTa2lwIGxlYWRpbmcgc3BhY2UgKi8K LSsJCXdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSprZXl3b3JkKSkKLSsJCQlrZXl3b3Jk Kys7Ci0rCi0rCQkvKiBMb29rIGZvciA9IHNpZ24gKi8KLSsJCXAgPSBzdHJjaHIobGluZWJ1Ziwg Jz0nKTsKLSsKLSsJCS8qIElmIG5vID0gb3Igc3RhcnRzIHdpdGggWyAoZm9yIFtmb28gPSBiYXJd IGxpbmUpIGp1c3QgY29weSAqLwotKwkJaWYgKCFwIHx8ICprZXl3b3JkPT0nWycpCi0rCQkJewot KwkJCWlmIChmcHV0cyhvbGluZWJ1Ziwgb3V0KSA8IDApCi0rCQkJCWdvdG8gZXJyb3I7Ci0rCQkJ Y29udGludWU7Ci0rCQkJfQotKwotKwkJcSA9IHAgLSAxOwotKwotKwkJLyogUmVtb3ZlIHRyYWls aW5nIHNwYWNlICovCi0rCQl3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hhcikqcSkpCi0rCQkJ KnEtLSA9IDA7Ci0rCi0rCQkqcCA9IDA7Ci0rCQl2YWx1ZSA9IHAgKyAxOwotKwotKwkJLyogUmVt b3ZlIGxlYWRpbmcgc3BhY2UgZnJvbSB2YWx1ZSAqLwotKwkJd2hpbGUgKGlzc3BhY2UoKHVuc2ln bmVkIGNoYXIpKnZhbHVlKSkKLSsJCQl2YWx1ZSsrOwotKwotKwkJLyogUmVtb3ZlIHRyYWlsaW5n IHNwYWNlIGZyb20gdmFsdWUgKi8KLSsJCXAgPSB2YWx1ZSArIHN0cmxlbih2YWx1ZSkgLSAxOwot KwotKwkJd2hpbGUgKCpwID09ICdcbicgfHwgaXNzcGFjZSgodW5zaWduZWQgY2hhcikqcCkpCi0r CQkJKnAtLSA9IDA7Ci0rCi0rCQlpZiAoIXN0cmNtcChrZXl3b3JkLCAibiIpKQotKwkJCXsKLSsJ CQlpZiAoIWRvX2hleDJibigmbix2YWx1ZSkpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJ fQotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiZSIpKQotKwkJCXsKLSsJCQlpZiAoIWRv X2hleDJibigmZSx2YWx1ZSkpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJfQotKwkJZWxz ZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiU0hBQWxnIikpCi0rCQkJewotKwkJCWlmICghc3RyY21w KHZhbHVlLCAiU0hBMSIpKQotKwkJCQlkZ3N0ID0gRVZQX3NoYTEoKTsKLSsJCQllbHNlIGlmICgh c3RyY21wKHZhbHVlLCAiU0hBMjI0IikpCi0rCQkJCWRnc3QgPSBFVlBfc2hhMjI0KCk7Ci0rCQkJ ZWxzZSBpZiAoIXN0cmNtcCh2YWx1ZSwgIlNIQTI1NiIpKQotKwkJCQlkZ3N0ID0gRVZQX3NoYTI1 NigpOwotKwkJCWVsc2UgaWYgKCFzdHJjbXAodmFsdWUsICJTSEEzODQiKSkKLSsJCQkJZGdzdCA9 IEVWUF9zaGEzODQoKTsKLSsJCQllbHNlIGlmICghc3RyY21wKHZhbHVlLCAiU0hBNTEyIikpCi0r CQkJCWRnc3QgPSBFVlBfc2hhNTEyKCk7Ci0rCQkJZWxzZQotKwkJCQl7Ci0rCQkJCWZwcmludGYo c3RkZXJyLAotKwkJCQkJIkZBVEFMOiB1bnN1cHBvcnRlZCBhbGdvcml0aG0gXCIlc1wiXG4iLAot KwkJCQkJCQkJdmFsdWUpOwotKwkJCQlnb3RvIHBhcnNlX2Vycm9yOwotKwkJCQl9Ci0rCQkJfQot KwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiTXNnIikpCi0rCQkJewotKwkJCWlmIChNc2cp Ci0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJaWYgKHN0cmxlbih2YWx1ZSkgJiAxKQotKwkJ CQkqKC0tdmFsdWUpID0gJzAnOwotKwkJCU1zZyA9IGhleDJiaW5fbSh2YWx1ZSwgJk1zZ2xlbik7 Ci0rCQkJaWYgKCFNc2cpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJfQotKwkJZWxzZSBp ZiAoIXN0cmNtcChrZXl3b3JkLCAiUyIpKQotKwkJCXsKLSsJCQlpZiAoUykKLSsJCQkJZ290byBw YXJzZV9lcnJvcjsKLSsJCQlpZiAoc3RybGVuKHZhbHVlKSAmIDEpCi0rCQkJCSooLS12YWx1ZSkg PSAnMCc7Ci0rCQkJUyA9IGhleDJiaW5fbSh2YWx1ZSwgJlNsZW4pOwotKwkJCWlmICghUykKLSsJ CQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQl9Ci0rCQllbHNlIGlmICghc3RyY21wKGtleXdvcmQs ICJSZXN1bHQiKSkKLSsJCQljb250aW51ZTsKLSsJCWVsc2UKLSsJCQlnb3RvIHBhcnNlX2Vycm9y OwotKwotKwkJZnB1dHMob2xpbmVidWYsIG91dCk7Ci0rCi0rCQlpZiAobiAmJiBlICYmIE1zZyAm JiBTICYmIGRnc3QpCi0rCQkJewotKwkJCWlmICghcnNhX3ByaW50dmVyKG91dCwgbiwgZSwgZGdz dCwKLSsJCQkJCU1zZywgTXNnbGVuLCBTLCBTbGVuLCBTYWx0bGVuKSkKLSsJCQkJZ290byBlcnJv cjsKLSsJCQlPUEVOU1NMX2ZyZWUoTXNnKTsKLSsJCQlNc2cgPSBOVUxMOwotKwkJCU9QRU5TU0xf ZnJlZShTKTsKLSsJCQlTID0gTlVMTDsKLSsJCQl9Ci0rCi0rCQl9Ci0rCi0rCi0rCXJldCA9IDE7 Ci0rCi0rCi0rCWVycm9yOgotKwotKwlpZiAob2xpbmVidWYpCi0rCQlPUEVOU1NMX2ZyZWUob2xp bmVidWYpOwotKwlpZiAobGluZWJ1ZikKLSsJCU9QRU5TU0xfZnJlZShsaW5lYnVmKTsKLSsJaWYg KG4pCi0rCQlCTl9mcmVlKG4pOwotKwlpZiAoZSkKLSsJCUJOX2ZyZWUoZSk7Ci0rCi0rCXJldHVy biByZXQ7Ci0rCi0rCXBhcnNlX2Vycm9yOgotKwotKwlmcHJpbnRmKHN0ZGVyciwgIkZBVEFMIHBh cnNlIGVycm9yIHByb2Nlc3NpbmcgbGluZSAlZFxuIiwgbG51bSk7Ci0rCi0rCWdvdG8gZXJyb3I7 Ci0rCi0rCX0KLSsKLStzdGF0aWMgaW50IHJzYV9wcmludHZlcihGSUxFICpvdXQsCi0rCQlCSUdO VU0gKm4sIEJJR05VTSAqZSwKLSsJCWNvbnN0IEVWUF9NRCAqZGdzdCwKLSsJCXVuc2lnbmVkIGNo YXIgKk1zZywgbG9uZyBNc2dsZW4sCi0rCQl1bnNpZ25lZCBjaGFyICpTLCBsb25nIFNsZW4sIGlu dCBTYWx0bGVuKQotKwl7Ci0rCWludCByZXQgPSAwLCByOwotKwkvKiBTZXR1cCBSU0EgYW5kIEVW UF9QS0VZIHN0cnVjdHVyZXMgKi8KLSsJUlNBICpyc2FfcHVia2V5ID0gTlVMTDsKLSsJRVZQX1BL RVkgcGs7Ci0rCUVWUF9NRF9DVFggY3R4OwotKwl1bnNpZ25lZCBjaGFyICpidWYgPSBOVUxMOwot Kwlyc2FfcHVia2V5ID0gRklQU19yc2FfbmV3KCk7Ci0rCWlmICghcnNhX3B1YmtleSkKLSsJCWdv dG8gZXJyb3I7Ci0rCXJzYV9wdWJrZXktPm4gPSBCTl9kdXAobik7Ci0rCXJzYV9wdWJrZXktPmUg PSBCTl9kdXAoZSk7Ci0rCWlmICghcnNhX3B1YmtleS0+biB8fCAhcnNhX3B1YmtleS0+ZSkKLSsJ CWdvdG8gZXJyb3I7Ci0rCXBrLnR5cGUgPSBFVlBfUEtFWV9SU0E7Ci0rCXBrLnBrZXkucnNhID0g cnNhX3B1YmtleTsKLSsKLSsJRVZQX01EX0NUWF9pbml0KCZjdHgpOwotKwotKwlpZiAoU2FsdGxl biA+PSAwKQotKwkJewotKwkJTV9FVlBfTURfQ1RYX3NldF9mbGFncygmY3R4LAotKwkJCUVWUF9N RF9DVFhfRkxBR19QQURfUFNTIHwgKFNhbHRsZW4gPDwgMTYpKTsKLSsJCX0KLSsJZWxzZSBpZiAo U2FsdGxlbiA9PSAtMikKLSsJCU1fRVZQX01EX0NUWF9zZXRfZmxhZ3MoJmN0eCwgRVZQX01EX0NU WF9GTEFHX1BBRF9YOTMxKTsKLSsJaWYgKCFFVlBfVmVyaWZ5SW5pdF9leCgmY3R4LCBkZ3N0LCBO VUxMKSkKLSsJCWdvdG8gZXJyb3I7Ci0rCWlmICghRVZQX1ZlcmlmeVVwZGF0ZSgmY3R4LCBNc2cs IE1zZ2xlbikpCi0rCQlnb3RvIGVycm9yOwotKwotKwlyID0gRVZQX1ZlcmlmeUZpbmFsKCZjdHgs IFMsIFNsZW4sICZwayk7Ci0rCi0rCi0rCUVWUF9NRF9DVFhfY2xlYW51cCgmY3R4KTsKLSsKLSsJ aWYgKHIgPCAwKQotKwkJZ290byBlcnJvcjsKLSsJRVJSX2NsZWFyX2Vycm9yKCk7Ci0rCi0rCWlm IChyID09IDApCi0rCQlmcHV0cygiUmVzdWx0ID0gRlxuIiwgb3V0KTsKLSsJZWxzZQotKwkJZnB1 dHMoIlJlc3VsdCA9IFBcbiIsIG91dCk7Ci0rCi0rCXJldCA9IDE7Ci0rCi0rCWVycm9yOgotKwlp ZiAocnNhX3B1YmtleSkKLSsJCUZJUFNfcnNhX2ZyZWUocnNhX3B1YmtleSk7Ci0rCWlmIChidWYp Ci0rCQlPUEVOU1NMX2ZyZWUoYnVmKTsKLSsKLSsJcmV0dXJuIHJldDsKLSsJfQotKyNlbmRpZgot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX3NoYXRlc3QuYy5m aXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2NhdnMvZmlwc19zaGF0ZXN0LmMKLS0tLSBv cGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfc2hhdGVzdC5jLmZpcHMJMjAxNS0w MS0wOSAwOTo1MTo1MS41NTY5MjI0MDQgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8v Zmlwcy9jYXZzL2ZpcHNfc2hhdGVzdC5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTU2OTIyNDA0ICsw MTAwCi1AQCAtMCwwICsxLDM4OCBAQAotKy8qIGZpcHNfc2hhdGVzdC5jICovCi0rLyogV3JpdHRl biBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVu U1NMCi0rICogcHJvamVjdCAyMDA1LgotKyAqLwotKy8qID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJp Z2h0IChjKSAyMDA1IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot KyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAq IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg Y29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy IGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZl cnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAq ICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50Ogot KyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBP cGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuICho dHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wg VG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAg ICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg d2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVy bWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0r ICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJl IGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhl aXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUg T3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3Jt IHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdt ZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5 IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xr aXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMg UFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVY UFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE IFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRP UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBT UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC VVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP UiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F U1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBP UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJ TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF RAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotKyAqCi0rICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUg d3JpdHRlbiBieSBFcmljIFlvdW5nCi0rICogKGVheUBjcnlwdHNvZnQuY29tKS4gIFRoaXMgcHJv ZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQotKyAqIEh1ZHNvbiAodGpoQGNy eXB0c29mdC5jb20pLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1 ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Jp by5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5o PgotKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wveDUwOXYzLmg+ Ci0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQotK3sKLSsgICAgcHJpbnRmKCJObyBGSVBTIFNIQVhYWCBzdXBwb3J0XG4iKTsKLSsg ICAgcmV0dXJuKDApOwotK30KLSsKLSsjZWxzZQotKwotKyNpbmNsdWRlICJmaXBzX3V0bC5oIgot KwotK3N0YXRpYyBpbnQgZGdzdF90ZXN0KEZJTEUgKm91dCwgRklMRSAqaW4pOwotK3N0YXRpYyBp bnQgcHJpbnRfZGdzdChjb25zdCBFVlBfTUQgKm1kLCBGSUxFICpvdXQsCi0rCQl1bnNpZ25lZCBj aGFyICpNc2csIGludCBNc2dsZW4pOwotK3N0YXRpYyBpbnQgcHJpbnRfbW9udGUoY29uc3QgRVZQ X01EICptZCwgRklMRSAqb3V0LAotKwkJdW5zaWduZWQgY2hhciAqU2VlZCwgaW50IFNlZWRMZW4p OwotKwotK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsJewotKwlGSUxFICppbiA9 IE5VTEwsICpvdXQgPSBOVUxMOwotKwotKwlpbnQgcmV0ID0gMTsKLSsKLSsJaWYoIUZJUFNfbW9k ZV9zZXQoMSkpCi0rCQl7Ci0rCQlkb19wcmludF9lcnJvcnMoKTsKLSsJCWdvdG8gZW5kOwotKwkJ fQotKwotKwlpZiAoYXJnYyA9PSAxKQotKwkJaW4gPSBzdGRpbjsKLSsJZWxzZQotKwkJaW4gPSBm b3Blbihhcmd2WzFdLCAiciIpOwotKwotKwlpZiAoYXJnYyA8IDIpCi0rCQlvdXQgPSBzdGRvdXQ7 Ci0rCWVsc2UKLSsJCW91dCA9IGZvcGVuKGFyZ3ZbMl0sICJ3Iik7Ci0rCi0rCWlmICghaW4pCi0r CQl7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIkZBVEFMIGlucHV0IGluaXRpYWxpemF0aW9uIGVycm9y XG4iKTsKLSsJCWdvdG8gZW5kOwotKwkJfQotKwotKwlpZiAoIW91dCkKLSsJCXsKLSsJCWZwcmlu dGYoc3RkZXJyLCAiRkFUQUwgb3V0cHV0IGluaXRpYWxpemF0aW9uIGVycm9yXG4iKTsKLSsJCWdv dG8gZW5kOwotKwkJfQotKwotKwlpZiAoIWRnc3RfdGVzdChvdXQsIGluKSkKLSsJCXsKLSsJCWZw cmludGYoc3RkZXJyLCAiRkFUQUwgZGlnZXN0IGZpbGUgcHJvY2Vzc2luZyBlcnJvclxuIik7Ci0r CQlnb3RvIGVuZDsKLSsJCX0KLSsJZWxzZQotKwkJcmV0ID0gMDsKLSsKLSsJZW5kOgotKwotKwlp ZiAocmV0KQotKwkJZG9fcHJpbnRfZXJyb3JzKCk7Ci0rCi0rCWlmIChpbiAmJiAoaW4gIT0gc3Rk aW4pKQotKwkJZmNsb3NlKGluKTsKLSsJaWYgKG91dCAmJiAob3V0ICE9IHN0ZG91dCkpCi0rCQlm Y2xvc2Uob3V0KTsKLSsKLSsJcmV0dXJuIHJldDsKLSsKLSsJfQotKwotKyNkZWZpbmUgU0hBX1RF U1RfTUFYX0JJVFMJMTAyNDAwCi0rI2RlZmluZSBTSEFfVEVTVF9NQVhMSU5FTEVOCSgoKFNIQV9U RVNUX01BWF9CSVRTID4+IDMpICogMikgKyAxMDApCi0rCi0raW50IGRnc3RfdGVzdChGSUxFICpv dXQsIEZJTEUgKmluKQotKwl7Ci0rCWNvbnN0IEVWUF9NRCAqbWQgPSBOVUxMOwotKwljaGFyICps aW5lYnVmLCAqb2xpbmVidWYsICpwLCAqcTsKLSsJY2hhciAqa2V5d29yZCwgKnZhbHVlOwotKwl1 bnNpZ25lZCBjaGFyICpNc2cgPSBOVUxMLCAqU2VlZCA9IE5VTEw7Ci0rCWxvbmcgTXNnTGVuID0g LTEsIExlbiA9IC0xLCBTZWVkTGVuID0gLTE7Ci0rCWludCByZXQgPSAwOwotKwlpbnQgbG51bSA9 IDA7Ci0rCi0rCW9saW5lYnVmID0gT1BFTlNTTF9tYWxsb2MoU0hBX1RFU1RfTUFYTElORUxFTik7 Ci0rCWxpbmVidWYgPSBPUEVOU1NMX21hbGxvYyhTSEFfVEVTVF9NQVhMSU5FTEVOKTsKLSsKLSsJ aWYgKCFsaW5lYnVmIHx8ICFvbGluZWJ1ZikKLSsJCWdvdG8gZXJyb3I7Ci0rCi0rCi0rCXdoaWxl IChmZ2V0cyhvbGluZWJ1ZiwgU0hBX1RFU1RfTUFYTElORUxFTiwgaW4pKQotKwkJewotKwkJbG51 bSsrOwotKwkJc3RyY3B5KGxpbmVidWYsIG9saW5lYnVmKTsKLSsJCWtleXdvcmQgPSBsaW5lYnVm OwotKwkJLyogU2tpcCBsZWFkaW5nIHNwYWNlICovCi0rCQl3aGlsZSAoaXNzcGFjZSgodW5zaWdu ZWQgY2hhcikqa2V5d29yZCkpCi0rCQkJa2V5d29yZCsrOwotKwotKwkJLyogTG9vayBmb3IgPSBz aWduICovCi0rCQlwID0gc3RyY2hyKGxpbmVidWYsICc9Jyk7Ci0rCi0rCQkvKiBJZiBubyA9IG9y IHN0YXJ0cyB3aXRoIFsgKGZvciBbTD0yMF0gbGluZSkganVzdCBjb3B5ICovCi0rCQlpZiAoIXAp Ci0rCQkJewotKwkJCWZwdXRzKG9saW5lYnVmLCBvdXQpOwotKwkJCWNvbnRpbnVlOwotKwkJCX0K LSsKLSsJCXEgPSBwIC0gMTsKLSsKLSsJCS8qIFJlbW92ZSB0cmFpbGluZyBzcGFjZSAqLwotKwkJ d2hpbGUgKGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnEpKQotKwkJCSpxLS0gPSAwOwotKwotKwkJ KnAgPSAwOwotKwkJdmFsdWUgPSBwICsgMTsKLSsKLSsJCS8qIFJlbW92ZSBsZWFkaW5nIHNwYWNl IGZyb20gdmFsdWUgKi8KLSsJCXdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSp2YWx1ZSkp Ci0rCQkJdmFsdWUrKzsKLSsKLSsJCS8qIFJlbW92ZSB0cmFpbGluZyBzcGFjZSBmcm9tIHZhbHVl ICovCi0rCQlwID0gdmFsdWUgKyBzdHJsZW4odmFsdWUpIC0gMTsKLSsJCXdoaWxlICgqcCA9PSAn XG4nIHx8IGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnApKQotKwkJCSpwLS0gPSAwOwotKwotKwkJ aWYgKCFzdHJjbXAoa2V5d29yZCwiW0wiKSAmJiAqcD09J10nKQotKwkJCXsKLSsJCQlzd2l0Y2gg KGF0b2kodmFsdWUpKQotKwkJCQl7Ci0rCQkJCWNhc2UgMjA6IG1kPUVWUF9zaGExKCk7ICAgYnJl YWs7Ci0rCQkJCWNhc2UgMjg6IG1kPUVWUF9zaGEyMjQoKTsgYnJlYWs7Ci0rCQkJCWNhc2UgMzI6 IG1kPUVWUF9zaGEyNTYoKTsgYnJlYWs7Ci0rCQkJCWNhc2UgNDg6IG1kPUVWUF9zaGEzODQoKTsg YnJlYWs7Ci0rCQkJCWNhc2UgNjQ6IG1kPUVWUF9zaGE1MTIoKTsgYnJlYWs7Ci0rCQkJCWRlZmF1 bHQ6IGdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJCX0KLSsJCQl9Ci0rCQllbHNlIGlmICghc3RyY21w KGtleXdvcmQsICJMZW4iKSkKLSsJCQl7Ci0rCQkJaWYgKExlbiAhPSAtMSkKLSsJCQkJZ290byBw YXJzZV9lcnJvcjsKLSsJCQlMZW4gPSBhdG9pKHZhbHVlKTsKLSsJCQlpZiAoTGVuIDwgMCkKLSsJ CQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQkvKiBPbmx5IGhhbmRsZSBtdWx0aXBsZXMgb2YgOCBi aXRzICovCi0rCQkJaWYgKExlbiAmIDB4NykKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQlp ZiAoTGVuID4gU0hBX1RFU1RfTUFYX0JJVFMpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJ TXNnTGVuID0gTGVuID4+IDM7Ci0rCQkJfQotKwotKwkJZWxzZSBpZiAoIXN0cmNtcChrZXl3b3Jk LCAiTXNnIikpCi0rCQkJewotKwkJCWxvbmcgdG1wbGVuOwotKwkJCWlmIChzdHJsZW4odmFsdWUp ICYgMSkKLSsJCQkJKigtLXZhbHVlKSA9ICcwJzsKLSsJCQlpZiAoTXNnKQotKwkJCQlnb3RvIHBh cnNlX2Vycm9yOwotKwkJCU1zZyA9IGhleDJiaW5fbSh2YWx1ZSwgJnRtcGxlbik7Ci0rCQkJaWYg KCFNc2cpCi0rCQkJCWdvdG8gcGFyc2VfZXJyb3I7Ci0rCQkJfQotKwkJZWxzZSBpZiAoIXN0cmNt cChrZXl3b3JkLCAiU2VlZCIpKQotKwkJCXsKLSsJCQlpZiAoc3RybGVuKHZhbHVlKSAmIDEpCi0r CQkJCSooLS12YWx1ZSkgPSAnMCc7Ci0rCQkJaWYgKFNlZWQpCi0rCQkJCWdvdG8gcGFyc2VfZXJy b3I7Ci0rCQkJU2VlZCA9IGhleDJiaW5fbSh2YWx1ZSwgJlNlZWRMZW4pOwotKwkJCWlmICghU2Vl ZCkKLSsJCQkJZ290byBwYXJzZV9lcnJvcjsKLSsJCQl9Ci0rCQllbHNlIGlmICghc3RyY21wKGtl eXdvcmQsICJNRCIpKQotKwkJCWNvbnRpbnVlOwotKwkJZWxzZQotKwkJCWdvdG8gcGFyc2VfZXJy b3I7Ci0rCi0rCQlmcHV0cyhvbGluZWJ1Ziwgb3V0KTsKLSsKLSsJCWlmIChtZCAmJiBNc2cgJiYg KE1zZ0xlbiA+PSAwKSkKLSsJCQl7Ci0rCQkJaWYgKCFwcmludF9kZ3N0KG1kLCBvdXQsIE1zZywg TXNnTGVuKSkKLSsJCQkJZ290byBlcnJvcjsKLSsJCQlPUEVOU1NMX2ZyZWUoTXNnKTsKLSsJCQlN c2cgPSBOVUxMOwotKwkJCU1zZ0xlbiA9IC0xOwotKwkJCUxlbiA9IC0xOwotKwkJCX0KLSsJCWVs c2UgaWYgKG1kICYmIFNlZWQgJiYgKFNlZWRMZW4gPiAwKSkKLSsJCQl7Ci0rCQkJaWYgKCFwcmlu dF9tb250ZShtZCwgb3V0LCBTZWVkLCBTZWVkTGVuKSkKLSsJCQkJZ290byBlcnJvcjsKLSsJCQlP UEVOU1NMX2ZyZWUoU2VlZCk7Ci0rCQkJU2VlZCA9IE5VTEw7Ci0rCQkJU2VlZExlbiA9IC0xOwot KwkJCX0KLSsJCi0rCi0rCQl9Ci0rCi0rCi0rCXJldCA9IDE7Ci0rCi0rCi0rCWVycm9yOgotKwot KwlpZiAob2xpbmVidWYpCi0rCQlPUEVOU1NMX2ZyZWUob2xpbmVidWYpOwotKwlpZiAobGluZWJ1 ZikKLSsJCU9QRU5TU0xfZnJlZShsaW5lYnVmKTsKLSsJaWYgKE1zZykKLSsJCU9QRU5TU0xfZnJl ZShNc2cpOwotKwlpZiAoU2VlZCkKLSsJCU9QRU5TU0xfZnJlZShTZWVkKTsKLSsKLSsJcmV0dXJu IHJldDsKLSsKLSsJcGFyc2VfZXJyb3I6Ci0rCi0rCWZwcmludGYoc3RkZXJyLCAiRkFUQUwgcGFy c2UgZXJyb3IgcHJvY2Vzc2luZyBsaW5lICVkXG4iLCBsbnVtKTsKLSsKLSsJZ290byBlcnJvcjsK LSsKLSsJfQotKwotK3N0YXRpYyBpbnQgcHJpbnRfZGdzdChjb25zdCBFVlBfTUQgKmVtZCwgRklM RSAqb3V0LAotKwkJdW5zaWduZWQgY2hhciAqTXNnLCBpbnQgTXNnbGVuKQotKwl7Ci0rCWludCBp LCBtZGxlbjsKLSsJdW5zaWduZWQgY2hhciBtZFtFVlBfTUFYX01EX1NJWkVdOwotKwlpZiAoIUVW UF9EaWdlc3QoTXNnLCBNc2dsZW4sIG1kLCAodW5zaWduZWQgaW50ICopJm1kbGVuLCBlbWQsIE5V TEwpKQotKwkJewotKwkJZnB1dHMoIkVycm9yIGNhbGN1bGF0aW5nIEhBU0hcbiIsIHN0ZGVycik7 Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsJZnB1dHMoIk1EID0gIiwgb3V0KTsKLSsJZm9yIChpID0g MDsgaSA8IG1kbGVuOyBpKyspCi0rCQlmcHJpbnRmKG91dCwgIiUwMngiLCBtZFtpXSk7Ci0rCWZw dXRzKCJcbiIsIG91dCk7Ci0rCXJldHVybiAxOwotKwl9Ci0rCi0rc3RhdGljIGludCBwcmludF9t b250ZShjb25zdCBFVlBfTUQgKm1kLCBGSUxFICpvdXQsCi0rCQl1bnNpZ25lZCBjaGFyICpTZWVk LCBpbnQgU2VlZExlbikKLSsJewotKwl1bnNpZ25lZCBpbnQgaSwgaiwgazsKLSsJaW50IHJldCA9 IDA7Ci0rCUVWUF9NRF9DVFggY3R4OwotKwl1bnNpZ25lZCBjaGFyICptMSwgKm0yLCAqbTMsICpw OwotKwl1bnNpZ25lZCBpbnQgbWxlbiwgbTFsZW4sIG0ybGVuLCBtM2xlbjsKLSsKLSsJRVZQX01E X0NUWF9pbml0KCZjdHgpOwotKwotKwlpZiAoU2VlZExlbiA+IEVWUF9NQVhfTURfU0laRSkKLSsJ CW1sZW4gPSBTZWVkTGVuOwotKwllbHNlCi0rCQltbGVuID0gRVZQX01BWF9NRF9TSVpFOwotKwot KwltMSA9IE9QRU5TU0xfbWFsbG9jKG1sZW4pOwotKwltMiA9IE9QRU5TU0xfbWFsbG9jKG1sZW4p OwotKwltMyA9IE9QRU5TU0xfbWFsbG9jKG1sZW4pOwotKwotKwlpZiAoIW0xIHx8ICFtMiB8fCAh bTMpCi0rCQlnb3RvIG1jX2Vycm9yOwotKwotKwltMWxlbiA9IG0ybGVuID0gbTNsZW4gPSBTZWVk TGVuOwotKwltZW1jcHkobTEsIFNlZWQsIFNlZWRMZW4pOwotKwltZW1jcHkobTIsIFNlZWQsIFNl ZWRMZW4pOwotKwltZW1jcHkobTMsIFNlZWQsIFNlZWRMZW4pOwotKwotKwlmcHV0cygiXG4iLCBv dXQpOwotKwotKwlmb3IgKGogPSAwOyBqIDwgMTAwOyBqKyspCi0rCQl7Ci0rCQlmb3IgKGkgPSAw OyBpIDwgMTAwMDsgaSsrKQotKwkJCXsKLSsJCQlFVlBfRGlnZXN0SW5pdF9leCgmY3R4LCBtZCwg TlVMTCk7Ci0rCQkJRVZQX0RpZ2VzdFVwZGF0ZSgmY3R4LCBtMSwgbTFsZW4pOwotKwkJCUVWUF9E aWdlc3RVcGRhdGUoJmN0eCwgbTIsIG0ybGVuKTsKLSsJCQlFVlBfRGlnZXN0VXBkYXRlKCZjdHgs IG0zLCBtM2xlbik7Ci0rCQkJcCA9IG0xOwotKwkJCW0xID0gbTI7Ci0rCQkJbTFsZW4gPSBtMmxl bjsKLSsJCQltMiA9IG0zOwotKwkJCW0ybGVuID0gbTNsZW47Ci0rCQkJbTMgPSBwOwotKwkJCUVW UF9EaWdlc3RGaW5hbF9leCgmY3R4LCBtMywgJm0zbGVuKTsKLSsJCQl9Ci0rCQlmcHJpbnRmKG91 dCwgIkNPVU5UID0gJWRcbiIsIGopOwotKwkJZnB1dHMoIk1EID0gIiwgb3V0KTsKLSsJCWZvciAo ayA9IDA7IGsgPCBtM2xlbjsgaysrKQotKwkJCWZwcmludGYob3V0LCAiJTAyeCIsIG0zW2tdKTsK LSsJCWZwdXRzKCJcblxuIiwgb3V0KTsKLSsJCW1lbWNweShtMSwgbTMsIG0zbGVuKTsKLSsJCW1l bWNweShtMiwgbTMsIG0zbGVuKTsKLSsJCW0xbGVuID0gbTJsZW4gPSBtM2xlbjsKLSsJCX0KLSsK LSsJcmV0ID0gMTsKLSsKLSsJbWNfZXJyb3I6Ci0rCWlmIChtMSkKLSsJCU9QRU5TU0xfZnJlZSht MSk7Ci0rCWlmIChtMikKLSsJCU9QRU5TU0xfZnJlZShtMik7Ci0rCWlmIChtMykKLSsJCU9QRU5T U0xfZnJlZShtMyk7Ci0rCi0rCUVWUF9NRF9DVFhfY2xlYW51cCgmY3R4KTsKLSsKLSsJcmV0dXJu IHJldDsKLSsJfQotKwotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Zp cHMvY2F2cy9maXBzX3V0bC5oLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9m aXBzX3V0bC5oCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX3V0bC5o LmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTY5MjI0MDQgKzAxMDAKLSsrKyBvcGVuc3NsLTEu MC4xay9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfdXRsLmgJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTY5 MjI0MDQgKzAxMDAKLUBAIC0wLDAgKzEsMzQzIEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5 cmlnaHQgKGMpIDIwMDcgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu Ci0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0r ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92 ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGlu IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFk dmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0r ICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6 Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4g KGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNT TCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAq ICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy ZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9y Zy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBu b3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBp biB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9m IHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55 IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93 bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9w ZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wg VG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FS RSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0r ICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ TUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRS SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ TkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP T0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC VVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJ VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklT SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB RFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICov Ci0rCi0rdm9pZCBkb19wcmludF9lcnJvcnModm9pZCkKLSsJewotKwljb25zdCBjaGFyICpmaWxl LCAqZGF0YTsKLSsJaW50IGxpbmUsIGZsYWdzOwotKwl1bnNpZ25lZCBsb25nIGw7Ci0rCXdoaWxl ICgobCA9IEVSUl9nZXRfZXJyb3JfbGluZV9kYXRhKCZmaWxlLCAmbGluZSwgJmRhdGEsICZmbGFn cykpKQotKwkJewotKwkJZnByaW50ZihzdGRlcnIsICJFUlJPUjolbHg6bGliPSVkLGZ1bmM9JWQs cmVhc29uPSVkIgotKwkJCQkiOmZpbGU9JXM6bGluZT0lZDolc1xuIiwKLSsJCQlsLCBFUlJfR0VU X0xJQihsKSwgRVJSX0dFVF9GVU5DKGwpLCBFUlJfR0VUX1JFQVNPTihsKSwKLSsJCQlmaWxlLCBs aW5lLCBmbGFncyAmIEVSUl9UWFRfU1RSSU5HID8gZGF0YSA6ICIiKTsKLSsJCX0KLSsJfQotKwot K2ludCBoZXgyYmluKGNvbnN0IGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQpCi0rICAgIHsK LSsgICAgaW50IG4xLCBuMjsKLSsgICAgdW5zaWduZWQgY2hhciBjaDsKLSsKLSsgICAgZm9yIChu MT0wLG4yPTAgOyBpbltuMV0gJiYgaW5bbjFdICE9ICdcbicgOyApCi0rCXsgLyogZmlyc3QgYnl0 ZSAqLwotKwlpZiAoKGluW24xXSA+PSAnMCcpICYmIChpbltuMV0gPD0gJzknKSkKLSsJICAgIGNo ID0gaW5bbjErK10gLSAnMCc7Ci0rCWVsc2UgaWYgKChpbltuMV0gPj0gJ0EnKSAmJiAoaW5bbjFd IDw9ICdGJykpCi0rCSAgICBjaCA9IGluW24xKytdIC0gJ0EnICsgMTA7Ci0rCWVsc2UgaWYgKChp bltuMV0gPj0gJ2EnKSAmJiAoaW5bbjFdIDw9ICdmJykpCi0rCSAgICBjaCA9IGluW24xKytdIC0g J2EnICsgMTA7Ci0rCWVsc2UKLSsJICAgIHJldHVybiAtMTsKLSsJaWYoIWluW24xXSkKLSsJICAg IHsKLSsJICAgIG91dFtuMisrXT1jaDsKLSsJICAgIGJyZWFrOwotKwkgICAgfQotKwlvdXRbbjJd ID0gY2ggPDwgNDsKLSsJLyogc2Vjb25kIGJ5dGUgKi8KLSsJaWYgKChpbltuMV0gPj0gJzAnKSAm JiAoaW5bbjFdIDw9ICc5JykpCi0rCSAgICBjaCA9IGluW24xKytdIC0gJzAnOwotKwllbHNlIGlm ICgoaW5bbjFdID49ICdBJykgJiYgKGluW24xXSA8PSAnRicpKQotKwkgICAgY2ggPSBpbltuMSsr XSAtICdBJyArIDEwOwotKwllbHNlIGlmICgoaW5bbjFdID49ICdhJykgJiYgKGluW24xXSA8PSAn ZicpKQotKwkgICAgY2ggPSBpbltuMSsrXSAtICdhJyArIDEwOwotKwllbHNlCi0rCSAgICByZXR1 cm4gLTE7Ci0rCW91dFtuMisrXSB8PSBjaDsKLSsJfQotKyAgICByZXR1cm4gbjI7Ci0rICAgIH0K LSsKLSt1bnNpZ25lZCBjaGFyICpoZXgyYmluX20oY29uc3QgY2hhciAqaW4sIGxvbmcgKnBsZW4p Ci0rCXsKLSsJdW5zaWduZWQgY2hhciAqcDsKLSsJcCA9IE9QRU5TU0xfbWFsbG9jKChzdHJsZW4o aW4pICsgMSkvMik7Ci0rCSpwbGVuID0gaGV4MmJpbihpbiwgcCk7Ci0rCXJldHVybiBwOwotKwl9 Ci0rCi0raW50IGRvX2hleDJibihCSUdOVU0gKipwciwgY29uc3QgY2hhciAqaW4pCi0rCXsKLSsJ dW5zaWduZWQgY2hhciAqcDsKLSsJbG9uZyBwbGVuOwotKwlpbnQgciA9IDA7Ci0rCXAgPSBoZXgy YmluX20oaW4sICZwbGVuKTsKLSsJaWYgKCFwKQotKwkJcmV0dXJuIDA7Ci0rCWlmICghKnByKQot KwkJKnByID0gQk5fbmV3KCk7Ci0rCWlmICghKnByKQotKwkJcmV0dXJuIDA7Ci0rCWlmIChCTl9i aW4yYm4ocCwgcGxlbiwgKnByKSkKLSsJCXIgPSAxOwotKwlPUEVOU1NMX2ZyZWUocCk7Ci0rCXJl dHVybiByOwotKwl9Ci0rCi0raW50IGRvX2JuX3ByaW50KEZJTEUgKm91dCwgQklHTlVNICpibikK LSsJewotKwlpbnQgbGVuLCBpOwotKwl1bnNpZ25lZCBjaGFyICp0bXA7Ci0rCWxlbiA9IEJOX251 bV9ieXRlcyhibik7Ci0rCWlmIChsZW4gPT0gMCkKLSsJCXsKLSsJCWZwdXRzKCIwMCIsIG91dCk7 Ci0rCQlyZXR1cm4gMTsKLSsJCX0KLSsKLSsJdG1wID0gT1BFTlNTTF9tYWxsb2MobGVuKTsKLSsJ aWYgKCF0bXApCi0rCQl7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIk1lbW9yeSBhbGxvY2F0aW9uIGVy cm9yXG4iKTsKLSsJCXJldHVybiAwOwotKwkJfQotKwlCTl9ibjJiaW4oYm4sIHRtcCk7Ci0rCWZv ciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSsJCWZwcmludGYob3V0LCAiJTAyeCIsIHRtcFtpXSk7 Ci0rCU9QRU5TU0xfZnJlZSh0bXApOwotKwlyZXR1cm4gMTsKLSsJfQotKwotK2ludCBkb19ibl9w cmludF9uYW1lKEZJTEUgKm91dCwgY29uc3QgY2hhciAqbmFtZSwgQklHTlVNICpibikKLSsJewot KwlpbnQgcjsKLSsJZnByaW50ZihvdXQsICIlcyA9ICIsIG5hbWUpOwotKwlyID0gZG9fYm5fcHJp bnQob3V0LCBibik7Ci0rCWlmICghcikKLSsJCXJldHVybiAwOwotKwlmcHV0cygiXG4iLCBvdXQp OwotKwlyZXR1cm4gMTsKLSsJfQotKwotK2ludCBwYXJzZV9saW5lKGNoYXIgKipwa3csIGNoYXIg KipwdmFsLCBjaGFyICpsaW5lYnVmLCBjaGFyICpvbGluZWJ1ZikKLSsJewotKwljaGFyICprZXl3 b3JkLCAqdmFsdWUsICpwLCAqcTsKLSsJc3RyY3B5KGxpbmVidWYsIG9saW5lYnVmKTsKLSsJa2V5 d29yZCA9IGxpbmVidWY7Ci0rCS8qIFNraXAgbGVhZGluZyBzcGFjZSAqLwotKwl3aGlsZSAoaXNz cGFjZSgodW5zaWduZWQgY2hhcikqa2V5d29yZCkpCi0rCQlrZXl3b3JkKys7Ci0rCi0rCS8qIExv b2sgZm9yID0gc2lnbiAqLwotKwlwID0gc3RyY2hyKGxpbmVidWYsICc9Jyk7Ci0rCi0rCS8qIElm IG5vICc9JyBleGl0ICovCi0rCWlmICghcCkKLSsJCXJldHVybiAwOwotKwotKwlxID0gcCAtIDE7 Ci0rCi0rCS8qIFJlbW92ZSB0cmFpbGluZyBzcGFjZSAqLwotKwl3aGlsZSAoaXNzcGFjZSgodW5z aWduZWQgY2hhcikqcSkpCi0rCQkqcS0tID0gMDsKLSsKLSsJKnAgPSAwOwotKwl2YWx1ZSA9IHAg KyAxOwotKwotKwkvKiBSZW1vdmUgbGVhZGluZyBzcGFjZSBmcm9tIHZhbHVlICovCi0rCXdoaWxl IChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSp2YWx1ZSkpCi0rCQl2YWx1ZSsrOwotKwotKwkvKiBS ZW1vdmUgdHJhaWxpbmcgc3BhY2UgZnJvbSB2YWx1ZSAqLwotKwlwID0gdmFsdWUgKyBzdHJsZW4o dmFsdWUpIC0gMTsKLSsKLSsJd2hpbGUgKCpwID09ICdcbicgfHwgaXNzcGFjZSgodW5zaWduZWQg Y2hhcikqcCkpCi0rCQkqcC0tID0gMDsKLSsKLSsJKnBrdyA9IGtleXdvcmQ7Ci0rCSpwdmFsID0g dmFsdWU7Ci0rCXJldHVybiAxOwotKwl9Ci0rCi0rQklHTlVNICpoZXgyYm4oY29uc3QgY2hhciAq aW4pCi0rICAgIHsKLSsgICAgQklHTlVNICpwPU5VTEw7Ci0rCi0rICAgIGlmICghZG9faGV4MmJu KCZwLCBpbikpCi0rCXJldHVybiBOVUxMOwotKwotKyAgICByZXR1cm4gcDsKLSsgICAgfQotKwot K2ludCBiaW4yaGV4KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLGludCBsZW4sY2hhciAqb3V0KQot KyAgICB7Ci0rICAgIGludCBuMSwgbjI7Ci0rICAgIHVuc2lnbmVkIGNoYXIgY2g7Ci0rCi0rICAg IGZvciAobjE9MCxuMj0wIDsgbjEgPCBsZW4gOyArK24xKQotKwl7Ci0rCWNoPWluW24xXSA+PiA0 OwotKwlpZiAoY2ggPD0gMHgwOSkKLSsJICAgIG91dFtuMisrXT1jaCsnMCc7Ci0rCWVsc2UKLSsJ ICAgIG91dFtuMisrXT1jaC0xMCsnYSc7Ci0rCWNoPWluW24xXSAmIDB4MGY7Ci0rCWlmKGNoIDw9 IDB4MDkpCi0rCSAgICBvdXRbbjIrK109Y2grJzAnOwotKwllbHNlCi0rCSAgICBvdXRbbjIrK109 Y2gtMTArJ2EnOwotKwl9Ci0rICAgIG91dFtuMl09J1wwJzsKLSsgICAgcmV0dXJuIG4yOwotKyAg ICB9Ci0rCi0rdm9pZCBwdihjb25zdCBjaGFyICp0YWcsY29uc3QgdW5zaWduZWQgY2hhciAqdmFs LGludCBsZW4pCi0rICAgIHsKLSsgICAgY2hhciBvYnVmWzIwNDhdOwotKwotKyAgICBiaW4yaGV4 KHZhbCxsZW4sb2J1Zik7Ci0rICAgIHByaW50ZigiJXMgPSAlc1xuIix0YWcsb2J1Zik7Ci0rICAg IH0KLSsKLSsvKiBUbyBhdm9pZCBleHRlbnNpdmUgY2hhbmdlcyB0byB0ZXN0IHByb2dyYW0gYXQg dGhpcyBzdGFnZSBqdXN0IGNvbnZlcnQKLSsgKiB0aGUgaW5wdXQgbGluZSBpbnRvIGFuIGFjY2Vw dGFibGUgZm9ybS4gS2V5d29yZCBsaW5lcyBjb252ZXJ0ZWQgdG8gZm9ybQotKyAqICJrZXl3b3Jk ID0gdmFsdWVcbiIgbm8gbWF0dGVyIHdoYXQgd2hpdGUgc3BhY2UgcHJlc2VudCwgYWxsIG90aGVy IGxpbmVzCi0rICoganVzdCBoYXZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlIHJlbW92ZWQu Ci0rICovCi0rCi0raW50IHRpZHlfbGluZShjaGFyICpsaW5lYnVmLCBjaGFyICpvbGluZWJ1ZikK LSsJewotKwljaGFyICprZXl3b3JkLCAqdmFsdWUsICpwLCAqcTsKLSsJc3RyY3B5KGxpbmVidWYs IG9saW5lYnVmKTsKLSsJa2V5d29yZCA9IGxpbmVidWY7Ci0rCS8qIFNraXAgbGVhZGluZyBzcGFj ZSAqLwotKwl3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hhcikqa2V5d29yZCkpCi0rCQlrZXl3 b3JkKys7Ci0rCS8qIExvb2sgZm9yID0gc2lnbiAqLwotKwlwID0gc3RyY2hyKGxpbmVidWYsICc9 Jyk7Ci0rCi0rCS8qIElmIG5vICc9JyBqdXN0IGNob3AgbGVhZGluZywgdHJhaWxpbmcgd3MgKi8K LSsJaWYgKCFwKQotKwkJewotKwkJcCA9IGtleXdvcmQgKyBzdHJsZW4oa2V5d29yZCkgLSAxOwot KwkJd2hpbGUgKCpwID09ICdcbicgfHwgaXNzcGFjZSgodW5zaWduZWQgY2hhcikqcCkpCi0rCQkJ KnAtLSA9IDA7Ci0rCQlzdHJjcHkob2xpbmVidWYsIGtleXdvcmQpOwotKwkJc3RyY2F0KG9saW5l YnVmLCAiXG4iKTsKLSsJCXJldHVybiAxOwotKwkJfQotKwotKwlxID0gcCAtIDE7Ci0rCi0rCS8q IFJlbW92ZSB0cmFpbGluZyBzcGFjZSAqLwotKwl3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hh cikqcSkpCi0rCQkqcS0tID0gMDsKLSsKLSsJKnAgPSAwOwotKwl2YWx1ZSA9IHAgKyAxOwotKwot KwkvKiBSZW1vdmUgbGVhZGluZyBzcGFjZSBmcm9tIHZhbHVlICovCi0rCXdoaWxlIChpc3NwYWNl KCh1bnNpZ25lZCBjaGFyKSp2YWx1ZSkpCi0rCQl2YWx1ZSsrOwotKwotKwkvKiBSZW1vdmUgdHJh aWxpbmcgc3BhY2UgZnJvbSB2YWx1ZSAqLwotKwlwID0gdmFsdWUgKyBzdHJsZW4odmFsdWUpIC0g MTsKLSsKLSsJd2hpbGUgKCpwID09ICdcbicgfHwgaXNzcGFjZSgodW5zaWduZWQgY2hhcikqcCkp Ci0rCQkqcC0tID0gMDsKLSsKLSsJc3RyY3B5KG9saW5lYnVmLCBrZXl3b3JkKTsKLSsJc3RyY2F0 KG9saW5lYnVmLCAiID0gIik7Ci0rCXN0cmNhdChvbGluZWJ1ZiwgdmFsdWUpOwotKwlzdHJjYXQo b2xpbmVidWYsICJcbiIpOwotKwotKwlyZXR1cm4gMTsKLSsJfQotKwotKy8qIE5COiB0aGlzIHJl dHVybiB0aGUgbnVtYmVyIG9mIF9iaXRzXyByZWFkICovCi0raW50IGJpbnQyYmluKGNvbnN0IGNo YXIgKmluLCBpbnQgbGVuLCB1bnNpZ25lZCBjaGFyICpvdXQpCi0rICAgIHsKLSsgICAgaW50IG47 Ci0rCi0rICAgIG1lbXNldChvdXQsMCxsZW4pOwotKyAgICBmb3Iobj0wIDsgbiA8IGxlbiA7ICsr bikKLSsJaWYoaW5bbl0gPT0gJzEnKQotKwkgICAgb3V0W24vOF18PSgweDgwID4+IChuJTgpKTsK LSsgICAgcmV0dXJuIGxlbjsKLSsgICAgfQotKwotK2ludCBiaW4yYmludChjb25zdCB1bnNpZ25l ZCBjaGFyICppbixpbnQgbGVuLGNoYXIgKm91dCkKLSsgICAgewotKyAgICBpbnQgbjsKLSsKLSsg ICAgZm9yKG49MCA7IG4gPCBsZW4gOyArK24pCi0rCW91dFtuXT0oaW5bbi84XSYoMHg4MCA+PiAo biU4KSkpID8gJzEnIDogJzAnOwotKyAgICByZXR1cm4gbjsKLSsgICAgfQotKwotKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotKwotK3ZvaWQgUHJp bnRWYWx1ZShjaGFyICp0YWcsIHVuc2lnbmVkIGNoYXIgKnZhbCwgaW50IGxlbikKLSt7Ci0rI2lm IFZFUkJPU0UKLSsgIGNoYXIgb2J1ZlsyMDQ4XTsKLSsgIGludCBvbGVuOwotKyAgb2xlbiA9IGJp bjJoZXgodmFsLCBsZW4sIG9idWYpOwotKyAgcHJpbnRmKCIlcyA9ICUuKnNcbiIsIHRhZywgb2xl biwgb2J1Zik7Ci0rI2VuZGlmCi0rfQotKwotK3ZvaWQgT3V0cHV0VmFsdWUoY2hhciAqdGFnLCB1 bnNpZ25lZCBjaGFyICp2YWwsIGludCBsZW4sIEZJTEUgKnJmcCxpbnQgYml0bW9kZSkKLSsgICAg ewotKyAgICBjaGFyIG9idWZbMjA0OF07Ci0rICAgIGludCBvbGVuOwotKwotKyAgICBpZihiaXRt b2RlKQotKwlvbGVuPWJpbjJiaW50KHZhbCxsZW4sb2J1Zik7Ci0rICAgIGVsc2UKLSsJb2xlbj1i aW4yaGV4KHZhbCxsZW4sb2J1Zik7Ci0rCi0rICAgIGZwcmludGYocmZwLCAiJXMgPSAlLipzXG4i LCB0YWcsIG9sZW4sIG9idWYpOwotKyNpZiBWRVJCT1NFCi0rICAgIHByaW50ZigiJXMgPSAlLipz XG4iLCB0YWcsIG9sZW4sIG9idWYpOwotKyNlbmRpZgotKyAgICB9Ci0rCi1kaWZmIC11cCBvcGVu c3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX2Flc19zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0x LjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19hZXNfc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9maXBzL2ZpcHNfYWVzX3NlbGZ0ZXN0LmMuZmlwcwkyMDE1LTAxLTA5IDA5OjUxOjUx LjU1NjkyMjQwNCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfYWVz X3NlbGZ0ZXN0LmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTY5MjI0MDQgKzAxMDAKLUBAIC0wLDAg KzEsMzU5IEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlIE9w ZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK LSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9j dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICog ICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBt ZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBk aXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVj dCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAq ICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5v cmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5T U0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90 ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJp b3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29u dGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1 Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NM IgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0 IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3Qu Ci0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0 IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRo aXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJv amVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5v cGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg T3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElN UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU SEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFS WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1J VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAq IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p Ci0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU SEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBP U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgPHN0cmlu Zy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsj aW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2VuZGlmCi0rI2luY2x1ZGUgPG9wZW5zc2wvZXZw Lmg+Ci0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QKLSsgICAg ewotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGtleVsxNl07Ci0rICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgcGxhaW50ZXh0WzE2XTsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciBjaXBoZXJ0ZXh0 WzE2XTsKLSsgICAgfSB0ZXN0c1tdPQotKwl7Ci0rCXsKLSsJeyAweDAwLDB4MDEsMHgwMiwweDAz LDB4MDQsMHgwNSwweDA2LDB4MDcsCi0rCSAgMHgwOCwweDA5LDB4MEEsMHgwQiwweDBDLDB4MEQs MHgwRSwweDBGIH0sCi0rCXsgMHgwMCwweDExLDB4MjIsMHgzMywweDQ0LDB4NTUsMHg2NiwweDc3 LAotKwkgIDB4ODgsMHg5OSwweEFBLDB4QkIsMHhDQywweERELDB4RUUsMHhGRiB9LAotKwl7IDB4 NjksMHhDNCwweEUwLDB4RDgsMHg2QSwweDdCLDB4MDQsMHgzMCwKLSsJICAweEQ4LDB4Q0QsMHhC NywweDgwLDB4NzAsMHhCNCwweEM1LDB4NUEgfSwKLSsJfSwKLSsJfTsKLSsKLStzdGF0aWMgaW50 IGNvcnJ1cHRfYWVzOwotKwotK3ZvaWQgRklQU19jb3JydXB0X2FlcygpCi0rICAgIHsKLSsgICAg Y29ycnVwdF9hZXMgPSAxOwotKyAgICB9Ci0rCi0raW50IEZJUFNfc2VsZnRlc3RfYWVzKCkKLSsg ICAgewotKyAgICBpbnQgbjsKLSsgICAgaW50IHJldCA9IDA7Ci0rICAgIEVWUF9DSVBIRVJfQ1RY IGN0eDsKLSsgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKLSsKLSsgICAgZm9yKG49MCA7 IG4gPCAxIDsgKytuKQotKwl7Ci0rCXVuc2lnbmVkIGNoYXIga2V5WzE2XTsKLSsKLSsJbWVtY3B5 KGtleSwgdGVzdHNbbl0ua2V5LCBzaXplb2Yoa2V5KSk7Ci0rCWlmIChjb3JydXB0X2FlcykKLSsJ CWtleVswXSsrOwotKwlpZiAoZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfYWVzXzEyOF9lY2Io KSwKLSsJCQkJa2V5LCBOVUxMLAotKwkJCQl0ZXN0c1tuXS5wbGFpbnRleHQsCi0rCQkJCXRlc3Rz W25dLmNpcGhlcnRleHQsCi0rCQkJCTE2KSA8PSAwKQotKwkJZ290byBlcnI7Ci0rCX0KLSsgICAg cmV0ID0gMTsKLSsgICAgZXJyOgotKyAgICBFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOwot KyAgICBpZiAocmV0ID09IDApCi0rCSAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX1NFTEZURVNUX0FF UyxGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgcmV0dXJuIHJldDsKLSsgICAgfQotKwot Ky8qIEFFUy1DQ00gdGVzdCBkYXRhIGZyb20gTklTVCBwdWJsaWMgdGVzdCB2ZWN0b3JzICovCi0r Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2NtX2tleVtdID0gewotKwkweGNlLDB4YjAs MHgwOSwweGFlLDB4YTQsMHg0NSwweDQ0LDB4NTEsMHhmZSwweGFkLDB4ZjAsMHhlNiwKLSsJMHhi MywweDZmLDB4NDUsMHg1NSwweDVkLDB4ZDAsMHg0NywweDIzLDB4YmEsMHhhNCwweDQ4LDB4ZTgK LSt9OwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNjbV9ub25jZVtdID0gewotKwkweDc2 LDB4NDAsMHg0MywweGM0LDB4OTQsMHg2MCwweGI3Ci0rfTsKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBjY21fYWRhdGFbXSA9IHsKLSsJMHg2ZSwweDgwLDB4ZGQsMHg3ZiwweDFiLDB4YWQs MHhmMywweGExLDB4YzksMHhhYiwweDI1LDB4YzcsCi0rCTB4NWYsMHgxMCwweGJkLDB4ZTcsMHg4 YywweDIzLDB4ZmEsMHgwZSwweGI4LDB4ZjksMHhhYSwweGE1LAotKwkweDNhLDB4ZGUsMHhmYiww eGY0LDB4Y2IsMHhmNywweDhmLDB4ZTQKLSt9OwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGNjbV9wdFtdID0gewotKwkweGM4LDB4ZDIsMHg3NSwweGY5LDB4MTksMHhlMSwweDdkLDB4N2Ys MHhlNiwweDljLDB4MmEsMHgxZiwKLSsJMHg1OCwweDkzLDB4OWQsMHhmZSwweDRkLDB4NDAsMHgz NywweDkxLDB4YjUsMHhkZiwweDEzLDB4MTAKLSt9OwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGNjbV9jdFtdID0gewotKwkweDhhLDB4MGYsMHgzZCwweDgyLDB4MjksMHhlNCwweDhlLDB4 NzQsMHg4NywweGZkLDB4OTUsMHhhMiwKLSsJMHg4YSwweGQzLDB4OTIsMHhjOCwweDBiLDB4MzYs MHg4MSwweGQ0LDB4ZmIsMHhjNywweGJiLDB4ZmQKLSt9OwotK3N0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGNjbV90YWdbXSA9IHsKLSsJMHgyZCwweGQ2LDB4ZWYsMHgxYywweDQ1LDB4ZDQsMHhj YywweGI3LDB4MjMsMHhkYywweDA3LDB4NDQsCi0rCTB4MTQsMHhkYiwweDUwLDB4NmQKLSt9Owot KwotK2ludCBGSVBTX3NlbGZ0ZXN0X2Flc19jY20odm9pZCkKLSsJewotKwlpbnQgcmV0ID0gMDsK LSsJdW5zaWduZWQgY2hhciBvdXRbMTI4XSwgdGFnWzE2XTsKLSsJRVZQX0NJUEhFUl9DVFggY3R4 OwotKwlFVlBfQ0lQSEVSX0NUWF9pbml0KCZjdHgpOwotKwltZW1zZXQob3V0LCAwLCBzaXplb2Yo b3V0KSk7Ci0rCWlmICghRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgRVZQX2Flc18xOTJfY2NtKCks TlVMTCwgTlVMTCwgTlVMTCwgMSkpCi0rCQlnb3RvIGVycjsKLSsJaWYgKCFFVlBfQ0lQSEVSX0NU WF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sCi0rCQkJCQlzaXplb2YoY2NtX25v bmNlKSwgTlVMTCkpCi0rCQlnb3RvIGVycjsKLSsJaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZj dHgsIEVWUF9DVFJMX0NDTV9TRVRfVEFHLAotKwkJCQkJc2l6ZW9mKGNjbV90YWcpLCBOVUxMKSkK LSsJCWdvdG8gZXJyOwotKwlpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCZjdHgsIE5VTEwsIE5VTEws IGNjbV9rZXksIGNjbV9ub25jZSwgMSkpCi0rCQlnb3RvIGVycjsKLSsJaWYgKEVWUF9DaXBoZXIo JmN0eCwgTlVMTCwgTlVMTCwgc2l6ZW9mKGNjbV9wdCkpICE9IHNpemVvZihjY21fcHQpKQotKwkJ Z290byBlcnI7Ci0rCWlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIGNjbV9hZGF0YSwgc2l6ZW9m KGNjbV9hZGF0YSkpIDwgMCkKLSsJCWdvdG8gZXJyOwotKwlpZiAoRVZQX0NpcGhlcigmY3R4LCBv dXQsIGNjbV9wdCwgc2l6ZW9mKGNjbV9wdCkpICE9IHNpemVvZihjY21fY3QpKQotKwkJZ290byBl cnI7Ci0rCi0rCWlmICghRVZQX0NJUEhFUl9DVFhfY3RybCgmY3R4LCBFVlBfQ1RSTF9DQ01fR0VU X1RBRywgMTYsIHRhZykpCi0rCQlnb3RvIGVycjsKLSsJaWYgKG1lbWNtcCh0YWcsIGNjbV90YWcs IHNpemVvZihjY21fdGFnKSkKLSsJCXx8IG1lbWNtcChvdXQsIGNjbV9jdCwgc2l6ZW9mKGNjbV9j dCkpKQotKwkJZ290byBlcnI7Ci0rCi0rCW1lbXNldChvdXQsIDAsIHNpemVvZihvdXQpKTsKLSsK LSsJaWYgKCFFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfYWVzXzE5Ml9jY20oKSwgTlVMTCwg TlVMTCwgTlVMTCwgMCkpCi0rCQlnb3RvIGVycjsKLSsJaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJs KCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sCi0rCQkJCQlzaXplb2YoY2NtX25vbmNlKSwg TlVMTCkpCi0rCQlnb3RvIGVycjsKLSsJaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVW UF9DVFJMX0NDTV9TRVRfVEFHLCAxNiwgdGFnKSkKLSsJCWdvdG8gZXJyOwotKwlpZiAoIUVWUF9D aXBoZXJJbml0X2V4KCZjdHgsIE5VTEwsIE5VTEwsIGNjbV9rZXksIGNjbV9ub25jZSwgMCkpCi0r CQlnb3RvIGVycjsKLSsJaWYgKEVWUF9DaXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwgc2l6ZW9mKGNj bV9jdCkpICE9IHNpemVvZihjY21fY3QpKQotKwkJZ290byBlcnI7Ci0rCWlmIChFVlBfQ2lwaGVy KCZjdHgsIE5VTEwsIGNjbV9hZGF0YSwgc2l6ZW9mKGNjbV9hZGF0YSkpIDwgMCkKLSsJCWdvdG8g ZXJyOwotKwlpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQsIGNjbV9jdCwgc2l6ZW9mKGNjbV9jdCkp ICE9IHNpemVvZihjY21fcHQpKQotKwkJZ290byBlcnI7Ci0rCi0rCWlmIChtZW1jbXAob3V0LCBj Y21fcHQsIHNpemVvZihjY21fcHQpKSkKLSsJCWdvdG8gZXJyOwotKwotKwlyZXQgPSAxOwotKwot KwllcnI6Ci0rCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7Ci0rCi0rCWlmIChyZXQgPT0g MCkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX0NDTSxGSVBTX1Jf U0VMRlRFU1RfRkFJTEVEKTsKLSsJCXJldHVybiAwOwotKwkJfQotKwllbHNlCi0rCQlyZXR1cm4g cmV0OwotKwotKwl9Ci0rCi0rLyogQUVTLUdDTSB0ZXN0IGRhdGEgZnJvbSBOSVNUIHB1YmxpYyB0 ZXN0IHZlY3RvcnMgKi8KLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21fa2V5W10g PSB7Ci0rCTB4ZWUsMHhiYywweDFmLDB4NTcsMHg0OCwweDdmLDB4NTEsMHg5MiwweDFjLDB4MDQs MHg2NSwweDY2LAotKwkweDVmLDB4OGEsMHhlNiwweGQxLDB4NjUsMHg4YiwweGIyLDB4NmQsMHhl NiwweGY4LDB4YTAsMHg2OSwKLSsJMHhhMywweDUyLDB4MDIsMHg5MywweGE1LDB4NzIsMHgwNyww eDhmCi0rfTsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21faXZbXSA9IHsKLSsJMHg5 OSwweGFhLDB4M2UsMHg2OCwweGVkLDB4ODEsMHg3MywweGEwLDB4ZWUsMHhkMCwweDY2LDB4ODQK LSt9OwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdjbV9wdFtdID0gewotKwkweGY1LDB4 NmUsMHg4NywweDA1LDB4NWIsMHhjMywweDJkLDB4MGUsMHhlYiwweDMxLDB4YjIsMHhlYSwKLSsJ MHhjYywweDJiLDB4ZjIsMHhhNQotK307Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2Nt X2FhZFtdID0gewotKwkweDRkLDB4MjMsMHhjMywweGNlLDB4YzMsMHgzNCwweGI0LDB4OWIsMHhk YiwweDM3LDB4MGMsMHg0MywKLSsJMHg3ZiwweGVjLDB4NzgsMHhkZQotK307Ci0rc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgZ2NtX2N0W10gPSB7Ci0rCTB4ZjcsMHgyNiwweDQ0LDB4MTMsMHhh OCwweDRjLDB4MGUsMHg3YywweGQ1LDB4MzYsMHg4NiwweDdlLAotKwkweGI5LDB4ZjIsMHgxNyww eDM2Ci0rfTsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21fdGFnW10gPSB7Ci0rCTB4 NjcsMHhiYSwweDA1LDB4MTAsMHgyNiwweDJhLDB4ZTQsMHg4NywweGQ3LDB4MzcsMHhlZSwweDYy LAotKwkweDk4LDB4ZjcsMHg3ZSwweDBjCi0rfTsKLSsKLStpbnQgRklQU19zZWxmdGVzdF9hZXNf Z2NtKHZvaWQpCi0rCXsKLSsJaW50IHJldCA9IDA7Ci0rCXVuc2lnbmVkIGNoYXIgb3V0WzEyOF0s IHRhZ1sxNl07Ci0rCUVWUF9DSVBIRVJfQ1RYIGN0eDsKLSsJRVZQX0NJUEhFUl9DVFhfaW5pdCgm Y3R4KTsKLSsJbWVtc2V0KG91dCwgMCwgc2l6ZW9mKG91dCkpOwotKwltZW1zZXQodGFnLCAwLCBz aXplb2YodGFnKSk7Ci0rCWlmICghRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgRVZQX2Flc18yNTZf Z2NtKCksIE5VTEwsIE5VTEwsIE5VTEwsIDEpKQotKwkJZ290byBlcnI7Ci0rCWlmICghRVZQX0NJ UEhFUl9DVFhfY3RybCgmY3R4LCBFVlBfQ1RSTF9HQ01fU0VUX0lWTEVOLAotKwkJCQkJc2l6ZW9m KGdjbV9pdiksIE5VTEwpKQotKwkJZ290byBlcnI7Ci0rCWlmICghRVZQX0NpcGhlckluaXRfZXgo JmN0eCwgTlVMTCwgTlVMTCwgZ2NtX2tleSwgZ2NtX2l2LCAxKSkKLSsJCWdvdG8gZXJyOwotKwlp ZiAoRVZQX0NpcGhlcigmY3R4LCBOVUxMLCBnY21fYWFkLCBzaXplb2YoZ2NtX2FhZCkpIDwgMCkK LSsJCWdvdG8gZXJyOwotKwlpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQsIGdjbV9wdCwgc2l6ZW9m KGdjbV9wdCkpICE9IHNpemVvZihnY21fY3QpKQotKwkJZ290byBlcnI7Ci0rCWlmIChFVlBfQ2lw aGVyKCZjdHgsIE5VTEwsIE5VTEwsIDApIDwgMCkKLSsJCWdvdG8gZXJyOwotKwotKwlpZiAoIUVW UF9DSVBIRVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX0dFVF9UQUcsIDE2LCB0YWcpKQot KwkJZ290byBlcnI7Ci0rCi0rCWlmIChtZW1jbXAodGFnLCBnY21fdGFnLCAxNikgfHwgbWVtY21w KG91dCwgZ2NtX2N0LCAxNikpCi0rCQlnb3RvIGVycjsKLSsKLSsJbWVtc2V0KG91dCwgMCwgc2l6 ZW9mKG91dCkpOwotKwotKwlpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCZjdHgsIEVWUF9hZXNfMjU2 X2djbSgpLCBOVUxMLCBOVUxMLCBOVUxMLCAwKSkKLSsJCWdvdG8gZXJyOwotKwlpZiAoIUVWUF9D SVBIRVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX1NFVF9JVkxFTiwKLSsJCQkJCXNpemVv ZihnY21faXYpLCBOVUxMKSkKLSsJCWdvdG8gZXJyOwotKwlpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0 cmwoJmN0eCwgRVZQX0NUUkxfR0NNX1NFVF9UQUcsIDE2LCB0YWcpKQotKwkJZ290byBlcnI7Ci0r CWlmICghRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgTlVMTCwgTlVMTCwgZ2NtX2tleSwgZ2NtX2l2 LCAwKSkKLSsJCWdvdG8gZXJyOwotKwlpZiAoRVZQX0NpcGhlcigmY3R4LCBOVUxMLCBnY21fYWFk LCBzaXplb2YoZ2NtX2FhZCkpIDwgMCkKLSsJCWdvdG8gZXJyOwotKwlpZiAoRVZQX0NpcGhlcigm Y3R4LCBvdXQsIGdjbV9jdCwgc2l6ZW9mKGdjbV9jdCkpICE9IHNpemVvZihnY21fcHQpKQotKwkJ Z290byBlcnI7Ci0rCWlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIE5VTEwsIDApIDwgMCkKLSsJ CWdvdG8gZXJyOwotKwotKwlpZiAobWVtY21wKG91dCwgZ2NtX3B0LCAxNikpCi0rCQlnb3RvIGVy cjsKLSsKLSsJcmV0ID0gMTsKLSsKLSsJZXJyOgotKwlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZj dHgpOwotKwotKwlpZiAocmV0ID09IDApCi0rCQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9GSVBTX1NF TEZURVNUX0FFU19HQ00sRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7Ci0rCQlyZXR1cm4gMDsKLSsJ CX0KLSsJZWxzZQotKwkJcmV0dXJuIHJldDsKLSsKLSsJfQotKwotKwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIFhUU18xMjhfa2V5W10gPSB7Ci0rCTB4YTEsMHhiOSwweDBjLDB4YmEsMHgz ZiwweDA2LDB4YWMsMHgzNSwweDNiLDB4MmMsMHgzNCwweDM4LAotKwkweDc2LDB4MDgsMHgxNyww eDYyLDB4MDksMHgwOSwweDIzLDB4MDIsMHg2ZSwweDkxLDB4NzcsMHgxOCwKLSsJMHgxNSwweGYy LDB4OWQsMHhhYiwweDAxLDB4OTMsMHgyZiwweDJmCi0rfTsKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBYVFNfMTI4X2lbXSA9IHsKLSsJMHg0ZiwweGFlLDB4ZjcsMHgxMSwweDdjLDB4ZGEs MHg1OSwweGM2LDB4NmUsMHg0YiwweDkyLDB4MDEsCi0rCTB4M2UsMHg3NiwweDhhLDB4ZDUKLSt9 OwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18xMjhfcHRbXSA9IHsKLSsJMHhlYiww eGFiLDB4Y2UsMHg5NSwweGIxLDB4NGQsMHgzYywweDhkLDB4NmYsMHhiMywweDUwLDB4MzksCi0r CTB4MDcsMHg5MCwweDMxLDB4MWMKLSt9OwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhU U18xMjhfY3RbXSA9IHsKLSsJMHg3NywweDhhLDB4ZTgsMHhiNCwweDNjLDB4YjksMHg4ZCwweDVh LDB4ODIsMHg1MCwweDgxLDB4ZDUsCi0rCTB4YmUsMHg0NywweDFjLDB4NjMKLSt9OwotKwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18yNTZfa2V5W10gPSB7Ci0rCTB4MWUsMHhhNiww eDYxLDB4YzUsMHg4ZCwweDk0LDB4M2EsMHgwZSwweDQ4LDB4MDEsMHhlNCwweDJmLAotKwkweDRi LDB4MDksMHg0NywweDE0LDB4OWUsMHg3ZiwweDlmLDB4OGUsMHgzZSwweDY4LDB4ZDAsMHhjNywK LSsJMHg1MCwweDUyLDB4MTAsMHhiZCwweDMxLDB4MWEsMHgwZSwweDdjLDB4ZDYsMHhlMSwweDNm LDB4ZmQsCi0rCTB4ZjIsMHg0MSwweDhkLDB4OGQsMHgxOSwweDExLDB4YzAsMHgwNCwweGNkLDB4 YTUsMHg4ZCwweGEzLAotKwkweGQ2LDB4MTksMHhiNywweGUyLDB4YjksMHgxNCwweDFlLDB4NTgs MHgzMSwweDhlLDB4ZWEsMHgzOSwKLSsJMHgyYywweGY0LDB4MWIsMHgwOAotK307Ci0rc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgWFRTXzI1Nl9pW10gPSB7Ci0rCTB4YWQsMHhmOCwweGQ5LDB4 MjYsMHgyNywweDQ2LDB4NGEsMHhkMiwweGYwLDB4NDIsMHg4ZSwweDg0LAotKwkweGE5LDB4Zjgs MHg3NSwweDY0Ci0rfTsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNfMjU2X3B0W10g PSB7Ci0rCTB4MmUsMHhlZCwweGVhLDB4NTIsMHhjZCwweDgyLDB4MTUsMHhlMSwweGFjLDB4YzYs MHg0NywweGU4LAotKwkweDEwLDB4YmIsMHhjMywweDY0LDB4MmUsMHg4NywweDI4LDB4N2YsMHg4 ZCwweDJlLDB4NTcsMHhlMywKLSsJMHg2YywweDBhLDB4MjQsMHhmYiwweGMxLDB4MmEsMHgyMCww eDJlCi0rfTsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNfMjU2X2N0W10gPSB7Ci0r CTB4Y2IsMHhhYSwweGQwLDB4ZTIsMHhmNiwweGNlLDB4YTMsMHhmNSwweDBiLDB4MzcsMHhmOSww eDM0LAotKwkweGQ0LDB4NmEsMHg5YiwweDEzLDB4MGIsMHg5ZCwweDU0LDB4ZjAsMHg3ZSwweDM0 LDB4ZjMsMHg2YSwKLSsJMHhmNywweDkzLDB4ZTgsMHg2ZiwweDczLDB4YzYsMHhkNywweGRiCi0r fTsKLSsKLStpbnQgRklQU19zZWxmdGVzdF9hZXNfeHRzKCkKLSsJewotKwlpbnQgcmV0ID0gMTsK LSsJRVZQX0NJUEhFUl9DVFggY3R4OwotKwlFVlBfQ0lQSEVSX0NUWF9pbml0KCZjdHgpOwotKwot KwlpZiAoZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfYWVzXzEyOF94dHMoKSwKLSsJCQkJWFRT XzEyOF9rZXksIFhUU18xMjhfaSwgWFRTXzEyOF9wdCwgWFRTXzEyOF9jdCwKLSsJCQkJc2l6ZW9m KFhUU18xMjhfcHQpKSA8PSAwKQotKwkJcmV0ID0gMDsKLSsKLSsJaWYgKGZpcHNfY2lwaGVyX3Rl c3QoJmN0eCwgRVZQX2Flc18yNTZfeHRzKCksCi0rCQkJCVhUU18yNTZfa2V5LCBYVFNfMjU2X2ks IFhUU18yNTZfcHQsIFhUU18yNTZfY3QsCi0rCQkJCXNpemVvZihYVFNfMjU2X3B0KSkgPD0gMCkK LSsJCXJldCA9IDA7Ci0rCi0rCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7Ci0rCWlmIChy ZXQgPT0gMCkKLSsJCUZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX1hUUyxGSVBTX1Jf U0VMRlRFU1RfRkFJTEVEKTsKLSsJcmV0dXJuIHJldDsKLSsJfQotKwotKyNlbmRpZgotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwcy5jLmZpcHMgb3BlbnNzbC0xLjAuMWsv Y3J5cHRvL2ZpcHMvZmlwcy5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwcy5j LmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTc5MjI0MjcgKzAxMDAKLSsrKyBvcGVuc3NsLTEu MC4xay9jcnlwdG8vZmlwcy9maXBzLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTc5MjI0MjcgKzAx MDAKLUBAIC0wLDAgKzEsNDkxIEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMp IDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsg KiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29m dHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93 d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0 IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9u LCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgot KyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2Fs bGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBu YW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVu U1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hh dHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6 Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAo aHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVT U0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAot KyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0r ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2Rl ZmluZSBfR05VX1NPVVJDRQotKwotKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KLSsjaW5jbHVk ZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5j bHVkZSA8b3BlbnNzbC9iaW8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+Ci0rI2luY2x1 ZGUgPG9wZW5zc2wvcnNhLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxsaW1p dHMuaD4KLSsjaW5jbHVkZSA8ZGxmY24uaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVk ZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgImZpcHNfbG9jbC5oIgotKwotKyNpZmRlZiBPUEVOU1NM X0ZJUFMKLSsKLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rCi0rI2lmbmRlZiBQQVRIX01B WAotKyNkZWZpbmUgUEFUSF9NQVggMTAyNAotKyNlbmRpZgotKwotK3N0YXRpYyBpbnQgZmlwc19z ZWxmdGVzdF9mYWlsID0gMDsKLStzdGF0aWMgaW50IGZpcHNfbW9kZSA9IDA7Ci0rc3RhdGljIGlu dCBmaXBzX3N0YXJ0ZWQgPSAwOwotKwotK3N0YXRpYyBpbnQgZmlwc19pc19vd25pbmdfdGhyZWFk KHZvaWQpOwotK3N0YXRpYyBpbnQgZmlwc19zZXRfb3duaW5nX3RocmVhZCh2b2lkKTsKLStzdGF0 aWMgaW50IGZpcHNfY2xlYXJfb3duaW5nX3RocmVhZCh2b2lkKTsKLSsKLSsjZGVmaW5lIGZpcHNf d19sb2NrKCkJQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19GSVBTKQotKyNkZWZpbmUgZmlwc193 X3VubG9jaygpCUNSWVBUT193X3VubG9jayhDUllQVE9fTE9DS19GSVBTKQotKyNkZWZpbmUgZmlw c19yX2xvY2soKQlDUllQVE9fcl9sb2NrKENSWVBUT19MT0NLX0ZJUFMpCi0rI2RlZmluZSBmaXBz X3JfdW5sb2NrKCkJQ1JZUFRPX3JfdW5sb2NrKENSWVBUT19MT0NLX0ZJUFMpCi0rCi0rc3RhdGlj IHZvaWQgZmlwc19zZXRfbW9kZShpbnQgb25vZmYpCi0rCXsKLSsJaW50IG93bmluZ190aHJlYWQg PSBmaXBzX2lzX293bmluZ190aHJlYWQoKTsKLSsKLSsJaWYgKGZpcHNfc3RhcnRlZCkKLSsJCXsK LSsJCWlmICghb3duaW5nX3RocmVhZCkgZmlwc193X2xvY2soKTsKLSsJCWZpcHNfbW9kZSA9IG9u b2ZmOwotKwkJaWYgKCFvd25pbmdfdGhyZWFkKSBmaXBzX3dfdW5sb2NrKCk7Ci0rCQl9Ci0rCX0K LSsKLStpbnQgRklQU19tb2R1bGVfbW9kZSh2b2lkKQotKwl7Ci0rCWludCByZXQgPSAwOwotKwlp bnQgb3duaW5nX3RocmVhZCA9IGZpcHNfaXNfb3duaW5nX3RocmVhZCgpOwotKwotKwlpZiAoZmlw c19zdGFydGVkKQotKwkJewotKwkJaWYgKCFvd25pbmdfdGhyZWFkKSBmaXBzX3JfbG9jaygpOwot KwkJcmV0ID0gZmlwc19tb2RlOwotKwkJaWYgKCFvd25pbmdfdGhyZWFkKSBmaXBzX3JfdW5sb2Nr KCk7Ci0rCQl9Ci0rCXJldHVybiByZXQ7Ci0rCX0KLSsKLStpbnQgRklQU19zZWxmdGVzdF9mYWls ZWQodm9pZCkKLSsgICAgewotKyAgICBpbnQgcmV0ID0gMDsKLSsgICAgaWYgKGZpcHNfc3RhcnRl ZCkKLSsJewotKwlpbnQgb3duaW5nX3RocmVhZCA9IGZpcHNfaXNfb3duaW5nX3RocmVhZCgpOwot KwotKwlpZiAoIW93bmluZ190aHJlYWQpIGZpcHNfcl9sb2NrKCk7Ci0rCXJldCA9IGZpcHNfc2Vs ZnRlc3RfZmFpbDsKLSsJaWYgKCFvd25pbmdfdGhyZWFkKSBmaXBzX3JfdW5sb2NrKCk7Ci0rCX0K LSsgICAgcmV0dXJuIHJldDsKLSsgICAgfQotKwotKy8qIFNlbGZ0ZXN0IGZhaWx1cmUgZmF0YWwg ZXhpdCByb3V0aW5lLiBUaGlzIHdpbGwgYmUgY2FsbGVkCi0rICogZHVyaW5nICphbnkqIGNyeXB0 b2dyYXBoaWMgb3BlcmF0aW9uLiBJdCBoYXMgdGhlIG1pbmltdW0KLSsgKiBvdmVyaGVhZCBwb3Nz aWJsZSB0byBhdm9pZCB0b28gYmlnIGEgcGVyZm9ybWFuY2UgaGl0LgotKyAqLwotKwotK3ZvaWQg RklQU19zZWxmdGVzdF9jaGVjayh2b2lkKQotKyAgICB7Ci0rICAgIGlmIChmaXBzX3NlbGZ0ZXN0 X2ZhaWwpCi0rCXsKLSsJT3BlblNTTERpZShfX0ZJTEVfXyxfX0xJTkVfXywgIkZBVEFMIEZJUFMg U0VMRlRFU1QgRkFJTFVSRSIpOwotKwl9Ci0rICAgIH0KLSsKLSt2b2lkIGZpcHNfc2V0X3NlbGZ0 ZXN0X2ZhaWwodm9pZCkKLSsgICAgewotKyAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOwotKyAg ICB9Ci0rCi0rLyogd2UgaW1wbGVtZW50IHdoYXQgbGliZmlwc2NoZWNrIGRvZXMgb3Vyc2VsdmVz ICovCi0rCi0rc3RhdGljIGludAotK2dldF9saWJyYXJ5X3BhdGgoY29uc3QgY2hhciAqbGlibmFt ZSwgY29uc3QgY2hhciAqc3ltYm9sbmFtZSwgY2hhciAqcGF0aCwgc2l6ZV90IHBhdGhsZW4pCi0r ewotKwlEbF9pbmZvIGluZm87Ci0rCXZvaWQgKmRsLCAqc3ltOwotKwlpbnQgcnYgPSAtMTsKLSsK LSsgICAgICAgIGRsID0gZGxvcGVuKGxpYm5hbWUsIFJUTERfTEFaWSk7Ci0rICAgICAgICBpZiAo ZGwgPT0gTlVMTCkgewotKwkgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgIH0gICAgICAgCi0r Ci0rCXN5bSA9IGRsc3ltKGRsLCBzeW1ib2xuYW1lKTsKLSsKLSsJaWYgKHN5bSAhPSBOVUxMICYm IGRsYWRkcihzeW0sICZpbmZvKSkgewotKwkJc3RybmNweShwYXRoLCBpbmZvLmRsaV9mbmFtZSwg cGF0aGxlbi0xKTsKLSsJCXBhdGhbcGF0aGxlbi0xXSA9ICdcMCc7Ci0rCQlydiA9IDA7Ci0rCX0K LSsKLSsJZGxjbG9zZShkbCk7CQotKwkKLSsJcmV0dXJuIHJ2OwotK30KLSsKLStzdGF0aWMgY29u c3QgY2hhciBjb252W10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7Ci0rCi0rc3RhdGljIGNoYXIgKgot K2JpbjJoZXgodm9pZCAqYnVmLCBzaXplX3QgbGVuKQotK3sKLSsJY2hhciAqaGV4LCAqcDsKLSsJ dW5zaWduZWQgY2hhciAqc3JjID0gYnVmOwotKwkKLSsJaGV4ID0gbWFsbG9jKGxlbiAqIDIgKyAx KTsKLSsJaWYgKGhleCA9PSBOVUxMKQotKwkJcmV0dXJuIE5VTEw7Ci0rCi0rCXAgPSBoZXg7Ci0r Ci0rCXdoaWxlIChsZW4gPiAwKSB7Ci0rCQl1bnNpZ25lZCBjOwotKwotKwkJYyA9ICpzcmM7Ci0r CQlzcmMrKzsKLSsKLSsJCSpwID0gY29udltjID4+IDRdOwotKwkJKytwOwotKwkJKnAgPSBjb252 W2MgJiAweDBmXTsKLSsJCSsrcDsKLSsJCS0tbGVuOwotKwl9Ci0rCSpwID0gJ1wwJzsKLSsJcmV0 dXJuIGhleDsKLSt9Ci0rCi0rI2RlZmluZSBITUFDX1BSRUZJWCAiLiIgCi0rI2RlZmluZSBITUFD X1NVRkZJWCAiLmhtYWMiIAotKyNkZWZpbmUgUkVBRF9CVUZGRVJfTEVOR1RIIDE2Mzg0Ci0rCi0r c3RhdGljIGNoYXIgKgotK21ha2VfaG1hY19wYXRoKGNvbnN0IGNoYXIgKm9yaWdwYXRoKQotK3sK LSsJY2hhciAqcGF0aCwgKnA7Ci0rCWNvbnN0IGNoYXIgKmZuOwotKwotKwlwYXRoID0gbWFsbG9j KHNpemVvZihITUFDX1BSRUZJWCkgKyBzaXplb2YoSE1BQ19TVUZGSVgpICsgc3RybGVuKG9yaWdw YXRoKSk7Ci0rCWlmKHBhdGggPT0gTlVMTCkgewotKwkJcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSsJ Zm4gPSBzdHJyY2hyKG9yaWdwYXRoLCAnLycpOwotKwlpZiAoZm4gPT0gTlVMTCkgewotKwkJZm4g PSBvcmlncGF0aDsKLSsJfSBlbHNlIHsKLSsJCSsrZm47Ci0rCX0KLSsKLSsJc3RybmNweShwYXRo LCBvcmlncGF0aCwgZm4tb3JpZ3BhdGgpOwotKwlwID0gcGF0aCArIChmbiAtIG9yaWdwYXRoKTsK LSsJcCA9IHN0cGNweShwLCBITUFDX1BSRUZJWCk7Ci0rCXAgPSBzdHBjcHkocCwgZm4pOwotKwlw ID0gc3RwY3B5KHAsIEhNQUNfU1VGRklYKTsKLSsKLSsJcmV0dXJuIHBhdGg7Ci0rfQotKwotK3N0 YXRpYyBjb25zdCBjaGFyIGhtYWNrZXlbXSA9ICJvcmJvRGVKSVRJVGVqc2lycEFET05pdmlycFVr dmFyUCI7Ci0rCi0rc3RhdGljIGludAotK2NvbXB1dGVfZmlsZV9obWFjKGNvbnN0IGNoYXIgKnBh dGgsIHZvaWQgKipidWYsIHNpemVfdCAqaG1hY2xlbikKLSt7Ci0rCUZJTEUgKmYgPSBOVUxMOwot KwlpbnQgcnYgPSAtMTsKLSsJdW5zaWduZWQgY2hhciByYnVmW1JFQURfQlVGRkVSX0xFTkdUSF07 Ci0rCXNpemVfdCBsZW47Ci0rCXVuc2lnbmVkIGludCBobGVuOwotKwlITUFDX0NUWCBjOwotKwot KwlITUFDX0NUWF9pbml0KCZjKTsKLSsKLSsJZiA9IGZvcGVuKHBhdGgsICJyIik7Ci0rCi0rCWlm IChmID09IE5VTEwpIHsKLSsJCWdvdG8gZW5kOwotKwl9Ci0rCi0rCUhNQUNfSW5pdCgmYywgaG1h Y2tleSwgc2l6ZW9mKGhtYWNrZXkpLTEsIEVWUF9zaGEyNTYoKSk7Ci0rCi0rCXdoaWxlICgobGVu PWZyZWFkKHJidWYsIDEsIHNpemVvZihyYnVmKSwgZikpICE9IDApIHsKLSsJCUhNQUNfVXBkYXRl KCZjLCByYnVmLCBsZW4pOwotKwl9Ci0rCi0rCWxlbiA9IHNpemVvZihyYnVmKTsKLSsJLyogcmV1 c2UgcmJ1ZiBmb3IgaG1hYyAqLwotKwlITUFDX0ZpbmFsKCZjLCByYnVmLCAmaGxlbik7Ci0rCi0r CSpidWYgPSBtYWxsb2MoaGxlbik7Ci0rCWlmICgqYnVmID09IE5VTEwpIHsKLSsJCWdvdG8gZW5k OwotKwl9Ci0rCi0rCSpobWFjbGVuID0gaGxlbjsKLSsKLSsJbWVtY3B5KCpidWYsIHJidWYsIGhs ZW4pOwotKwotKwlydiA9IDA7Ci0rZW5kOgotKwlITUFDX0NUWF9jbGVhbnVwKCZjKTsKLSsKLSsJ aWYgKGYpCi0rCQlmY2xvc2UoZik7Ci0rCi0rCXJldHVybiBydjsKLSt9Ci0rCi0rc3RhdGljIGlu dAotK0ZJUFNDSEVDS192ZXJpZnkoY29uc3QgY2hhciAqbGlibmFtZSwgY29uc3QgY2hhciAqc3lt Ym9sbmFtZSkKLSt7Ci0rCWNoYXIgcGF0aFtQQVRIX01BWCsxXTsKLSsJaW50IHJ2OwotKwlGSUxF ICpoZjsKLSsJY2hhciAqaG1hY3BhdGgsICpwOwotKwljaGFyICpobWFjID0gTlVMTDsKLSsJc2l6 ZV90IG47Ci0rCQotKwlydiA9IGdldF9saWJyYXJ5X3BhdGgobGlibmFtZSwgc3ltYm9sbmFtZSwg cGF0aCwgc2l6ZW9mKHBhdGgpKTsKLSsKLSsJaWYgKHJ2IDwgMCkKLSsJCXJldHVybiAwOwotKwot KwlobWFjcGF0aCA9IG1ha2VfaG1hY19wYXRoKHBhdGgpOwotKwlpZiAoaG1hY3BhdGggPT0gTlVM TCkKLSsJCXJldHVybiAwOwotKwotKwloZiA9IGZvcGVuKGhtYWNwYXRoLCAiciIpOwotKwlpZiAo aGYgPT0gTlVMTCkgewotKwkJZnJlZShobWFjcGF0aCk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwot KwlpZiAoZ2V0bGluZSgmaG1hYywgJm4sIGhmKSA+IDApIHsKLSsJCXZvaWQgKmJ1ZjsKLSsJCXNp emVfdCBobWFjbGVuOwotKwkJY2hhciAqaGV4OwotKwotKwkJaWYgKChwPXN0cmNocihobWFjLCAn XG4nKSkgIT0gTlVMTCkKLSsJCQkqcCA9ICdcMCc7Ci0rCi0rCQlpZiAoY29tcHV0ZV9maWxlX2ht YWMocGF0aCwgJmJ1ZiwgJmhtYWNsZW4pIDwgMCkgewotKwkJCXJ2ID0gLTQ7Ci0rCQkJZ290byBl bmQ7Ci0rCQl9Ci0rCi0rCQlpZiAoKGhleD1iaW4yaGV4KGJ1ZiwgaG1hY2xlbikpID09IE5VTEwp IHsKLSsJCQlmcmVlKGJ1Zik7Ci0rCQkJcnYgPSAtNTsKLSsJCQlnb3RvIGVuZDsKLSsJCX0KLSsK LSsJCWlmIChzdHJjbXAoaGV4LCBobWFjKSAhPSAwKSB7Ci0rCQkJcnYgPSAtMTsKLSsJCX0KLSsJ CWZyZWUoYnVmKTsKLSsJCWZyZWUoaGV4KTsKLSsJfSBlbHNlIHsKLSsJCXJ2ID0gLTE7Ci0rCX0K LSsKLStlbmQ6Ci0rCWZyZWUoaG1hYyk7Ci0rCWZyZWUoaG1hY3BhdGgpOwotKwlmY2xvc2UoaGYp OwotKwotKwlpZiAocnYgPCAwKQotKwkJcmV0dXJuIDA7Ci0rCi0rCS8qIGNoZWNrIHN1Y2Nlc3Nm dWwgKi8KLSsJcmV0dXJuIDE7CQotK30KLSsKLStpbnQgRklQU19tb2R1bGVfbW9kZV9zZXQoaW50 IG9ub2ZmLCBjb25zdCBjaGFyICphdXRoKQotKyAgICB7Ci0rICAgIGludCByZXQgPSAwOwotKwot KyAgICBmaXBzX3dfbG9jaygpOwotKyAgICBmaXBzX3N0YXJ0ZWQgPSAxOwotKyAgICBmaXBzX3Nl dF9vd25pbmdfdGhyZWFkKCk7Ci0rCi0rICAgIGlmKG9ub2ZmKQotKwl7Ci0rCi0rCWZpcHNfc2Vs ZnRlc3RfZmFpbCA9IDA7Ci0rCi0rCS8qIERvbid0IGdvIGludG8gRklQUyBtb2RlIHR3aWNlLCBq dXN0IHNvIHdlIGNhbiBkbyBhdXRvbWFnaWMKLSsJICAgc2VlZGluZyAqLwotKwlpZihGSVBTX21v ZHVsZV9tb2RlKCkpCi0rCSAgICB7Ci0rCSAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9N T0RFX1NFVCxGSVBTX1JfRklQU19NT0RFX0FMUkVBRFlfU0VUKTsKLSsJICAgIGZpcHNfc2VsZnRl c3RfZmFpbCA9IDE7Ci0rCSAgICByZXQgPSAwOwotKwkgICAgZ290byBlbmQ7Ci0rCSAgICB9Ci0r Ci0rI2lmZGVmIE9QRU5TU0xfSUEzMl9TU0UyCi0rCXsKLSsJZXh0ZXJuIHVuc2lnbmVkIGludCBP UEVOU1NMX2lhMzJjYXBfUFsyXTsKLSsJaWYgKChPUEVOU1NMX2lhMzJjYXBfUFswXSAmICgxPDwy NXwxPDwyNikpICE9ICgxPDwyNXwxPDwyNikpCi0rCSAgICB7Ci0rCSAgICBGSVBTZXJyKEZJUFNf Rl9GSVBTX01PRFVMRV9NT0RFX1NFVCxGSVBTX1JfVU5TVVBQT1JURURfUExBVEZPUk0pOwotKwkg ICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKLSsJICAgIHJldCA9IDA7Ci0rCSAgICBnb3RvIGVu ZDsKLSsJICAgIH0KLSsJT1BFTlNTTF9pYTMyY2FwX1BbMF0gfD0gKDE8PDI4KTsJLyogc2V0ICJz aGFyZWQgY2FjaGUiCSovCi0rCU9QRU5TU0xfaWEzMmNhcF9QWzFdICY9IH4oMTw8KDYwLTMyKSk7 CS8qIGNsZWFyIEFWWAkJKi8KLSsJfQotKyNlbmRpZgotKwotKwlpZighRklQU0NIRUNLX3Zlcmlm eSgibGliY3J5cHRvLnNvLiIgU0hMSUJfVkVSU0lPTl9OVU1CRVIsIkZJUFNfbW9kZV9zZXQiKSkK LSsJICAgIHsKLSsJICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfTU9EVUxFX01PREVfU0VULEZJUFNf Ul9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRDSCk7Ci0rCSAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwg PSAxOwotKwkgICAgcmV0ID0gMDsKLSsJICAgIGdvdG8gZW5kOwotKwkgICAgfQotKwotKwlpZigh RklQU0NIRUNLX3ZlcmlmeSgibGlic3NsLnNvLiIgU0hMSUJfVkVSU0lPTl9OVU1CRVIsIlNTTF9D VFhfbmV3IikpCi0rCSAgICB7Ci0rCSAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RF X1NFVCxGSVBTX1JfRklOR0VSUFJJTlRfRE9FU19OT1RfTUFUQ0gpOwotKwkgICAgZmlwc19zZWxm dGVzdF9mYWlsID0gMTsKLSsJICAgIHJldCA9IDA7Ci0rCSAgICBnb3RvIGVuZDsKLSsJICAgIH0K LSsKLSsJaWYoRklQU19zZWxmdGVzdCgpKQotKwkgICAgZmlwc19zZXRfbW9kZShvbm9mZik7Ci0r CWVsc2UKLSsJICAgIHsKLSsJICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9IDE7Ci0rCSAgICByZXQg PSAwOwotKwkgICAgZ290byBlbmQ7Ci0rCSAgICB9Ci0rCXJldCA9IDE7Ci0rCWdvdG8gZW5kOwot Kwl9Ci0rICAgIGZpcHNfc2V0X21vZGUoMCk7Ci0rICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9IDA7 Ci0rICAgIHJldCA9IDE7Ci0rZW5kOgotKyAgICBmaXBzX2NsZWFyX293bmluZ190aHJlYWQoKTsK LSsgICAgZmlwc193X3VubG9jaygpOwotKyAgICByZXR1cm4gcmV0OwotKyAgICB9Ci0rCi0rc3Rh dGljIENSWVBUT19USFJFQURJRCBmaXBzX3RocmVhZDsKLStzdGF0aWMgaW50IGZpcHNfdGhyZWFk X3NldCA9IDA7Ci0rCi0rc3RhdGljIGludCBmaXBzX2lzX293bmluZ190aHJlYWQodm9pZCkKLSsJ ewotKwlpbnQgcmV0ID0gMDsKLSsKLSsJaWYgKGZpcHNfc3RhcnRlZCkKLSsJCXsKLSsJCUNSWVBU T19yX2xvY2soQ1JZUFRPX0xPQ0tfRklQUzIpOwotKwkJaWYgKGZpcHNfdGhyZWFkX3NldCkKLSsJ CQl7Ci0rCQkJQ1JZUFRPX1RIUkVBRElEIGN1cjsKLSsJCQlDUllQVE9fVEhSRUFESURfY3VycmVu dCgmY3VyKTsKLSsJCQlpZiAoIUNSWVBUT19USFJFQURJRF9jbXAoJmN1ciwgJmZpcHNfdGhyZWFk KSkKLSsJCQkJcmV0ID0gMTsKLSsJCQl9Ci0rCQlDUllQVE9fcl91bmxvY2soQ1JZUFRPX0xPQ0tf RklQUzIpOwotKwkJfQotKwlyZXR1cm4gcmV0OwotKwl9Ci0rCi0raW50IGZpcHNfc2V0X293bmlu Z190aHJlYWQodm9pZCkKLSsJewotKwlpbnQgcmV0ID0gMDsKLSsKLSsJaWYgKGZpcHNfc3RhcnRl ZCkKLSsJCXsKLSsJCUNSWVBUT193X2xvY2soQ1JZUFRPX0xPQ0tfRklQUzIpOwotKwkJaWYgKCFm aXBzX3RocmVhZF9zZXQpCi0rCQkJewotKwkJCUNSWVBUT19USFJFQURJRF9jdXJyZW50KCZmaXBz X3RocmVhZCk7Ci0rCQkJcmV0ID0gMTsKLSsJCQlmaXBzX3RocmVhZF9zZXQgPSAxOwotKwkJCX0K LSsJCUNSWVBUT193X3VubG9jayhDUllQVE9fTE9DS19GSVBTMik7Ci0rCQl9Ci0rCXJldHVybiBy ZXQ7Ci0rCX0KLSsKLStpbnQgZmlwc19jbGVhcl9vd25pbmdfdGhyZWFkKHZvaWQpCi0rCXsKLSsJ aW50IHJldCA9IDA7Ci0rCi0rCWlmIChmaXBzX3N0YXJ0ZWQpCi0rCQl7Ci0rCQlDUllQVE9fd19s b2NrKENSWVBUT19MT0NLX0ZJUFMyKTsKLSsJCWlmIChmaXBzX3RocmVhZF9zZXQpCi0rCQkJewot KwkJCUNSWVBUT19USFJFQURJRCBjdXI7Ci0rCQkJQ1JZUFRPX1RIUkVBRElEX2N1cnJlbnQoJmN1 cik7Ci0rCQkJaWYgKCFDUllQVE9fVEhSRUFESURfY21wKCZjdXIsICZmaXBzX3RocmVhZCkpCi0r CQkJCWZpcHNfdGhyZWFkX3NldCA9IDA7Ci0rCQkJfQotKwkJQ1JZUFRPX3dfdW5sb2NrKENSWVBU T19MT0NLX0ZJUFMyKTsKLSsJCX0KLSsJcmV0dXJuIHJldDsKLSsJfQotKwotKwotKyNpZiAwCi0r LyogVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBlbnN1cmUgdGhlIGVycm9yIGNvZGUgZXhpc3Rz IGFuZCB0aGUgZnVuY3Rpb24KLSsgKiBuYW1lIGlzIHRvIGtlZXAgdGhlIGVycm9yIGNoZWNraW5n IHNjcmlwdCBxdWlldAotKyAqLwotK3ZvaWQgaGFzaF9maW5hbCh2b2lkKQotKwl7Ci0rCUZJUFNl cnIoRklQU19GX0hBU0hfRklOQUwsRklQU19SX05PTl9GSVBTX01FVEhPRCk7Ci0rCX0KLSsjZW5k aWYKLSsKLSsKLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2Zp cHNfY21hY19zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19j bWFjX3NlbGZ0ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX2NtYWNf c2VsZnRlc3QuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTU3OTIyNDI3ICswMTAwCi0rKysg b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19jbWFjX3NlbGZ0ZXN0LmMJMjAxNS0wMS0w OSAwOTo1MTo1MS41NTc5MjI0MjcgKzAxMDAKLUBAIC0wLDAgKzEsMTYxIEBACi0rLyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFy ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBh cmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAq Ci0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y IHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcg YWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk ZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9w ZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRo ZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3Qg YmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u LiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wt Y29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9w ZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAg ICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3Ry aWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5n Ci0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBz b2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2Ug aW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0r ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMg SVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0Ug QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9S Ci0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU LCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE QU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQg QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAq IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU V0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVu c3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9jbWFjLmg+Ci0rI2luY2x1ZGUgImZpcHNfbG9jbC5oIgotKwotKyNpZmRlZiBPUEVOU1NMX0ZJ UFMKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rCWludCBuaWQ7Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIg a2V5W0VWUF9NQVhfS0VZX0xFTkdUSF07IHNpemVfdCBrZXlzaXplOwotKwljb25zdCB1bnNpZ25l ZCBjaGFyIG1zZ1s2NF07IHNpemVfdCBtc2dzaXplOwotKwljb25zdCB1bnNpZ25lZCBjaGFyIG1h Y1szMl07IHNpemVfdCBtYWNzaXplOwotK30gQ01BQ19LQVQ7Ci0rCi0rLyogZnJvbSBodHRwOi8v Y3NyYy5uaXN0Lmdvdi9wdWJsaWNhdGlvbnMvbmlzdHB1YnMvODAwLTM4Qi9TUF84MDAtMzhCLnBk ZiAqLwotK3N0YXRpYyBjb25zdCBDTUFDX0tBVCB2ZWN0b3JbXSA9IHsKLSsgICAgewlOSURfYWVz XzEyOF9jYmMsCS8qIENvdW50ID0gMzIgZnJvbSBDTUFDR2VuQUVTMTI4LnR4dCAqLwotKwl7IDB4 NzcsMHhhNywweDdmLDB4YWYsIDB4MjksMHgwYywweDFmLDB4YTMsCi0rCSAgMHgwYywweDY4LDB4 M2QsMHhmMSwgMHg2YiwweGE3LDB4YTcsMHg3YiwgfSwgMTI4LAotKwl7IDB4MDIsMHgwNiwweDgz LDB4ZTEsIDB4ZjAsMHgzOSwweDJmLDB4NGMsCi0rCSAgMHhhYywweDU0LDB4MzEsMHg4YiwgMHg2 MCwweDI5LDB4MjUsMHg5ZSwKLSsJICAweDljLDB4NTUsMHgzZCwweGJjLCAweDRiLDB4NmEsMHhk OSwweDk4LAotKwkgIDB4ZTYsMHg0ZCwweDU4LDB4ZTQsIDB4ZTcsMHhkYywweDJlLDB4MTMsIH0s IDI1NiwKLSsJeyAweGZiLDB4ZmUsMHhhNCwweDFiLCB9LCAzMgotKyAgICB9LAotKyAgICB7CU5J RF9hZXNfMTkyX2NiYywJLyogQ291bnQgPSAyMyBmcm9tIENNQUNHZW5BRVMxOTIudHh0ICovCi0r CXsgMHg3YiwweDMyLDB4MzksMHgxMywgMHg2OSwweGFhLDB4NGMsMHhhOSwKLSsJICAweDc1LDB4 NTgsMHgwOSwweDViLCAweGUzLDB4YzMsMHhlYywweDg2LAotKwkgIDB4MmIsMHhkMCwweDU3LDB4 Y2UsIDB4ZjEsMHhlMywweDJkLDB4NjIsIH0sIDE5MiwKLSsJeyAweDAgfSwgMCwKLSsJeyAweGU0 LDB4ZDksMHgzNCwweDBiLCAweDAzLDB4ZTYsMHg3ZCwweGVmLAotKwkgIDB4ZDQsMHg5NiwweDlj LDB4YzEsIDB4ZWQsMHgzNywweDM1LDB4ZTYsIH0sIDEyOCwKLSsgICAgfSwKLSsgICAgewlOSURf YWVzXzI1Nl9jYmMsCS8qIENvdW50ID0gMzMgZnJvbSBDTUFDR2VuQUVTMjU2LnR4dCAqLwotKwl7 IDB4MGIsMHgxMiwweDJhLDB4YzgsIDB4ZjMsMHg0ZSwweGQxLDB4ZmUsCi0rCSAgMHgwOCwweDJh LDB4MzYsMHgyNSwgMHhkMSwweDU3LDB4NTYsMHgxNCwKLSsJICAweDU0LDB4MTYsMHg3YSwweGMx LCAweDQ1LDB4YTEsMHgwYiwweGJmLAotKwkgIDB4NzcsMHhjNiwweGE3LDB4MDUsIDB4OTYsMHhk NSwweDc0LDB4ZjEsIH0sIDI1NiwKLSsJeyAweDQ5LDB4OGIsMHg1MywweGZkLCAweGVjLDB4ODcs MHhlZCwweGNiLAotKwkgIDB4ZjAsMHg3MCwweDk3LDB4ZGMsIDB4Y2QsMHhlOSwweDNhLDB4MDgs Ci0rCSAgMHg0YiwweGFkLDB4NzUsMHgwMSwgMHhhMiwweDI0LDB4ZTMsMHg4OCwKLSsJICAweGRm LDB4MzQsMHg5YywweGUxLCAweDg5LDB4NTksMHhmZSwweDg0LAotKwkgIDB4ODUsMHhmOCwweGFk LDB4MTUsIDB4MzcsMHhmMCwweGQ4LDB4OTYsCi0rCSAgMHhlYSwweDczLDB4YmUsMHhkYywgMHg3 MiwweDE0LDB4NzEsMHgzZiwgfSwgMzg0LAotKwl7IDB4ZjYsMHgyYywweDQ2LDB4MzIsIDB4OWIs IH0sIDQwLAotKyAgICB9LAotKyAgICB7CU5JRF9kZXNfZWRlM19jYmMsCS8qIENvdW50ID0gNDEg ZnJvbSBDTUFDR2VuVERFUzMucmVxICovCi0rCXsgMHg4OSwweGJjLDB4ZDksMHg1MiwgMHhhOCww eGM4LDB4YWIsMHgzNywKLSsJICAweDFhLDB4ZjQsMHg4YSwweGM3LCAweGQwLDB4NzAsMHg4NSww eGQ1LAotKwkgIDB4ZWYsMHhmNywweDAyLDB4ZTYsIDB4ZDYsMHgyYywweGRjLDB4MjMsIH0sIDE5 MiwKLSsJeyAweGZhLDB4NjIsMHgwYywweDFiLCAweGJlLDB4OTcsMHgzMSwweDllLAotKwkgIDB4 OWEsMHgwYywweGYwLDB4NDksIDB4MjEsMHgyMSwweGY3LDB4YTIsCi0rCSAgMHgwZSwweGIwLDB4 OGEsMHg2YSwgMHg3MCwweDlkLDB4Y2IsMHhkMCwKLSsJICAweDBhLDB4YWYsMHgzOCwweGU0LCAw eGY5LDB4OWUsMHg3NSwweDRlLCB9LCAyNTYsCi0rCXsgMHg4ZiwweDQ5LDB4YTEsMHhiNywgMHhk NiwweGFhLDB4MjIsMHg1OCwgfSwgNjQsCi0rICAgIH0sCi0rfTsKLSsKLStpbnQgRklQU19zZWxm dGVzdF9jbWFjKCkKLSsJewotKwlzaXplX3Qgbiwgb3V0bGVuOwotKwl1bnNpZ25lZCBjaGFyICAg IG91dFszMl07Ci0rCWNvbnN0IEVWUF9DSVBIRVIgKmNpcGhlcjsKLSsJQ01BQ19DVFggKmN0eCA9 IENNQUNfQ1RYX25ldygpOwotKwljb25zdCBDTUFDX0tBVCAqdDsKLSsJaW50IHJ2ID0gMTsKLSsK LSsJZm9yKG49MCx0PXZlY3RvcjsgbjxzaXplb2YodmVjdG9yKS9zaXplb2YodmVjdG9yWzBdKTsg bisrLHQrKykKLSsJCXsKLSsJCWNpcGhlciA9IEZJUFNfZ2V0X2NpcGhlcmJ5bmlkKHQtPm5pZCk7 Ci0rCQlpZiAoIWNpcGhlcikKLSsJCQl7Ci0rCQkJcnYgPSAtMTsKLSsJCQlnb3RvIGVycjsKLSsJ CQl9Ci0rCQlpZiAoIUNNQUNfSW5pdChjdHgsIHQtPmtleSwgdC0+a2V5c2l6ZS84LCBjaXBoZXIs IDApKQotKwkJCXsKLSsJCQlydiA9IC0xOwotKwkJCWdvdG8gZXJyOwotKwkJCX0KLSsJCWlmICgh Q01BQ19VcGRhdGUoY3R4LCB0LT5tc2csIHQtPm1zZ3NpemUvOCkpCi0rCQkJewotKwkJCXJ2ID0g LTE7Ci0rCQkJZ290byBlcnI7Ci0rCQkJfQotKwkJCQotKwkJaWYgKCFDTUFDX0ZpbmFsKGN0eCwg b3V0LCAmb3V0bGVuKSkKLSsJCQl7Ci0rCQkJcnYgPSAtMTsKLSsJCQlnb3RvIGVycjsKLSsJCQl9 Ci0rCQlDTUFDX0NUWF9jbGVhbnVwKGN0eCk7Ci0rCi0rCQlpZihvdXRsZW4gPCB0LT5tYWNzaXpl LzggfHwgbWVtY21wKG91dCx0LT5tYWMsdC0+bWFjc2l6ZS84KSkKLSsJCQl7Ci0rCQkgICAgCXJ2 ID0gMDsKLSsJCSAgICAJfQotKwkJfQotKwotKwllcnI6Ci0rCUNNQUNfQ1RYX2ZyZWUoY3R4KTsK LSsKLSsJaWYgKHJ2ID09IC0xKQotKwkJewotKwkJcnYgPSAwOwotKwkJfQotKwlpZiAoIXJ2KQot KwkJICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxGVEVTVF9DTUFDLEZJUFNfUl9TRUxGVEVTVF9G QUlMRUQpOwotKwotKwlyZXR1cm4gcnY7Ci0rCX0KLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZGVzX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vZmlwcy9maXBzX2Rlc19zZWxmdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5 cHRvL2ZpcHMvZmlwc19kZXNfc2VsZnRlc3QuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTU3 OTIyNDI3ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19kZXNfc2Vs ZnRlc3QuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU1NzkyMjQyNyArMDEwMAotQEAgLTAsMCArMSwx NDcgQEAKLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNT TCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAq IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g Ci0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBk aXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRp b25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3Bs YXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8p IgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQ cm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHBy b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3 cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0 Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMg ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0r ICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJp b3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsg KgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0 YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0 Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5z c2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVu U1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElF RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBP cGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQg VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9T UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsg KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lC SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyNpbmNs dWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4K LSsjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgotKwotKyNpZmRlZiBPUEVOU1NMX0ZJ UFMKLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0Ci0rICAgIHsKLSsgICAgY29uc3QgdW5zaWduZWQg Y2hhciBrZXlbMTZdOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHBsYWludGV4dFs4XTsKLSsg ICAgY29uc3QgdW5zaWduZWQgY2hhciBjaXBoZXJ0ZXh0WzhdOwotKyAgICB9IHRlc3RzMltdPQot Kwl7Ci0rCXsKLSsJeyAweDdjLDB4NGYsMHg2ZSwweGY3LDB4YTIsMHgwNCwweDE2LDB4ZWMsCi0r CSAgMHgwYiwweDZiLDB4N2MsMHg5ZSwweDVlLDB4MTksMHhhNywweGM0IH0sCi0rCXsgMHgwNiww eGE3LDB4ZDgsMHg3OSwweGFhLDB4Y2UsMHg2OSwweGVmIH0sCi0rCXsgMHg0YywweDExLDB4MTcs MHg1NSwweGJmLDB4YzQsMHg0ZSwweGZkIH0KLSsJfSwKLSsJewotKwl7IDB4NWQsMHg5ZSwweDAx LDB4ZDMsMHgyNSwweGM3LDB4M2UsMHgzNCwKLSsJICAweDAxLDB4MTYsMHg3YywweDg1LDB4MjMs MHhkZiwweGUwLDB4NjggfSwKLSsJeyAweDljLDB4NTAsMHgwOSwweDBmLDB4NWUsMHg3ZCwweDY5 LDB4N2UgfSwKLSsJeyAweGQyLDB4MGIsMHgxOCwweGRmLDB4ZDksMHgwZCwweDllLDB4ZmYgfSwK LSsJfQotKwl9OwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QKLSsgICAgewotKyAgICBjb25zdCB1 bnNpZ25lZCBjaGFyIGtleVsyNF07Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGxhaW50ZXh0 WzhdOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGNpcGhlcnRleHRbOF07Ci0rICAgIH0gdGVz dHMzW109Ci0rCXsKLSsJewotKwl7IDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwKLSsJICAweEZFLDB4REMsMHhCQSwweDk4LDB4NzYsMHg1NCwweDMyLDB4MTAsCi0rCSAg MHgxMiwweDM0LDB4NTYsMHg3OCwweDlhLDB4YmMsMHhkZSwweGYwIH0sCi0rCXsgMHg4ZiwweDhm LDB4YmYsMHg5YiwweDVkLDB4NDgsMHhiNCwweDFjIH0sCi0rCXsgMHg1OSwweDhjLDB4ZTUsMHhk MywweDZjLDB4YTIsMHhlYSwweDFiIH0sCi0rCX0sCi0rCXsKLSsJeyAweERDLDB4QkEsMHg5OCww eDc2LDB4NTQsMHgzMiwweDEwLDB4RkUsCi0rCSAgMHgwMSwweDIzLDB4NDUsMHg2NywweDg5LDB4 QUIsMHhDRCwweEVGLAotKwkgIDB4RUQsMHgzOSwweEQ5LDB4NTAsMHhGQSwweDc0LDB4QkMsMHhD NCB9LAotKwl7IDB4MDEsMHgyMywweDQ1LDB4NjcsMHg4OSwweEFCLDB4Q0QsMHhFRiB9LAotKwl7 IDB4MTEsMHgyNSwweGIwLDB4MzUsMHhiZSwweGEwLDB4ODIsMHg4NiB9LAotKwl9LAotKwl9Owot KwotKwotK3N0YXRpYyBpbnQgY29ycnVwdF9kZXM7Ci0rCi0rdm9pZCBGSVBTX2NvcnJ1cHRfZGVz KCkKLSsgICAgewotKyAgICBjb3JydXB0X2RlcyA9IDE7Ci0rICAgIH0KLSsKLStpbnQgRklQU19z ZWxmdGVzdF9kZXMoKQotKyAgICB7Ci0rICAgIGludCBuLCByZXQgPSAwOwotKyAgICBFVlBfQ0lQ SEVSX0NUWCBjdHg7Ci0rICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0eCk7Ci0rICAgIC8qIEVu Y3J5cHQvZGVjcnlwdCB3aXRoIDIta2V5IDNERVMgYW5kIGNvbXBhcmUgdG8ga25vd24gYW5zd2Vy cyAqLwotKyAgICBmb3Iobj0wIDsgbiA8IDIgOyArK24pCi0rCXsKLSsJdW5zaWduZWQgY2hhciBw bGFpbnRleHRbOF07Ci0rCi0rCW1lbWNweShwbGFpbnRleHQsIHRlc3RzMltuXS5wbGFpbnRleHQs IHNpemVvZihwbGFpbnRleHQpKTsKLSsJaWYgKGNvcnJ1cHRfZGVzKQotKwkJcGxhaW50ZXh0WzBd Kys7Ci0rCWlmICghZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfZGVzX2VkZV9lY2IoKSwKLSsJ CQkJdGVzdHMyW25dLmtleSwgTlVMTCwKLSsJCQkJcGxhaW50ZXh0LCB0ZXN0czJbbl0uY2lwaGVy dGV4dCwgOCkpCi0rCQlnb3RvIGVycjsKLSsJfQotKwotKyAgICAvKiBFbmNyeXB0L2RlY3J5cHQg d2l0aCAzREVTIGFuZCBjb21wYXJlIHRvIGtub3duIGFuc3dlcnMgKi8KLSsgICAgZm9yKG49MCA7 IG4gPCAyIDsgKytuKQotKwl7Ci0rCWlmICghZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfZGVz X2VkZTNfZWNiKCksCi0rCQkJCXRlc3RzM1tuXS5rZXksIE5VTEwsCi0rCQkJCXRlc3RzM1tuXS5w bGFpbnRleHQsIHRlc3RzM1tuXS5jaXBoZXJ0ZXh0LCA4KSkKLSsJCWdvdG8gZXJyOwotKwl9Ci0r ICAgIHJldCA9IDE7Ci0rICAgIGVycjoKLSsgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4 KTsKLSsgICAgaWYgKHJldCA9PSAwKQotKwkgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxGVEVT VF9ERVMsRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7Ci0rCi0rICAgIHJldHVybiByZXQ7Ci0rICAg IH0KLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZHJi Z19jdHIuYy5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19jdHIuYwot LS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19jdHIuYy5maXBzCTIwMTUt MDEtMDkgMDk6NTE6NTEuNTU4OTIyNDQ5ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRv L2ZpcHMvZmlwc19kcmJnX2N0ci5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTU4OTIyNDQ5ICswMTAw Ci1AQCAtMCwwICsxLDQzNiBAQAotKy8qIGZpcHMvcmFuZC9maXBzX2RyYmdfY3RyLmMgKi8KLSsv KiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3Ig dGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwotKy8qID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29w eXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVk LgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgot KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBh ZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwot KyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50 OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRo ZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQu IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5T U0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsg KiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh cmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4g cGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcu Ci0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90 IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4g dGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0 aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBm b3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xl ZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRv b2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUg SVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAq IEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J VEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg SU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklC VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsg KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H LCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E UyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT SU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZ LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lO RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW SVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotKyAqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5o PgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgotKyNpbmNsdWRlICJmaXBzX3JhbmRf bGNsLmgiCi0rCi0rc3RhdGljIHZvaWQgaW5jXzEyOChEUkJHX0NUUl9DVFggKmNjdHgpCi0rCXsK LSsJaW50IGk7Ci0rCXVuc2lnbmVkIGNoYXIgYzsKLSsJdW5zaWduZWQgY2hhciAqcCA9IGNjdHgt PlYgKyAxNTsKLSsJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCi0rCQl7Ci0rCQljID0gKnA7Ci0r CQljKys7Ci0rCQkqcCA9IGM7Ci0rCQlpZiAoYykKLSsJCQlyZXR1cm47Ci0rCQlwLS07Ci0rCQl9 Ci0rCX0KLSsKLStzdGF0aWMgdm9pZCBjdHJfWE9SKERSQkdfQ1RSX0NUWCAqY2N0eCwgY29uc3Qg dW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbikKLSsJewotKwlzaXplX3QgaSwgbjsKLSsJ LyogQW55IHplcm8gcGFkZGluZyB3aWxsIGhhdmUgbm8gZWZmZWN0IG9uIHRoZSByZXN1bHQgYXMg d2UKLSsJICogYXJlIFhPUmluZy4gU28ganVzdCBwcm9jZXNzIGhvd2V2ZXIgbXVjaCBpbnB1dCB3 ZSBoYXZlLgotKwkgKi8KLSsKLSsJaWYgKCFpbiB8fCAhaW5sZW4pCi0rCQlyZXR1cm47Ci0rCi0r CWlmIChpbmxlbiA8IGNjdHgtPmtleWxlbikKLSsJCW4gPSBpbmxlbjsKLSsJZWxzZQotKwkJbiA9 IGNjdHgtPmtleWxlbjsKLSsKLSsJZm9yIChpID0gMDsgaSA8IG47IGkrKykKLSsJCWNjdHgtPktb aV0gXj0gaW5baV07Ci0rCWlmIChpbmxlbiA8PSBjY3R4LT5rZXlsZW4pCi0rCQlyZXR1cm47Ci0r Ci0rCW4gPSBpbmxlbiAtIGNjdHgtPmtleWxlbjsKLSsJLyogU2hvdWxkIG5ldmVyIGhhcHBlbiAq LwotKwlpZiAobiA+IDE2KQotKwkJbiA9IDE2OwotKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykK LSsJCWNjdHgtPlZbaV0gXj0gaW5baSArIGNjdHgtPmtleWxlbl07Ci0rCX0KLSsKLSsvKiBQcm9j ZXNzIGEgY29tcGxldGUgYmxvY2sgdXNpbmcgQkNDIGFsZ29yaXRobSBvZiBTUFAgODAwLTkwIDEw LjQuMyAqLwotKwotK3N0YXRpYyB2b2lkIGN0cl9CQ0NfYmxvY2soRFJCR19DVFJfQ1RYICpjY3R4 LCB1bnNpZ25lZCBjaGFyICpvdXQsCi0rCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmluKQotKwl7 Ci0rCWludCBpOwotKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKLSsJCW91dFtpXSBePSBpbltp XTsKLSsJQUVTX2VuY3J5cHQob3V0LCBvdXQsICZjY3R4LT5kZl9rcyk7Ci0rI2lmIDAKLStmcHJp bnRmKHN0ZGVyciwgIkJDQyBpbitvdXRcbiIpOwotK0JJT19kdW1wX2ZwKHN0ZGVyciwgaW4sIDE2 KTsKLStCSU9fZHVtcF9mcChzdGRlcnIsIG91dCwgMTYpOwotKyNlbmRpZgotKwl9Ci0rCi0rLyog SGFuZGxlIHNldmVyYWwgQkNDIG9wZXJhdGlvbnMgZm9yIGFzIG11Y2ggZGF0YSBhcyB3ZSBuZWVk IGZvciBLIGFuZCBYICovCi0rc3RhdGljIHZvaWQgY3RyX0JDQ19ibG9ja3MoRFJCR19DVFJfQ1RY ICpjY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbikKLSsJewotKwljdHJfQkNDX2Jsb2NrKGNj dHgsIGNjdHgtPktYLCBpbik7Ci0rCWN0cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+S1ggKyAxNiwg aW4pOwotKwlpZiAoY2N0eC0+a2V5bGVuICE9IDE2KQotKwkJY3RyX0JDQ19ibG9jayhjY3R4LCBj Y3R4LT5LWCArIDMyLCBpbik7Ci0rCX0KLSsvKiBJbml0aWFsaXNlIEJDQyBibG9ja3M6IHRoZXNl IGhhdmUgdGhlIHZhbHVlIDAsMSwyIGluIGxlZnRtb3N0IHBvc2l0aW9uczoKLSsgKiBzZWUgMTAu NC4yIHN0YWdlIDcuCi0rICovCi0rc3RhdGljIHZvaWQgY3RyX0JDQ19pbml0KERSQkdfQ1RSX0NU WCAqY2N0eCkKLSsJewotKwltZW1zZXQoY2N0eC0+S1gsIDAsIDQ4KTsKLSsJbWVtc2V0KGNjdHgt PmJsdG1wLCAwLCAxNik7Ci0rCWN0cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+S1gsIGNjdHgtPmJs dG1wKTsKLSsJY2N0eC0+Ymx0bXBbM10gPSAxOwotKwljdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgt PktYICsgMTYsIGNjdHgtPmJsdG1wKTsKLSsJaWYgKGNjdHgtPmtleWxlbiAhPSAxNikKLSsJCXsK LSsJCWNjdHgtPmJsdG1wWzNdID0gMjsKLSsJCWN0cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+S1gg KyAzMiwgY2N0eC0+Ymx0bXApOwotKwkJfQotKwl9Ci0rCi0rLyogUHJvY2VzcyBzZXZlcmFsIGJs b2NrcyBpbnRvIEJDQyBhbGdvcml0aG0sIHNvbWUgcG9zc2libHkgcGFydGlhbCAqLwotK3N0YXRp YyB2b2lkIGN0cl9CQ0NfdXBkYXRlKERSQkdfQ1RSX0NUWCAqY2N0eCwKLSsJCQkJY29uc3QgdW5z aWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbikKLSsJewotKwlpZiAoIWluIHx8ICFpbmxlbikK LSsJCXJldHVybjsKLSsJLyogSWYgd2UgaGF2ZSBwYXJ0aWFsIGJsb2NrIGhhbmRsZSBpdCBmaXJz dCAqLwotKwlpZiAoY2N0eC0+Ymx0bXBfcG9zKQotKwkJewotKwkJc2l6ZV90IGxlZnQgPSAxNiAt IGNjdHgtPmJsdG1wX3BvczsKLSsJCS8qIElmIHdlIG5vdyBoYXZlIGEgY29tcGxldGUgYmxvY2sg cHJvY2VzcyBpdCAqLwotKwkJaWYgKGlubGVuID49IGxlZnQpCi0rCQkJewotKwkJCW1lbWNweShj Y3R4LT5ibHRtcCArIGNjdHgtPmJsdG1wX3BvcywgaW4sIGxlZnQpOwotKwkJCWN0cl9CQ0NfYmxv Y2tzKGNjdHgsIGNjdHgtPmJsdG1wKTsKLSsJCQljY3R4LT5ibHRtcF9wb3MgPSAwOwotKwkJCWlu bGVuIC09IGxlZnQ7Ci0rCQkJaW4gKz0gbGVmdDsKLSsJCQl9Ci0rCQl9Ci0rCS8qIFByb2Nlc3Mg emVybyBvciBtb3JlIGNvbXBsZXRlIGJsb2NrcyAqLwotKwl3aGlsZSAoaW5sZW4gPj0gMTYpCi0r CQl7Ci0rCQljdHJfQkNDX2Jsb2NrcyhjY3R4LCBpbik7Ci0rCQlpbiArPSAxNjsKLSsJCWlubGVu IC09IDE2OwotKwkJfQotKwkvKiBDb3B5IGFueSByZW1haW5pbmcgcGFydGlhbCBibG9jayB0byB0 aGUgdGVtcG9yYXJ5IGJ1ZmZlciAqLwotKwlpZiAoaW5sZW4gPiAwKQotKwkJewotKwkJbWVtY3B5 KGNjdHgtPmJsdG1wICsgY2N0eC0+Ymx0bXBfcG9zLCBpbiwgaW5sZW4pOwotKwkJY2N0eC0+Ymx0 bXBfcG9zICs9IGlubGVuOwotKwkJfQotKwl9Ci0rCi0rc3RhdGljIHZvaWQgY3RyX0JDQ19maW5h bChEUkJHX0NUUl9DVFggKmNjdHgpCi0rCXsKLSsJaWYgKGNjdHgtPmJsdG1wX3BvcykKLSsJCXsK LSsJCW1lbXNldChjY3R4LT5ibHRtcCArIGNjdHgtPmJsdG1wX3BvcywgMCwgMTYgLSBjY3R4LT5i bHRtcF9wb3MpOwotKwkJY3RyX0JDQ19ibG9ja3MoY2N0eCwgY2N0eC0+Ymx0bXApOwotKwkJfQot Kwl9Ci0rCi0rc3RhdGljIHZvaWQgY3RyX2RmKERSQkdfQ1RSX0NUWCAqY2N0eCwKLSsJCQljb25z dCB1bnNpZ25lZCBjaGFyICppbjEsIHNpemVfdCBpbjFsZW4sCi0rCQkJY29uc3QgdW5zaWduZWQg Y2hhciAqaW4yLCBzaXplX3QgaW4ybGVuLAotKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMywg c2l6ZV90IGluM2xlbikKLSsJewotKwlzaXplX3QgaW5sZW47Ci0rCXVuc2lnbmVkIGNoYXIgKnAg PSBjY3R4LT5ibHRtcDsKLSsJc3RhdGljIHVuc2lnbmVkIGNoYXIgYzgwID0gMHg4MDsKLSsKLSsJ Y3RyX0JDQ19pbml0KGNjdHgpOwotKwlpZiAoIWluMSkKLSsJCWluMWxlbiA9IDA7Ci0rCWlmICgh aW4yKQotKwkJaW4ybGVuID0gMDsKLSsJaWYgKCFpbjMpCi0rCQlpbjNsZW4gPSAwOwotKwlpbmxl biA9IGluMWxlbiArIGluMmxlbiArIGluM2xlbjsKLSsJLyogSW5pdGlhbGlzZSBMfHxOIGluIHRl bXBvcmFyeSBibG9jayAqLwotKwkqcCsrID0gKGlubGVuID4+IDI0KSAmIDB4ZmY7Ci0rCSpwKysg PSAoaW5sZW4gPj4gMTYpICYgMHhmZjsKLSsJKnArKyA9IChpbmxlbiA+PiA4KSAmIDB4ZmY7Ci0r CSpwKysgPSBpbmxlbiAmIDB4ZmY7Ci0rCS8qIE5CIGtleWxlbiBpcyBhdCBtb3N0IDMyIGJ5dGVz ICovCi0rCSpwKysgPSAwOwotKwkqcCsrID0gMDsKLSsJKnArKyA9IDA7Ci0rCSpwID0gKHVuc2ln bmVkIGNoYXIpKChjY3R4LT5rZXlsZW4gKyAxNikgJiAweGZmKTsKLSsJY2N0eC0+Ymx0bXBfcG9z ID0gODsKLSsJY3RyX0JDQ191cGRhdGUoY2N0eCwgaW4xLCBpbjFsZW4pOwotKwljdHJfQkNDX3Vw ZGF0ZShjY3R4LCBpbjIsIGluMmxlbik7Ci0rCWN0cl9CQ0NfdXBkYXRlKGNjdHgsIGluMywgaW4z bGVuKTsKLSsJY3RyX0JDQ191cGRhdGUoY2N0eCwgJmM4MCwgMSk7Ci0rCWN0cl9CQ0NfZmluYWwo Y2N0eCk7Ci0rCS8qIFNldCB1cCBrZXkgSyAqLwotKwlBRVNfc2V0X2VuY3J5cHRfa2V5KGNjdHgt PktYLCBjY3R4LT5rZXlsZW4gKiA4LCAmY2N0eC0+ZGZfa3hrcyk7Ci0rCS8qIFggZm9sbG93cyBr ZXkgSyAqLwotKwlBRVNfZW5jcnlwdChjY3R4LT5LWCArIGNjdHgtPmtleWxlbiwgY2N0eC0+S1gs ICZjY3R4LT5kZl9reGtzKTsKLSsJQUVTX2VuY3J5cHQoY2N0eC0+S1gsIGNjdHgtPktYICsgMTYs ICZjY3R4LT5kZl9reGtzKTsKLSsJaWYgKGNjdHgtPmtleWxlbiAhPSAxNikKLSsJCUFFU19lbmNy eXB0KGNjdHgtPktYICsgMTYsIGNjdHgtPktYICsgMzIsICZjY3R4LT5kZl9reGtzKTsKLSsjaWYg MAotK2ZwcmludGYoc3RkZXJyLCAiT3V0cHV0IG9mIGN0cl9kZjpcbiIpOwotK0JJT19kdW1wX2Zw KHN0ZGVyciwgY2N0eC0+S1gsIGNjdHgtPmtleWxlbiArIDE2KTsKLSsjZW5kaWYKLSsJfQotKwot Ky8qIE5CIHRoZSBuby1kZiAgVXBkYXRlIGluIFNQODAwLTkwIHNwZWNpZmllcyBhIGNvbnN0YW50 IGlucHV0IGxlbmd0aAotKyAqIG9mIHNlZWRsZW4sIGhvd2V2ZXIgb3RoZXIgdXNlcyBvZiB0aGlz IGFsZ29yaXRobSBwYWQgdGhlIGlucHV0IHdpdGgKLSsgKiB6ZXJvZXMgaWYgbmVjZXNzYXJ5IGFu ZCBoYXZlIHVwIHRvIHR3byBwYXJhbWV0ZXJzIFhPUmVkIHRvZ2V0aGVyLAotKyAqIGhhbmRsZSBi b3RoIGNhc2VzIGluIHRoaXMgZnVuY3Rpb24gaW5zdGVhZC4KLSsgKi8KLSsKLStzdGF0aWMgdm9p ZCBjdHJfVXBkYXRlKERSQkdfQ1RYICpkY3R4LAotKwkJY29uc3QgdW5zaWduZWQgY2hhciAqaW4x LCBzaXplX3QgaW4xbGVuLAotKwkJY29uc3QgdW5zaWduZWQgY2hhciAqaW4yLCBzaXplX3QgaW4y bGVuLAotKwkJY29uc3QgdW5zaWduZWQgY2hhciAqbm9uY2UsIHNpemVfdCBub25jZWxlbikKLSsJ ewotKwlEUkJHX0NUUl9DVFggKmNjdHggPSAmZGN0eC0+ZC5jdHI7Ci0rCS8qIGtzIGlzIGFscmVh ZHkgc2V0dXAgZm9yIGNvcnJlY3Qga2V5ICovCi0rCWluY18xMjgoY2N0eCk7Ci0rCUFFU19lbmNy eXB0KGNjdHgtPlYsIGNjdHgtPkssICZjY3R4LT5rcyk7Ci0rCS8qIElmIGtleWxlbiBsb25nZXIg dGhhbiAxMjggYml0cyBuZWVkIGV4dHJhIGVuY3J5cHQgKi8KLSsJaWYgKGNjdHgtPmtleWxlbiAh PSAxNikKLSsJCXsKLSsJCWluY18xMjgoY2N0eCk7Ci0rCQlBRVNfZW5jcnlwdChjY3R4LT5WLCBj Y3R4LT5LICsgMTYsICZjY3R4LT5rcyk7Ci0rCQl9Ci0rCWluY18xMjgoY2N0eCk7Ci0rCUFFU19l bmNyeXB0KGNjdHgtPlYsIGNjdHgtPlYsICZjY3R4LT5rcyk7Ci0rCS8qIElmIDE5MiBiaXQga2V5 IHBhcnQgb2YgViBpcyBvbiBlbmQgb2YgSyAqLwotKwlpZiAoY2N0eC0+a2V5bGVuID09IDI0KQot KwkJewotKwkJbWVtY3B5KGNjdHgtPlYgKyA4LCBjY3R4LT5WLCA4KTsKLSsJCW1lbWNweShjY3R4 LT5WLCBjY3R4LT5LICsgMjQsIDgpOwotKwkJfQotKwotKwlpZiAoZGN0eC0+eGZsYWdzICYgRFJC R19GTEFHX0NUUl9VU0VfREYpCi0rCQl7Ci0rCQkvKiBJZiBubyBpbnB1dCByZXVzZSBleGlzdGlu ZyBkZXJpdmVkIHZhbHVlICovCi0rCQlpZiAoaW4xIHx8IG5vbmNlIHx8IGluMikKLSsJCQljdHJf ZGYoY2N0eCwgaW4xLCBpbjFsZW4sIG5vbmNlLCBub25jZWxlbiwgaW4yLCBpbjJsZW4pOwotKwkJ LyogSWYgdGhpcyBhIHJldXNlIGlucHV0IGluMWxlbiAhPSAwICovCi0rCQlpZiAoaW4xbGVuKQot KwkJCWN0cl9YT1IoY2N0eCwgY2N0eC0+S1gsIGRjdHgtPnNlZWRsZW4pOwotKwkJfQotKwllbHNl Ci0rCQl7Ci0rCQljdHJfWE9SKGNjdHgsIGluMSwgaW4xbGVuKTsKLSsJCWN0cl9YT1IoY2N0eCwg aW4yLCBpbjJsZW4pOwotKwkJfQotKwotKwlBRVNfc2V0X2VuY3J5cHRfa2V5KGNjdHgtPkssIGRj dHgtPnN0cmVuZ3RoLCAmY2N0eC0+a3MpOwotKyNpZiAwCi0rZnByaW50ZihzdGRlcnIsICJLK1Yg YWZ0ZXIgdXBkYXRlIGlzOlxuIik7Ci0rQklPX2R1bXBfZnAoc3RkZXJyLCBjY3R4LT5LLCBjY3R4 LT5rZXlsZW4pOwotK0JJT19kdW1wX2ZwKHN0ZGVyciwgY2N0eC0+ViwgMTYpOwotKyNlbmRpZgot Kwl9Ci0rCi0rc3RhdGljIGludCBkcmJnX2N0cl9pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwK LSsJCQljb25zdCB1bnNpZ25lZCBjaGFyICplbnQsIHNpemVfdCBlbnRsZW4sCi0rCQkJY29uc3Qg dW5zaWduZWQgY2hhciAqbm9uY2UsIHNpemVfdCBub25jZWxlbiwKLSsJCQljb25zdCB1bnNpZ25l ZCBjaGFyICpwZXJzLCBzaXplX3QgcGVyc2xlbikKLSsJewotKwlEUkJHX0NUUl9DVFggKmNjdHgg PSAmZGN0eC0+ZC5jdHI7Ci0rCW1lbXNldChjY3R4LT5LLCAwLCBzaXplb2YoY2N0eC0+SykpOwot KwltZW1zZXQoY2N0eC0+ViwgMCwgc2l6ZW9mKGNjdHgtPlYpKTsKLSsJQUVTX3NldF9lbmNyeXB0 X2tleShjY3R4LT5LLCBkY3R4LT5zdHJlbmd0aCwgJmNjdHgtPmtzKTsKLSsJY3RyX1VwZGF0ZShk Y3R4LCBlbnQsIGVudGxlbiwgcGVycywgcGVyc2xlbiwgbm9uY2UsIG5vbmNlbGVuKTsKLSsJcmV0 dXJuIDE7Ci0rCX0KLSsKLStzdGF0aWMgaW50IGRyYmdfY3RyX3Jlc2VlZChEUkJHX0NUWCAqZGN0 eCwgCi0rCQkJY29uc3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXplX3QgZW50bGVuLAotKwkJCWNv bnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKQotKwl7Ci0rCWN0cl9VcGRh dGUoZGN0eCwgZW50LCBlbnRsZW4sIGFkaW4sIGFkaW5sZW4sIE5VTEwsIDApOwotKwlyZXR1cm4g MTsKLSsJfQotKwotK3N0YXRpYyBpbnQgZHJiZ19jdHJfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgs Ci0rCQkJdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuLAotKwkJCWNvbnN0IHVuc2ln bmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKQotKwl7Ci0rCURSQkdfQ1RSX0NUWCAqY2N0 eCA9ICZkY3R4LT5kLmN0cjsKLSsJaWYgKGFkaW4gJiYgYWRpbmxlbikKLSsJCXsKLSsJCWN0cl9V cGRhdGUoZGN0eCwgYWRpbiwgYWRpbmxlbiwgTlVMTCwgMCwgTlVMTCwgMCk7Ci0rCQkvKiBUaGlz IG1lYW5zIHdlIHJldXNlIGRlcml2ZWQgdmFsdWUgKi8KLSsJCWlmIChkY3R4LT54ZmxhZ3MgJiBE UkJHX0ZMQUdfQ1RSX1VTRV9ERikKLSsJCQl7Ci0rCQkJYWRpbiA9IE5VTEw7Ci0rCQkJYWRpbmxl biA9IDE7Ci0rCQkJfQotKwkJfQotKwllbHNlCi0rCQlhZGlubGVuID0gMDsKLSsKLSsJZm9yICg7 OykKLSsJCXsKLSsJCWluY18xMjgoY2N0eCk7Ci0rCQlpZiAoIShkY3R4LT54ZmxhZ3MgJiBEUkJH X0ZMQUdfVEVTVCkgJiYgIWRjdHgtPmxiX3ZhbGlkKQotKwkJCXsKLSsJCQlBRVNfZW5jcnlwdChj Y3R4LT5WLCBkY3R4LT5sYiwgJmNjdHgtPmtzKTsKLSsJCQlkY3R4LT5sYl92YWxpZCA9IDE7Ci0r CQkJY29udGludWU7Ci0rCQkJfQotKwkJaWYgKG91dGxlbiA8IDE2KQotKwkJCXsKLSsJCQkvKiBV c2UgSyBhcyB0ZW1wIHNwYWNlIGFzIGl0IHdpbGwgYmUgdXBkYXRlZCAqLwotKwkJCUFFU19lbmNy eXB0KGNjdHgtPlYsIGNjdHgtPkssICZjY3R4LT5rcyk7Ci0rCQkJaWYgKCFmaXBzX2RyYmdfY3By bmdfdGVzdChkY3R4LCBjY3R4LT5LKSkKLSsJCQkJcmV0dXJuIDA7Ci0rCQkJbWVtY3B5KG91dCwg Y2N0eC0+Sywgb3V0bGVuKTsKLSsJCQlicmVhazsKLSsJCQl9Ci0rCQlBRVNfZW5jcnlwdChjY3R4 LT5WLCBvdXQsICZjY3R4LT5rcyk7Ci0rCQlpZiAoIWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRjdHgs IG91dCkpCi0rCQkJcmV0dXJuIDA7Ci0rCQlvdXQgKz0gMTY7Ci0rCQlvdXRsZW4gLT0gMTY7Ci0r CQlpZiAob3V0bGVuID09IDApCi0rCQkJYnJlYWs7Ci0rCQl9Ci0rCi0rCWN0cl9VcGRhdGUoZGN0 eCwgYWRpbiwgYWRpbmxlbiwgTlVMTCwgMCwgTlVMTCwgMCk7Ci0rCi0rCXJldHVybiAxOwotKwot Kwl9Ci0rCi0rc3RhdGljIGludCBkcmJnX2N0cl91bmluc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4 KQotKwl7Ci0rCW1lbXNldCgmZGN0eC0+ZC5jdHIsIDAsIHNpemVvZihEUkJHX0NUUl9DVFgpKTsK LSsJcmV0dXJuIDE7Ci0rCX0KLSsKLStpbnQgZmlwc19kcmJnX2N0cl9pbml0KERSQkdfQ1RYICpk Y3R4KQotKwl7Ci0rCURSQkdfQ1RSX0NUWCAqY2N0eCA9ICZkY3R4LT5kLmN0cjsKLSsKLSsJc2l6 ZV90IGtleWxlbjsKLSsKLSsJc3dpdGNoIChkY3R4LT50eXBlKQotKwkJewotKwkJY2FzZSBOSURf YWVzXzEyOF9jdHI6Ci0rCQlrZXlsZW4gPSAxNjsKLSsJCWJyZWFrOwotKwotKwkJY2FzZSBOSURf YWVzXzE5Ml9jdHI6Ci0rCQlrZXlsZW4gPSAyNDsKLSsJCWJyZWFrOwotKwotKwkJY2FzZSBOSURf YWVzXzI1Nl9jdHI6Ci0rCQlrZXlsZW4gPSAzMjsKLSsJCWJyZWFrOwotKwotKwkJZGVmYXVsdDoK LSsJCXJldHVybiAtMjsKLSsJCX0KLSsKLSsJZGN0eC0+aW5zdGFudGlhdGUgPSBkcmJnX2N0cl9p bnN0YW50aWF0ZTsKLSsJZGN0eC0+cmVzZWVkID0gZHJiZ19jdHJfcmVzZWVkOwotKwlkY3R4LT5n ZW5lcmF0ZSA9IGRyYmdfY3RyX2dlbmVyYXRlOwotKwlkY3R4LT51bmluc3RhbnRpYXRlID0gZHJi Z19jdHJfdW5pbnN0YW50aWF0ZTsKLSsKLSsJY2N0eC0+a2V5bGVuID0ga2V5bGVuOwotKwlkY3R4 LT5zdHJlbmd0aCA9IGtleWxlbiAqIDg7Ci0rCWRjdHgtPmJsb2NrbGVuZ3RoID0gMTY7Ci0rCWRj dHgtPnNlZWRsZW4gPSBrZXlsZW4gKyAxNjsKLSsKLSsJaWYgKGRjdHgtPnhmbGFncyAmIERSQkdf RkxBR19DVFJfVVNFX0RGKQotKwkJewotKwkJLyogZGYgaW5pdGlhbGlzYXRpb24gKi8KLSsJCXN0 YXRpYyB1bnNpZ25lZCBjaGFyIGRmX2tleVszMl0gPQotKwkJCXsKLSsJCQkweDAwLDB4MDEsMHgw MiwweDAzLDB4MDQsMHgwNSwweDA2LDB4MDcsCi0rCQkJMHgwOCwweDA5LDB4MGEsMHgwYiwweDBj LDB4MGQsMHgwZSwweDBmLAotKwkJCTB4MTAsMHgxMSwweDEyLDB4MTMsMHgxNCwweDE1LDB4MTYs MHgxNywKLSsJCQkweDE4LDB4MTksMHgxYSwweDFiLDB4MWMsMHgxZCwweDFlLDB4MWYgCi0rCQkJ fTsKLSsJCS8qIFNldCBrZXkgc2NoZWR1bGUgZm9yIGRmX2tleSAqLwotKwkJQUVTX3NldF9lbmNy eXB0X2tleShkZl9rZXksIGRjdHgtPnN0cmVuZ3RoLCAmY2N0eC0+ZGZfa3MpOwotKwotKwkJZGN0 eC0+bWluX2VudHJvcHkgPSBjY3R4LT5rZXlsZW47Ci0rCQlkY3R4LT5tYXhfZW50cm9weSA9IERS QkdfTUFYX0xFTkdUSDsKLSsJCWRjdHgtPm1pbl9ub25jZSA9IGRjdHgtPm1pbl9lbnRyb3B5IC8g MjsKLSsJCWRjdHgtPm1heF9ub25jZSA9IERSQkdfTUFYX0xFTkdUSDsKLSsJCWRjdHgtPm1heF9w ZXJzID0gRFJCR19NQVhfTEVOR1RIOwotKwkJZGN0eC0+bWF4X2FkaW4gPSBEUkJHX01BWF9MRU5H VEg7Ci0rCQl9Ci0rCWVsc2UKLSsJCXsKLSsJCWRjdHgtPm1pbl9lbnRyb3B5ID0gZGN0eC0+c2Vl ZGxlbjsKLSsJCWRjdHgtPm1heF9lbnRyb3B5ID0gZGN0eC0+c2VlZGxlbjsKLSsJCS8qIE5vbmNl IG5vdCB1c2VkICovCi0rCQlkY3R4LT5taW5fbm9uY2UgPSAwOwotKwkJZGN0eC0+bWF4X25vbmNl ID0gMDsKLSsJCWRjdHgtPm1heF9wZXJzID0gZGN0eC0+c2VlZGxlbjsKLSsJCWRjdHgtPm1heF9h ZGluID0gZGN0eC0+c2VlZGxlbjsKLSsJCX0KLSsKLSsJZGN0eC0+bWF4X3JlcXVlc3QgPSAxPDwx NjsKLSsJZGN0eC0+cmVzZWVkX2ludGVydmFsID0gMTw8MjQ7Ci0rCi0rCXJldHVybiAxOwotKwl9 Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaGFzaC5jLmZp cHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2hhc2guYwotLS0tIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19oYXNoLmMuZmlwcwkyMDE1LTAxLTA5IDA5 OjUxOjUxLjU1ODkyMjQ0OSArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2Zp cHNfZHJiZ19oYXNoLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTg5MjI0NDkgKzAxMDAKLUBAIC0w LDAgKzEsMzc4IEBACi0rLyogZmlwcy9yYW5kL2ZpcHNfZHJiZ19oYXNoLmMgKi8KLSsvKiBXcml0 dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9w ZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0 IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAq Ci0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg d2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEu IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu Ci0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl ZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRp c2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAg IHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAq ICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVu U1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRw Oi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9v bGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBl bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0 aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlz c2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0rICoK LSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNh bGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIg bmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3Bl blNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdo YXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50 OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRo ZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQg KGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJF U1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP LCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g RVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMg QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQK LSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBU T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBB TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAot KyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot KyAqLwotKwotKyNkZWZpbmUgT1BFTlNTTF9GSVBTQVBJCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5o PgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsj aW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+ Ci0rI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKLSsKLSsvKiBUaGlzIGlzIEhhc2hfZGYgZnJv bSBTUCA4MDAtOTAgMTAuNC4xICovCi0rCi0rc3RhdGljIGludCBoYXNoX2RmKERSQkdfQ1RYICpk Y3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCi0rCQkJY29uc3QgdW5zaWduZWQgY2hhciAqaW4xLCBz aXplX3QgaW4xbGVuLAotKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMiwgc2l6ZV90IGluMmxl biwKLSsJCQljb25zdCB1bnNpZ25lZCBjaGFyICppbjMsIHNpemVfdCBpbjNsZW4sCi0rCQkJY29u c3QgdW5zaWduZWQgY2hhciAqaW40LCBzaXplX3QgaW40bGVuKQotKwl7Ci0rCUVWUF9NRF9DVFgg Km1jdHggPSAmZGN0eC0+ZC5oYXNoLm1jdHg7Ci0rCXVuc2lnbmVkIGNoYXIgKnZ0bXAgPSBkY3R4 LT5kLmhhc2gudnRtcDsKLSsJdW5zaWduZWQgY2hhciB0bXBbNl07Ci0rCS8qIFN0YW5kYXJkIG9u bHkgZXZlciBuZWVkcyBzZWVkbGVuIGJ5dGVzIHdoaWNoIGlzIGFsd2F5cyBsZXNzIHRoYW4KLSsJ ICogbWF4aW11bSBwZXJtaXR0ZWQgc28gbm8gbmVlZCB0byBjaGVjayBsZW5ndGguCi0rCSAqLwot KwlzaXplX3Qgb3V0bGVuID0gZGN0eC0+c2VlZGxlbjsKLSsJdG1wWzBdID0gMTsKLSsJdG1wWzFd ID0gKChvdXRsZW4gKiA4KSA+PiAyNCkgJiAweGZmOwotKwl0bXBbMl0gPSAoKG91dGxlbiAqIDgp ID4+IDE2KSAmIDB4ZmY7Ci0rCXRtcFszXSA9ICgob3V0bGVuICogOCkgPj4gOCkgJiAweGZmOwot Kwl0bXBbNF0gPSAob3V0bGVuICogOCkgJiAweGZmOwotKwlpZiAoIWluMSkKLSsJCXsKLSsJCXRt cFs1XSA9ICh1bnNpZ25lZCBjaGFyKWluMWxlbjsKLSsJCWluMSA9IHRtcCArIDU7Ci0rCQlpbjFs ZW4gPSAxOwotKwkJfQotKwlmb3IgKDs7KQotKwkJewotKwkJaWYgKCFGSVBTX2RpZ2VzdGluaXQo bWN0eCwgZGN0eC0+ZC5oYXNoLm1kKSkKLSsJCQlyZXR1cm4gMDsKLSsJCWlmICghRklQU19kaWdl c3R1cGRhdGUobWN0eCwgdG1wLCA1KSkKLSsJCQlyZXR1cm4gMDsKLSsJCWlmIChpbjEgJiYgIUZJ UFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluMSwgaW4xbGVuKSkKLSsJCQlyZXR1cm4gMDsKLSsJCWlm IChpbjIgJiYgIUZJUFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluMiwgaW4ybGVuKSkKLSsJCQlyZXR1 cm4gMDsKLSsJCWlmIChpbjMgJiYgIUZJUFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluMywgaW4zbGVu KSkKLSsJCQlyZXR1cm4gMDsKLSsJCWlmIChpbjQgJiYgIUZJUFNfZGlnZXN0dXBkYXRlKG1jdHgs IGluNCwgaW40bGVuKSkKLSsJCQlyZXR1cm4gMDsKLSsJCWlmIChvdXRsZW4gPCBkY3R4LT5ibG9j a2xlbmd0aCkKLSsJCQl7Ci0rCQkJaWYgKCFGSVBTX2RpZ2VzdGZpbmFsKG1jdHgsIHZ0bXAsIE5V TEwpKQotKwkJCQlyZXR1cm4gMDsKLSsJCQltZW1jcHkob3V0LCB2dG1wLCBvdXRsZW4pOwotKwkJ CU9QRU5TU0xfY2xlYW5zZSh2dG1wLCBkY3R4LT5ibG9ja2xlbmd0aCk7Ci0rCQkJcmV0dXJuIDE7 Ci0rCQkJfQotKwkJZWxzZSBpZighRklQU19kaWdlc3RmaW5hbChtY3R4LCBvdXQsIE5VTEwpKQot KwkJCXJldHVybiAwOwotKwotKwkJb3V0bGVuIC09IGRjdHgtPmJsb2NrbGVuZ3RoOwotKwkJaWYg KG91dGxlbiA9PSAwKQotKwkJCXJldHVybiAxOwotKwkJdG1wWzBdKys7Ci0rCQlvdXQgKz0gZGN0 eC0+YmxvY2tsZW5ndGg7Ci0rCQl9Ci0rCX0KLSsKLSsKLSsvKiBBZGQgYW4gdW5zaWduZWQgYnVm ZmVyIHRvIHRoZSBidWYgdmFsdWUsIHN0b3JpbmcgdGhlIHJlc3VsdCBpbiBidWYuIEZvcgotKyAq IHRoaXMgYWxnb3JpdGhtIHRoZSBsZW5ndGggb2YgaW5wdXQgbmV2ZXIgZXhjZWVkcyB0aGUgc2Vl ZCBsZW5ndGguCi0rICovCi0rCi0rc3RhdGljIHZvaWQgY3R4X2FkZF9idWYoRFJCR19DVFggKmRj dHgsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKLSsJCQkJdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBp bmxlbikKLSsJewotKwlzaXplX3QgaSA9IGlubGVuOwotKwljb25zdCB1bnNpZ25lZCBjaGFyICpx OwotKwl1bnNpZ25lZCBjaGFyIGMsICpwOwotKwlwID0gYnVmICsgZGN0eC0+c2VlZGxlbjsKLSsJ cSA9IGluICsgaW5sZW47Ci0rCi0rCU9QRU5TU0xfYXNzZXJ0KGkgPD0gZGN0eC0+c2VlZGxlbik7 Ci0rCi0rCS8qIFNwZWNpYWwgY2FzZTogemVybyBsZW5ndGgsIGp1c3QgaW5jcmVtZW50IGJ1ZmZl ciAqLwotKwlpZiAoaSkKLSsJCWMgPSAwOwotKwllbHNlIAotKwkJYyA9IDE7Ci0rCi0rCXdoaWxl IChpKQotKwkJewotKwkJaW50IHI7Ci0rCQlwLS07Ci0rCQlxLS07Ci0rCQlyID0gKnAgKyAqcSAr IGM7Ci0rCQkvKiBDYXJyeSAqLwotKwkJaWYgKHIgPiAweGZmKQotKwkJCWMgPSAxOwotKwkJZWxz ZQotKwkJCWMgPSAwOwotKwkJKnAgPSByICYgMHhmZjsKLSsJCWktLTsKLSsJCX0KLSsKLSsJaSA9 IGRjdHgtPnNlZWRsZW4gLSBpbmxlbjsKLSsKLSsJLyogSWYgbm90IGFkZGluZyB3aG9sZSBidWZm ZXIgaGFuZGxlIGZpbmFsIGNhcnJpZXMgKi8KLSsJaWYgKGMgJiYgaSkKLSsJCXsKLSsJCWRvCi0r CQkJewotKwkJCXAtLTsKLSsJCQljID0gKnA7Ci0rCQkJYysrOwotKwkJCSpwID0gYzsKLSsJCQlp ZihjKQotKwkJCQlyZXR1cm47Ci0rCQkJfSB3aGlsZShpLS0pOwotKwkJfQotKwl9Ci0rCi0rLyog RmluYWxpc2UgYW5kIGFkZCBoYXNoIHRvIFYgKi8KLSsJCi0rc3RhdGljIGludCBjdHhfYWRkX21k KERSQkdfQ1RYICpkY3R4KQotKwl7Ci0rCWlmICghRklQU19kaWdlc3RmaW5hbCgmZGN0eC0+ZC5o YXNoLm1jdHgsIGRjdHgtPmQuaGFzaC52dG1wLCBOVUxMKSkKLSsJCQlyZXR1cm4gMDsKLSsJY3R4 X2FkZF9idWYoZGN0eCwgZGN0eC0+ZC5oYXNoLlYsIGRjdHgtPmQuaGFzaC52dG1wLCBkY3R4LT5i bG9ja2xlbmd0aCk7Ci0rCXJldHVybiAxOwotKwl9Ci0rCi0rc3RhdGljIGludCBoYXNoX2dlbihE UkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuKQotKwl7Ci0r CURSQkdfSEFTSF9DVFggKmhjdHggPSAmZGN0eC0+ZC5oYXNoOwotKwlpZiAob3V0bGVuID09IDAp Ci0rCQlyZXR1cm4gMTsKLSsJbWVtY3B5KGhjdHgtPnZ0bXAsIGhjdHgtPlYsIGRjdHgtPnNlZWRs ZW4pOwotKwlmb3IoOzspCi0rCQl7Ci0rCQlGSVBTX2RpZ2VzdGluaXQoJmhjdHgtPm1jdHgsIGhj dHgtPm1kKTsKLSsJCUZJUFNfZGlnZXN0dXBkYXRlKCZoY3R4LT5tY3R4LCBoY3R4LT52dG1wLCBk Y3R4LT5zZWVkbGVuKTsKLSsJCWlmICghKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19URVNUKSAm JiAhZGN0eC0+bGJfdmFsaWQpCi0rCQkJewotKwkJCUZJUFNfZGlnZXN0ZmluYWwoJmhjdHgtPm1j dHgsIGRjdHgtPmxiLCBOVUxMKTsKLSsJCQlkY3R4LT5sYl92YWxpZCA9IDE7Ci0rCQkJfQotKwkJ ZWxzZSBpZiAob3V0bGVuIDwgZGN0eC0+YmxvY2tsZW5ndGgpCi0rCQkJewotKwkJCUZJUFNfZGln ZXN0ZmluYWwoJmhjdHgtPm1jdHgsIGhjdHgtPnZ0bXAsIE5VTEwpOwotKwkJCWlmICghZmlwc19k cmJnX2Nwcm5nX3Rlc3QoZGN0eCwgaGN0eC0+dnRtcCkpCi0rCQkJCXJldHVybiAwOwotKwkJCW1l bWNweShvdXQsIGhjdHgtPnZ0bXAsIG91dGxlbik7Ci0rCQkJcmV0dXJuIDE7Ci0rCQkJfQotKwkJ ZWxzZQotKwkJCXsKLSsJCQlGSVBTX2RpZ2VzdGZpbmFsKCZoY3R4LT5tY3R4LCBvdXQsIE5VTEwp OwotKwkJCWlmICghZmlwc19kcmJnX2Nwcm5nX3Rlc3QoZGN0eCwgb3V0KSkKLSsJCQkJcmV0dXJu IDA7Ci0rCQkJb3V0bGVuIC09IGRjdHgtPmJsb2NrbGVuZ3RoOwotKwkJCWlmIChvdXRsZW4gPT0g MCkKLSsJCQkJcmV0dXJuIDE7Ci0rCQkJb3V0ICs9IGRjdHgtPmJsb2NrbGVuZ3RoOwotKwkJCX0K LSsJCWN0eF9hZGRfYnVmKGRjdHgsIGhjdHgtPnZ0bXAsIE5VTEwsIDApOwotKwkJfQotKwl9Ci0r Ci0rc3RhdGljIGludCBkcmJnX2hhc2hfaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgsCi0rCQkJ CWNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudF9sZW4sCi0rCQkJCWNvbnN0IHVu c2lnbmVkIGNoYXIgKm5vbmNlLCBzaXplX3Qgbm9uY2VfbGVuLAotKwkJCQljb25zdCB1bnNpZ25l ZCBjaGFyICpwc3RyLCBzaXplX3QgcHN0cl9sZW4pCi0rCXsKLSsJRFJCR19IQVNIX0NUWCAqaGN0 eCA9ICZkY3R4LT5kLmhhc2g7Ci0rCWlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5WLCAKLSsJCQll bnQsIGVudF9sZW4sIG5vbmNlLCBub25jZV9sZW4sIHBzdHIsIHBzdHJfbGVuLAotKwkJCU5VTEws IDApKQotKwkJcmV0dXJuIDA7Ci0rCWlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5DLCAKLSsJCQlO VUxMLCAwLCBoY3R4LT5WLCBkY3R4LT5zZWVkbGVuLAotKwkJCU5VTEwsIDAsIE5VTEwsIDApKQot KwkJcmV0dXJuIDA7Ci0rCi0rI2lmZGVmIEhBU0hfRFJCR19UUkFDRQotKwlmcHJpbnRmKHN0ZGVy ciwgIlYrQyBhZnRlciBpbnN0YW50aWF0ZTpcbiIpOwotKwloZXhwcmludChzdGRlcnIsIGhjdHgt PlYsIGRjdHgtPnNlZWRsZW4pOwotKwloZXhwcmludChzdGRlcnIsIGhjdHgtPkMsIGRjdHgtPnNl ZWRsZW4pOwotKyNlbmRpZgotKwlyZXR1cm4gMTsKLSsJfQotKwotKwkKLStzdGF0aWMgaW50IGRy YmdfaGFzaF9yZXNlZWQoRFJCR19DVFggKmRjdHgsCi0rCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIg KmVudCwgc2l6ZV90IGVudF9sZW4sCi0rCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNp emVfdCBhZGluX2xlbikKLSsJewotKwlEUkJHX0hBU0hfQ1RYICpoY3R4ID0gJmRjdHgtPmQuaGFz aDsKLSsJLyogViBhYm91dCB0byBiZSB1cGRhdGVkIHNvIHVzZSBDIGFzIG91dHB1dCBpbnN0ZWFk ICovCi0rCWlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5DLAotKwkJCU5VTEwsIDEsIGhjdHgtPlYs IGRjdHgtPnNlZWRsZW4sCi0rCQkJZW50LCBlbnRfbGVuLCBhZGluLCBhZGluX2xlbikpCi0rCQly ZXR1cm4gMDsKLSsJbWVtY3B5KGhjdHgtPlYsIGhjdHgtPkMsIGRjdHgtPnNlZWRsZW4pOwotKwlp ZiAoIWhhc2hfZGYoZGN0eCwgaGN0eC0+QywgTlVMTCwgMCwKLSsJCQloY3R4LT5WLCBkY3R4LT5z ZWVkbGVuLCBOVUxMLCAwLCBOVUxMLCAwKSkKLSsJCXJldHVybiAwOwotKyNpZmRlZiBIQVNIX0RS QkdfVFJBQ0UKLSsJZnByaW50ZihzdGRlcnIsICJWK0MgYWZ0ZXIgcmVzZWVkOlxuIik7Ci0rCWhl eHByaW50KHN0ZGVyciwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbik7Ci0rCWhleHByaW50KHN0ZGVy ciwgaGN0eC0+QywgZGN0eC0+c2VlZGxlbik7Ci0rI2VuZGlmCi0rCXJldHVybiAxOwotKwl9Ci0r Ci0rc3RhdGljIGludCBkcmJnX2hhc2hfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgsCi0rCQkJCXVu c2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbiwKLSsJCQkJY29uc3QgdW5zaWduZWQgY2hh ciAqYWRpbiwgc2l6ZV90IGFkaW5fbGVuKQotKwl7Ci0rCURSQkdfSEFTSF9DVFggKmhjdHggPSAm ZGN0eC0+ZC5oYXNoOwotKwlFVlBfTURfQ1RYICptY3R4ID0gJmhjdHgtPm1jdHg7Ci0rCXVuc2ln bmVkIGNoYXIgdG1wWzRdOwotKwlpZiAoYWRpbiAmJiBhZGluX2xlbikKLSsJCXsKLSsJCXRtcFsw XSA9IDI7Ci0rCQlpZiAoIUZJUFNfZGlnZXN0aW5pdChtY3R4LCBoY3R4LT5tZCkpCi0rCQkJcmV0 dXJuIDA7Ci0rCQlpZiAoIUVWUF9EaWdlc3RVcGRhdGUobWN0eCwgdG1wLCAxKSkKLSsJCQlyZXR1 cm4gMDsKLSsJCWlmICghRVZQX0RpZ2VzdFVwZGF0ZShtY3R4LCBoY3R4LT5WLCBkY3R4LT5zZWVk bGVuKSkKLSsJCQlyZXR1cm4gMDsKLSsJCWlmICghRVZQX0RpZ2VzdFVwZGF0ZShtY3R4LCBhZGlu LCBhZGluX2xlbikpCi0rCQkJcmV0dXJuIDA7Ci0rCQlpZiAoIWN0eF9hZGRfbWQoZGN0eCkpCi0r CQkJcmV0dXJuIDA7Ci0rCQl9Ci0rCWlmICghaGFzaF9nZW4oZGN0eCwgb3V0LCBvdXRsZW4pKQot KwkJcmV0dXJuIDA7Ci0rCi0rCXRtcFswXSA9IDM7Ci0rCWlmICghRklQU19kaWdlc3Rpbml0KG1j dHgsIGhjdHgtPm1kKSkKLSsJCXJldHVybiAwOwotKwlpZiAoIUVWUF9EaWdlc3RVcGRhdGUobWN0 eCwgdG1wLCAxKSkKLSsJCXJldHVybiAwOwotKwlpZiAoIUVWUF9EaWdlc3RVcGRhdGUobWN0eCwg aGN0eC0+ViwgZGN0eC0+c2VlZGxlbikpCi0rCQlyZXR1cm4gMDsKLSsKLSsJaWYgKCFjdHhfYWRk X21kKGRjdHgpKQotKwkJcmV0dXJuIDA7Ci0rCi0rCWN0eF9hZGRfYnVmKGRjdHgsIGhjdHgtPlYs IGhjdHgtPkMsIGRjdHgtPnNlZWRsZW4pOwotKwotKwl0bXBbMF0gPSAoZGN0eC0+cmVzZWVkX2Nv dW50ZXIgPj4gMjQpICYgMHhmZjsKLSsJdG1wWzFdID0gKGRjdHgtPnJlc2VlZF9jb3VudGVyID4+ IDE2KSAmIDB4ZmY7Ci0rCXRtcFsyXSA9IChkY3R4LT5yZXNlZWRfY291bnRlciA+PiA4KSAmIDB4 ZmY7Ci0rCXRtcFszXSA9IGRjdHgtPnJlc2VlZF9jb3VudGVyICYgMHhmZjsKLSsJY3R4X2FkZF9i dWYoZGN0eCwgaGN0eC0+ViwgdG1wLCA0KTsKLSsjaWZkZWYgSEFTSF9EUkJHX1RSQUNFCi0rCWZw cmludGYoc3RkZXJyLCAiVitDIGFmdGVyIGdlbmVyYXRlOlxuIik7Ci0rCWhleHByaW50KHN0ZGVy ciwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbik7Ci0rCWhleHByaW50KHN0ZGVyciwgaGN0eC0+Qywg ZGN0eC0+c2VlZGxlbik7Ci0rI2VuZGlmCi0rCXJldHVybiAxOwotKwl9Ci0rCi0rc3RhdGljIGlu dCBkcmJnX2hhc2hfdW5pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCkKLSsJewotKwlFVlBfTURf Q1RYX2NsZWFudXAoJmRjdHgtPmQuaGFzaC5tY3R4KTsKLSsJT1BFTlNTTF9jbGVhbnNlKCZkY3R4 LT5kLmhhc2gsIHNpemVvZihEUkJHX0hBU0hfQ1RYKSk7Ci0rCXJldHVybiAxOwotKwl9Ci0rCi0r aW50IGZpcHNfZHJiZ19oYXNoX2luaXQoRFJCR19DVFggKmRjdHgpCi0rCXsKLSsJY29uc3QgRVZQ X01EICptZDsKLSsJRFJCR19IQVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7Ci0rCW1kID0g RklQU19nZXRfZGlnZXN0YnluaWQoZGN0eC0+dHlwZSk7Ci0rCWlmICghbWQpCi0rCQlyZXR1cm4g LTI7Ci0rCXN3aXRjaCAoZGN0eC0+dHlwZSkKLSsJCXsKLSsJCWNhc2UgTklEX3NoYTE6Ci0rCQlk Y3R4LT5zdHJlbmd0aCA9IDEyODsKLSsJCWJyZWFrOwotKwotKwkJY2FzZSBOSURfc2hhMjI0Ogot KwkJZGN0eC0+c3RyZW5ndGggPSAxOTI7Ci0rCQlicmVhazsKLSsKLSsJCWRlZmF1bHQ6Ci0rCQlk Y3R4LT5zdHJlbmd0aCA9IDI1NjsKLSsJCWJyZWFrOwotKwkJfQotKwotKwlkY3R4LT5pbnN0YW50 aWF0ZSA9IGRyYmdfaGFzaF9pbnN0YW50aWF0ZTsKLSsJZGN0eC0+cmVzZWVkID0gZHJiZ19oYXNo X3Jlc2VlZDsKLSsJZGN0eC0+Z2VuZXJhdGUgPSBkcmJnX2hhc2hfZ2VuZXJhdGU7Ci0rCWRjdHgt PnVuaW5zdGFudGlhdGUgPSBkcmJnX2hhc2hfdW5pbnN0YW50aWF0ZTsKLSsKLSsJZGN0eC0+ZC5o YXNoLm1kID0gbWQ7Ci0rCUVWUF9NRF9DVFhfaW5pdCgmaGN0eC0+bWN0eCk7Ci0rCi0rCS8qIFRo ZXNlIGFyZSB0YWtlbiBmcm9tIFNQIDgwMC05MCAxMC4xIHRhYmxlIDIgKi8KLSsKLSsJZGN0eC0+ YmxvY2tsZW5ndGggPSBNX0VWUF9NRF9zaXplKG1kKTsKLSsJaWYgKGRjdHgtPmJsb2NrbGVuZ3Ro ID4gMzIpCi0rCQlkY3R4LT5zZWVkbGVuID0gMTExOwotKwllbHNlCi0rCQlkY3R4LT5zZWVkbGVu ID0gNTU7Ci0rCi0rCi0rCWRjdHgtPm1pbl9lbnRyb3B5ID0gZGN0eC0+c3RyZW5ndGggLyA4Owot KwlkY3R4LT5tYXhfZW50cm9weSA9IERSQkdfTUFYX0xFTkdUSDsKLSsKLSsJZGN0eC0+bWluX25v bmNlID0gZGN0eC0+bWluX2VudHJvcHkgLyAyOwotKwlkY3R4LT5tYXhfbm9uY2UgPSBEUkJHX01B WF9MRU5HVEg7Ci0rCi0rCWRjdHgtPm1heF9wZXJzID0gRFJCR19NQVhfTEVOR1RIOwotKwlkY3R4 LT5tYXhfYWRpbiA9IERSQkdfTUFYX0xFTkdUSDsKLSsKLSsJZGN0eC0+bWF4X3JlcXVlc3QgPSAx PDwxNjsKLSsJZGN0eC0+cmVzZWVkX2ludGVydmFsID0gMTw8MjQ7Ci0rCi0rCXJldHVybiAxOwot Kwl9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaG1hYy5j LmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2htYWMuYwotLS0tIG9w ZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19obWFjLmMuZmlwcwkyMDE1LTAxLTA5 IDA5OjUxOjUxLjU1OTkyMjQ3MiArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBz L2ZpcHNfZHJiZ19obWFjLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NTg5MjI0NDkgKzAxMDAKLUBA IC0wLDAgKzEsMjgxIEBACi0rLyogZmlwcy9yYW5kL2ZpcHNfZHJiZ19obWFjLmMgKi8KLSsvKiBX cml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhl IE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwotKy8qID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJp Z2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot KyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAq IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg Y29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy IGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZl cnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAq ICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50Ogot KyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBP cGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuICho dHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wg VG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAg ICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg d2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVy bWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0r ICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJl IGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhl aXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUg T3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3Jt IHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdt ZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5 IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xr aXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMg UFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVY UFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE IFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRP UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBT UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC VVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP UiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F U1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBP UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJ TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF RAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotKyAqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0r I2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0r I2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgotKyNp bmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4K LSsjaW5jbHVkZSAiZmlwc19yYW5kX2xjbC5oIgotKwotK3N0YXRpYyBpbnQgZHJiZ19obWFjX3Vw ZGF0ZShEUkJHX0NUWCAqZGN0eCwKLSsJCQkJY29uc3QgdW5zaWduZWQgY2hhciAqaW4xLCBzaXpl X3QgaW4xbGVuLAotKwkJCQljb25zdCB1bnNpZ25lZCBjaGFyICppbjIsIHNpemVfdCBpbjJsZW4s Ci0rCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMywgc2l6ZV90IGluM2xlbgotKwkJCSkKLSsJ ewotKwlzdGF0aWMgdW5zaWduZWQgY2hhciBjMCA9IDAsIGMxID0gMTsKLSsJRFJCR19ITUFDX0NU WCAqaG1hYyA9ICZkY3R4LT5kLmhtYWM7Ci0rCUhNQUNfQ1RYICpoY3R4ID0gJmhtYWMtPmhjdHg7 Ci0rCi0rCWlmICghSE1BQ19Jbml0X2V4KGhjdHgsIGhtYWMtPkssIGRjdHgtPmJsb2NrbGVuZ3Ro LCBobWFjLT5tZCwgTlVMTCkpCi0rCQlyZXR1cm4gMDsKLSsJaWYgKCFITUFDX1VwZGF0ZShoY3R4 LCBobWFjLT5WLCBkY3R4LT5ibG9ja2xlbmd0aCkpCi0rCQlyZXR1cm4gMDsKLSsJaWYgKCFITUFD X1VwZGF0ZShoY3R4LCAmYzAsIDEpKQotKwkJcmV0dXJuIDA7Ci0rCWlmIChpbjFsZW4gJiYgIUhN QUNfVXBkYXRlKGhjdHgsIGluMSwgaW4xbGVuKSkKLSsJCXJldHVybiAwOwotKwlpZiAoaW4ybGVu ICYmICFITUFDX1VwZGF0ZShoY3R4LCBpbjIsIGluMmxlbikpCi0rCQlyZXR1cm4gMDsKLSsJaWYg KGluM2xlbiAmJiAhSE1BQ19VcGRhdGUoaGN0eCwgaW4zLCBpbjNsZW4pKQotKwkJcmV0dXJuIDA7 Ci0rCi0rCWlmICghSE1BQ19GaW5hbChoY3R4LCBobWFjLT5LLCBOVUxMKSkKLSsJCXJldHVybiAw OwotKwotKwlpZiAoIUhNQUNfSW5pdF9leChoY3R4LCBobWFjLT5LLCBkY3R4LT5ibG9ja2xlbmd0 aCwgaG1hYy0+bWQsIE5VTEwpKQotKwkJcmV0dXJuIDA7Ci0rCWlmICghSE1BQ19VcGRhdGUoaGN0 eCwgaG1hYy0+ViwgZGN0eC0+YmxvY2tsZW5ndGgpKQotKwkJcmV0dXJuIDA7Ci0rCi0rCWlmICgh SE1BQ19GaW5hbChoY3R4LCBobWFjLT5WLCBOVUxMKSkKLSsJCXJldHVybiAwOwotKwotKwlpZiAo IWluMWxlbiAmJiAhaW4ybGVuICYmICFpbjNsZW4pCi0rCQlyZXR1cm4gMTsKLSsKLSsJaWYgKCFI TUFDX0luaXRfZXgoaGN0eCwgaG1hYy0+SywgZGN0eC0+YmxvY2tsZW5ndGgsIGhtYWMtPm1kLCBO VUxMKSkKLSsJCXJldHVybiAwOwotKwlpZiAoIUhNQUNfVXBkYXRlKGhjdHgsIGhtYWMtPlYsIGRj dHgtPmJsb2NrbGVuZ3RoKSkKLSsJCXJldHVybiAwOwotKwlpZiAoIUhNQUNfVXBkYXRlKGhjdHgs ICZjMSwgMSkpCi0rCQlyZXR1cm4gMDsKLSsJaWYgKGluMWxlbiAmJiAhSE1BQ19VcGRhdGUoaGN0 eCwgaW4xLCBpbjFsZW4pKQotKwkJcmV0dXJuIDA7Ci0rCWlmIChpbjJsZW4gJiYgIUhNQUNfVXBk YXRlKGhjdHgsIGluMiwgaW4ybGVuKSkKLSsJCXJldHVybiAwOwotKwlpZiAoaW4zbGVuICYmICFI TUFDX1VwZGF0ZShoY3R4LCBpbjMsIGluM2xlbikpCi0rCQlyZXR1cm4gMDsKLSsKLSsJaWYgKCFI TUFDX0ZpbmFsKGhjdHgsIGhtYWMtPkssIE5VTEwpKQotKwkJcmV0dXJuIDA7Ci0rCi0rCWlmICgh SE1BQ19Jbml0X2V4KGhjdHgsIGhtYWMtPkssIGRjdHgtPmJsb2NrbGVuZ3RoLCBobWFjLT5tZCwg TlVMTCkpCi0rCQlyZXR1cm4gMDsKLSsJaWYgKCFITUFDX1VwZGF0ZShoY3R4LCBobWFjLT5WLCBk Y3R4LT5ibG9ja2xlbmd0aCkpCi0rCQlyZXR1cm4gMDsKLSsKLSsJaWYgKCFITUFDX0ZpbmFsKGhj dHgsIGhtYWMtPlYsIE5VTEwpKQotKwkJcmV0dXJuIDA7Ci0rCi0rCXJldHVybiAxOwotKwotKwl9 Ci0rCi0rc3RhdGljIGludCBkcmJnX2htYWNfaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgsCi0r CQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudF9sZW4sCi0rCQkJCWNvbnN0 IHVuc2lnbmVkIGNoYXIgKm5vbmNlLCBzaXplX3Qgbm9uY2VfbGVuLAotKwkJCQljb25zdCB1bnNp Z25lZCBjaGFyICpwc3RyLCBzaXplX3QgcHN0cl9sZW4pCi0rCXsKLSsJRFJCR19ITUFDX0NUWCAq aG1hYyA9ICZkY3R4LT5kLmhtYWM7Ci0rCW1lbXNldChobWFjLT5LLCAwLCBkY3R4LT5ibG9ja2xl bmd0aCk7Ci0rCW1lbXNldChobWFjLT5WLCAxLCBkY3R4LT5ibG9ja2xlbmd0aCk7Ci0rCWlmICgh ZHJiZ19obWFjX3VwZGF0ZShkY3R4LAotKwkJCWVudCwgZW50X2xlbiwgbm9uY2UsIG5vbmNlX2xl biwgcHN0ciwgcHN0cl9sZW4pKQotKwkJcmV0dXJuIDA7Ci0rCi0rI2lmZGVmIEhNQUNfRFJCR19U UkFDRQotKwlmcHJpbnRmKHN0ZGVyciwgIksrViBhZnRlciBpbnN0YW50aWF0ZTpcbiIpOwotKwlo ZXhwcmludChzdGRlcnIsIGhtYWMtPkssIGhtYWMtPmJsb2NrbGVuZ3RoKTsKLSsJaGV4cHJpbnQo c3RkZXJyLCBobWFjLT5WLCBobWFjLT5ibG9ja2xlbmd0aCk7Ci0rI2VuZGlmCi0rCXJldHVybiAx OwotKwl9Ci0rCi0rc3RhdGljIGludCBkcmJnX2htYWNfcmVzZWVkKERSQkdfQ1RYICpkY3R4LAot KwkJCQljb25zdCB1bnNpZ25lZCBjaGFyICplbnQsIHNpemVfdCBlbnRfbGVuLAotKwkJCQljb25z dCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3QgYWRpbl9sZW4pCi0rCXsKLSsJaWYgKCFkcmJn X2htYWNfdXBkYXRlKGRjdHgsCi0rCQkJZW50LCBlbnRfbGVuLCBhZGluLCBhZGluX2xlbiwgTlVM TCwgMCkpCi0rCQlyZXR1cm4gMDsKLSsKLSsjaWZkZWYgSE1BQ19EUkJHX1RSQUNFCi0rCXsKLSsJ CURSQkdfSE1BQ19DVFggKmhtYWMgPSAmZGN0eC0+ZC5obWFjOwotKwkJZnByaW50ZihzdGRlcnIs ICJLK1YgYWZ0ZXIgcmVzZWVkOlxuIik7Ci0rCQloZXhwcmludChzdGRlcnIsIGhtYWMtPkssIGht YWMtPmJsb2NrbGVuZ3RoKTsKLSsJCWhleHByaW50KHN0ZGVyciwgaG1hYy0+ViwgaG1hYy0+Ymxv Y2tsZW5ndGgpOwotKwl9Ci0rI2VuZGlmCi0rCXJldHVybiAxOwotKwl9Ci0rCi0rc3RhdGljIGlu dCBkcmJnX2htYWNfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgsCi0rCQkJCXVuc2lnbmVkIGNoYXIg Km91dCwgc2l6ZV90IG91dGxlbiwKLSsJCQkJY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6 ZV90IGFkaW5fbGVuKQotKwl7Ci0rCURSQkdfSE1BQ19DVFggKmhtYWMgPSAmZGN0eC0+ZC5obWFj OwotKwlITUFDX0NUWCAqaGN0eCA9ICZobWFjLT5oY3R4OwotKwljb25zdCB1bnNpZ25lZCBjaGFy ICpWdG1wID0gaG1hYy0+VjsKLSsJaWYgKGFkaW5fbGVuICYmICFkcmJnX2htYWNfdXBkYXRlKGRj dHgsIGFkaW4sIGFkaW5fbGVuLAotKwkJCQkJCU5VTEwsIDAsIE5VTEwsIDApKQotKwkJcmV0dXJu IDA7Ci0rCWZvciAoOzspCi0rCQl7Ci0rCQlpZiAoIUhNQUNfSW5pdF9leChoY3R4LCBobWFjLT5L LCBkY3R4LT5ibG9ja2xlbmd0aCwKLSsJCQkJCQkJaG1hYy0+bWQsIE5VTEwpKQotKwkJCXJldHVy biAwOwotKwkJaWYgKCFITUFDX1VwZGF0ZShoY3R4LCBWdG1wLCBkY3R4LT5ibG9ja2xlbmd0aCkp Ci0rCQkJcmV0dXJuIDA7Ci0rCQlpZiAoIShkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkg JiYgIWRjdHgtPmxiX3ZhbGlkKQotKwkJCXsKLSsJCQlpZiAoIUhNQUNfRmluYWwoaGN0eCwgZGN0 eC0+bGIsIE5VTEwpKQotKwkJCQlyZXR1cm4gMDsKLSsJCQlkY3R4LT5sYl92YWxpZCA9IDE7Ci0r CQkJVnRtcCA9IGRjdHgtPmxiOwotKwkJCWNvbnRpbnVlOwotKwkJCX0KLSsJCWVsc2UgaWYgKG91 dGxlbiA+IGRjdHgtPmJsb2NrbGVuZ3RoKQotKwkJCXsKLSsJCQlpZiAoIUhNQUNfRmluYWwoaGN0 eCwgb3V0LCBOVUxMKSkKLSsJCQkJcmV0dXJuIDA7Ci0rCQkJaWYgKCFmaXBzX2RyYmdfY3Bybmdf dGVzdChkY3R4LCBvdXQpKQotKwkJCQlyZXR1cm4gMDsKLSsJCQlWdG1wID0gb3V0OwotKwkJCX0K LSsJCWVsc2UKLSsJCQl7Ci0rCQkJaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPlYsIE5VTEwp KQotKwkJCQlyZXR1cm4gMDsKLSsJCQlpZiAoIWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRjdHgsIGht YWMtPlYpKQotKwkJCQlyZXR1cm4gMDsKLSsJCQltZW1jcHkob3V0LCBobWFjLT5WLCBvdXRsZW4p OwotKwkJCWJyZWFrOwotKwkJCX0KLSsJCW91dCArPSBkY3R4LT5ibG9ja2xlbmd0aDsKLSsJCW91 dGxlbiAtPSBkY3R4LT5ibG9ja2xlbmd0aDsKLSsJCX0KLSsJaWYgKCFkcmJnX2htYWNfdXBkYXRl KGRjdHgsIGFkaW4sIGFkaW5fbGVuLCBOVUxMLCAwLCBOVUxMLCAwKSkKLSsJCXJldHVybiAwOwot KwotKwlyZXR1cm4gMTsKLSsJfQotKwotK3N0YXRpYyBpbnQgZHJiZ19obWFjX3VuaW5zdGFudGlh dGUoRFJCR19DVFggKmRjdHgpCi0rCXsKLSsJSE1BQ19DVFhfY2xlYW51cCgmZGN0eC0+ZC5obWFj LmhjdHgpOwotKwlPUEVOU1NMX2NsZWFuc2UoJmRjdHgtPmQuaG1hYywgc2l6ZW9mKERSQkdfSE1B Q19DVFgpKTsKLSsJcmV0dXJuIDE7Ci0rCX0KLSsKLStpbnQgZmlwc19kcmJnX2htYWNfaW5pdChE UkJHX0NUWCAqZGN0eCkKLSsJewotKwljb25zdCBFVlBfTUQgKm1kID0gTlVMTDsKLSsJRFJCR19I TUFDX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhtYWM7Ci0rCWRjdHgtPnN0cmVuZ3RoID0gMjU2Owot Kwlzd2l0Y2ggKGRjdHgtPnR5cGUpCi0rCQl7Ci0rCQljYXNlIE5JRF9obWFjV2l0aFNIQTE6Ci0r CQltZCA9IEVWUF9zaGExKCk7Ci0rCQlkY3R4LT5zdHJlbmd0aCA9IDEyODsKLSsJCWJyZWFrOwot KwotKwkJY2FzZSBOSURfaG1hY1dpdGhTSEEyMjQ6Ci0rCQltZCA9IEVWUF9zaGEyMjQoKTsKLSsJ CWRjdHgtPnN0cmVuZ3RoID0gMTkyOwotKwkJYnJlYWs7Ci0rCi0rCQljYXNlIE5JRF9obWFjV2l0 aFNIQTI1NjoKLSsJCW1kID0gRVZQX3NoYTI1NigpOwotKwkJYnJlYWs7Ci0rCi0rCQljYXNlIE5J RF9obWFjV2l0aFNIQTM4NDoKLSsJCW1kID0gRVZQX3NoYTM4NCgpOwotKwkJYnJlYWs7Ci0rCi0r CQljYXNlIE5JRF9obWFjV2l0aFNIQTUxMjoKLSsJCW1kID0gRVZQX3NoYTUxMigpOwotKwkJYnJl YWs7Ci0rCi0rCQlkZWZhdWx0OgotKwkJZGN0eC0+c3RyZW5ndGggPSAwOwotKwkJcmV0dXJuIC0y OwotKwkJfQotKyAgICAgICAgZGN0eC0+aW5zdGFudGlhdGUgPSBkcmJnX2htYWNfaW5zdGFudGlh dGU7Ci0rICAgICAgICBkY3R4LT5yZXNlZWQgPSBkcmJnX2htYWNfcmVzZWVkOwotKyAgICAgICAg ZGN0eC0+Z2VuZXJhdGUgPSBkcmJnX2htYWNfZ2VuZXJhdGU7Ci0rICAgICAgICBkY3R4LT51bmlu c3RhbnRpYXRlID0gZHJiZ19obWFjX3VuaW5zdGFudGlhdGU7Ci0rCUhNQUNfQ1RYX2luaXQoJmhj dHgtPmhjdHgpOwotKwloY3R4LT5tZCA9IG1kOwotKwlkY3R4LT5ibG9ja2xlbmd0aCA9IE1fRVZQ X01EX3NpemUobWQpOwotKwlkY3R4LT5zZWVkbGVuID0gTV9FVlBfTURfc2l6ZShtZCk7Ci0rCi0r ICAgICAgICBkY3R4LT5taW5fZW50cm9weSA9IGRjdHgtPnN0cmVuZ3RoIC8gODsKLSsgICAgICAg IGRjdHgtPm1heF9lbnRyb3B5ID0gRFJCR19NQVhfTEVOR1RIOwotKwotKyAgICAgICAgZGN0eC0+ bWluX25vbmNlID0gZGN0eC0+bWluX2VudHJvcHkgLyAyOwotKyAgICAgICAgZGN0eC0+bWF4X25v bmNlID0gRFJCR19NQVhfTEVOR1RIOwotKwotKyAgICAgICAgZGN0eC0+bWF4X3BlcnMgPSBEUkJH X01BWF9MRU5HVEg7Ci0rICAgICAgICBkY3R4LT5tYXhfYWRpbiA9IERSQkdfTUFYX0xFTkdUSDsK LSsKLSsgICAgICAgIGRjdHgtPm1heF9yZXF1ZXN0ID0gMTw8MTY7Ci0rICAgICAgICBkY3R4LT5y ZXNlZWRfaW50ZXJ2YWwgPSAxPDwyNDsKLSsKLSsJcmV0dXJuIDE7Ci0rCX0KLWRpZmYgLXVwIG9w ZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19saWIuYy5maXBzIG9wZW5zc2wtMS4w LjFrL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19saWIuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0 by9maXBzL2ZpcHNfZHJiZ19saWIuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTU5OTIyNDcy ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2xpYi5jCTIw MTUtMDEtMDkgMDk6NTE6NTEuNTU5OTIyNDcyICswMTAwCi1AQCAtMCwwICsxLDU3OCBAQAotKy8q IFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0 aGUgT3BlblNTTAotKyAqIHByb2plY3QuCi0rICovCi0rLyogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5 cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu Ci0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0r ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92 ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGlu IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFk dmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0r ICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6 Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4g KGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNT TCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAq ICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy ZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4K LSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3Qg YmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0 aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRo ZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZv cm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVk Z21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQg YnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9v bGtpdCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJ UyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICog RVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJV VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAq IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs IEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT IE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ TkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFks IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5H IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ U0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0rICovCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Ny eXB0by5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Zp cHNfcmFuZC5oPgotKyNpbmNsdWRlICJmaXBzX2xvY2wuaCIKLSsjaW5jbHVkZSAiZmlwc19yYW5k X2xjbC5oIgotKwotKy8qIFN1cHBvcnQgZnJhbWV3b3JrIGZvciBTUDgwMC05MCBEUkJHcyAqLwot KwotK2ludCBGSVBTX2RyYmdfaW5pdChEUkJHX0NUWCAqZGN0eCwgaW50IHR5cGUsIHVuc2lnbmVk IGludCBmbGFncykKLSsJewotKwlpbnQgcnY7Ci0rCW1lbXNldChkY3R4LCAwLCBzaXplb2YoRFJC R19DVFgpKTsKLSsJZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRDsKLSsJ ZGN0eC0+eGZsYWdzID0gZmxhZ3M7Ci0rCWRjdHgtPnR5cGUgPSB0eXBlOwotKwotKwlkY3R4LT5p ZmxhZ3MgPSAwOwotKwlkY3R4LT5lbnRyb3B5X2Jsb2NrbGVuID0gMDsKLSsJZGN0eC0+aGVhbHRo X2NoZWNrX2NudCA9IDA7Ci0rCWRjdHgtPmhlYWx0aF9jaGVja19pbnRlcnZhbCA9IERSQkdfSEVB TFRIX0lOVEVSVkFMOwotKwotKwlydiA9IGZpcHNfZHJiZ19oYXNoX2luaXQoZGN0eCk7Ci0rCi0r CWlmIChydiA9PSAtMikKLSsJCXJ2ID0gZmlwc19kcmJnX2N0cl9pbml0KGRjdHgpOwotKwlpZiAo cnYgPT0gLTIpCi0rCQlydiA9IGZpcHNfZHJiZ19obWFjX2luaXQoZGN0eCk7Ci0rCi0rCWlmIChy diA8PSAwKQotKwkJewotKwkJaWYgKHJ2ID09IC0yKQotKwkJCUZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19JTklULCBGSVBTX1JfVU5TVVBQT1JURURfRFJCR19UWVBFKTsKLSsJCWVsc2UKLSsJCQlG SVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5JVCwgRklQU19SX0VSUk9SX0lOSVRJQUxJU0lOR19E UkJHKTsKLSsJCX0KLSsKLSsJLyogSWYgbm90IGluIHRlc3QgbW9kZSBydW4gc2VsZnRlc3RzIG9u IERSQkcgb2YgdGhlIHNhbWUgdHlwZSAqLwotKwotKwlpZiAoIShkY3R4LT54ZmxhZ3MgJiBEUkJH X0ZMQUdfVEVTVCkpCi0rCQl7Ci0rCQlpZiAoIUZJUFNfZHJiZ19oZWFsdGhfY2hlY2soZGN0eCkp Ci0rCQkJewotKwkJCUZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTklULCBGSVBTX1JfU0VMRlRF U1RfRkFJTFVSRSk7Ci0rCQkJcmV0dXJuIDA7Ci0rCQkJfQotKwkJfQotKwotKwlyZXR1cm4gcnY7 Ci0rCX0KLSsKLStEUkJHX0NUWCAqRklQU19kcmJnX25ldyhpbnQgdHlwZSwgdW5zaWduZWQgaW50 IGZsYWdzKQotKwl7Ci0rCURSQkdfQ1RYICpkY3R4OwotKwlkY3R4ID0gT1BFTlNTTF9tYWxsb2Mo c2l6ZW9mKERSQkdfQ1RYKSk7Ci0rCWlmICghZGN0eCkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19G X0ZJUFNfRFJCR19ORVcsIEVSUl9SX01BTExPQ19GQUlMVVJFKTsKLSsJCXJldHVybiBOVUxMOwot KwkJfQotKwotKwlpZiAodHlwZSA9PSAwKQotKwkJewotKwkJbWVtc2V0KGRjdHgsIDAsIHNpemVv ZihEUkJHX0NUWCkpOwotKwkJZGN0eC0+dHlwZSA9IDA7Ci0rCQlkY3R4LT5zdGF0dXMgPSBEUkJH X1NUQVRVU19VTklOSVRJQUxJU0VEOwotKwkJcmV0dXJuIGRjdHg7Ci0rCQl9Ci0rCi0rCWlmIChG SVBTX2RyYmdfaW5pdChkY3R4LCB0eXBlLCBmbGFncykgPD0gMCkKLSsJCXsKLSsJCU9QRU5TU0xf ZnJlZShkY3R4KTsKLSsJCXJldHVybiBOVUxMOwotKwkJfQotKwkJCi0rCXJldHVybiBkY3R4Owot Kwl9Ci0rCi0rdm9pZCBGSVBTX2RyYmdfZnJlZShEUkJHX0NUWCAqZGN0eCkKLSsJewotKwlpZiAo ZGN0eC0+dW5pbnN0YW50aWF0ZSkKLSsJCWRjdHgtPnVuaW5zdGFudGlhdGUoZGN0eCk7Ci0rCS8q IERvbid0IGZyZWUgdXAgZGVmYXVsdCBEUkJHICovCi0rCWlmIChkY3R4ID09IEZJUFNfZ2V0X2Rl ZmF1bHRfZHJiZygpKQotKwkJewotKwkJbWVtc2V0KGRjdHgsIDAsIHNpemVvZihEUkJHX0NUWCkp OwotKwkJZGN0eC0+dHlwZSA9IDA7Ci0rCQlkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19VTklO SVRJQUxJU0VEOwotKwkJfQotKwllbHNlCi0rCQl7Ci0rCQlPUEVOU1NMX2NsZWFuc2UoJmRjdHgt PmQsIHNpemVvZihkY3R4LT5kKSk7Ci0rCQlPUEVOU1NMX2ZyZWUoZGN0eCk7Ci0rCQl9Ci0rCX0K LSsKLStzdGF0aWMgc2l6ZV90IGZpcHNfZ2V0X2VudHJvcHkoRFJCR19DVFggKmRjdHgsIHVuc2ln bmVkIGNoYXIgKipwb3V0LAotKwkJCQlpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVf dCBtYXhfbGVuKQotKwl7Ci0rCXVuc2lnbmVkIGNoYXIgKnRvdXQsICpwOwotKwlzaXplX3QgYmwg PSBkY3R4LT5lbnRyb3B5X2Jsb2NrbGVuLCBydjsKLSsJaWYgKCFkY3R4LT5nZXRfZW50cm9weSkK LSsJCXJldHVybiAwOwotKwlpZiAoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QgfHwgIWJs KQotKwkJcmV0dXJuIGRjdHgtPmdldF9lbnRyb3B5KGRjdHgsIHBvdXQsIGVudHJvcHksIG1pbl9s ZW4sIG1heF9sZW4pOwotKwlydiA9IGRjdHgtPmdldF9lbnRyb3B5KGRjdHgsICZ0b3V0LCBlbnRy b3B5ICsgYmwsCi0rCQkJCW1pbl9sZW4gKyBibCwgbWF4X2xlbiArIGJsKTsKLSsJaWYgKHRvdXQg PT0gTlVMTCkKLSsJCXJldHVybiAwOwotKwkqcG91dCA9IHRvdXQgKyBibDsKLSsJaWYgKHJ2IDwg KG1pbl9sZW4gKyBibCkgfHwgKHJ2ICUgYmwpKQotKwkJcmV0dXJuIDA7Ci0rCS8qIENvbXBhcmUg Y29uc2VjdXRpdmUgYmxvY2tzIGZvciBjb250aW51b3VzIFBSTkcgdGVzdCAqLwotKwlmb3IgKHAg PSB0b3V0OyBwIDwgdG91dCArIHJ2IC0gYmw7IHAgKz0gYmwpCi0rCQl7Ci0rCQlpZiAoIW1lbWNt cChwLCBwICsgYmwsIGJsKSkKLSsJCQl7Ci0rCQkJRklQU2VycihGSVBTX0ZfRklQU19HRVRfRU5U Uk9QWSwgRklQU19SX0VOVFJPUFlfU09VUkNFX1NUVUNLKTsKLSsJCQlyZXR1cm4gMDsKLSsJCQl9 Ci0rCQl9Ci0rCXJ2IC09IGJsOwotKwlpZiAocnYgPiBtYXhfbGVuKQotKwkJcmV0dXJuIG1heF9s ZW47Ci0rCXJldHVybiBydjsKLSsJfQotKwotK3N0YXRpYyB2b2lkIGZpcHNfY2xlYW51cF9lbnRy b3B5KERSQkdfQ1RYICpkY3R4LAotKwkJCQkJdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb2xl bikKLSsJewotKwlzaXplX3QgYmw7Ci0rCWlmIChkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVT VCkKLSsJCWJsID0gMDsKLSsJZWxzZQotKwkJYmwgPSBkY3R4LT5lbnRyb3B5X2Jsb2NrbGVuOwot KwkvKiBDYWxsIGNsZWFudXAgd2l0aCBvcmlnaW5hbCBhcmd1bWVudHMgKi8KLSsJZGN0eC0+Y2xl YW51cF9lbnRyb3B5KGRjdHgsIG91dCAtIGJsLCBvbGVuICsgYmwpOwotKwl9Ci0rCi0rCi0raW50 IEZJUFNfZHJiZ19pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwKLSsJCQkJY29uc3QgdW5zaWdu ZWQgY2hhciAqcGVycywgc2l6ZV90IHBlcnNsZW4pCi0rCXsKLSsJc2l6ZV90IGVudGxlbiA9IDAs IG5vbmNlbGVuID0gMDsKLSsJdW5zaWduZWQgY2hhciAqbm9uY2UgPSBOVUxMLCAqZW50cm9weSA9 IE5VTEw7Ci0rCi0rI2lmIDAKLSsJLyogUHV0IGhlcmUgc28gZXJyb3Igc2NyaXB0IHBpY2tzIHRo ZW0gdXAgKi8KLSsJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLAotKwkJCQlG SVBTX1JfUEVSU09OQUxJU0FUSU9OX1NUUklOR19UT09fTE9ORyk7Ci0rCUZJUFNlcnIoRklQU19G X0ZJUFNfRFJCR19JTlNUQU5USUFURSwgRklQU19SX0lOX0VSUk9SX1NUQVRFKTsKLSsJRklQU2Vy cihGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLCBGSVBTX1JfQUxSRUFEWV9JTlNUQU5USUFU RUQpOwotKwlGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFOVElBVEUsIEZJUFNfUl9FUlJP Ul9SRVRSSUVWSU5HX0VOVFJPUFkpOwotKwlGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFO VElBVEUsIEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX05PTkNFKTsKLSsJRklQU2VycihGSVBTX0Zf RklQU19EUkJHX0lOU1RBTlRJQVRFLCBGSVBTX1JfSU5TVEFOVElBVEVfRVJST1IpOwotKwlGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFOVElBVEUsIEZJUFNfUl9EUkJHX05PVF9JTklUSUFM SVNFRCk7Ci0rI2VuZGlmCi0rCi0rCWludCByID0gMDsKLSsKLSsJaWYgKHBlcnNsZW4gPiBkY3R4 LT5tYXhfcGVycykKLSsJCXsKLSsJCXIgPSBGSVBTX1JfUEVSU09OQUxJU0FUSU9OX1NUUklOR19U T09fTE9ORzsKLSsJCWdvdG8gZW5kOwotKwkJfQotKwotKwlpZiAoIWRjdHgtPmluc3RhbnRpYXRl KQotKwkJewotKwkJciA9IEZJUFNfUl9EUkJHX05PVF9JTklUSUFMSVNFRDsKLSsJCWdvdG8gZW5k OwotKwkJfQotKwotKwlpZiAoZGN0eC0+c3RhdHVzICE9IERSQkdfU1RBVFVTX1VOSU5JVElBTElT RUQpCi0rCQl7Ci0rCQlpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX0VSUk9SKQotKwkJ CXIgPSBGSVBTX1JfSU5fRVJST1JfU1RBVEU7Ci0rCQllbHNlCi0rCQkJciA9IEZJUFNfUl9BTFJF QURZX0lOU1RBTlRJQVRFRDsKLSsJCWdvdG8gZW5kOwotKwkJfQotKwotKwlkY3R4LT5zdGF0dXMg PSBEUkJHX1NUQVRVU19FUlJPUjsKLSsKLSsJZW50bGVuID0gZmlwc19nZXRfZW50cm9weShkY3R4 LCAmZW50cm9weSwgZGN0eC0+c3RyZW5ndGgsCi0rCQkJCWRjdHgtPm1pbl9lbnRyb3B5LCBkY3R4 LT5tYXhfZW50cm9weSk7Ci0rCi0rCWlmIChlbnRsZW4gPCBkY3R4LT5taW5fZW50cm9weSB8fCBl bnRsZW4gPiBkY3R4LT5tYXhfZW50cm9weSkKLSsJCXsKLSsJCXIgPSBGSVBTX1JfRVJST1JfUkVU UklFVklOR19FTlRST1BZOwotKwkJZ290byBlbmQ7Ci0rCQl9Ci0rCi0rCWlmIChkY3R4LT5tYXhf bm9uY2UgPiAwICYmIGRjdHgtPmdldF9ub25jZSkKLSsJCXsKLSsJCW5vbmNlbGVuID0gZGN0eC0+ Z2V0X25vbmNlKGRjdHgsICZub25jZSwKLSsJCQkJCWRjdHgtPnN0cmVuZ3RoIC8gMiwKLSsJCQkJ CWRjdHgtPm1pbl9ub25jZSwgZGN0eC0+bWF4X25vbmNlKTsKLSsKLSsJCWlmIChub25jZWxlbiA8 IGRjdHgtPm1pbl9ub25jZSB8fCBub25jZWxlbiA+IGRjdHgtPm1heF9ub25jZSkKLSsJCQl7Ci0r CQkJciA9IEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX05PTkNFOwotKwkJCWdvdG8gZW5kOwotKwkJ CX0KLSsKLSsJCX0KLSsKLSsJaWYgKCFkY3R4LT5pbnN0YW50aWF0ZShkY3R4LCAKLSsJCQkJZW50 cm9weSwgZW50bGVuLAotKwkJCQlub25jZSwgbm9uY2VsZW4sCi0rCQkJCXBlcnMsIHBlcnNsZW4p KQotKwkJewotKwkJciA9IEZJUFNfUl9FUlJPUl9JTlNUQU5USUFUSU5HX0RSQkc7Ci0rCQlnb3Rv IGVuZDsKLSsJCX0KLSsKLSsKLSsJZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfUkVBRFk7Ci0r CWlmICghKGRjdHgtPmlmbGFncyAmIERSQkdfQ1VTVE9NX1JFU0VFRCkpCi0rCQlkY3R4LT5yZXNl ZWRfY291bnRlciA9IDE7Ci0rCi0rCWVuZDoKLSsKLSsJaWYgKGVudHJvcHkgJiYgZGN0eC0+Y2xl YW51cF9lbnRyb3B5KQotKwkJZmlwc19jbGVhbnVwX2VudHJvcHkoZGN0eCwgZW50cm9weSwgZW50 bGVuKTsKLSsKLSsJaWYgKG5vbmNlICYmIGRjdHgtPmNsZWFudXBfbm9uY2UpCi0rCQlkY3R4LT5j bGVhbnVwX25vbmNlKGRjdHgsIG5vbmNlLCBub25jZWxlbik7Ci0rCi0rCWlmIChkY3R4LT5zdGF0 dXMgPT0gRFJCR19TVEFUVVNfUkVBRFkpCi0rCQlyZXR1cm4gMTsKLSsKLSsJaWYgKHIgJiYgIShk Y3R4LT5pZmxhZ3MgJiBEUkJHX0ZMQUdfTk9FUlIpKQotKwkJRklQU2VycihGSVBTX0ZfRklQU19E UkJHX0lOU1RBTlRJQVRFLCByKTsKLSsKLSsJcmV0dXJuIDA7Ci0rCi0rCX0KLSsKLStzdGF0aWMg aW50IGRyYmdfcmVzZWVkKERSQkdfQ1RYICpkY3R4LAotKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIg KmFkaW4sIHNpemVfdCBhZGlubGVuLCBpbnQgaGNoZWNrKQotKwl7Ci0rCXVuc2lnbmVkIGNoYXIg KmVudHJvcHkgPSBOVUxMOwotKwlzaXplX3QgZW50bGVuID0gMDsKLSsJaW50IHIgPSAwOwotKwot KyNpZiAwCi0rCUZJUFNlcnIoRklQU19GX0RSQkdfUkVTRUVELCBGSVBTX1JfTk9UX0lOU1RBTlRJ QVRFRCk7Ci0rCUZJUFNlcnIoRklQU19GX0RSQkdfUkVTRUVELCBGSVBTX1JfQURESVRJT05BTF9J TlBVVF9UT09fTE9ORyk7Ci0rI2VuZGlmCi0rCWlmIChkY3R4LT5zdGF0dXMgIT0gRFJCR19TVEFU VVNfUkVBRFkKLSsJCSYmIGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19SRVNFRUQpCi0rCQl7 Ci0rCQlpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX0VSUk9SKQotKwkJCXIgPSBGSVBT X1JfSU5fRVJST1JfU1RBVEU7Ci0rCQllbHNlIGlmKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRV U19VTklOSVRJQUxJU0VEKQotKwkJCXIgPSBGSVBTX1JfTk9UX0lOU1RBTlRJQVRFRDsKLSsJCWdv dG8gZW5kOwotKwkJfQotKwotKwlpZiAoIWFkaW4pCi0rCQlhZGlubGVuID0gMDsKLSsJZWxzZSBp ZiAoYWRpbmxlbiA+IGRjdHgtPm1heF9hZGluKQotKwkJewotKwkJciA9IEZJUFNfUl9BRERJVElP TkFMX0lOUFVUX1RPT19MT05HOwotKwkJZ290byBlbmQ7Ci0rCQl9Ci0rCi0rCWRjdHgtPnN0YXR1 cyA9IERSQkdfU1RBVFVTX0VSUk9SOwotKwkvKiBQZWZvcm0gaGVhbHRoIGNoZWNrIG9uIGFsbCBy ZXNlZWQgb3BlcmF0aW9ucyBpZiBub3QgYSBwcmVkaWN0aW9uCi0rCSAqIHJlc2lzdGFuY2UgcmVx dWVzdCBhbmQgbm90IGluIHRlc3QgbW9kZS4KLSsJICovCi0rCWlmIChoY2hlY2sgJiYgIShkY3R4 LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkpCi0rCQl7Ci0rCQlpZiAoIUZJUFNfZHJiZ19oZWFs dGhfY2hlY2soZGN0eCkpCi0rCQkJewotKwkJCXIgPSBGSVBTX1JfU0VMRlRFU1RfRkFJTFVSRTsK LSsJCQlnb3RvIGVuZDsKLSsJCQl9Ci0rCQl9Ci0rCi0rCWVudGxlbiA9IGZpcHNfZ2V0X2VudHJv cHkoZGN0eCwgJmVudHJvcHksIGRjdHgtPnN0cmVuZ3RoLAotKwkJCQlkY3R4LT5taW5fZW50cm9w eSwgZGN0eC0+bWF4X2VudHJvcHkpOwotKwotKwlpZiAoZW50bGVuIDwgZGN0eC0+bWluX2VudHJv cHkgfHwgZW50bGVuID4gZGN0eC0+bWF4X2VudHJvcHkpCi0rCQl7Ci0rCQlyID0gRklQU19SX0VS Uk9SX1JFVFJJRVZJTkdfRU5UUk9QWTsKLSsJCWdvdG8gZW5kOwotKwkJfQotKwotKwlpZiAoIWRj dHgtPnJlc2VlZChkY3R4LCBlbnRyb3B5LCBlbnRsZW4sIGFkaW4sIGFkaW5sZW4pKQotKwkJZ290 byBlbmQ7Ci0rCi0rCWRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX1JFQURZOwotKwlpZiAoIShk Y3R4LT5pZmxhZ3MgJiBEUkJHX0NVU1RPTV9SRVNFRUQpKQotKwkJZGN0eC0+cmVzZWVkX2NvdW50 ZXIgPSAxOwotKwllbmQ6Ci0rCi0rCWlmIChlbnRyb3B5ICYmIGRjdHgtPmNsZWFudXBfZW50cm9w eSkKLSsJCWZpcHNfY2xlYW51cF9lbnRyb3B5KGRjdHgsIGVudHJvcHksIGVudGxlbik7Ci0rCi0r CWlmIChkY3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfUkVBRFkpCi0rCQlyZXR1cm4gMTsKLSsK LSsJaWYgKHIgJiYgIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0ZMQUdfTk9FUlIpKQotKwkJRklQU2Vy cihGSVBTX0ZfRFJCR19SRVNFRUQsIHIpOwotKwotKwlyZXR1cm4gMDsKLSsJfQotKwotK2ludCBG SVBTX2RyYmdfcmVzZWVkKERSQkdfQ1RYICpkY3R4LAotKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIg KmFkaW4sIHNpemVfdCBhZGlubGVuKQotKwl7Ci0rCXJldHVybiBkcmJnX3Jlc2VlZChkY3R4LCBh ZGluLCBhZGlubGVuLCAxKTsKLSsJfQotKwotK3N0YXRpYyBpbnQgZmlwc19kcmJnX2NoZWNrKERS QkdfQ1RYICpkY3R4KQotKwl7Ci0rCWlmIChkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkK LSsJCXJldHVybiAxOwotKwlkY3R4LT5oZWFsdGhfY2hlY2tfY250Kys7Ci0rCWlmIChkY3R4LT5o ZWFsdGhfY2hlY2tfY250ID49IGRjdHgtPmhlYWx0aF9jaGVja19pbnRlcnZhbCkKLSsJCXsKLSsJ CWlmICghRklQU19kcmJnX2hlYWx0aF9jaGVjayhkY3R4KSkKLSsJCQl7Ci0rCQkJRklQU2VycihG SVBTX0ZfRklQU19EUkJHX0NIRUNLLCBGSVBTX1JfU0VMRlRFU1RfRkFJTFVSRSk7Ci0rCQkJcmV0 dXJuIDA7Ci0rCQkJfQotKwkJfQotKwlyZXR1cm4gMTsKLSsJfQotKwotK2ludCBGSVBTX2RyYmdf Z2VuZXJhdGUoRFJCR19DVFggKmRjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxl biwKLSsJCQlpbnQgcHJlZGljdGlvbl9yZXNpc3RhbmNlLAotKwkJCWNvbnN0IHVuc2lnbmVkIGNo YXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKQotKwl7Ci0rCWludCByID0gMDsKLSsKLSsJaWYgKEZJ UFNfc2VsZnRlc3RfZmFpbGVkKCkpCi0rCQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdf R0VORVJBVEUsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0r Ci0rCWlmICghZmlwc19kcmJnX2NoZWNrKGRjdHgpKQotKwkJcmV0dXJuIDA7Ci0rCi0rCWlmIChk Y3R4LT5zdGF0dXMgIT0gRFJCR19TVEFUVVNfUkVBRFkKLSsJCSYmIGRjdHgtPnN0YXR1cyAhPSBE UkJHX1NUQVRVU19SRVNFRUQpCi0rCQl7Ci0rCQlpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RB VFVTX0VSUk9SKQotKwkJCXIgPSBGSVBTX1JfSU5fRVJST1JfU1RBVEU7Ci0rCQllbHNlIGlmKGRj dHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEKQotKwkJCXIgPSBGSVBTX1Jf Tk9UX0lOU1RBTlRJQVRFRDsKLSsJCWdvdG8gZW5kOwotKwkJfQotKwotKwlpZiAob3V0bGVuID4g ZGN0eC0+bWF4X3JlcXVlc3QpCi0rCQl7Ci0rCQlyID0gRklQU19SX1JFUVVFU1RfVE9PX0xBUkdF X0ZPUl9EUkJHOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCi0rCWlmIChhZGlubGVuID4gZGN0eC0+ bWF4X2FkaW4pCi0rCQl7Ci0rCQlyID0gRklQU19SX0FERElUSU9OQUxfSU5QVVRfVE9PX0xPTkc7 Ci0rCQlnb3RvIGVuZDsKLSsJCX0KLSsKLSsJaWYgKGRjdHgtPmlmbGFncyAmIERSQkdfQ1VTVE9N X1JFU0VFRCkKLSsJCWRjdHgtPmdlbmVyYXRlKGRjdHgsIE5VTEwsIG91dGxlbiwgTlVMTCwgMCk7 Ci0rCWVsc2UgaWYgKGRjdHgtPnJlc2VlZF9jb3VudGVyID49IGRjdHgtPnJlc2VlZF9pbnRlcnZh bCkKLSsJCWRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX1JFU0VFRDsKLSsKLSsJaWYgKGRjdHgt PnN0YXR1cyA9PSBEUkJHX1NUQVRVU19SRVNFRUQgfHwgcHJlZGljdGlvbl9yZXNpc3RhbmNlKQot KwkJewotKwkJLyogSWYgcHJlZGljdGlvbiByZXNpc3RhbmNlIHJlcXVlc3QgZG9uJ3QgZG8gaGVh bHRoIGNoZWNrICovCi0rCQlpbnQgaGNoZWNrID0gcHJlZGljdGlvbl9yZXNpc3RhbmNlID8gMCA6 IDE7Ci0rCQkKLSsJCWlmICghZHJiZ19yZXNlZWQoZGN0eCwgYWRpbiwgYWRpbmxlbiwgaGNoZWNr KSkKLSsJCQl7Ci0rCQkJciA9IEZJUFNfUl9SRVNFRURfRVJST1I7Ci0rCQkJZ290byBlbmQ7Ci0r CQkJfQotKwkJYWRpbiA9IE5VTEw7Ci0rCQlhZGlubGVuID0gMDsKLSsJCX0KLSsKLSsJaWYgKCFk Y3R4LT5nZW5lcmF0ZShkY3R4LCBvdXQsIG91dGxlbiwgYWRpbiwgYWRpbmxlbikpCi0rCQl7Ci0r CQlyID0gRklQU19SX0dFTkVSQVRFX0VSUk9SOwotKwkJZGN0eC0+c3RhdHVzID0gRFJCR19TVEFU VVNfRVJST1I7Ci0rCQlnb3RvIGVuZDsKLSsJCX0KLSsJaWYgKCEoZGN0eC0+aWZsYWdzICYgRFJC R19DVVNUT01fUkVTRUVEKSkKLSsJCXsKLSsJCWlmIChkY3R4LT5yZXNlZWRfY291bnRlciA+PSBk Y3R4LT5yZXNlZWRfaW50ZXJ2YWwpCi0rCQkJZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfUkVT RUVEOwotKwkJZWxzZQotKwkJCWRjdHgtPnJlc2VlZF9jb3VudGVyKys7Ci0rCQl9Ci0rCi0rCWVu ZDoKLSsJaWYgKHIpCi0rCQl7Ci0rCQlpZiAoIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0ZMQUdfTk9F UlIpKQotKwkJCUZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19HRU5FUkFURSwgcik7Ci0rCQlyZXR1 cm4gMDsKLSsJCX0KLSsKLSsJcmV0dXJuIDE7Ci0rCX0KLSsKLStpbnQgRklQU19kcmJnX3VuaW5z dGFudGlhdGUoRFJCR19DVFggKmRjdHgpCi0rCXsKLSsJaW50IHJ2OwotKwlpZiAoIWRjdHgtPnVu aW5zdGFudGlhdGUpCi0rCQlydiA9IDE7Ci0rCWVsc2UKLSsJCXJ2ID0gZGN0eC0+dW5pbnN0YW50 aWF0ZShkY3R4KTsKLSsJLyogQWx0aG91Z2ggd2UnZCBsaWtlIHRvIGNsZWFuc2UgaGVyZSB3ZSBj YW4ndCBiZWNhdXNlIHdlIGhhdmUgdG8KLSsJICogdGVzdCB0aGUgdW5pbnN0YW50aWF0ZSByZWFs bHkgemVyb2VzIHRoZSBkYXRhLgotKwkgKi8KLSsJbWVtc2V0KCZkY3R4LT5kLCAwLCBzaXplb2Yo ZGN0eC0+ZCkpOwotKwlkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEOwot KwkvKiBJZiBtZXRob2QgaGFzIHByb2JsZW1zIHVuaW5zdGFudGlhdGluZywgcmV0dXJuIGVycm9y ICovCi0rCXJldHVybiBydjsKLSsJfQotKwotK2ludCBGSVBTX2RyYmdfc2V0X2NhbGxiYWNrcyhE UkJHX0NUWCAqZGN0eCwKLSsJc2l6ZV90ICgqZ2V0X2VudHJvcHkpKERSQkdfQ1RYICpjdHgsIHVu c2lnbmVkIGNoYXIgKipwb3V0LAotKwkJCQlpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNp emVfdCBtYXhfbGVuKSwKLSsJdm9pZCAoKmNsZWFudXBfZW50cm9weSkoRFJCR19DVFggKmN0eCwg dW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb2xlbiksCi0rCXNpemVfdCBlbnRyb3B5X2Jsb2Nr bGVuLAotKwlzaXplX3QgKCpnZXRfbm9uY2UpKERSQkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIg Kipwb3V0LAotKwkJCQlpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVu KSwKLSsJdm9pZCAoKmNsZWFudXBfbm9uY2UpKERSQkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIg Km91dCwgc2l6ZV90IG9sZW4pKQotKwl7Ci0rCWlmIChkY3R4LT5zdGF0dXMgIT0gRFJCR19TVEFU VVNfVU5JTklUSUFMSVNFRCkKLSsJCXJldHVybiAwOwotKwlkY3R4LT5lbnRyb3B5X2Jsb2NrbGVu ID0gZW50cm9weV9ibG9ja2xlbjsKLSsJZGN0eC0+Z2V0X2VudHJvcHkgPSBnZXRfZW50cm9weTsK LSsJZGN0eC0+Y2xlYW51cF9lbnRyb3B5ID0gY2xlYW51cF9lbnRyb3B5OwotKwlkY3R4LT5nZXRf bm9uY2UgPSBnZXRfbm9uY2U7Ci0rCWRjdHgtPmNsZWFudXBfbm9uY2UgPSBjbGVhbnVwX25vbmNl OwotKwlyZXR1cm4gMTsKLSsJfQotKwotK2ludCBGSVBTX2RyYmdfc2V0X3JhbmRfY2FsbGJhY2tz KERSQkdfQ1RYICpkY3R4LAotKwlzaXplX3QgKCpnZXRfYWRpbikoRFJCR19DVFggKmN0eCwgdW5z aWduZWQgY2hhciAqKnBvdXQpLAotKwl2b2lkICgqY2xlYW51cF9hZGluKShEUkJHX0NUWCAqY3R4 LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvbGVuKSwKLSsJaW50ICgqcmFuZF9zZWVkX2Ni KShEUkJHX0NUWCAqY3R4LCBjb25zdCB2b2lkICpidWYsIGludCBudW0pLAotKwlpbnQgKCpyYW5k X2FkZF9jYikoRFJCR19DVFggKmN0eCwKLSsJCQkJY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnVtLCBk b3VibGUgZW50cm9weSkpCi0rCXsKLSsJaWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19V TklOSVRJQUxJU0VEKQotKwkJcmV0dXJuIDA7Ci0rCWRjdHgtPmdldF9hZGluID0gZ2V0X2FkaW47 Ci0rCWRjdHgtPmNsZWFudXBfYWRpbiA9IGNsZWFudXBfYWRpbjsKLSsJZGN0eC0+cmFuZF9zZWVk X2NiID0gcmFuZF9zZWVkX2NiOwotKwlkY3R4LT5yYW5kX2FkZF9jYiA9IHJhbmRfYWRkX2NiOwot KwlyZXR1cm4gMTsKLSsJfQotKwotK3ZvaWQgKkZJUFNfZHJiZ19nZXRfYXBwX2RhdGEoRFJCR19D VFggKmRjdHgpCi0rCXsKLSsJcmV0dXJuIGRjdHgtPmFwcF9kYXRhOwotKwl9Ci0rCi0rdm9pZCBG SVBTX2RyYmdfc2V0X2FwcF9kYXRhKERSQkdfQ1RYICpkY3R4LCB2b2lkICphcHBfZGF0YSkKLSsJ ewotKwlkY3R4LT5hcHBfZGF0YSA9IGFwcF9kYXRhOwotKwl9Ci0rCi0rc2l6ZV90IEZJUFNfZHJi Z19nZXRfYmxvY2tsZW5ndGgoRFJCR19DVFggKmRjdHgpCi0rCXsKLSsJcmV0dXJuIGRjdHgtPmJs b2NrbGVuZ3RoOwotKwl9Ci0rCi0raW50IEZJUFNfZHJiZ19nZXRfc3RyZW5ndGgoRFJCR19DVFgg KmRjdHgpCi0rCXsKLSsJcmV0dXJuIGRjdHgtPnN0cmVuZ3RoOwotKwl9Ci0rCi0rdm9pZCBGSVBT X2RyYmdfc2V0X2NoZWNrX2ludGVydmFsKERSQkdfQ1RYICpkY3R4LCBpbnQgaW50ZXJ2YWwpCi0r CXsKLSsJZGN0eC0+aGVhbHRoX2NoZWNrX2ludGVydmFsID0gaW50ZXJ2YWw7Ci0rCX0KLSsKLSt2 b2lkIEZJUFNfZHJiZ19zZXRfcmVzZWVkX2ludGVydmFsKERSQkdfQ1RYICpkY3R4LCBpbnQgaW50 ZXJ2YWwpCi0rCXsKLSsJZGN0eC0+cmVzZWVkX2ludGVydmFsID0gaW50ZXJ2YWw7Ci0rCX0KLSsK LStzdGF0aWMgaW50IGRyYmdfc3RpY2sgPSAwOwotKwotK3ZvaWQgRklQU19kcmJnX3N0aWNrKGlu dCBvbm9mZikKLSsJewotKwlkcmJnX3N0aWNrID0gb25vZmY7Ci0rCX0KLSsKLSsvKiBDb250aW51 b3VzIERSQkcgdXRpbGl0eSBmdW5jdGlvbiAqLwotK2ludCBmaXBzX2RyYmdfY3BybmdfdGVzdChE UkJHX0NUWCAqZGN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqb3V0KQotKwl7Ci0rCS8qIE5vIENQ Uk5HIGluIHRlc3QgbW9kZSAqLwotKwlpZiAoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1Qp Ci0rCQlyZXR1cm4gMTsKLSsJLyogQ2hlY2sgYmxvY2sgaXMgdmFsaWQ6IHNob3VsZCBuZXZlciBo YXBwZW4gKi8KLSsJaWYgKGRjdHgtPmxiX3ZhbGlkID09IDApCi0rCQl7Ci0rCQlGSVBTZXJyKEZJ UFNfRl9GSVBTX0RSQkdfQ1BSTkdfVEVTVCwgRklQU19SX0lOVEVSTkFMX0VSUk9SKTsKLSsJCWZp cHNfc2V0X3NlbGZ0ZXN0X2ZhaWwoKTsKLSsJCXJldHVybiAwOwotKwkJfQotKwlpZiAoZHJiZ19z dGljaykKLSsJCW1lbWNweShkY3R4LT5sYiwgb3V0LCBkY3R4LT5ibG9ja2xlbmd0aCk7Ci0rCS8q IENoZWNrIGFnYWluc3QgbGFzdCBibG9jazogZmFpbCBpZiBtYXRjaCAqLwotKwlpZiAoIW1lbWNt cChkY3R4LT5sYiwgb3V0LCBkY3R4LT5ibG9ja2xlbmd0aCkpCi0rCQl7Ci0rCQlGSVBTZXJyKEZJ UFNfRl9GSVBTX0RSQkdfQ1BSTkdfVEVTVCwgRklQU19SX0RSQkdfU1RVQ0spOwotKwkJZmlwc19z ZXRfc2VsZnRlc3RfZmFpbCgpOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCS8qIFNhdmUgbGFzdCBi bG9jayBmb3IgbmV4dCBjb21wYXJpc29uICovCi0rCW1lbWNweShkY3R4LT5sYiwgb3V0LCBkY3R4 LT5ibG9ja2xlbmd0aCk7Ci0rCXJldHVybiAxOwotKwl9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vZmlwcy9maXBzX2RyYmdfcmFuZC5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRv L2ZpcHMvZmlwc19kcmJnX3JhbmQuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2Zp cHNfZHJiZ19yYW5kLmMuZmlwcwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU1OTkyMjQ3MiArMDEwMAot KysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19yYW5kLmMJMjAxNS0wMS0w OSAwOTo1MTo1MS41NTk5MjI0NzIgKzAxMDAKLUBAIC0wLDAgKzEsMTcyIEBACi0rLyogZmlwcy9y YW5kL2ZpcHNfZHJiZ19yYW5kLmMgKi8KLSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5z b24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAq LwotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFBy b2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsg KgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3Ry aWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmlu ZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0 aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0r ICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2pl Y3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsg KiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVk IGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBu b3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0 dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICog Ni4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhl IGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3Qg aW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAg ICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcv KSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJP SkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsg KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wg UFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VW RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U UkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D RSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqLwotKwotKyNpbmNsdWRlIDxzdHJp bmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9l cnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlw c19yYW5kLmg+Ci0rI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKLSsKLSsvKiBNYXBwaW5nIG9m IFNQODAwLTkwIERSQkdzIHRvIE9wZW5TU0wgUkFORF9NRVRIT0QgKi8KLSsKLSsvKiBTaW5jZSB3 ZSBvbmx5IGhhdmUgb25lIGdsb2JhbCBQUk5HIHVzZWQgYXQgYW55IHRpbWUgaW4gT3BlblNTTCB1 c2UgYSBnbG9iYWwKLSsgKiB2YXJpYWJsZSB0byBzdG9yZSBjb250ZXh0LgotKyAqLwotKwotK3N0 YXRpYyBEUkJHX0NUWCBvc3NsX2RjdHg7Ci0rCi0rRFJCR19DVFggKkZJUFNfZ2V0X2RlZmF1bHRf ZHJiZyh2b2lkKQotKwl7Ci0rCXJldHVybiAmb3NzbF9kY3R4OwotKwl9Ci0rCi0rc3RhdGljIGlu dCBmaXBzX2RyYmdfYnl0ZXModW5zaWduZWQgY2hhciAqb3V0LCBpbnQgY291bnQpCi0rCXsKLSsJ RFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OwotKwlpbnQgcnYgPSAwOwotKwl1bnNpZ25lZCBj aGFyICphZGluID0gTlVMTDsKLSsJc2l6ZV90IGFkaW5sZW4gPSAwOwotKwlDUllQVE9fd19sb2Nr KENSWVBUT19MT0NLX1JBTkQpOwotKwlkbyAKLSsJCXsKLSsJCXNpemVfdCByY250OwotKwkJaWYg KGNvdW50ID4gKGludClkY3R4LT5tYXhfcmVxdWVzdCkKLSsJCQlyY250ID0gZGN0eC0+bWF4X3Jl cXVlc3Q7Ci0rCQllbHNlCi0rCQkJcmNudCA9IGNvdW50OwotKwkJaWYgKGRjdHgtPmdldF9hZGlu KQotKwkJCXsKLSsJCQlhZGlubGVuID0gZGN0eC0+Z2V0X2FkaW4oZGN0eCwgJmFkaW4pOwotKwkJ CWlmIChhZGlubGVuICYmICFhZGluKQotKwkJCQl7Ci0rCQkJCUZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19CWVRFUywgRklQU19SX0VSUk9SX1JFVFJJRVZJTkdfQURESVRJT05BTF9JTlBVVCk7Ci0r CQkJCWdvdG8gZXJyOwotKwkJCQl9Ci0rCQkJfQotKwkJcnYgPSBGSVBTX2RyYmdfZ2VuZXJhdGUo ZGN0eCwgb3V0LCByY250LCAwLCBhZGluLCBhZGlubGVuKTsKLSsJCWlmIChhZGluKQotKwkJCXsK LSsJCQlpZiAoZGN0eC0+Y2xlYW51cF9hZGluKQotKwkJCQlkY3R4LT5jbGVhbnVwX2FkaW4oZGN0 eCwgYWRpbiwgYWRpbmxlbik7Ci0rCQkJYWRpbiA9IE5VTEw7Ci0rCQkJfQotKwkJaWYgKCFydikK LSsJCQlnb3RvIGVycjsKLSsJCW91dCArPSByY250OwotKwkJY291bnQgLT0gcmNudDsKLSsJCX0K LSsJd2hpbGUgKGNvdW50KTsKLSsJcnYgPSAxOwotKwllcnI6Ci0rCUNSWVBUT193X3VubG9jayhD UllQVE9fTE9DS19SQU5EKTsKLSsJcmV0dXJuIHJ2OwotKwl9Ci0rCi0rc3RhdGljIGludCBmaXBz X2RyYmdfcHNldWRvKHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IGNvdW50KQotKwl7Ci0rCWlmIChm aXBzX2RyYmdfYnl0ZXMob3V0LCBjb3VudCkgPD0gMCkKLSsJCXJldHVybiAtMTsKLSsJcmV0dXJu IDE7Ci0rCX0KLSsKLStzdGF0aWMgaW50IGZpcHNfZHJiZ19zdGF0dXModm9pZCkKLSsJewotKwlE UkJHX0NUWCAqZGN0eCA9ICZvc3NsX2RjdHg7Ci0rCWludCBydjsKLSsJQ1JZUFRPX3JfbG9jayhD UllQVE9fTE9DS19SQU5EKTsKLSsJcnYgPSBkY3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfUkVB RFkgPyAxIDogMDsKLSsJQ1JZUFRPX3JfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKwlyZXR1 cm4gcnY7Ci0rCX0KLSsKLStzdGF0aWMgdm9pZCBmaXBzX2RyYmdfY2xlYW51cCh2b2lkKQotKwl7 Ci0rCURSQkdfQ1RYICpkY3R4ID0gJm9zc2xfZGN0eDsKLSsJQ1JZUFRPX3dfbG9jayhDUllQVE9f TE9DS19SQU5EKTsKLSsJRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCk7Ci0rCUNSWVBUT193 X3VubG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsJfQotKwotK3N0YXRpYyBpbnQgZmlwc19kcmJn X3NlZWQoY29uc3Qgdm9pZCAqc2VlZCwgaW50IHNlZWRsZW4pCi0rCXsKLSsJRFJCR19DVFggKmRj dHggPSAmb3NzbF9kY3R4OwotKwlpZiAoZGN0eC0+cmFuZF9zZWVkX2NiKQotKwkJcmV0dXJuIGRj dHgtPnJhbmRfc2VlZF9jYihkY3R4LCBzZWVkLCBzZWVkbGVuKTsKLSsJcmV0dXJuIDE7Ci0rCX0K LSsKLStzdGF0aWMgaW50IGZpcHNfZHJiZ19hZGQoY29uc3Qgdm9pZCAqc2VlZCwgaW50IHNlZWRs ZW4sCi0rCQkJCQlkb3VibGUgYWRkX2VudHJvcHkpCi0rCXsKLSsJRFJCR19DVFggKmRjdHggPSAm b3NzbF9kY3R4OwotKwlpZiAoZGN0eC0+cmFuZF9hZGRfY2IpCi0rCQlyZXR1cm4gZGN0eC0+cmFu ZF9hZGRfY2IoZGN0eCwgc2VlZCwgc2VlZGxlbiwgYWRkX2VudHJvcHkpOwotKwlyZXR1cm4gMTsK LSsJfQotKwotK3N0YXRpYyBjb25zdCBSQU5EX01FVEhPRCByYW5kX2RyYmdfbWV0aCA9Ci0rCXsK LSsJZmlwc19kcmJnX3NlZWQsCi0rCWZpcHNfZHJiZ19ieXRlcywKLSsJZmlwc19kcmJnX2NsZWFu dXAsCi0rCWZpcHNfZHJiZ19hZGQsCi0rCWZpcHNfZHJiZ19wc2V1ZG8sCi0rCWZpcHNfZHJiZ19z dGF0dXMKLSsJfTsKLSsKLStjb25zdCBSQU5EX01FVEhPRCAqRklQU19kcmJnX21ldGhvZCh2b2lk KQotKwl7Ci0rCXJldHVybiAmcmFuZF9kcmJnX21ldGg7Ci0rCX0KLSsKLWRpZmYgLXVwIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0x LjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vZmlwcy9maXBzX2RyYmdfc2VsZnRlc3QuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6 NTEuNTYwOTIyNDk1ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19k cmJnX3NlbGZ0ZXN0LmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NjA5MjI0OTUgKzAxMDAKLUBAIC0w LDAgKzEsODYyIEBACi0rLyogZmlwcy9yYW5kL2ZpcHNfZHJiZ19zZWxmdGVzdC5jICovCi0rLyog V3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRo ZSBPcGVuU1NMCi0rICogcHJvamVjdC4KLSsgKi8KLSsvKiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHly aWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K LSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsg KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2 ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsg KiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoK LSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUg T3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAo aHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NM IFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICog ICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl IHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBl cm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgot KyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBi ZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRo ZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhl IE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9y bSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRn bWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29s a2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElT IFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBF WFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF RCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO IE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVU T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICog U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg QlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg T1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO RVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwg T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcg SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvY3J5 cHRvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlw c19yYW5kLmg+Ci0rI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKLSsjaW5jbHVkZSAiZmlwc19s b2NsLmgiCi0rCi0rI2luY2x1ZGUgImZpcHNfZHJiZ19zZWxmdGVzdC5oIgotKwotK3R5cGVkZWYg c3RydWN0IHsKLSsJaW50IHBvc3Q7Ci0rCWludCBuaWQ7Ci0rCXVuc2lnbmVkIGludCBmbGFnczsK LSsKLSsJLyogS0FUIGRhdGEgZm9yIG5vIFBSICovCi0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmVu dDsKLSsJc2l6ZV90IGVudGxlbjsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqbm9uY2U7Ci0rCXNp emVfdCBub25jZWxlbjsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqcGVyczsKLSsJc2l6ZV90IHBl cnNsZW47Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW47Ci0rCXNpemVfdCBhZGlubGVuOwot Kwljb25zdCB1bnNpZ25lZCBjaGFyICplbnRyZXNlZWQ7Ci0rCXNpemVfdCBlbnRyZXNlZWRsZW47 Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW5yZXNlZWQ7Ci0rCXNpemVfdCBhZGlucmVzZWVk bGVuOwotKwljb25zdCB1bnNpZ25lZCBjaGFyICphZGluMjsKLSsJc2l6ZV90IGFkaW4ybGVuOwot Kwljb25zdCB1bnNpZ25lZCBjaGFyICprYXQ7Ci0rCXNpemVfdCBrYXRsZW47Ci0rCWNvbnN0IHVu c2lnbmVkIGNoYXIgKmthdDI7Ci0rCXNpemVfdCBrYXQybGVuOwotKwotKwkvKiBLQVQgZGF0YSBm b3IgUFIgKi8KLSsJY29uc3QgdW5zaWduZWQgY2hhciAqZW50X3ByOwotKwlzaXplX3QgZW50bGVu X3ByOwotKwljb25zdCB1bnNpZ25lZCBjaGFyICpub25jZV9wcjsKLSsJc2l6ZV90IG5vbmNlbGVu X3ByOwotKwljb25zdCB1bnNpZ25lZCBjaGFyICpwZXJzX3ByOwotKwlzaXplX3QgcGVyc2xlbl9w cjsKLSsJY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbl9wcjsKLSsJc2l6ZV90IGFkaW5sZW5fcHI7 Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudHByX3ByOwotKwlzaXplX3QgZW50cHJsZW5fcHI7 Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW5nX3ByOwotKwlzaXplX3QgYWRpbmdsZW5fcHI7 Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudGdfcHI7Ci0rCXNpemVfdCBlbnRnbGVuX3ByOwot Kwljb25zdCB1bnNpZ25lZCBjaGFyICprYXRfcHI7Ci0rCXNpemVfdCBrYXRsZW5fcHI7Ci0rCWNv bnN0IHVuc2lnbmVkIGNoYXIgKmthdDJfcHI7Ci0rCXNpemVfdCBrYXQybGVuX3ByOwotKwotKwl9 IERSQkdfU0VMRlRFU1RfREFUQTsKLSsKLSsjZGVmaW5lIG1ha2VfZHJiZ190ZXN0X2RhdGEobmlk LCBmbGFnLCBwciwgcCkge3AsIG5pZCwgZmxhZyB8IERSQkdfRkxBR19URVNULCBcCi0rCXByIyNf ZW50cm9weWlucHV0LCBzaXplb2YocHIjI19lbnRyb3B5aW5wdXQpLCBcCi0rCXByIyNfbm9uY2Us IHNpemVvZihwciMjX25vbmNlKSwgXAotKwlwciMjX3BlcnNvbmFsaXphdGlvbnN0cmluZywgc2l6 ZW9mKHByIyNfcGVyc29uYWxpemF0aW9uc3RyaW5nKSwgXAotKwlwciMjX2FkZGl0aW9uYWxpbnB1 dCwgc2l6ZW9mKHByIyNfYWRkaXRpb25hbGlucHV0KSwgXAotKwlwciMjX2VudHJvcHlpbnB1dHJl c2VlZCwgc2l6ZW9mKHByIyNfZW50cm9weWlucHV0cmVzZWVkKSwgXAotKwlwciMjX2FkZGl0aW9u YWxpbnB1dHJlc2VlZCwgc2l6ZW9mKHByIyNfYWRkaXRpb25hbGlucHV0cmVzZWVkKSwgXAotKwlw ciMjX2FkZGl0aW9uYWxpbnB1dDIsIHNpemVvZihwciMjX2FkZGl0aW9uYWxpbnB1dDIpLCBcCi0r CXByIyNfaW50X3JldHVybmVkYml0cywgc2l6ZW9mKHByIyNfaW50X3JldHVybmVkYml0cyksIFwK LSsJcHIjI19yZXR1cm5lZGJpdHMsIHNpemVvZihwciMjX3JldHVybmVkYml0cyksIFwKLSsJcHIj I19wcl9lbnRyb3B5aW5wdXQsIHNpemVvZihwciMjX3ByX2VudHJvcHlpbnB1dCksIFwKLSsJcHIj I19wcl9ub25jZSwgc2l6ZW9mKHByIyNfcHJfbm9uY2UpLCBcCi0rCXByIyNfcHJfcGVyc29uYWxp emF0aW9uc3RyaW5nLCBzaXplb2YocHIjI19wcl9wZXJzb25hbGl6YXRpb25zdHJpbmcpLCBcCi0r CXByIyNfcHJfYWRkaXRpb25hbGlucHV0LCBzaXplb2YocHIjI19wcl9hZGRpdGlvbmFsaW5wdXQp LCBcCi0rCXByIyNfcHJfZW50cm9weWlucHV0cHIsIHNpemVvZihwciMjX3ByX2VudHJvcHlpbnB1 dHByKSwgXAotKwlwciMjX3ByX2FkZGl0aW9uYWxpbnB1dDIsIHNpemVvZihwciMjX3ByX2FkZGl0 aW9uYWxpbnB1dDIpLCBcCi0rCXByIyNfcHJfZW50cm9weWlucHV0cHIyLCBzaXplb2YocHIjI19w cl9lbnRyb3B5aW5wdXRwcjIpLCBcCi0rCXByIyNfcHJfaW50X3JldHVybmVkYml0cywgc2l6ZW9m KHByIyNfcHJfaW50X3JldHVybmVkYml0cyksIFwKLSsJcHIjI19wcl9yZXR1cm5lZGJpdHMsIHNp emVvZihwciMjX3ByX3JldHVybmVkYml0cyksIFwKLSsJfQotKwotKyNkZWZpbmUgbWFrZV9kcmJn X3Rlc3RfZGF0YV9kZihuaWQsIHByLCBwKSBcCi0rCW1ha2VfZHJiZ190ZXN0X2RhdGEobmlkLCBE UkJHX0ZMQUdfQ1RSX1VTRV9ERiwgcHIsIHApCi0rCi0rI2RlZmluZSBtYWtlX2RyYmdfdGVzdF9k YXRhX2VjKGN1cnZlLCBtZCwgcHIsIHApIFwKLSsJbWFrZV9kcmJnX3Rlc3RfZGF0YSgoY3VydmUg PDwgMTYpIHwgbWQgLCAwLCBwciwgcCkKLSsKLStzdGF0aWMgRFJCR19TRUxGVEVTVF9EQVRBIGRy YmdfdGVzdFtdID0gewotKwltYWtlX2RyYmdfdGVzdF9kYXRhX2RmKE5JRF9hZXNfMTI4X2N0ciwg YWVzXzEyOF91c2VfZGYsIDApLAotKwltYWtlX2RyYmdfdGVzdF9kYXRhX2RmKE5JRF9hZXNfMTky X2N0ciwgYWVzXzE5Ml91c2VfZGYsIDApLAotKwltYWtlX2RyYmdfdGVzdF9kYXRhX2RmKE5JRF9h ZXNfMjU2X2N0ciwgYWVzXzI1Nl91c2VfZGYsIDEpLAotKwltYWtlX2RyYmdfdGVzdF9kYXRhKE5J RF9hZXNfMTI4X2N0ciwgMCwgYWVzXzEyOF9ub19kZiwgMCksCi0rCW1ha2VfZHJiZ190ZXN0X2Rh dGEoTklEX2Flc18xOTJfY3RyLCAwLCBhZXNfMTkyX25vX2RmLCAwKSwKLSsJbWFrZV9kcmJnX3Rl c3RfZGF0YShOSURfYWVzXzI1Nl9jdHIsIDAsIGFlc18yNTZfbm9fZGYsIDEpLAotKwltYWtlX2Ry YmdfdGVzdF9kYXRhKE5JRF9zaGExLCAwLCBzaGExLCAwKSwKLSsJbWFrZV9kcmJnX3Rlc3RfZGF0 YShOSURfc2hhMjI0LCAwLCBzaGEyMjQsIDApLAotKwltYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9z aGEyNTYsIDAsIHNoYTI1NiwgMSksCi0rCW1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX3NoYTM4NCwg MCwgc2hhMzg0LCAwKSwKLSsJbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURfc2hhNTEyLCAwLCBzaGE1 MTIsIDApLAotKwltYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTEsIDAsIGhtYWNf c2hhMSwgMCksCi0rCW1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2htYWNXaXRoU0hBMjI0LCAwLCBo bWFjX3NoYTIyNCwgMCksCi0rCW1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2htYWNXaXRoU0hBMjU2 LCAwLCBobWFjX3NoYTI1NiwgMSksCi0rCW1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2htYWNXaXRo U0hBMzg0LCAwLCBobWFjX3NoYTM4NCwgMCksCi0rCW1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2ht YWNXaXRoU0hBNTEyLCAwLCBobWFjX3NoYTUxMiwgMCksCi0rCXswLDAsMH0KLSsJfTsKLSsKLSt0 eXBlZGVmIHN0cnVjdCAKLSsJewotKwljb25zdCB1bnNpZ25lZCBjaGFyICplbnQ7Ci0rCXNpemVf dCBlbnRsZW47Ci0rCWludCBlbnRjbnQ7Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlOwot KwlzaXplX3Qgbm9uY2VsZW47Ci0rCWludCBub25jZWNudDsKLSsJfSBURVNUX0VOVDsKLSsKLStz dGF0aWMgc2l6ZV90IHRlc3RfZW50cm9weShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAq KnBvdXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwgc2l6 ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVuKQotKwl7Ci0rCVRFU1RfRU5UICp0ID0gRklQU19k cmJnX2dldF9hcHBfZGF0YShkY3R4KTsKLSsJKnBvdXQgPSAodW5zaWduZWQgY2hhciAqKXQtPmVu dDsKLSsJdC0+ZW50Y250Kys7Ci0rCXJldHVybiB0LT5lbnRsZW47Ci0rCX0KLSsKLStzdGF0aWMg c2l6ZV90IHRlc3Rfbm9uY2UoRFJCR19DVFggKmRjdHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0LAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksIHNpemVfdCBtaW5f bGVuLCBzaXplX3QgbWF4X2xlbikKLSsJewotKwlURVNUX0VOVCAqdCA9IEZJUFNfZHJiZ19nZXRf YXBwX2RhdGEoZGN0eCk7Ci0rCSpwb3V0ID0gKHVuc2lnbmVkIGNoYXIgKil0LT5ub25jZTsKLSsJ dC0+bm9uY2VjbnQrKzsKLSsJcmV0dXJuIHQtPm5vbmNlbGVuOwotKwl9Ci0rCi0rc3RhdGljIGlu dCBmaXBzX2RyYmdfc2luZ2xlX2thdChEUkJHX0NUWCAqZGN0eCwgRFJCR19TRUxGVEVTVF9EQVRB ICp0ZCwKLSsJCQkJCQkJCWludCBxdWljaykKLSsJewotKwlURVNUX0VOVCB0OwotKwlpbnQgcnYg PSAwOwotKwlzaXplX3QgYWRpbmxlbjsKLSsJdW5zaWduZWQgY2hhciByYW5kb3V0WzEwMjRdOwot KwotKwkvKiBJbml0aWFsIHRlc3Qgd2l0aG91dCBQUiAqLwotKwotKwkvKiBJbnN0YW50aWF0ZSBE UkJHIHdpdGggdGVzdCBlbnRyb3B5LCBub25jZSBhbmQgcGVyc29uYWxpc2F0aW9uCi0rCSAqIHN0 cmluZy4KLSsJICovCi0rCi0rCWlmICghRklQU19kcmJnX2luaXQoZGN0eCwgdGQtPm5pZCwgdGQt PmZsYWdzKSkKLSsJCXJldHVybiAwOwotKwlpZiAoIUZJUFNfZHJiZ19zZXRfY2FsbGJhY2tzKGRj dHgsIHRlc3RfZW50cm9weSwgMCwgMCwgdGVzdF9ub25jZSwgMCkpCi0rCQlyZXR1cm4gMDsKLSsK LSsJRklQU19kcmJnX3NldF9hcHBfZGF0YShkY3R4LCAmdCk7Ci0rCi0rCXQuZW50ID0gdGQtPmVu dDsKLSsJdC5lbnRsZW4gPSB0ZC0+ZW50bGVuOwotKwl0Lm5vbmNlID0gdGQtPm5vbmNlOwotKwl0 Lm5vbmNlbGVuID0gdGQtPm5vbmNlbGVuOwotKwl0LmVudGNudCA9IDA7Ci0rCXQubm9uY2VjbnQg PSAwOwotKwotKwlpZiAoIUZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQt PnBlcnNsZW4pKQotKwkJZ290byBlcnI7Ci0rCi0rCS8qIE5vdGUgZm9yIENUUiB3aXRob3V0IERG IHNvbWUgYWRkaXRpb25hbCBpbnB1dCB2YWx1ZXMKLSsJICogaWdub3JlIGJ5dGVzIGFmdGVyIHRo ZSBrZXlsZW5ndGg6IHNvIHJlZHVjZSBhZGlubGVuCi0rCSAqIHRvIGhhbGYgdG8gZW5zdXJlIGlu dmFsaWQgZGF0YSBpcyBmZWQgaW4uCi0rCSAqLwotKwlpZiAoIWZpcHNfcG9zdF9jb3JydXB0KEZJ UFNfVEVTVF9EUkJHLCBkY3R4LT50eXBlLCAmZGN0eC0+aWZsYWdzKSkKLSsJCWFkaW5sZW4gPSB0 ZC0+YWRpbmxlbiAvIDI7Ci0rCWVsc2UKLSsJCWFkaW5sZW4gPSB0ZC0+YWRpbmxlbjsKLSsKLSsJ LyogR2VuZXJhdGUgd2l0aCBubyBQUiBhbmQgdmVyaWZ5IG91dHB1dCBtYXRjaGVzIGV4cGVjdGVk IGRhdGEgKi8KLSsJaWYgKCFGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmth dGxlbiwgMCwKLSsJCQkJdGQtPmFkaW4sIGFkaW5sZW4pKQotKwkJZ290byBlcnI7Ci0rCi0rCWlm IChtZW1jbXAocmFuZG91dCwgdGQtPmthdCwgdGQtPmthdGxlbikpCi0rCQl7Ci0rCQlGSVBTZXJy KEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVCwgRklQU19SX05PUFJfVEVTVDFfRkFJTFVSRSk7 Ci0rCQlnb3RvIGVycjI7Ci0rCQl9Ci0rCS8qIElmIGFiYnJldmlhdGVkIFBPU1QgZW5kIG9mIHRl c3QgKi8KLSsJaWYgKHF1aWNrKQotKwkJewotKwkJcnYgPSAxOwotKwkJZ290byBlcnI7Ci0rCQl9 Ci0rCS8qIFJlc2VlZCBEUkJHIHdpdGggdGVzdCBlbnRyb3B5IGFuZCBhZGRpdGlvbmFsIGlucHV0 ICovCi0rCXQuZW50ID0gdGQtPmVudHJlc2VlZDsKLSsJdC5lbnRsZW4gPSB0ZC0+ZW50cmVzZWVk bGVuOwotKwotKwlpZiAoIUZJUFNfZHJiZ19yZXNlZWQoZGN0eCwgdGQtPmFkaW5yZXNlZWQsIHRk LT5hZGlucmVzZWVkbGVuKSkKLSsJCWdvdG8gZXJyOwotKwotKwkvKiBHZW5lcmF0ZSB3aXRoIG5v IFBSIGFuZCB2ZXJpZnkgb3V0cHV0IG1hdGNoZXMgZXhwZWN0ZWQgZGF0YSAqLwotKwlpZiAoIUZJ UFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0MmxlbiwgMCwKLSsJCQkJdGQt PmFkaW4yLCB0ZC0+YWRpbjJsZW4pKQotKwkJZ290byBlcnI7Ci0rCi0rCWlmIChtZW1jbXAocmFu ZG91dCwgdGQtPmthdDIsIHRkLT5rYXQybGVuKSkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19TSU5HTEVfS0FULCBGSVBTX1JfTk9QUl9URVNUMl9GQUlMVVJFKTsKLSsJCWdvdG8g ZXJyMjsKLSsJCX0KLSsKLSsJRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCk7Ci0rCi0rCS8q IE5vdyB0ZXN0IHdpdGggUFIgKi8KLSsKLSsJLyogSW5zdGFudGlhdGUgRFJCRyB3aXRoIHRlc3Qg ZW50cm9weSwgbm9uY2UgYW5kIHBlcnNvbmFsaXNhdGlvbgotKwkgKiBzdHJpbmcuCi0rCSAqLwot KwlpZiAoIUZJUFNfZHJiZ19pbml0KGRjdHgsIHRkLT5uaWQsIHRkLT5mbGFncykpCi0rCQlyZXR1 cm4gMDsKLSsJaWYgKCFGSVBTX2RyYmdfc2V0X2NhbGxiYWNrcyhkY3R4LCB0ZXN0X2VudHJvcHks IDAsIDAsIHRlc3Rfbm9uY2UsIDApKQotKwkJcmV0dXJuIDA7Ci0rCi0rCUZJUFNfZHJiZ19zZXRf YXBwX2RhdGEoZGN0eCwgJnQpOwotKwotKwl0LmVudCA9IHRkLT5lbnRfcHI7Ci0rCXQuZW50bGVu ID0gdGQtPmVudGxlbl9wcjsKLSsJdC5ub25jZSA9IHRkLT5ub25jZV9wcjsKLSsJdC5ub25jZWxl biA9IHRkLT5ub25jZWxlbl9wcjsKLSsJdC5lbnRjbnQgPSAwOwotKwl0Lm5vbmNlY250ID0gMDsK LSsKLSsJaWYgKCFGSVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQtPnBlcnNfcHIsIHRkLT5w ZXJzbGVuX3ByKSkKLSsJCWdvdG8gZXJyOwotKwotKwkvKiBOb3cgZ2VuZXJhdGUgd2l0aCBQUjog d2UgbmVlZCB0byBzdXBwbHkgZW50cm9weSBhcyB0aGlzIHdpbGwKLSsJICogcGVyZm9ybSBhIHJl c2VlZCBvcGVyYXRpb24uIENoZWNrIG91dHB1dCBtYXRjaGVzIGV4cGVjdGVkIHZhbHVlLgotKwkg Ki8KLSsKLSsJdC5lbnQgPSB0ZC0+ZW50cHJfcHI7Ci0rCXQuZW50bGVuID0gdGQtPmVudHBybGVu X3ByOwotKwotKwkvKiBOb3RlIGZvciBDVFIgd2l0aG91dCBERiBzb21lIGFkZGl0aW9uYWwgaW5w dXQgdmFsdWVzCi0rCSAqIGlnbm9yZSBieXRlcyBhZnRlciB0aGUga2V5bGVuZ3RoOiBzbyByZWR1 Y2UgYWRpbmxlbgotKwkgKiB0byBoYWxmIHRvIGVuc3VyZSBpbnZhbGlkIGRhdGEgaXMgZmVkIGlu LgotKwkgKi8KLSsJaWYgKCFmaXBzX3Bvc3RfY29ycnVwdChGSVBTX1RFU1RfRFJCRywgZGN0eC0+ dHlwZSwgJmRjdHgtPmlmbGFncykpCi0rCQlhZGlubGVuID0gdGQtPmFkaW5sZW5fcHIgLyAyOwot KwllbHNlCi0rCQlhZGlubGVuID0gdGQtPmFkaW5sZW5fcHI7Ci0rCWlmICghRklQU19kcmJnX2dl bmVyYXRlKGRjdHgsIHJhbmRvdXQsIHRkLT5rYXRsZW5fcHIsIDEsCi0rCQkJCXRkLT5hZGluX3By LCBhZGlubGVuKSkKLSsJCWdvdG8gZXJyOwotKwotKwlpZiAobWVtY21wKHJhbmRvdXQsIHRkLT5r YXRfcHIsIHRkLT5rYXRsZW5fcHIpKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJH X1NJTkdMRV9LQVQsIEZJUFNfUl9QUl9URVNUMV9GQUlMVVJFKTsKLSsJCWdvdG8gZXJyMjsKLSsJ CX0KLSsKLSsJLyogTm93IGdlbmVyYXRlIGFnYWluIHdpdGggUFI6IHN1cHBseSBuZXcgZW50cm9w eSBhZ2Fpbi4KLSsJICogQ2hlY2sgb3V0cHV0IG1hdGNoZXMgZXhwZWN0ZWQgdmFsdWUuCi0rCSAq LwotKwotKwl0LmVudCA9IHRkLT5lbnRnX3ByOwotKwl0LmVudGxlbiA9IHRkLT5lbnRnbGVuX3By OwotKwotKwlpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0Mmxl bl9wciwgMSwKLSsJCQkJdGQtPmFkaW5nX3ByLCB0ZC0+YWRpbmdsZW5fcHIpKQotKwkJZ290byBl cnI7Ci0rCi0rCWlmIChtZW1jbXAocmFuZG91dCwgdGQtPmthdDJfcHIsIHRkLT5rYXQybGVuX3By KSkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19TSU5HTEVfS0FULCBGSVBTX1Jf UFJfVEVTVDJfRkFJTFVSRSk7Ci0rCQlnb3RvIGVycjI7Ci0rCQl9Ci0rCS8qIEFsbCBPSywgdGVz dCBjb21wbGV0ZSAqLwotKwlydiA9IDE7Ci0rCi0rCWVycjoKLSsJaWYgKHJ2ID09IDApCi0rCQlG SVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVCwgRklQU19SX1NFTEZURVNUX0ZBSUxF RCk7Ci0rCWVycjI6Ci0rCUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpOwotKwkKLSsJcmV0 dXJuIHJ2OwotKwotKwl9Ci0rCi0rLyogSW5pdGlhbGlzZSBhIERSQkcgYmFzZWQgb24gc2VsZnRl c3QgZGF0YSAqLwotKwotK3N0YXRpYyBpbnQgZG9fZHJiZ19pbml0KERSQkdfQ1RYICpkY3R4LCBE UkJHX1NFTEZURVNUX0RBVEEgKnRkLCBURVNUX0VOVCAqdCkKLSsJewotKwotKwlpZiAoIUZJUFNf ZHJiZ19pbml0KGRjdHgsIHRkLT5uaWQsIHRkLT5mbGFncykpCi0rCQlyZXR1cm4gMDsKLSsKLSsJ aWYgKCFGSVBTX2RyYmdfc2V0X2NhbGxiYWNrcyhkY3R4LCB0ZXN0X2VudHJvcHksIDAsIDAsIHRl c3Rfbm9uY2UsIDApKQotKwkJcmV0dXJuIDA7Ci0rCi0rCUZJUFNfZHJiZ19zZXRfYXBwX2RhdGEo ZGN0eCwgdCk7Ci0rCi0rCXQtPmVudCA9IHRkLT5lbnQ7Ci0rCXQtPmVudGxlbiA9IHRkLT5lbnRs ZW47Ci0rCXQtPm5vbmNlID0gdGQtPm5vbmNlOwotKwl0LT5ub25jZWxlbiA9IHRkLT5ub25jZWxl bjsKLSsJdC0+ZW50Y250ID0gMDsKLSsJdC0+bm9uY2VjbnQgPSAwOwotKwlyZXR1cm4gMTsKLSsJ fQotKwotKy8qIEluaXRpYWxpc2UgYW5kIGluc3RhbnRpYXRlIERSQkcgYmFzZWQgb24gc2VsZnRl c3QgZGF0YSAqLwotK3N0YXRpYyBpbnQgZG9fZHJiZ19pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0 eCwgRFJCR19TRUxGVEVTVF9EQVRBICp0ZCwKLSsJCQkJCQkJCVRFU1RfRU5UICp0KQotKwl7Ci0r CWlmICghZG9fZHJiZ19pbml0KGRjdHgsIHRkLCB0KSkKLSsJCXJldHVybiAwOwotKwlpZiAoIUZJ UFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNsZW4pKQotKwkJcmV0 dXJuIDA7Ci0rCi0rCXJldHVybiAxOwotKwl9Ci0rCi0rLyogVGhpcyBmdW5jdGlvbiBwZXJmb3Jt cyBleHRlbnNpdmUgZXJyb3IgY2hlY2tpbmcgYXMgcmVxdWlyZWQgYnkgU1A4MDAtOTAuCi0rICog SW5kdWNlIHNldmVyYWwgZmFpbHVyZSBtb2RlcyBhbmQgY2hlY2sgYW4gZXJyb3IgY29uZGl0aW9u IGlzIHNldC4KLSsgKiBUaGlzIGZ1bmN0aW9uIGFsb25nIHdpdGggZmlwc19kcmJnX3NpbmdsZV9r YXQgcGVmb3JtcyB0aGUgaGVhbHRoIGNoZWNraW5nCi0rICogb3BlcmF0aW9uLgotKyAqLwotKwot K3N0YXRpYyBpbnQgZmlwc19kcmJnX2Vycm9yX2NoZWNrKERSQkdfQ1RYICpkY3R4LCBEUkJHX1NF TEZURVNUX0RBVEEgKnRkKQotKwl7Ci0rCXVuc2lnbmVkIGNoYXIgcmFuZG91dFsxMDI0XTsKLSsJ VEVTVF9FTlQgdDsKLSsJc2l6ZV90IGk7Ci0rCXVuc2lnbmVkIGludCByZXNlZWRfY291bnRlcl90 bXA7Ci0rCXVuc2lnbmVkIGNoYXIgKnAgPSAodW5zaWduZWQgY2hhciAqKWRjdHg7Ci0rCi0rCS8q IEluaXRpYWxpc2UgRFJCRyAqLwotKwotKwlpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQp KQotKwkJZ290byBlcnI7Ci0rCi0rCS8qIERvbid0IHJlcG9ydCBpbmR1Y2VkIGVycm9ycyAqLwot KwlkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOwotKwotKwkvKiBQZXJzb25hbGlzYXRp b24gc3RyaW5nIHRlc3RzICovCi0rCi0rCS8qIFRlc3QgZGV0ZWN0aW9uIG9mIHRvbyBsYXJnZSBw ZXJzb25saXNhdGlvbiBzdHJpbmcgKi8KLSsKLSsJaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShk Y3R4LCB0ZC0+cGVycywgZGN0eC0+bWF4X3BlcnMgKyAxKSA+IDApCi0rCQl7Ci0rCQlGSVBTZXJy KEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9QRVJTT05BTElTQVRJT05fRVJS T1JfVU5ERVRFQ1RFRCk7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsJLyogRW50cm9weSBzb3Vy Y2UgdGVzdHMgKi8KLSsKLSsJLyogVGVzdCBlbnRyb3B5IHNvdXJjZSBmYWlsdXJlIGRldGVjaW9u OiBpLmUuIHJldHVybnMgbm8gZGF0YSAqLwotKwotKwl0LmVudGxlbiA9IDA7Ci0rCi0rCWlmIChG SVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQtPnBlcnMsIHRkLT5wZXJzbGVuKSA+IDApCi0r CQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9FTlRS T1BZX0VSUk9SX1VOREVURUNURUQpOwotKwkJZ290byBlcnI7Ci0rCQl9Ci0rCi0rCS8qIFRyeSB0 byBnZW5lcmF0ZSBvdXRwdXQgZnJvbSB1bmluc3RhbnRpYXRlZCBEUkJHICovCi0rCWlmIChGSVBT X2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwKLSsJCQkJdGQtPmFk aW4sIHRkLT5hZGlubGVuKSkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJP Ul9DSEVDSywgRklQU19SX0dFTkVSQVRFX0VSUk9SX1VOREVURUNURUQpOwotKwkJZ290byBlcnI7 Ci0rCQl9Ci0rCi0rCWRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOwotKwlpZiAoIUZJ UFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQ U19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7Ci0rCQlnb3Rv IGVycjsKLSsJCX0KLSsKLSsJaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQsICZ0KSkKLSsJCWdv dG8gZXJyOwotKwotKwlkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOwotKwotKwkvKiBU ZXN0IGluc3VmZmljaWVudCBlbnRyb3B5ICovCi0rCi0rCXQuZW50bGVuID0gZGN0eC0+bWluX2Vu dHJvcHkgLSAxOwotKwotKwlpZiAoRklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJz LCB0ZC0+cGVyc2xlbikgPiAwKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VS Uk9SX0NIRUNLLCBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKLSsJCWdvdG8gZXJy OwotKwkJfQotKwotKwlkY3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsKLSsJaWYgKCFG SVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwotKwkJZ290 byBlcnI7Ci0rCQl9Ci0rCi0rCS8qIFRlc3QgdG9vIG11Y2ggZW50cm9weSAqLwotKwotKwlpZiAo IWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQotKwkJZ290byBlcnI7Ci0rCi0rCWRjdHgtPmlm bGFncyB8PSBEUkJHX0ZMQUdfTk9FUlI7Ci0rCi0rCXQuZW50bGVuID0gZGN0eC0+bWF4X2VudHJv cHkgKyAxOwotKwotKwlpZiAoRklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0 ZC0+cGVyc2xlbikgPiAwKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9S X0NIRUNLLCBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKLSsJCWdvdG8gZXJyOwot KwkJfQotKwotKwlkY3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsKLSsJaWYgKCFGSVBT X2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwotKwkJZ290byBl cnI7Ci0rCQl9Ci0rCi0rCS8qIE5vbmNlIHRlc3RzICovCi0rCi0rCS8qIFRlc3QgdG9vIHNtYWxs IG5vbmNlICovCi0rCi0rCWlmIChkY3R4LT5taW5fbm9uY2UpCi0rCQl7Ci0rCi0rCQlpZiAoIWRv X2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQotKwkJCWdvdG8gZXJyOwotKwotKwkJZGN0eC0+aWZs YWdzIHw9IERSQkdfRkxBR19OT0VSUjsKLSsKLSsJCXQubm9uY2VsZW4gPSBkY3R4LT5taW5fbm9u Y2UgLSAxOwotKwotKwkJaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywg dGQtPnBlcnNsZW4pID4gMCkKLSsJCQl7Ci0rCQkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VS Uk9SX0NIRUNLLCBGSVBTX1JfTk9OQ0VfRVJST1JfVU5ERVRFQ1RFRCk7Ci0rCQkJZ290byBlcnI7 Ci0rCQkJfQotKwotKwkJZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7Ci0rCQlpZiAo IUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKQotKwkJCXsKLSsJCQlGSVBTZXJyKEZJUFNf Rl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKLSsJ CQlnb3RvIGVycjsKLSsJCQl9Ci0rCi0rCQl9Ci0rCi0rCS8qIFRlc3QgdG9vIGxhcmdlIG5vbmNl ICovCi0rCi0rCWlmIChkY3R4LT5tYXhfbm9uY2UpCi0rCQl7Ci0rCi0rCQlpZiAoIWRvX2RyYmdf aW5pdChkY3R4LCB0ZCwgJnQpKQotKwkJCWdvdG8gZXJyOwotKwotKwkJZGN0eC0+aWZsYWdzIHw9 IERSQkdfRkxBR19OT0VSUjsKLSsKLSsJCXQubm9uY2VsZW4gPSBkY3R4LT5tYXhfbm9uY2UgKyAx OwotKwotKwkJaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBl cnNsZW4pID4gMCkKLSsJCQl7Ci0rCQkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NI RUNLLCBGSVBTX1JfTk9OQ0VfRVJST1JfVU5ERVRFQ1RFRCk7Ci0rCQkJZ290byBlcnI7Ci0rCQkJ fQotKwotKwkJZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7Ci0rCQlpZiAoIUZJUFNf ZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKQotKwkJCXsKLSsJCQlGSVBTZXJyKEZJUFNfRl9GSVBT X0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKLSsJCQlnb3Rv IGVycjsKLSsJCQl9Ci0rCi0rCQl9Ci0rCi0rCS8qIEluc3RhbnRpYXRlIHdpdGggdmFsaWQgZGF0 YS4gKi8KLSsJaWYgKCFkb19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLCAmdCkpCi0rCQkJZ290 byBlcnI7Ci0rCi0rCS8qIENoZWNrIGdlbmVyYXRpb24gaXMgbm93IE9LICovCi0rCWlmICghRklQ U19kcmJnX2dlbmVyYXRlKGRjdHgsIHJhbmRvdXQsIHRkLT5rYXRsZW4sIDAsCi0rCQkJCXRkLT5h ZGluLCB0ZC0+YWRpbmxlbikpCi0rCQlnb3RvIGVycjsKLSsKLSsJZGN0eC0+aWZsYWdzIHw9IERS QkdfRkxBR19OT0VSUjsKLSsKLSsJLyogUmVxdWVzdCB0b28gbXVjaCBkYXRhIGZvciBvbmUgcmVx dWVzdCAqLwotKwlpZiAoRklQU19kcmJnX2dlbmVyYXRlKGRjdHgsIHJhbmRvdXQsIGRjdHgtPm1h eF9yZXF1ZXN0ICsgMSwgMCwKLSsJCQkJdGQtPmFkaW4sIHRkLT5hZGlubGVuKSkKLSsJCXsKLSsJ CUZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1JFUVVFU1RfTEVO R1RIX0VSUk9SX1VOREVURUNURUQpOwotKwkJZ290byBlcnI7Ci0rCQl9Ci0rCi0rCS8qIFRyeSB0 b28gbGFyZ2UgYWRkaXRpb25hbCBpbnB1dCAqLwotKwlpZiAoRklQU19kcmJnX2dlbmVyYXRlKGRj dHgsIHJhbmRvdXQsIHRkLT5rYXRsZW4sIDAsCi0rCQkJCXRkLT5hZGluLCBkY3R4LT5tYXhfYWRp biArIDEpKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBG SVBTX1JfQURESVRJT05BTF9JTlBVVF9FUlJPUl9VTkRFVEVDVEVEKTsKLSsJCWdvdG8gZXJyOwot KwkJfQotKwotKwkvKiBDaGVjayBwcmVkaWN0aW9uIHJlc2lzdGFuY2UgcmVxdWVzdCBmYWlscyBp ZiBlbnRyb3B5IHNvdXJjZQotKwkgKiBmYWlsdXJlLgotKwkgKi8KLSsKLSsJdC5lbnRsZW4gPSAw OwotKwotKwlpZiAoRklQU19kcmJnX2dlbmVyYXRlKGRjdHgsIHJhbmRvdXQsIHRkLT5rYXRsZW4s IDEsCi0rCQkJCXRkLT5hZGluLCB0ZC0+YWRpbmxlbikpCi0rCQl7Ci0rCQlGSVBTZXJyKEZJUFNf Rl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQp OwotKwkJZ290byBlcnI7Ci0rCQl9Ci0rCQkKLSsJZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdf Tk9FUlI7Ci0rCWlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpCi0rCQl7Ci0rCQlG SVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRF X0VSUk9SKTsKLSsJCWdvdG8gZXJyOwotKwkJfQotKwotKwotKwkvKiBJbnN0YW50aWF0ZSBhZ2Fp biB3aXRoIHZhbGlkIGRhdGEgKi8KLSsKLSsJaWYgKCFkb19kcmJnX2luc3RhbnRpYXRlKGRjdHgs IHRkLCAmdCkpCi0rCQkJZ290byBlcnI7Ci0rCS8qIFRlc3QgcmVzZWVkIGNvdW50ZXIgd29ya3Mg Ki8KLSsJLyogU2F2ZSBpbml0aWFsIHJlc2VlZCBjb3VudGVyICovCi0rCXJlc2VlZF9jb3VudGVy X3RtcCA9IGRjdHgtPnJlc2VlZF9jb3VudGVyOwotKwkvKiBTZXQgcmVzZWVkIGNvdW50ZXIgdG8g YmV5b25kIGludGVydmFsICovCi0rCWRjdHgtPnJlc2VlZF9jb3VudGVyID0gZGN0eC0+cmVzZWVk X2ludGVydmFsOwotKwotKwkvKiBHZW5lcmF0ZSBvdXRwdXQgYW5kIGNoZWNrIGVudHJvcHkgaGFz IGJlZW4gcmVxdWVzdGVkIGZvciByZXNlZWQgKi8KLSsJdC5lbnRjbnQgPSAwOwotKwlpZiAoIUZJ UFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAwLAotKwkJCQl0ZC0+ YWRpbiwgdGQtPmFkaW5sZW4pKQotKwkJZ290byBlcnI7Ci0rCWlmICh0LmVudGNudCAhPSAxKQot KwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfRU5U Uk9QWV9OT1RfUkVRVUVTVEVEX0ZPUl9SRVNFRUQpOwotKwkJZ290byBlcnI7Ci0rCQl9Ci0rCS8q IENoZWNrIHJlc2VlZCBjb3VudGVyIGhhcyBiZWVuIHJlc2V0ICovCi0rCWlmIChkY3R4LT5yZXNl ZWRfY291bnRlciAhPSByZXNlZWRfY291bnRlcl90bXAgKyAxKQotKwkJewotKwkJRklQU2VycihG SVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfUkVTRUVEX0NPVU5URVJfRVJST1Ip OwotKwkJZ290byBlcnI7Ci0rCQl9Ci0rCi0rCWRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFHX05P RVJSOwotKwlpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKQotKwkJewotKwkJRklQ U2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5USUFURV9F UlJPUik7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsJLyogQ2hlY2sgcHJlZGljdGlvbiByZXNp c3RhbmNlIHJlcXVlc3QgZmFpbHMgaWYgZW50cm9weSBzb3VyY2UKLSsJICogZmFpbHVyZS4KLSsJ ICovCi0rCi0rCXQuZW50bGVuID0gMDsKLSsKLSsJZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19O T0VSUjsKLSsJaWYgKEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVu LCAxLAotKwkJCQl0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKQotKwkJewotKwkJRklQU2VycihGSVBT X0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVE KTsKLSsJCWdvdG8gZXJyOwotKwkJfQotKwkJCi0rCWRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFH X05PRVJSOwotKwotKwlpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKQotKwkJewot KwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5U SUFURV9FUlJPUik7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsKLSsJaWYgKCFkb19kcmJnX2lu c3RhbnRpYXRlKGRjdHgsIHRkLCAmdCkpCi0rCQkJZ290byBlcnI7Ci0rCS8qIFRlc3QgcmVzZWVk IGNvdW50ZXIgd29ya3MgKi8KLSsJLyogU2F2ZSBpbml0aWFsIHJlc2VlZCBjb3VudGVyICovCi0r CXJlc2VlZF9jb3VudGVyX3RtcCA9IGRjdHgtPnJlc2VlZF9jb3VudGVyOwotKwkvKiBTZXQgcmVz ZWVkIGNvdW50ZXIgdG8gYmV5b25kIGludGVydmFsICovCi0rCWRjdHgtPnJlc2VlZF9jb3VudGVy ID0gZGN0eC0+cmVzZWVkX2ludGVydmFsOwotKwotKwkvKiBHZW5lcmF0ZSBvdXRwdXQgYW5kIGNo ZWNrIGVudHJvcHkgaGFzIGJlZW4gcmVxdWVzdGVkIGZvciByZXNlZWQgKi8KLSsJdC5lbnRjbnQg PSAwOwotKwlpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVu LCAwLAotKwkJCQl0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKQotKwkJZ290byBlcnI7Ci0rCWlmICh0 LmVudGNudCAhPSAxKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NI RUNLLCBGSVBTX1JfRU5UUk9QWV9OT1RfUkVRVUVTVEVEX0ZPUl9SRVNFRUQpOwotKwkJZ290byBl cnI7Ci0rCQl9Ci0rCS8qIENoZWNrIHJlc2VlZCBjb3VudGVyIGhhcyBiZWVuIHJlc2V0ICovCi0r CWlmIChkY3R4LT5yZXNlZWRfY291bnRlciAhPSByZXNlZWRfY291bnRlcl90bXAgKyAxKQotKwkJ ewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfUkVTRUVE X0NPVU5URVJfRVJST1IpOwotKwkJZ290byBlcnI7Ci0rCQl9Ci0rCi0rCWRjdHgtPmlmbGFncyAm PSB+RFJCR19GTEFHX05PRVJSOwotKwlpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgp KQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1Jf VU5JTlNUQU5USUFURV9FUlJPUik7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsJLyogRXhwbGlj aXQgcmVzZWVkIHRlc3RzICovCi0rCi0rCS8qIFRlc3QgZXhwbGljaXQgcmVzZWVkIHdpdGggdG9v IGxhcmdlIGFkZGl0aW9uYWwgaW5wdXQgKi8KLSsJaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQs ICZ0KSkKLSsJCWdvdG8gZXJyOwotKwotKwlkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJS OwotKwotKwlpZiAoRklQU19kcmJnX3Jlc2VlZChkY3R4LCB0ZC0+YWRpbiwgZGN0eC0+bWF4X2Fk aW4gKyAxKSA+IDApCi0rCQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hF Q0ssIEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX0VSUk9SX1VOREVURUNURUQpOwotKwkJZ290byBl cnI7Ci0rCQl9Ci0rCi0rCS8qIFRlc3QgZXhwbGljaXQgcmVzZWVkIHdpdGggZW50cm9weSBzb3Vy Y2UgZmFpbHVyZSAqLwotKwotKwl0LmVudGxlbiA9IDA7Ci0rCi0rCWlmIChGSVBTX2RyYmdfcmVz ZWVkKGRjdHgsIHRkLT5hZGluLCB0ZC0+YWRpbmxlbikgPiAwKQotKwkJewotKwkJRklQU2VycihG SVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVD VEVEKTsKLSsJCWdvdG8gZXJyOwotKwkJfQotKwotKwlpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRp YXRlKGRjdHgpKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNL LCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsJ LyogVGVzdCBleHBsaWNpdCByZXNlZWQgd2l0aCB0b28gbXVjaCBlbnRyb3B5ICovCi0rCi0rCWlm ICghZG9fZHJiZ19pbml0KGRjdHgsIHRkLCAmdCkpCi0rCQlnb3RvIGVycjsKLSsKLSsJZGN0eC0+ aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKLSsKLSsJdC5lbnRsZW4gPSBkY3R4LT5tYXhfZW50 cm9weSArIDE7Ci0rCi0rCWlmIChGSVBTX2RyYmdfcmVzZWVkKGRjdHgsIHRkLT5hZGluLCB0ZC0+ YWRpbmxlbikgPiAwKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NI RUNLLCBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKLSsJCWdvdG8gZXJyOwotKwkJ fQotKwotKwlpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKQotKwkJewotKwkJRklQ U2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5USUFURV9F UlJPUik7Ci0rCQlnb3RvIGVycjsKLSsJCX0KLSsKLSsJLyogVGVzdCBleHBsaWNpdCByZXNlZWQg d2l0aCB0b28gbGl0dGxlIGVudHJvcHkgKi8KLSsKLSsJaWYgKCFkb19kcmJnX2luaXQoZGN0eCwg dGQsICZ0KSkKLSsJCWdvdG8gZXJyOwotKwotKwlkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05P RVJSOwotKwotKwl0LmVudGxlbiA9IGRjdHgtPm1pbl9lbnRyb3B5IC0gMTsKLSsKLSsJaWYgKEZJ UFNfZHJiZ19yZXNlZWQoZGN0eCwgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSA+IDApCi0rCQl7Ci0r CQlGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9FTlRST1BZX0VS Uk9SX1VOREVURUNURUQpOwotKwkJZ290byBlcnI7Ci0rCQl9Ci0rCi0rCWlmICghRklQU19kcmJn X3VuaW5zdGFudGlhdGUoZGN0eCkpCi0rCQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdf RVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKLSsJCWdvdG8gZXJyOwot KwkJfQotKwotKwlwID0gKHVuc2lnbmVkIGNoYXIgKikmZGN0eC0+ZDsKLSsJLyogU3RhbmRhcmQg c2F5cyB3ZSBoYXZlIHRvIGNoZWNrIHVuaW5zdGFudGlhdGUgcmVhbGx5IHplcm9lcwotKwkgKiB0 aGUgZGF0YS4uLgotKwkgKi8KLSsJZm9yIChpID0gMDsgaSA8IHNpemVvZihkY3R4LT5kKTsgaSsr KQotKwkJewotKwkJaWYgKCpwICE9IDApCi0rCQkJewotKwkJCUZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfWkVST0lTRV9FUlJPUik7Ci0r CQkJZ290byBlcnI7Ci0rCQkJfQotKwkJcCsrOwotKwkJfQotKwotKwlyZXR1cm4gMTsKLSsKLSsJ ZXJyOgotKwkvKiBBIHJlYWwgZXJyb3IgYXMgb3Bwb3NlZCB0byBhbiBpbmR1Y2VkIG9uZTogdW5k ZXJseWluZyBmdW5jdGlvbiB3aWxsCi0rCSAqIGluZGljYXRlIHRoZSBlcnJvci4KLSsJICovCi0r CWlmICghKGRjdHgtPmlmbGFncyAmIERSQkdfRkxBR19OT0VSUikpCi0rCQlGSVBTZXJyKEZJUFNf Rl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9GVU5DVElPTl9FUlJPUik7Ci0rCUZJUFNf ZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpOwotKwlyZXR1cm4gMDsKLSsKLSsJfQotKwotK2ludCBm aXBzX2RyYmdfa2F0KERSQkdfQ1RYICpkY3R4LCBpbnQgbmlkLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp Ci0rCXsKLSsJRFJCR19TRUxGVEVTVF9EQVRBICp0ZDsKLSsJZmxhZ3MgfD0gRFJCR19GTEFHX1RF U1Q7Ci0rCWZvciAodGQgPSBkcmJnX3Rlc3Q7IHRkLT5uaWQgIT0gMDsgdGQrKykKLSsJCXsKLSsJ CWlmICh0ZC0+bmlkID09IG5pZCAmJiB0ZC0+ZmxhZ3MgPT0gZmxhZ3MpCi0rCQkJewotKwkJCWlm ICghZmlwc19kcmJnX3NpbmdsZV9rYXQoZGN0eCwgdGQsIDApKQotKwkJCQlyZXR1cm4gMDsKLSsJ CQlyZXR1cm4gZmlwc19kcmJnX2Vycm9yX2NoZWNrKGRjdHgsIHRkKTsKLSsJCQl9Ci0rCQl9Ci0r CXJldHVybiAwOwotKwl9Ci0rCi0raW50IEZJUFNfZHJiZ19oZWFsdGhfY2hlY2soRFJCR19DVFgg KmRjdHgpCi0rCXsKLSsJaW50IHJ2OwotKwlEUkJHX0NUWCAqdGN0eCA9IE5VTEw7Ci0rCXRjdHgg PSBGSVBTX2RyYmdfbmV3KDAsIDApOwotKwlmaXBzX3Bvc3Rfc3RhcnRlZChGSVBTX1RFU1RfRFJC RywgZGN0eC0+dHlwZSwgJmRjdHgtPnhmbGFncyk7Ci0rCWlmICghdGN0eCkKLSsJCXJldHVybiAw OwotKwlydiA9IGZpcHNfZHJiZ19rYXQodGN0eCwgZGN0eC0+dHlwZSwgZGN0eC0+eGZsYWdzKTsK LSsJaWYgKHRjdHgpCi0rCQlGSVBTX2RyYmdfZnJlZSh0Y3R4KTsKLSsJaWYgKHJ2KQotKwkJZmlw c19wb3N0X3N1Y2Nlc3MoRklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZkY3R4LT54ZmxhZ3Mp OwotKwllbHNlCi0rCQlmaXBzX3Bvc3RfZmFpbGVkKEZJUFNfVEVTVF9EUkJHLCBkY3R4LT50eXBl LCAmZGN0eC0+eGZsYWdzKTsKLSsJaWYgKCFydikKLSsJCWRjdHgtPnN0YXR1cyA9IERSQkdfU1RB VFVTX0VSUk9SOwotKwllbHNlCi0rCQlkY3R4LT5oZWFsdGhfY2hlY2tfY250ID0gMDsKLSsJcmV0 dXJuIHJ2OwotKwl9Ci0rCi0raW50IEZJUFNfc2VsZnRlc3RfZHJiZyh2b2lkKQotKwl7Ci0rCURS QkdfQ1RYICpkY3R4OwotKwlEUkJHX1NFTEZURVNUX0RBVEEgKnRkOwotKwlpbnQgcnYgPSAxOwot KwlkY3R4ID0gRklQU19kcmJnX25ldygwLCAwKTsKLSsJaWYgKCFkY3R4KQotKwkJcmV0dXJuIDA7 Ci0rCWZvciAodGQgPSBkcmJnX3Rlc3Q7IHRkLT5uaWQgIT0gMDsgdGQrKykKLSsJCXsKLSsJCWlm ICh0ZC0+cG9zdCAhPSAxKQotKwkJCWNvbnRpbnVlOwotKwkJaWYgKCFmaXBzX3Bvc3Rfc3RhcnRl ZChGSVBTX1RFU1RfRFJCRywgdGQtPm5pZCwgJnRkLT5mbGFncykpCi0rCQkJcmV0dXJuIDE7Ci0r CQlpZiAoIWZpcHNfZHJiZ19zaW5nbGVfa2F0KGRjdHgsIHRkLCAxKSkKLSsJCQl7Ci0rCQkJZmlw c19wb3N0X2ZhaWxlZChGSVBTX1RFU1RfRFJCRywgdGQtPm5pZCwgJnRkLT5mbGFncyk7Ci0rCQkJ cnYgPSAwOwotKwkJCWNvbnRpbnVlOwotKwkJCX0KLSsJCWlmICghZmlwc19wb3N0X3N1Y2Nlc3Mo RklQU19URVNUX0RSQkcsIHRkLT5uaWQsICZ0ZC0+ZmxhZ3MpKQotKwkJCXJldHVybiAwOwotKwkJ fQotKwlGSVBTX2RyYmdfZnJlZShkY3R4KTsKLSsJcmV0dXJuIHJ2OwotKwl9Ci0rCi0rCi0raW50 IEZJUFNfc2VsZnRlc3RfZHJiZ19hbGwodm9pZCkKLSsJewotKwlEUkJHX0NUWCAqZGN0eDsKLSsJ RFJCR19TRUxGVEVTVF9EQVRBICp0ZDsKLSsJaW50IHJ2ID0gMTsKLSsJZGN0eCA9IEZJUFNfZHJi Z19uZXcoMCwgMCk7Ci0rCWlmICghZGN0eCkKLSsJCXJldHVybiAwOwotKwlmb3IgKHRkID0gZHJi Z190ZXN0OyB0ZC0+bmlkICE9IDA7IHRkKyspCi0rCQl7Ci0rCQlpZiAoIWZpcHNfcG9zdF9zdGFy dGVkKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKSkKLSsJCQlyZXR1cm4gMTsK LSsJCWlmICghZmlwc19kcmJnX3NpbmdsZV9rYXQoZGN0eCwgdGQsIDApKQotKwkJCXsKLSsJCQlm aXBzX3Bvc3RfZmFpbGVkKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKTsKLSsJ CQlydiA9IDA7Ci0rCQkJY29udGludWU7Ci0rCQkJfQotKwkJaWYgKCFmaXBzX2RyYmdfZXJyb3Jf Y2hlY2soZGN0eCwgdGQpKQotKwkJCXsKLSsJCQlmaXBzX3Bvc3RfZmFpbGVkKEZJUFNfVEVTVF9E UkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKTsKLSsJCQlydiA9IDA7Ci0rCQkJY29udGludWU7Ci0r CQkJfQotKwkJaWYgKCFmaXBzX3Bvc3Rfc3VjY2VzcyhGSVBTX1RFU1RfRFJCRywgdGQtPm5pZCwg JnRkLT5mbGFncykpCi0rCQkJcmV0dXJuIDA7Ci0rCQl9Ci0rCUZJUFNfZHJiZ19mcmVlKGRjdHgp OwotKwlyZXR1cm4gcnY7Ci0rCX0KLSsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9m aXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5oLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMv Zmlwc19kcmJnX3NlbGZ0ZXN0LmgKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBz X2RyYmdfc2VsZnRlc3QuaC5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTYxOTIyNTE3ICswMTAw Ci0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0LmgJMjAx NS0wMS0wOSAwOTo1MTo1MS41NjE5MjI1MTcgKzAxMDAKLUBAIC0wLDAgKzEsMjMzNSBAQAotKy8q ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3Qu ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ci0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAq IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv dmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlv bi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0 dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9s bG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGlu IHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsg KiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11 c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVy bWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBv cGVuc3NsLWNvcmUub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3Bl blNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAg IHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJp YnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcK LSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNv ZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBp biB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsg KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJ UycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBB UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IK LSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICog U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuCi0rICoKLSsgKi8KLSsKLSsvKiBTZWxmdGVzdCBhbmQgaGVhbHRoIGNoZWNrIGRhdGEgZm9y IHRoZSBTUDgwMC05MCBEUkJHICovCi0rCi0rI2RlZmluZSBfX2ZpcHNfY29uc3RzZWcKLSsKLSsv KiBBRVMtMTI4IHVzZSBkZiBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJ MHg2MSwweDUyLDB4N2MsMHhlMywweDIzLDB4N2QsMHgwYSwweDA3LDB4MTAsMHgwYywweDUwLDB4 MzMsCi0rCTB4YzgsMHhkYiwweGZmLDB4MTIKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9ub25jZVtdID0KLSsJ ewotKwkweDUxLDB4MGQsMHg4NSwweDc3LDB4ZWQsMHgyMiwweDk3LDB4MjgKLSsJfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9k Zl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9Ci0rCXsKLSsJMHg1OSwweDlmLDB4YmIsMHhj ZCwweGQ1LDB4MjUsMHg2OSwweGI1LDB4Y2IsMHhiNSwweDAzLDB4ZmUsCi0rCTB4ZDcsMHhkNyww eDAxLDB4NjcKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9Ci0rCXsKLSsJMHhl ZiwweDg4LDB4NzYsMHgwMSwweGFmLDB4M2MsMHhmZSwweDhiLDB4YWYsMHgyNiwweDA2LDB4OWUs Ci0rCTB4OWEsMHg0NywweDA4LDB4NzYKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRwcltd ID0KLSsJewotKwkweGUyLDB4NzYsMHhmOSwweGY2LDB4M2EsMHhiYSwweDEwLDB4OWYsMHhiZiww eDQ3LDB4MGUsMHg1MSwKLSsJMHgwOSwweGZiLDB4YTMsMHhiNgotKwl9OwotKwotK19fZmlwc19j b25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3ByX2lu dF9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHhkNCwweDk4LDB4OGEsMHg0NiwweDgwLDB4NGMs MHhkYiwweGEzLDB4NTksMHgwMiwweDU3LDB4NTIsCi0rCTB4NjYsMHgxYywweGVhLDB4NWIKLSsJ fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTI4X3VzZV9kZl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPQotKwl7Ci0rCTB4ODgsMHg4YywweDkx LDB4ZDYsMHhiZSwweDU2LDB4NmUsMHgwOCwweDlhLDB4NjIsMHgyYiwweDExLAotKwkweDNmLDB4 NWUsMHgzMSwweDA2Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfZW50cm9weWlucHV0cHIyW10gPQotKwl7Ci0r CTB4YzAsMHg1YywweDZiLDB4OTgsMHgwMSwweDBkLDB4NTgsMHgxOCwweDUxLDB4MTgsMHg5Niww eGFlLAotKwkweGE3LDB4ZTMsMHhhOCwweDY3Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0r c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfcmV0dXJuZWRiaXRz W10gPQotKwl7Ci0rCTB4Y2YsMHgwMSwweGFjLDB4MjIsMHgzMSwweDA2LDB4OGUsMHhmYywweGNl LDB4NTYsMHhlYSwweDI0LAotKwkweDBmLDB4MzgsMHg0MywweGM2Ci0rCX07Ci0rCi0rCi0rLyog QUVTLTEyOCB1c2UgZGYgTm8gUFIgICovCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfZW50cm9weWlucHV0W10gPQotKwl7Ci0rCTB4 MWYsMHg4ZSwweDM0LDB4ODIsMHgwYywweGI3LDB4YmUsMHhjNSwweDAxLDB4M2UsMHhkMCwweGEz LAotKwkweDlkLDB4N2QsMHgxYywweDliCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfbm9uY2VbXSA9Ci0rCXsKLSsJ MHhkNSwweDRkLDB4YmQsMHg0YSwweDkzLDB4N2YsMHhiOCwweDk2Ci0rCX07Ci0rCi0rX19maXBz X2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcGVy c29uYWxpemF0aW9uc3RyaW5nW10gPQotKwl7Ci0rCTB4YWIsMHhkNiwweDNmLDB4MDQsMHhmZSww eDI3LDB4NmIsMHgyZCwweGQ3LDB4YzMsMHgxYywweGYzLAotKwkweDM4LDB4NjYsMHhiYSwweDFi Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzEyOF91c2VfZGZfYWRkaXRpb25hbGlucHV0W10gPQotKwl7Ci0rCTB4ZmUsMHhmNCwweDA5 LDB4YTgsMHhiNywweDczLDB4MjcsMHg5YywweDVmLDB4YTcsMHhlYSwweDQ2LAotKwkweGI1LDB4 ZTIsMHhiMiwweDQxCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfaW50X3JldHVybmVkYml0c1tdID0KLSsJewotKwkw eDQyLDB4ZTQsMHg0ZSwweDdiLDB4MjcsMHhkZCwweGNiLDB4YmMsMHgwYSwweGNmLDB4YTYsMHg2 NywKLSsJMHhlNywweDU3LDB4MTEsMHhiNAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX2VudHJvcHlpbnB1dHJlc2Vl ZFtdID0KLSsJewotKwkweDE0LDB4MjYsMHg2OSwweGQ5LDB4ZjMsMHg2NSwweDAzLDB4ZDYsMHg2 YiwweGI5LDB4NDQsMHgwYiwKLSsJMHhjNywweGM0LDB4OWUsMHgzOQotKwl9OwotKwotK19fZmlw c19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX2Fk ZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0KLSsJewotKwkweDU1LDB4MmUsMHg2MCwweDlhLDB4MDUs MHg3MiwweDhhLDB4YTgsMHhlZiwweDIyLDB4ODEsMHg1YSwKLSsJMHhjOCwweDkzLDB4ZmEsMHg4 NAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18xMjhfdXNlX2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9Ci0rCXsKLSsJMHgzYywweDQwLDB4 YzgsMHhjNCwweDE2LDB4MGMsMHgyMSwweGE0LDB4MzcsMHgyYywweDhmLDB4YTUsCi0rCTB4MDYs MHgwYywweDE1LDB4MmMKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHhl MSwweDNlLDB4OTksMHg5OCwweDg2LDB4NjcsMHgwYiwweDYzLDB4N2IsMHhiZSwweDNmLDB4ODgs Ci0rCTB4NDYsMHg4MSwweGM3LDB4MTkKLSsJfTsKLSsKLSsKLSsvKiBBRVMtMTkyIHVzZSBkZiBQ UiAgKi8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTkyX3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJMHgyYiwweDRlLDB4OGIsMHhl MSwweGYxLDB4MzQsMHg4MCwweDU2LDB4ODEsMHhmOSwweDc0LDB4ZWMsCi0rCTB4MTcsMHg0NCww eDJhLDB4ZjEsMHgxNCwweGIwLDB4YmYsMHg5NywweDM5LDB4YjcsMHgwNCwweDdkCi0rCX07Ci0r Ci0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91 c2VfZGZfcHJfbm9uY2VbXSA9Ci0rCXsKLSsJMHhkNiwweDlkLDB4ZWIsMHgxNCwweDRlLDB4NmMs MHgzMCwweDFlLDB4MzksMHg1NSwweDczLDB4ZDAsCi0rCTB4ZDEsMHg4MCwweDc4LDB4ZmEKLSsJ fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTkyX3VzZV9kZl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9Ci0rCXsKLSsJMHhmYywweDQz LDB4NGEsMHhmOCwweDlhLDB4NTUsMHhiMywweDUzLDB4ODMsMHhlMiwweDE4LDB4MTYsCi0rCTB4 MGMsMHhkYywweGNkLDB4NWUsMHg0ZiwweGEwLDB4MDMsMHgwMSwweDJiLDB4OWYsMHhlNCwweGQ1 LAotKwkweDdkLDB4NDksMHhmMCwweDQxLDB4OWUsMHgzZCwweDk5LDB4MDQKLSsJfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9k Zl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9Ci0rCXsKLSsJMHg1ZSwweDlmLDB4NDksMHg2ZiwweDIx LDB4OGIsMHgxZCwweDMyLDB4ZDUsMHg4NCwweDVjLDB4YWMsCi0rCTB4YWYsMHhkZiwweGU0LDB4 NzksMHg5ZSwweGFmLDB4YTksMHg4MiwweGQwLDB4ZjgsMHg0ZiwweGNiLAotKwkweDY5LDB4MTAs MHgwYSwweDdlLDB4ODEsMHg1NywweGI1LDB4MzYKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcK LStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9lbnRyb3B5aW5w dXRwcltdID0KLSsJewotKwkweGQ0LDB4ODEsMHgwYywweGQ3LDB4NjYsMHgzOSwweGVjLDB4NDIs MHg1MywweDg3LDB4NDEsMHhhNSwKLSsJMHgxZSwweDdkLDB4ODAsMHg5MSwweDhlLDB4YmIsMHhl ZCwweGFjLDB4MTQsMHgwMiwweDFhLDB4ZDUKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9pbnRfcmV0dXJuZWRi aXRzW10gPQotKwl7Ci0rCTB4ZGYsMHgxZCwweDM5LDB4NDUsMHg3YywweDliLDB4YzYsMHgyYiww eDdkLDB4OGMsMHg5MywweGU5LAotKwkweDE5LDB4MzAsMHg2YiwweDY3Ci0rCX07Ci0rCi0rX19m aXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZf cHJfYWRkaXRpb25hbGlucHV0MltdID0KLSsJewotKwkweDAwLDB4NzEsMHgyNywweDRlLDB4ZDMs MHgxNCwweGYxLDB4MjAsMHg3ZiwweDRhLDB4NDEsMHgzMiwKLSsJMHgyYSwweDk3LDB4MTEsMHg0 MywweDhmLDB4NGEsMHgxNSwweDdiLDB4OWIsMHg1MSwweDc5LDB4ZGEsCi0rCTB4NDksMHgzZCww eGRlLDB4ZTgsMHhiYywweDkzLDB4OTEsMHg5OQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwot K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX2VudHJvcHlpbnB1 dHByMltdID0KLSsJewotKwkweDkwLDB4ZWUsMHg3NiwweGExLDB4NDUsMHg4ZCwweGI3LDB4NDAs MHhiMCwweDExLDB4YmYsMHhkMCwKLSsJMHg2NSwweGQ3LDB4M2MsMHg3YywweDRmLDB4MjAsMHgz ZiwweDRlLDB4MTEsMHg5ZCwweGIzLDB4NWUKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9yZXR1cm5lZGJpdHNb XSA9Ci0rCXsKLSsJMHgyNCwweDNiLDB4MjAsMHhhNCwweDM3LDB4NjYsMHhiYSwweDcyLDB4Mzks MHgzZiwweGNmLDB4M2MsCi0rCTB4N2UsMHgxYSwweDJiLDB4ODMKLSsJfTsKLSsKLSsKLSsvKiBB RVMtMTkyIHVzZSBkZiBObyBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJMHg4 ZCwweDc0LDB4YTQsMHg1MCwweDFhLDB4MDIsMHg2OCwweDBjLDB4MmEsMHg2OSwweGM0LDB4ODIs Ci0rCTB4M2IsMHhiYiwweGRhLDB4MGUsMHg3ZiwweDc3LDB4YTMsMHgxNywweDc4LDB4NTcsMHhi MiwweDdiCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYWVzXzE5Ml91c2VfZGZfbm9uY2VbXSA9Ci0rCXsKLSsJMHg3NSwweGQ1LDB4MWYsMHhh YywweGE0LDB4OGQsMHg0MiwweDc4LDB4ZDcsMHg2OSwweDg2LDB4OWQsCi0rCTB4NzcsMHhkNyww eDQxLDB4MGUKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9Ci0rCXsKLSsJ MHg0ZSwweDMzLDB4NDEsMHgzYywweDljLDB4YzIsMHhkMiwweDUzLDB4YWYsMHg5MCwweGVhLDB4 Y2YsCi0rCTB4MTksMHg1MCwweDFlLDB4ZTYsMHg2ZiwweDYzLDB4YzgsMHgzMiwweDIyLDB4ZGMs MHgwNywweDY1LAotKwkweDljLDB4ZDMsMHhmOCwweDMwLDB4OWUsMHhlZCwweDM1LDB4NzAKLSsJ fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTkyX3VzZV9kZl9hZGRpdGlvbmFsaW5wdXRbXSA9Ci0rCXsKLSsJMHg1ZCwweDhiLDB4OGMsMHhj MSwweGRmLDB4MGUsMHgwMiwweDc4LDB4ZmIsMHgxOSwweGI4LDB4NjksCi0rCTB4NzgsMHg0ZSww eDljLDB4NTIsMHhiYywweGM3LDB4MjAsMHhjOSwweGU2LDB4NWUsMHg3NywweDIyLAotKwkweDI4 LDB4M2QsMHgwYywweDllLDB4NjgsMHhhOCwweDQ1LDB4ZDcKLSsJfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9pbnRfcmV0 dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4ZDUsMHhlNywweDA4LDB4YzUsMHgxOSwweDk5LDB4ZDUs MHgzMSwweDAzLDB4MGEsMHg3NCwweGI2LAotKwkweGI3LDB4ZWQsMHhlOSwweGVhCi0rCX07Ci0r Ci0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91 c2VfZGZfZW50cm9weWlucHV0cmVzZWVkW10gPQotKwl7Ci0rCTB4OWMsMHgyNiwweGRhLDB4ZjEs MHhhYywweGQ5LDB4NWEsMHhkNiwweGE4LDB4NjUsMHhmNSwweDAyLAotKwkweDhmLDB4ZGMsMHhh MiwweDA5LDB4NTQsMHhhNiwweGUyLDB4YTQsMHhkZSwweDMyLDB4ZTAsMHgwMQotKwl9OwotKwot K19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNl X2RmX2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0KLSsJewotKwkweDliLDB4OTAsMHhiMCwweDNh LDB4MGUsMHgzYSwweDgwLDB4MDcsMHg0YSwweGY0LDB4ZGEsMHg3NiwKLSsJMHgyOCwweDMwLDB4 M2MsMHhlZSwweDU0LDB4MWIsMHg5NCwweDU5LDB4NTEsMHg0MywweDU2LDB4NzcsCi0rCTB4YWYs MHg4OCwweGRkLDB4NjMsMHg4OSwweDQ3LDB4MDYsMHg2NQotKwl9OwotKwotK19fZmlwc19jb25z dHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX2FkZGl0aW9u YWxpbnB1dDJbXSA9Ci0rCXsKLSsJMHgzYywweDExLDB4NjQsMHg3YSwweDk2LDB4ZjUsMHhkOCww eGI4LDB4YWUsMHhkNiwweDcwLDB4NGUsCi0rCTB4MTYsMHg5NiwweGRlLDB4ZTksMHg2MiwweGJj LDB4ZWUsMHgyOCwweDJmLDB4MjYsMHhhNiwweGYwLAotKwkweDU2LDB4ZWYsMHhhMywweGYxLDB4 NmIsMHhhMSwweGIxLDB4NzcKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJ MHgwYiwweGUyLDB4NTYsMHgwMywweDFlLDB4ZGIsMHgyYywweDZkLDB4N2YsMHgxYiwweDE1LDB4 NTgsCi0rCTB4MWEsMHhmOSwweDEzLDB4MjgKLSsJfTsKLSsKLSsKLSsvKiBBRVMtMjU2IHVzZSBk ZiBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMjU2X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJMHg2MSwweDY4LDB4ZmMs MHgxYSwweGYwLDB4YjUsMHg5NSwweDZiLDB4ODUsMHgwOSwweDliLDB4NzQsCi0rCTB4M2YsMHgx MywweDc4LDB4NDksMHgzYiwweDg1LDB4ZWMsMHg5MywweDEzLDB4M2IsMHhhOSwweDRmLAotKwkw eDk2LDB4YWIsMHgyYywweGU0LDB4YzgsMHg4ZiwweGRkLDB4NmEKLSsJfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9u b25jZVtdID0KLSsJewotKwkweGFkLDB4ZDIsMHhiYiwweGJhLDB4YjcsMHg2NSwweDg5LDB4YzMs MHgyMSwweDZjLDB4NTUsMHgzMywKLSsJMHgyYiwweDM2LDB4ZmYsMHhhNAotKwl9OwotKwotK19f Zmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2Rm X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0KLSsJewotKwkweDZlLDB4Y2EsMHhlNywweDIw LDB4NzIsMHhkMywweDg0LDB4NWEsMHgzMiwweGQzLDB4NGIsMHgyNCwKLSsJMHg3MiwweGM0LDB4 NjMsMHgyYiwweDlkLDB4MTIsMHgyNCwweDBjLDB4MjMsMHgyNiwweDhlLDB4ODMsCi0rCTB4MTYs MHgzNywweDBiLDB4ZDEsMHgwNiwweDRmLDB4NjgsMHg2ZAotKwl9OwotKwotK19fZmlwc19jb25z dHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX2FkZGl0 aW9uYWxpbnB1dFtdID0KLSsJewotKwkweDdlLDB4MDgsMHg0YSwweGJiLDB4ZTMsMHgyMSwweDdj LDB4YzksMHgyMywweGQyLDB4ZjgsMHhiMCwKLSsJMHg3MywweDk4LDB4YmEsMHg4NCwweDc0LDB4 MjMsMHhhYiwweDA2LDB4OGEsMHhlMiwweDIyLDB4ZDMsCi0rCTB4N2IsMHhjZSwweDliLDB4ZDIs MHg0YSwweDc2LDB4YjgsMHhkZQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX2VudHJvcHlpbnB1dHByW10gPQot Kwl7Ci0rCTB4MGIsMHgyMywweGFmLDB4ZGYsMHhmMSwweDYyLDB4ZDcsMHhkMywweDQzLDB4OTcs MHhmOCwweDc3LAotKwkweDA0LDB4YTgsMHg0MiwweDIwLDB4YmQsMHhmNiwweDBmLDB4YzEsMHgx NywweDJmLDB4OWYsMHg1NCwKLSsJMHhiYiwweDU2LDB4MTcsMHg4NiwweDY4LDB4MGUsMHhiYSww eGE5Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgYWVzXzI1Nl91c2VfZGZfcHJfaW50X3JldHVybmVkYml0c1tdID0KLSsJewotKwkweDMxLDB4 OGUsMHhhZCwweGFmLDB4NDAsMHhlYiwweDZiLDB4NzQsMHgzMSwweDQ2LDB4ODAsMHhjNywKLSsJ MHgxNywweGFiLDB4M2MsMHg3YQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9 Ci0rCXsKLSsJMHg5NCwweDZiLDB4YzksMHg5ZiwweGFiLDB4OGQsMHhjNSwweGVjLDB4NzEsMHg4 OCwweDFkLDB4MDAsCi0rCTB4OGMsMHg4OSwweDY4LDB4ZTQsMHhjOCwweDA3LDB4NzcsMHgzNiww eDE3LDB4NmQsMHg3OSwweDc4LAotKwkweGM3LDB4MDYsMHg0ZSwweDk5LDB4MDQsMHgyOCwweDI5 LDB4YzMKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBhZXNfMjU2X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9Ci0rCXsKLSsJMHhiZiww eDZjLDB4NTksMHgyYSwweDBkLDB4NDQsMHgwZiwweGFlLDB4OWEsMHg1ZSwweDAzLDB4NzMsCi0r CTB4ZDgsMHhhNiwweGUxLDB4Y2YsMHgyNSwweDYxLDB4MzgsMHgyNCwweDg2LDB4OWUsMHg1Myww eGU4LAotKwkweGE0LDB4ZGYsMHg1NiwweGY0LDB4MDYsMHgwNywweDljLDB4MGYKLSsJfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3Vz ZV9kZl9wcl9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHgyMiwweDRhLDB4YjQsMHhiOCwweGI2 LDB4ZWUsMHg3ZCwweGIxLDB4OWUsMHhjOSwweGY5LDB4YTAsCi0rCTB4ZDksMHhlMiwweDk3LDB4 MDAKLSsJfTsKLSsKLSsKLSsvKiBBRVMtMjU2IHVzZSBkZiBObyBQUiAgKi8KLStfX2ZpcHNfY29u c3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9lbnRyb3B5 aW5wdXRbXSA9Ci0rCXsKLSsJMHhhNSwweDNlLDB4MzcsMHgxMCwweDE3LDB4NDMsMHg5MSwweDkz LDB4NTksMHgxZSwweDQ3LDB4NTAsCi0rCTB4ODcsMHhhYSwweGRkLDB4ZDUsMHhjMSwweGMzLDB4 ODYsMHhjZCwweGNhLDB4MGQsMHhkYiwweDY4LAotKwkweGUwLDB4MDIsMHhkOCwweDBmLDB4ZGMs MHg0MCwweDFhLDB4NDcKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9ub25jZVtdID0KLSsJewotKwkweGE5LDB4NGQs MHhhNSwweDVhLDB4ZmQsMHhjNSwweDBjLDB4ZTUsMHgxYywweDlhLDB4M2IsMHg4YSwKLSsJMHg0 YywweDQ0LDB4ODQsMHg0MAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0K LSsJewotKwkweDhiLDB4NTIsMHhhMiwweDRhLDB4OTMsMHhjMywweDRlLDB4YTcsMHgxZSwweDFj LDB4YTcsMHgwNSwKLSsJMHhlYiwweDgyLDB4OWIsMHhhNiwweDVkLDB4ZTQsMHhkNCwweGUwLDB4 N2YsMHhhMywweGQ4LDB4NmIsCi0rCTB4MzcsMHg4NCwweDVmLDB4ZjEsMHhjNywweGQ1LDB4ZjYs MHhkMgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18yNTZfdXNlX2RmX2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweDIwLDB4ZjQs MHgyMiwweGVkLDB4ZjgsMHg1YywweGExLDB4NmEsMHgwMSwweGNmLDB4YmUsMHg1ZiwKLSsJMHg4 ZCwweDZjLDB4OTQsMHg3ZiwweGFlLDB4MTIsMHhhOCwweDU3LDB4ZGIsMHgyYSwweGE5LDB4YmYs Ci0rCTB4YzcsMHhiMywweDY1LDB4ODEsMHg4MCwweDhkLDB4MGQsMHg0NgotKwl9OwotKwotK19f Zmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2Rm X2ludF9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHg0ZSwweDQ0LDB4ZmQsMHhmMywweDllLDB4 MjksMHhhMiwweGI4LDB4MGYsMHg1ZCwweDZjLDB4ZTEsCi0rCTB4MjgsMHgwYywweDNiLDB4YzEK LSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMjU2X3VzZV9kZl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHhkZCwweDQwLDB4 ZTUsMHg5OCwweDdiLDB4MjcsMHgxNiwweDczLDB4MTUsMHg2OCwweGQyLDB4NzYsCi0rCTB4YmYs MHgwYywweDY3LDB4MTUsMHg3NSwweDc5LDB4MDMsMHhkMywweGRlLDB4ZGUsMHg5MSwweDQ2LAot KwkweDQyLDB4ZGQsMHhkNCwweDY3LDB4YzgsMHg3OSwweGM4LDB4MWUKLSsJfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9h ZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHg3ZiwweGQ4LDB4MWYsMHhiZCwweDJh LDB4YjUsMHgxYywweDExLDB4NWQsMHg4MywweDRlLDB4OTksCi0rCTB4ZjYsMHg1YywweGE1LDB4 NDAsMHgyMCwweGVkLDB4MzgsMHg4ZSwweGQ1LDB4OWUsMHhlMCwweDc1LAotKwkweDkzLDB4ZmUs MHgxMiwweDVlLDB4NWQsMHg3MywweGZiLDB4NzUKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcK LStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9hZGRpdGlvbmFsaW5w dXQyW10gPQotKwl7Ci0rCTB4Y2QsMHgyYywweGZmLDB4MTQsMHg2OSwweDNlLDB4NGMsMHg5ZSww eGZkLDB4ZmUsMHgyNiwweDBkLAotKwkweGU5LDB4ODYsMHgwMCwweDQ5LDB4MzAsMHhiYSwweGIx LDB4YzYsMHg1MCwweDU3LDB4NzcsMHgyYSwKLSsJMHg2MiwweDM5LDB4MmMsMHgzYiwweDc0LDB4 ZWIsMHhjOSwweDBkCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4NGYs MHg3OCwweGJlLDB4YjksMHg0ZCwweDk3LDB4OGMsMHhlOSwweGQwLDB4OTcsMHhmZSwweGFkLAot KwkweGZhLDB4ZmQsMHgzNSwweDVlCi0rCX07Ci0rCi0rCi0rLyogQUVTLTEyOCBubyBkZiBQUiAg Ki8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4 X25vX2RmX3ByX2VudHJvcHlpbnB1dFtdID0KLSsJewotKwkweDlhLDB4MjUsMHg2NSwweDEwLDB4 NjcsMHhkNSwweGI2LDB4NmIsMHg3MCwweGExLDB4YjMsMHhhNCwKLSsJMHg0MywweDk1LDB4ODAs MHhjMCwweDg0LDB4MGEsMHg3OSwweGIwLDB4ODgsMHg3NCwweGYyLDB4YmYsCi0rCTB4MzEsMHg2 YywweDMzLDB4MzgsMHgwYiwweDAwLDB4YjIsMHg1YQotKwl9OwotKwotK19fZmlwc19jb25zdHNl ZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfbm9uY2VbXSA9 Ci0rCXsKLSsJMHg3OCwweDQ3LDB4NmIsMHhmNywweDkwLDB4OGUsMHg4NywweGYxCi0rCX07Ci0r Ci0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9u b19kZl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9Ci0rCXsKLSsJMHhmNywweDIyLDB4MWQs MHgzYSwweGJlLDB4MWQsMHhjYSwweDMyLDB4MWIsMHhiZCwweDg3LDB4MGMsCi0rCTB4NTEsMHgy NCwweDE5LDB4ZWUsMHhhMywweDIzLDB4MDksMHg2MywweDMzLDB4M2QsMHhhOCwweDBjLAotKwkw eDFjLDB4ZmEsMHg0MiwweDg5LDB4Y2MsMHg2ZiwweGEwLDB4YTgKLSsJfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX2Fk ZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweGM5LDB4ZTAsMHg4MCwweGJmLDB4OGMsMHg0NSww eDU4LDB4MzksMHhmZiwweDAwLDB4YWIsMHgwMiwKLSsJMHg0YywweDNlLDB4M2EsMHg5NSwweDli LDB4ODAsMHhhOCwweDIxLDB4MmEsMHhlZSwweGJhLDB4NzMsCi0rCTB4YjEsMHhkOSwweGNmLDB4 MjgsMHhmNiwweDhmLDB4OWIsMHgxMgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfZW50cm9weWlucHV0cHJbXSA9 Ci0rCXsKLSsJMHg0YywweGE4LDB4YzUsMHhmMCwweDU5LDB4OWUsMHhhNiwweDhkLDB4MjYsMHg1 MywweGQ3LDB4OGEsCi0rCTB4YTksMHhkOCwweGY3LDB4ZWQsMHhiMiwweGY5LDB4MTIsMHg0Miww eGUxLDB4ZTUsMHhiZCwweGU3LAotKwkweGU3LDB4MWQsMHg3NCwweDk5LDB4MDAsMHg5ZCwweDMx LDB4M2UKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBhZXNfMTI4X25vX2RmX3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHhlMiww eGFjLDB4MjAsMHhmMCwweDgwLDB4ZTcsMHhiYywweDdlLDB4OWMsMHg3YiwweDY1LDB4NzEsCi0r CTB4YWYsMHgxOSwweDMyLDB4MTYKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9 Ci0rCXsKLSsJMHgzMiwweDdmLDB4MzgsMHg4YiwweDczLDB4MGEsMHg3OCwweDgzLDB4ZGMsMHgz MCwweGJlLDB4OWYsCi0rCTB4MTAsMHgxZiwweGY1LDB4MWYsMHhjYSwweDAwLDB4YjUsMHgwZCww eGQ2LDB4OWQsMHg2MCwweDgzLAotKwkweDUxLDB4NTQsMHg3ZCwweDM4LDB4MjMsMHgzYSwweDUy LDB4NTAKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBhZXNfMTI4X25vX2RmX3ByX2VudHJvcHlpbnB1dHByMltdID0KLSsJewotKwkweDE4LDB4 NjEsMHg1MywweDU2LDB4ZWQsMHhlZCwweGQ3LDB4MjAsMHhmYiwweDcxLDB4MDQsMHg3YSwKLSsJ MHhiMiwweGFjLDB4YzEsMHgyOCwweGNkLDB4ZjIsMHhjMiwweGZjLDB4YWEsMHhiMSwweDA2LDB4 MDcsCi0rCTB4ZTksMHg0NiwweDk1LDB4MDIsMHg0OCwweDAxLDB4NzgsMHhmOQotKwl9OwotKwot K19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9f ZGZfcHJfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4MjksMHhjOCwweDFiLDB4MTUsMHhiMSww eGQxLDB4YzIsMHhmNiwweDcxLDB4ODYsMHg2OCwweDMzLAotKwkweDU3LDB4ODIsMHgzMywweGFm Ci0rCX07Ci0rCi0rCi0rLyogQUVTLTEyOCBubyBkZiBObyBQUiAgKi8KLStfX2ZpcHNfY29uc3Rz ZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2VudHJvcHlpbnB1 dFtdID0KLSsJewotKwkweGM5LDB4YzUsMHg3OSwweGJjLDB4ZTgsMHhjNSwweDE5LDB4ZDgsMHhi YywweDY2LDB4NzMsMHg2NywKLSsJMHhmNiwweGQzLDB4NzIsMHhhYSwweGE2LDB4MTYsMHhiOCww eDUwLDB4YjcsMHg0NywweDNhLDB4NDIsCi0rCTB4YWIsMHhmNCwweDE2LDB4YjIsMHg5NiwweGQy LDB4YjYsMHg2MAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18xMjhfbm9fZGZfbm9uY2VbXSA9Ci0rCXsKLSsJMHg1ZiwweGJmLDB4OTcs MHgwYywweDRiLDB4YTQsMHg4NywweDEzCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wZXJzb25hbGl6YXRpb25zdHJp bmdbXSA9Ci0rCXsKLSsJMHhjZSwweGZiLDB4N2IsMHgzZiwweGQ0LDB4NmIsMHgyOSwweDBkLDB4 NjksMHgwNiwweGZmLDB4YmIsCi0rCTB4ZjIsMHhlNSwweGM2LDB4NmMsMHgwYSwweDEwLDB4YTAs MHhjZiwweDFhLDB4NDgsMHhjNywweDhiLAotKwkweDNjLDB4MTYsMHg4OCwweGVkLDB4NTAsMHgx MywweDgxLDB4Y2UKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweDRi LDB4MjIsMHg0NiwweDE4LDB4MDIsMHg3YiwweGQyLDB4MWIsMHgyMiwweDQyLDB4N2MsMHgzNywK LSsJMHhkOSwweGY2LDB4ZTgsMHg5YiwweDEyLDB4MzAsMHg1ZiwweGU5LDB4OTAsMHhlOCwweDA4 LDB4MjQsCi0rCTB4NGYsMHgwNiwweDY2LDB4ZGIsMHgxOSwweDJiLDB4MTMsMHg5NQotKwl9Owot KwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhf bm9fZGZfaW50X3JldHVybmVkYml0c1tdID0KLSsJewotKwkweDJlLDB4OTYsMHg3MCwweDY0LDB4 ZmEsMHhkZiwweGRmLDB4NTcsMHhiNSwweDgyLDB4ZWUsMHhkNiwKLSsJMHhlZCwweDNlLDB4NjUs MHhjMgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xMjhfbm9fZGZfZW50cm9weWlucHV0cmVzZWVkW10gPQotKwl7Ci0rCTB4MjYsMHhj MCwweDcyLDB4MTYsMHgzYSwweDRiLDB4YjcsMHg5OSwweGQ0LDB4MDcsMHhhZiwweDY2LAotKwkw eDYyLDB4MzYsMHg5NiwweGE0LDB4NTEsMHgxNywweGZhLDB4MDcsMHg4YiwweDE3LDB4NWUsMHhh MSwKLSsJMHgyZiwweDNjLDB4MTAsMHhlNywweDkwLDB4ZDAsMHg0NiwweDAwCi0rCX07Ci0rCi0r X19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19k Zl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHg4MywweDM5LDB4MzcsMHg3Yiww eDAyLDB4MDYsMHhkMiwweDEyLDB4MTMsMHg4ZCwweDhiLDB4ZjIsCi0rCTB4ZjAsMHhmNiwweDI2 LDB4ZWIsMHhhNCwweDIyLDB4N2IsMHhjMiwweGU3LDB4YmEsMHg3OSwweGU0LAotKwkweDNiLDB4 NzcsMHg1ZCwweDRkLDB4NDcsMHhiMiwweDJkLDB4YjQKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2FkZGl0aW9uYWxp bnB1dDJbXSA9Ci0rCXsKLSsJMHgwYiwweGI5LDB4NjcsMHgzNywweGRiLDB4ODMsMHhkZiwweGNh LDB4ODEsMHg4YiwweGY5LDB4M2YsCi0rCTB4ZjEsMHgxMSwweDFiLDB4MmYsMHhmMCwweDYxLDB4 YTYsMHhkZiwweGJhLDB4YTMsMHhiMSwweGFjLAotKwkweGQzLDB4ZTYsMHgwOSwweGI4LDB4MmMs MHg2YSwweDY3LDB4ZDYKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3JldHVybmVkYml0c1tdID0KLSsJewotKwkweDFl LDB4YTcsMHhhNCwweGU0LDB4ZTEsMHhhNiwweDdjLDB4NjksMHg5YSwweDQ0LDB4NmMsMHgzNiwK LSsJMHg4MSwweDM3LDB4MTksMHhkNAotKwl9OwotKwotKwotKy8qIEFFUy0xOTIgbm8gZGYgUFIg ICovCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5 Ml9ub19kZl9wcl9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJMHg5ZCwweDJjLDB4ZDIsMHg1NSww eDY2LDB4ZWEsMHhlMCwweGJlLDB4MTgsMHhiNywweDc2LDB4ZTcsCi0rCTB4NzMsMHgzNSwweGQ4 LDB4MWYsMHhhZCwweDNhLDB4ZTMsMHg4MSwweDBlLDB4OTIsMHhkMCwweDYxLAotKwkweGM5LDB4 MTIsMHgyNiwweGY2LDB4MWMsMHhkZiwweGZlLDB4NDcsMHhhYSwweGZlLDB4N2QsMHg1YSwKLSsJ MHgxNywweDFmLDB4OGQsMHg5YQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfbm9uY2VbXSA9Ci0rCXsKLSsJMHg0 NCwweDgyLDB4ZWQsMHhlOCwweDRjLDB4MjgsMHg1YSwweDE0LDB4ZmYsMHg4OCwweDhkLDB4MTks Ci0rCTB4NjEsMHg1YywweGVlLDB4MGYKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3ByX3BlcnNvbmFsaXphdGlvbnN0 cmluZ1tdID0KLSsJewotKwkweDQ3LDB4ZDcsMHg5YiwweDk5LDB4YWEsMHhjYiwweGU3LDB4ZDIs MHg1NywweDY2LDB4MmMsMHhlMSwKLSsJMHg3OCwweGQ2LDB4MmMsMHhlYSwweGEzLDB4MjMsMHg1 ZiwweDJhLDB4YzEsMHgzYSwweGYwLDB4YTQsCi0rCTB4MjAsMHgzYiwweGZhLDB4MDcsMHhkNSww eDA1LDB4MDIsMHhlNCwweDU3LDB4MDEsMHhiNiwweDEwLAotKwkweDU3LDB4MmUsMHhlNywweDU1 Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzE5Ml9ub19kZl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9Ci0rCXsKLSsJMHg0YiwweDc0LDB4 MGIsMHg0MCwweGNlLDB4NmIsMHhjMiwweDZhLDB4MjQsMHhiNCwweGYzLDB4YWQsCi0rCTB4N2Es MHhhNSwweDdhLDB4YTIsMHgxNSwweGUyLDB4YzgsMHg2MSwweDE1LDB4YzYsMHhiNywweDg1LAot KwkweDY5LDB4MTEsMHhhZCwweDdiLDB4MTQsMHhkMiwweGY2LDB4MTIsMHhhMSwweDk1LDB4NWQs MHgzZiwKLSsJMHhlMiwweGQwLDB4MGMsMHgyZgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwot K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfZW50cm9weWlucHV0 cHJbXSA9Ci0rCXsKLSsJMHgwYywweDljLDB4YWQsMHgwNSwweGVlLDB4YWUsMHg0OCwweDIzLDB4 ODksMHg1OSwweGExLDB4OTQsCi0rCTB4ZDcsMHhkOCwweDc1LDB4ZDUsMHg1NCwweDkzLDB4Yzcs MHg0YSwweGQ5LDB4MjYsMHhkZSwweGViLAotKwkweGJhLDB4YjAsMHg3ZSwweDMwLDB4MWQsMHg1 ZiwweDY5LDB4NDAsMHg5YywweDNiLDB4MTcsMHg1OCwKLSsJMHgxZCwweDMwLDB4YjMsMHg3OAot Kwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18xOTJfbm9fZGZfcHJfaW50X3JldHVybmVkYml0c1tdID0KLSsJewotKwkweGY3LDB4OTMsMHhi MCwweDZkLDB4NzcsMHg4MywweGQ1LDB4MzgsMHgwMSwweGUxLDB4NTIsMHg0MCwKLSsJMHg3ZSww eDNlLDB4MGMsMHgyNgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfYWRkaXRpb25hbGlucHV0MltdID0KLSsJewot KwkweGJjLDB4NGIsMHgzNywweDQ0LDB4MWMsMHhjNSwweDQ1LDB4NWYsMHg4ZiwweDUxLDB4NjIs MHg4YSwKLSsJMHg4NSwweDMwLDB4MWQsMHg3YywweGU0LDB4Y2YsMHhmNywweDQ0LDB4Y2UsMHgz MiwweDNlLDB4NTcsCi0rCTB4OTUsMHhhNCwweDJhLDB4ZGYsMHhmZCwweDllLDB4MzgsMHg0MSww eGIzLDB4ZjYsMHhjNSwweGVlLAotKwkweDBjLDB4NGIsMHhlZSwweDZlCi0rCX07Ci0rCi0rX19m aXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9w cl9lbnRyb3B5aW5wdXRwcjJbXSA9Ci0rCXsKLSsJMHhlYywweGFmLDB4ZjYsMHg0ZiwweGIxLDB4 YTAsMHg1NCwweGI1LDB4NWIsMHhlMywweDQ2LDB4YjAsCi0rCTB4NzYsMHg1YSwweDdjLDB4M2Ys MHg3YiwweDk0LDB4NjksMHgyMSwweDUxLDB4MDIsMHhlNSwweDlmLAotKwkweDA0LDB4NTksMHgw MiwweDk4LDB4YzYsMHg0MywweDJjLDB4Y2MsMHgyNiwweDRjLDB4ODcsMHg2YiwKLSsJMHg4ZSww eDBhLDB4ODMsMHhkZgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4 NzQsMHg0NSwweGZiLDB4NTMsMHg4NCwweDk2LDB4YmUsMHhmZiwweDE1LDB4Y2MsMHg0MSwweDkx LAotKwkweGI5LDB4YTEsMHgyMSwweDY4Ci0rCX07Ci0rCi0rCi0rLyogQUVTLTE5MiBubyBkZiBO byBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMTkyX25vX2RmX2VudHJvcHlpbnB1dFtdID0KLSsJewotKwkweDNjLDB4N2QsMHhiNSwweGUw LDB4NTQsMHhkOSwweDZlLDB4OGMsMHhhOSwweDg2LDB4Y2UsMHg0ZSwKLSsJMHg2YiwweGFmLDB4 ZWIsMHgyZiwweGU3LDB4NzUsMHhlMCwweDhiLDB4YTQsMHgzYiwweDA3LDB4ZmUsCi0rCTB4YmUs MHgzMywweDc1LDB4OTMsMHg4MCwweDI3LDB4YjUsMHgyOSwweDQ3LDB4OGIsMHhjNywweDI4LAot KwkweDk0LDB4YzMsMHg1OSwweDYzCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9ub25jZVtdID0KLSsJewotKwkweDQz LDB4ZjEsMHg3ZCwweGI4LDB4YzMsMHhmZSwweGQwLDB4MjMsMHg2YiwweGI0LDB4OTIsMHhkYiwK LSsJMHgyOSwweGZkLDB4NDUsMHg3MQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcGVyc29uYWxpemF0aW9uc3RyaW5n W10gPQotKwl7Ci0rCTB4OWYsMHgyNCwweDI5LDB4OTksMHg5ZSwweDAxLDB4YWIsMHhlOSwweDE5 LDB4ZDgsMHgyMywweDA4LAotKwkweGI3LDB4ZDYsMHg3ZSwweDhjLDB4YzAsMHg5ZSwweDdmLDB4 NmUsMHg1YiwweDMzLDB4MjAsMHg5NiwKLSsJMHgwYiwweDIzLDB4MmMsMHhhNSwweDZhLDB4Zjgs MHgxYiwweDA0LDB4MjYsMHhkYiwweDJlLDB4MmIsCi0rCTB4M2IsMHg4OCwweGNlLDB4MzUKLSsJ fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTkyX25vX2RmX2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweDk0LDB4ZTksMHg3YywweDNk LDB4YTcsMHhkYiwweDYwLDB4ODMsMHgxZiwweDk4LDB4M2YsMHgwYiwKLSsJMHg4OCwweDU5LDB4 NTcsMHg1MSwweDg4LDB4OWYsMHg3NiwweDQ5LDB4OWYsMHhhNiwweGRhLDB4NzEsCi0rCTB4MWQs MHgwZCwweDQ3LDB4MTYsMHg2MywweGM1LDB4NjgsMHhlNCwweDVkLDB4MzksMHg2OSwweGIzLAot KwkweDNlLDB4YmUsMHhkNCwweDhlCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9pbnRfcmV0dXJuZWRiaXRzW10gPQot Kwl7Ci0rCTB4ZjksMHhkNywweGFkLDB4NjksMHhhYiwweDhmLDB4MjMsMHg1NiwweDcwLDB4MTcs MHg0ZiwweDJhLAotKwkweDQ1LDB4ZTcsMHg0YSwweGM1Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9lbnRyb3B5aW5w dXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHhhNiwweDcxLDB4NmEsMHgzZCwweGJhLDB4ZDEsMHhlOCww eDY2LDB4YTYsMHhlZiwweGIyLDB4MGUsCi0rCTB4YTgsMHg5YywweGFhLDB4NGUsMHhhZiwweDE3 LDB4ODksMHg1MCwweDAwLDB4ZGEsMHhhMSwweGIxLAotKwkweDBiLDB4YTQsMHhkOSwweDM1LDB4 ODksMHhjOCwweGU1LDB4YjAsMHhkOSwweGI3LDB4YzQsMHgzMywKLSsJMHg5YiwweGNiLDB4N2Us MHg3NQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xOTJfbm9fZGZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPQotKwl7Ci0rCTB4Mjcs MHgyMSwweGZjLDB4YzIsMHhiZCwweGYzLDB4M2MsMHhjZSwweGMzLDB4Y2EsMHhjMSwweDAxLAot KwkweGUwLDB4ZmYsMHg5MywweDEyLDB4N2QsMHg1NCwweDQyLDB4ZTMsMHg5ZiwweDAzLDB4ZGYs MHgyNywKLSsJMHgwNCwweDA3LDB4M2MsMHg1MywweDdmLDB4YTgsMHg2NiwweGM4LDB4OTcsMHg0 YiwweDYxLDB4NDAsCi0rCTB4NWQsMHg3YSwweDI1LDB4NzkKLSsJfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX2FkZGl0aW9u YWxpbnB1dDJbXSA9Ci0rCXsKLSsJMHgyZCwweDhlLDB4MTYsMHg1ZCwweDBiLDB4OWYsMHhlYiww eGFhLDB4ZDYsMHhlYywweDI4LDB4NzEsCi0rCTB4N2MsMHgwYiwweGMxLDB4MWQsMHhkNCwweDQ0 LDB4MTksMHg0NywweGZkLDB4MWQsMHg3YywweGU1LAotKwkweGYzLDB4MjcsMHhlMSwweGI2LDB4 NzIsMHgwYSwweGUwLDB4ZWMsMHgwZSwweGNkLDB4ZWYsMHgxYSwKLSsJMHg5MSwweDZhLDB4ZTMs MHg1ZgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xOTJfbm9fZGZfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4ZTUsMHhkYSwweGI4 LDB4ZTAsMHg2MywweDU5LDB4NWEsMHhjYywweDNkLDB4ZGMsMHg5ZiwweGU4LAotKwkweDY2LDB4 NjcsMHgyYywweDkyCi0rCX07Ci0rCi0rCi0rLyogQUVTLTI1NiBubyBkZiBQUiAgKi8KLStfX2Zp cHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3By X2VudHJvcHlpbnB1dFtdID0KLSsJewotKwkweDE1LDB4YzcsMHg1ZCwweGNiLDB4NDEsMHg0Yiww eDE2LDB4MDEsMHgzYSwweGQxLDB4NDQsMHhlOCwKLSsJMHgyMiwweDMyLDB4YzYsMHg5YywweDNm LDB4ZTcsMHg0MywweGY1LDB4OWEsMHhkMywweGVhLDB4ZjIsCi0rCTB4ZDcsMHg0ZSwweDZlLDB4 NmEsMHg1NSwweDczLDB4NDAsMHhlZiwweDg5LDB4YWQsMHgwZCwweDAzLAotKwkweDk2LDB4N2Us MHg3OCwweDgxLDB4MmYsMHg5MSwweDFiLDB4NDQsMHhiMCwweDAyLDB4YmEsMHgxYwotKwl9Owot KwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZf bm9fZGZfcHJfbm9uY2VbXSA9Ci0rCXsKLSsJMHhkYywweGU0LDB4ZDQsMHgyNywweDdhLDB4OTAs MHhkNywweDk5LDB4NDMsMHhhMSwweDNjLDB4MzAsCi0rCTB4Y2MsMHg0YiwweGVlLDB4MmUKLSsJ fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MjU2X25vX2RmX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0KLSsJewotKwkweGUzLDB4ZTYs MHhiOSwweDExLDB4ZTQsMHg3YSwweGE0LDB4NDAsMHg2YiwweGY4LDB4NzMsMHhmNywKLSsJMHg3 ZSwweGVjLDB4YzcsMHhiOSwweDk3LDB4YmYsMHhmOCwweDI1LDB4N2IsMHhiZSwweDExLDB4OWIs Ci0rCTB4NWIsMHg2YSwweDBjLDB4MmUsMHgyYiwweDAxLDB4NTEsMHhjZCwweDQxLDB4NGIsMHg2 YiwweGFjLAotKwkweDMxLDB4YTgsMHgwYiwweGY3LDB4ZTYsMHg1OSwweDQyLDB4YjgsMHgwMyww eDBjLDB4ZjgsMHgwNgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfYWRkaXRpb25hbGlucHV0W10gPQotKwl7Ci0r CTB4NmEsMHg5ZiwweDAwLDB4OTEsMHhhZSwweGZlLDB4Y2YsMHg4NCwweDk5LDB4Y2UsMHhiMSww eDQwLAotKwkweDZkLDB4NWQsMHgzMywweDI4LDB4ODQsMHhmNCwweDhjLDB4NjMsMHg0YywweDdl LDB4YmQsMHgyYywKLSsJMHg4MCwweDc2LDB4ZWUsMHg1YSwweGFhLDB4MTUsMHgwNywweDMxLDB4 ZDgsMHhiYiwweDhjLDB4NjksCi0rCTB4OWQsMHg5ZCwweGJjLDB4N2UsMHg0OSwweGFlLDB4ZWMs MHgzOSwweDZiLDB4ZDEsMHgxZiwweDdlCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9lbnRyb3B5aW5wdXRwcltd ID0KLSsJewotKwkweGYzLDB4YjksMHg3NSwweDljLDB4YmQsMHg4OCwweGVhLDB4YTIsMHg1MCww eGFkLDB4ZDYsMHgxNiwKLSsJMHgxYSwweDEyLDB4M2MsMHg4NiwweDY4LDB4YWYsMHg2ZiwweGJl LDB4MTksMHhmMiwweGVlLDB4Y2MsCi0rCTB4YTUsMHg3MCwweDg0LDB4NTMsMHg1MCwweGNiLDB4 OWYsMHgxNCwweGE5LDB4ZTUsMHhlZSwweGI5LAotKwkweDQ4LDB4NDUsMHg0MCwweGUyLDB4Yzcs MHhjOSwweDlhLDB4NzQsMHhmZiwweDhjLDB4OTksMHgxZgotKwl9OwotKwotK19fZmlwc19jb25z dHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfaW50X3Jl dHVybmVkYml0c1tdID0KLSsJewotKwkweDJlLDB4ZjIsMHg0NSwweDRjLDB4NjIsMHgyZSwweDBh LDB4YjksMHg2YiwweGEyLDB4ZmQsMHg1NiwKLSsJMHg3OSwweDYwLDB4OTMsMHhjZgotKwl9Owot KwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZf bm9fZGZfcHJfYWRkaXRpb25hbGlucHV0MltdID0KLSsJewotKwkweGFmLDB4NjksMHgyMCwweGU5 LDB4M2IsMHgzNywweDlkLDB4M2YsMHhiNCwweDgwLDB4MDIsMHg3YSwKLSsJMHgyNSwweDdkLDB4 YjgsMHhkZSwweDcxLDB4YzUsMHgwNiwweDBjLDB4YjQsMHhlMiwweDhmLDB4MzUsCi0rCTB4ZDgs MHgxNCwweDBkLDB4N2YsMHg3NiwweDYzLDB4NGUsMHhiNSwweGVlLDB4ZTksMHg2ZiwweDM0LAot KwkweGM3LDB4NWYsMHg1NiwweDE0LDB4NGEsMHhlOCwweDczLDB4OTUsMHg1YiwweDFjLDB4Yjks MHhjYgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18yNTZfbm9fZGZfcHJfZW50cm9weWlucHV0cHIyW10gPQotKwl7Ci0rCTB4ZTUsMHhi MCwweDJlLDB4N2UsMHg1MiwweDMwLDB4ZTMsMHg2MywweDgyLDB4YjYsMHg0NCwweGQzLAotKwkw eDI1LDB4MTksMHgwNSwweDI0LDB4OWEsMHg5ZiwweDVmLDB4MjcsMHg2YSwweDI5LDB4YWIsMHhm YSwKLSsJMHgwNywweGEyLDB4NDIsMHgwZiwweGM1LDB4YTgsMHg5NCwweDdjLDB4MTcsMHg3Yiww eDg1LDB4ODMsCi0rCTB4MGMsMHgyNSwweDBlLDB4NjMsMHgwYiwweGU5LDB4MTIsMHg2MCwweGNk LDB4ZWYsMHg4MCwweDBmCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJ MHg1ZSwweGYyLDB4MjYsMHhlZiwweDlmLDB4NTgsMHg1ZCwweGQ1LDB4NGEsMHgxMCwweGZlLDB4 YTcsCi0rCTB4MmQsMHg1ZiwweDRhLDB4NDYKLSsJfTsKLSsKLSsKLSsvKiBBRVMtMjU2IG5vIGRm IE5vIFBSICAqLwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18yNTZfbm9fZGZfZW50cm9weWlucHV0W10gPQotKwl7Ci0rCTB4ZmIsMHhjZiwweDFiLDB4 NjEsMHgxNiwweDg5LDB4NzgsMHgyMywweGY1LDB4ZDgsMHg5NiwweGUzLAotKwkweDRlLDB4NjQs MHgwYiwweDI5LDB4OWEsMHgzZiwweGY4LDB4YTUsMHhlZCwweGYyLDB4ZmUsMHhkYiwKLSsJMHgx NiwweGNhLDB4N2YsMHgxMCwweGZhLDB4NWUsMHgxOCwweDc2LDB4MmMsMHg2MywweDVlLDB4OTYs Ci0rCTB4Y2YsMHhiMywweGQ2LDB4ZmMsMHhhZiwweDk5LDB4MzksMHgyOCwweDljLDB4NjEsMHhl OCwweGIzCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYWVzXzI1Nl9ub19kZl9ub25jZVtdID0KLSsJewotKwkweDEyLDB4OTYsMHhmMCwweDUy LDB4ZjMsMHg4ZCwweDgxLDB4Y2YsMHhkZSwweDg2LDB4ZjIsMHg5OSwKLSsJMHg0MywweDk2LDB4 YjksMHhmMAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18yNTZfbm9fZGZfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPQotKwl7Ci0rCTB4 NjMsMHgwZCwweDc4LDB4ZjUsMHg5MCwweDhlLDB4MzIsMHg0NywweGIwLDB4NGQsMHgzNywweDYw LAotKwkweDA5LDB4OTYsMHhiYywweGJmLDB4OTcsMHg3YSwweDYyLDB4MTQsMHg0NSwweGJkLDB4 OGQsMHhjYywKLSsJMHg2OSwweGZiLDB4MDMsMHhlMSwweDgwLDB4MWMsMHhjNywweGUyLDB4MmEs MHhmOSwweDM3LDB4M2YsCi0rCTB4NjYsMHg0ZCwweDYyLDB4ZDksMHgxMCwweGUwLDB4YWQsMHhj OCwweDlhLDB4ZjAsMHhhOCwweDZkCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9hZGRpdGlvbmFsaW5wdXRbXSA9Ci0r CXsKLSsJMHgzNiwweGM2LDB4MTMsMHg2MCwweGJiLDB4MTQsMHhhZCwweDIyLDB4YjAsMHgzOCww eGFjLDB4YTYsCi0rCTB4MTgsMHgxNiwweDkzLDB4MjUsMHg4NiwweGI3LDB4ZGMsMHhkYywweDM2 LDB4OTgsMHgyYiwweGY5LAotKwkweDY4LDB4MzMsMHhkMywweGM2LDB4ZmYsMHhjZSwweDhkLDB4 MTUsMHg1OSwweDgyLDB4NzYsMHhlZCwKLSsJMHg2ZiwweDhkLDB4NDksMHg3NCwweDJmLDB4ZGEs MHhkYywweDFmLDB4MTcsMHhkMCwweGRlLDB4MTcKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcK LStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX2ludF9yZXR1cm5lZGJp dHNbXSA9Ci0rCXsKLSsJMHgxNiwweDJmLDB4OGUsMHgzZiwweDIxLDB4N2EsMHgxYywweDIwLDB4 NTYsMHhkMSwweDkyLDB4ZjYsCi0rCTB4ZDIsMHgyNSwweDc1LDB4MGUKLSsJfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX2Vu dHJvcHlpbnB1dHJlc2VlZFtdID0KLSsJewotKwkweDkxLDB4NzksMHg3NiwweGVlLDB4ZTAsMHhj ZiwweDllLDB4YzIsMHhkNSwweGQ0LDB4MjMsMHg5YiwKLSsJMHgxMiwweDhjLDB4N2UsMHgwYSww eGI3LDB4ZDIsMHg4YiwweGQ2LDB4N2MsMHhhMywweGM2LDB4ZTUsCi0rCTB4MGUsMHhhYSwweGM3 LDB4NmIsMHhhZSwweDBkLDB4ZmEsMHg1MywweDA2LDB4NzksMHhhMSwweGVkLAotKwkweDRkLDB4 NmEsMHgwZSwweGQ4LDB4OWQsMHhiZSwweDFiLDB4MzEsMHg5MywweDdiLDB4ZWMsMHhmYgotKwl9 OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18y NTZfbm9fZGZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPQotKwl7Ci0rCTB4ZDIsMHg0NiwweDUw LDB4MjIsMHgxMCwweDE0LDB4NjMsMHhmNywweGVhLDB4MGYsMHhiOSwweDdlLAotKwkweDBkLDB4 ZTEsMHg5NCwweDA3LDB4YWYsMHgwOSwweDQ0LDB4MzEsMHhlYSwweDY0LDB4YTQsMHgxOCwKLSsJ MHg1YiwweGY5LDB4ZDgsMHhjMiwweGZhLDB4MDMsMHg0NywweGM1LDB4MzksMHg0MywweGQ1LDB4 M2IsCi0rCTB4NjIsMHg4NiwweDY0LDB4ZWEsMHgyYywweDczLDB4OGMsMHhhZSwweDlkLDB4OTgs MHg5OCwweDI5Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9hZGRpdGlvbmFsaW5wdXQyW10gPQotKwl7Ci0rCTB4OGMs MHhhYiwweDE4LDB4ZjgsMHhjMywweGVjLDB4MTgsMHg1YywweGIzLDB4MWUsMHg5ZCwweGJlLAot KwkweDNmLDB4MDMsMHhiNCwweDAwLDB4OTgsMHg5ZCwweGFlLDB4ZWIsMHhmNCwweDk0LDB4Zjgs MHg0MiwKLSsJMHg4ZiwweGUzLDB4MzksMHgwNywweGUxLDB4YzksMHhhZCwweDBiLDB4MWYsMHhl ZCwweGMwLDB4YmEsCi0rCTB4ZjYsMHhkMSwweGVjLDB4MjcsMHg4NiwweDdiLDB4ZDYsMHg1NSww eDliLDB4NjAsMHhhNSwweGM2Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJ MHhlZiwweGQyLDB4ZDgsMHg1YywweGRjLDB4NjIsMHgyNSwweDlmLDB4YWEsMHgxZSwweDJjLDB4 NjcsCi0rCTB4ZjYsMHgwMiwweDMyLDB4ZTIKLSsJfTsKLSsKLSsKLSsvKiBTSEEtMSBQUiAgKi8K LStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX2Vu dHJvcHlpbnB1dFtdID0KLSsJewotKwkweGQyLDB4MzYsMHhhNSwweDI3LDB4MzEsMHg3MywweGRk LDB4MTEsMHg0ZiwweDkzLDB4YmQsMHhlMiwKLSsJMHgzMSwweGE1LDB4OTEsMHgxMwotKwl9Owot KwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJf bm9uY2VbXSA9Ci0rCXsKLSsJMHhiNSwweGIzLDB4NjAsMHhlZiwweGY3LDB4NjMsMHgzMSwweGYz Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMV9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9Ci0rCXsKLSsJMHhkNCwweGJiLDB4MDIs MHgxMCwweGIyLDB4NzEsMHhkYiwweDgxLDB4ZDYsMHhmMCwweDQyLDB4NjAsCi0rCTB4ZGEsMHhl YSwweDc3LDB4NTIKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBzaGExX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweDRkLDB4ZDIs MHg2YywweDg3LDB4ZmIsMHgyYywweDRmLDB4YTYsMHg4ZCwweDE2LDB4NjMsMHgyMiwKLSsJMHg2 YSwweDUxLDB4ZTMsMHhmOAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfZW50cm9weWlucHV0cHJbXSA9Ci0rCXsKLSsJMHhjOSww eDgzLDB4OWUsMHgxNiwweGY2LDB4MWMsMHgwZiwweGIyLDB4ZWMsMHg2MCwweDMxLDB4YTksCi0r CTB4Y2IsMHhhOSwweDM2LDB4N2EKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJ MHhhOCwweDEzLDB4NGYsMHhmNCwweDMxLDB4MDIsMHg0NCwweGUzLDB4ZDMsMHgzZCwweDYxLDB4 OWUsCi0rCTB4ZTUsMHhjNiwweDNlLDB4ODksMHhiNSwweDliLDB4MGYsMHgzNQotKwl9OwotKwot K19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfYWRk aXRpb25hbGlucHV0MltdID0KLSsJewotKwkweGY5LDB4ZTgsMHhkMiwweDcyLDB4MTMsMHgzNCww eDk1LDB4NmYsMHgxNSwweDQ5LDB4NDcsMHg5OSwKLSsJMHgxNiwweDAzLDB4MTksMHg0NwotKwl9 OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFf cHJfZW50cm9weWlucHV0cHIyW10gPQotKwl7Ci0rCTB4NGUsMHg4YywweDQ5LDB4OWIsMHg0YSww eDVjLDB4OWIsMHg5YywweDNhLDB4ZWUsMHhmYiwweGQyLAotKwkweGFlLDB4Y2QsMHg4YywweGM0 Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMV9wcl9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHg1MCwweGI0LDB4YjQsMHhjZCwweDY4 LDB4NTcsMHhmYywweDJlLDB4YzEsMHg1MiwweGNjLDB4ZjYsCi0rCTB4NjgsMHhhNCwweDgxLDB4 ZWQsMHg3ZSwweGU0LDB4MWQsMHg4NwotKwl9OwotKwotKwotKy8qIFNIQS0xIE5vIFBSICAqLwot K19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfZW50cm9w eWlucHV0W10gPQotKwl7Ci0rCTB4YTksMHg0NywweDFiLDB4MjksMHgyZCwweDFjLDB4MDUsMHhk ZiwweDc2LDB4ZDAsMHg2MiwweGY5LAotKwkweGUyLDB4N2YsMHg0YywweDdiCi0rCX07Ci0rCi0r X19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9ub25jZVtd ID0KLSsJewotKwkweDUzLDB4MjMsMHgyNCwweGUzLDB4ZWMsMHgwYywweDU0LDB4MTQKLSsJfTsK LSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3Bl cnNvbmFsaXphdGlvbnN0cmluZ1tdID0KLSsJewotKwkweDdhLDB4ODcsMHhhMSwweGFjLDB4MWMs MHhmZCwweGFiLDB4YWUsMHhmNywweGQ2LDB4ZmIsMHg3NiwKLSsJMHgyOCwweGVjLDB4NmQsMHhj YQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTFfYWRkaXRpb25hbGlucHV0W10gPQotKwl7Ci0rCTB4ZmMsMHg5MiwweDM1LDB4ZDYsMHg3 ZSwweGI3LDB4MjQsMHg2NSwweGZkLDB4MTIsMHgyNywweDM1LAotKwkweGMwLDB4NzIsMHhjYSww eDI4Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgc2hhMV9pbnRfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4NTcsMHg4OCwweDgyLDB4ZTUs MHgyNSwweGE1LDB4MmMsMHg0YSwweDA2LDB4MjAsMHg2YywweDcyLAotKwkweDU1LDB4NjEsMHhk ZCwweDkwLDB4NzEsMHg5ZiwweDk1LDB4ZWEKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX2VudHJvcHlpbnB1dHJlc2VlZFtdID0KLSsJ ewotKwkweDY5LDB4YTUsMHg0MCwweDYyLDB4OTgsMHg0NywweDU2LDB4NzMsMHg0YSwweDhmLDB4 NjAsMHg5NiwKLSsJMHhkNiwweDk5LDB4MjcsMHhlZAotKwl9OwotKwotK19fZmlwc19jb25zdHNl ZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfYWRkaXRpb25hbGlucHV0cmVzZWVk W10gPQotKwl7Ci0rCTB4ZTUsMHg0MCwweDRlLDB4YmQsMHg1MCwweDAwLDB4ZjUsMHgxNSwweGE2 LDB4ZWUsMHg0NSwweGRhLAotKwkweDg0LDB4M2QsMHhkNCwweGMwCi0rCX07Ci0rCi0rX19maXBz X2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9hZGRpdGlvbmFsaW5w dXQyW10gPQotKwl7Ci0rCTB4MTEsMHg1MSwweDE0LDB4ZjAsMHgwOSwweDFiLDB4NGUsMHg1Niww eDBkLDB4ZTksMHhmNiwweDFlLAotKwkweDUyLDB4NjUsMHhjZCwweDk2Ci0rCX07Ci0rCi0rX19m aXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9yZXR1cm5lZGJp dHNbXSA9Ci0rCXsKLSsJMHhhMSwweDljLDB4OTQsMHg2ZSwweDI5LDB4ZTEsMHgzMywweDBkLDB4 MzIsMHhkNiwweGFhLDB4Y2UsCi0rCTB4NzEsMHgzZiwweDUyLDB4NzIsMHg4YiwweDQyLDB4YTgs MHhkNwotKwl9OwotKwotKwotKy8qIFNIQS0yMjQgUFIgICovCi0rX19maXBzX2NvbnN0c2VnCi0r c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX2VudHJvcHlpbnB1dFtdID0KLSsJ ewotKwkweDEyLDB4NjksMHgzMiwweDRmLDB4ODMsMHhhNiwweGY1LDB4MTQsMHhlMywweDQ5LDB4 M2UsMHg3NSwKLSsJMHgzZSwweGRlLDB4YWQsMHhhMSwweDI5LDB4YzMsMHhmMywweDE5LDB4MjAs MHhiNSwweDRjLDB4ZDkKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGEyMjRfcHJfbm9uY2VbXSA9Ci0rCXsKLSsJMHg2YSwweDc4LDB4ZDAs MHhlYiwweGJiLDB4NWEsMHhmMCwweGVlLDB4ZTgsMHhjMywweGJhLDB4NzEKLSsJfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcHJfcGVy c29uYWxpemF0aW9uc3RyaW5nW10gPQotKwl7Ci0rCTB4ZDUsMHhiOCwweGI2LDB4YmMsMHhjMSww eDViLDB4NjAsMHgzMSwweDNjLDB4ZjUsMHhlNSwweGMwLAotKwkweDhlLDB4NTIsMHg3YSwweGJk LDB4ZWEsMHg0NywweGE5LDB4NWYsMHg4ZiwweGY5LDB4OGIsMHhhZQotKwl9OwotKwotK19fZmlw c19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9hZGRpdGlv bmFsaW5wdXRbXSA9Ci0rCXsKLSsJMHgxZiwweDU1LDB4ZWMsMHhhZSwweDE2LDB4MTIsMHg4NCww eGJhLDB4ODQsMHgxNiwweDE5LDB4ODgsCi0rCTB4OGUsMHhiOCwweDMzLDB4MjUsMHg1NCwweGZm LDB4Y2EsMHg3OSwweGFmLDB4MDcsMHgyNSwweDUwCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2Vn Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX2VudHJvcHlpbnB1dHByW10g PQotKwl7Ci0rCTB4OTIsMHhhMywweDMyLDB4YTgsMHg5YSwweDBhLDB4NTgsMHg3YywweDFkLDB4 NWEsMHg3ZSwweGUxLAotKwkweGIyLDB4NzMsMHhhYiwweDBlLDB4MTYsMHg3OSwweDIzLDB4ZDMs MHgyOSwweDg5LDB4ODEsMHhlMQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0r CTB4ZjMsMHgzOCwweDkxLDB4NDAsMHgzNywweDdhLDB4NTEsMHg3MiwweDQyLDB4NzQsMHg3OCww eDBhLAotKwkweDY5LDB4ZmQsMHhhNiwweDQ0LDB4NDMsMHg0NSwweDZjLDB4MGMsMHg1YSwweDE5 LDB4ZmYsMHhmMSwKLSsJMHg1NCwweDYwLDB4ZWUsMHg2YQotKwl9OwotKwotK19fZmlwc19jb25z dHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9hZGRpdGlvbmFsaW5w dXQyW10gPQotKwl7Ci0rCTB4NzUsMHhmMywweDA0LDB4MjUsMHhkZCwweDM2LDB4YTgsMHgzNyww eDQ2LDB4YWUsMHgwYywweDUyLAotKwkweDA1LDB4NzksMHg0YywweDI2LDB4ZGIsMHhlOSwweDcx LDB4MTYsMHg0YywweDBhLDB4ZjIsMHg2MAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9Ci0r CXsKLSsJMHhlYSwweGM1LDB4MDMsMHgwYSwweDRmLDB4YjAsMHgzOCwweDhkLDB4MjMsMHhkNCww eGM4LDB4NzcsCi0rCTB4ZTIsMHg2ZCwweDljLDB4MGIsMHg0NCwweGY3LDB4MmQsMHg1YiwweGJm LDB4NWQsMHgyYSwweDExCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX3JldHVybmVkYml0c1tdID0KLSsJewotKwkweDYwLDB4 NTAsMHgyYiwweGU3LDB4ODYsMHhkOCwweDI2LDB4NzMsMHhlMywweDFkLDB4OTUsMHgyMCwKLSsJ MHhiMywweDJjLDB4MzIsMHgxYywweGY1LDB4Y2UsMHg1NywweGE2LDB4NjcsMHgyYiwweGRjLDB4 NGUsCi0rCTB4ZGQsMHgxMSwweDRjLDB4YzQKLSsJfTsKLSsKLSsKLSsvKiBTSEEtMjI0IE5vIFBS ICAqLwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIy NF9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJMHhiMiwweDFjLDB4NzcsMHg0ZCwweGY2LDB4ZDMs MHhiNiwweDQwLDB4YjcsMHgzMCwweDNlLDB4MjksCi0rCTB4YjAsMHg4NSwweDFjLDB4YmUsMHg0 YSwweGVhLDB4NmIsMHg1YSwweGI1LDB4OGEsMHg5NywweGViCi0rCX07Ci0rCi0rX19maXBzX2Nv bnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X25vbmNlW10gPQotKwl7 Ci0rCTB4NDIsMHgwMiwweDBhLDB4MWMsMHg5OCwweDlhLDB4NzcsMHg5ZSwweDlmLDB4ODAsMHhi YSwweGUwCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhMjI0X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0KLSsJewotKwkweDk4LDB4Yjgs MHgwNCwweDQxLDB4ZmMsMHhjMSwweDVkLDB4YzUsMHhlOSwweGI5LDB4MDgsMHhkYSwKLSsJMHhm OSwweGZhLDB4MGQsMHg5MCwweGNlLDB4ZGYsMHgxZCwweDEwLDB4YTksMHg4ZCwweDUwLDB4MGMK LSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz aGEyMjRfYWRkaXRpb25hbGlucHV0W10gPQotKwl7Ci0rCTB4OWEsMHg4ZCwweDM5LDB4NDksMHg0 MiwweGQ1LDB4MGIsMHhhZSwweGUxLDB4YWYsMHhiNywweDAwLAotKwkweDAyLDB4ZmEsMHg5Niww eGIxLDB4YTUsMHgxZCwweDJkLDB4MjUsMHg3OCwweGVlLDB4ODMsMHgzZgotKwl9OwotKwotK19f Zmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9pbnRfcmV0 dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4ZTQsMHhmNSwweDUzLDB4NzksMHg1YSwweDk3LDB4NTgs MHgwNiwweDA4LDB4YmEsMHg3YiwweGZhLAotKwkweGYwLDB4ODMsMHgwNSwweDhjLDB4MjIsMHhj MCwweGM5LDB4ZGIsMHgxNSwweGU3LDB4ZGUsMHgyMCwKLSsJMHg1NSwweDIyLDB4OWEsMHhhZAot Kwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTIyNF9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHg2NywweDA5LDB4NDgsMHhhYSww eDA3LDB4MTYsMHg5OSwweDg5LDB4N2YsMHg2ZCwweGEwLDB4ZTUsCi0rCTB4OGYsMHhkZiwweGJj LDB4ZGIsMHhmZSwweGU1LDB4NmMsMHg3YSwweDk1LDB4NGEsMHg2NiwweDE3Ci0rCX07Ci0rCi0r X19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2FkZGl0 aW9uYWxpbnB1dHJlc2VlZFtdID0KLSsJewotKwkweDBmLDB4NGIsMHgxYywweDZmLDB4YjcsMHhl MywweDQ3LDB4ZTUsMHg1ZCwweDdkLDB4MzgsMHhkNiwKLSsJMHgyOCwweDliLDB4ZWIsMHg1NSww eDYzLDB4MDksMHgzZSwweDdjLDB4NTYsMHhlYSwweGY4LDB4MTkKLSsJfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfYWRkaXRpb25hbGlu cHV0MltdID0KLSsJewotKwkweDJkLDB4MjYsMHg3YywweDM3LDB4ZTQsMHg3YSwweDI4LDB4NWUs MHg1YSwweDNjLDB4YWYsMHgzZCwKLSsJMHg1YSwweDhlLDB4NTUsMHhhMiwweDFhLDB4NmUsMHhj MCwweGU1LDB4ZjYsMHgyMSwweGQzLDB4ZjYKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0r CTB4NGQsMHg4MywweDM1LDB4ZGYsMHg2NywweGE5LDB4ZmMsMHgxNywweGRhLDB4NzAsMHhjYyww eDhiLAotKwkweDdmLDB4NzcsMHhhZSwweGEyLDB4NWYsMHhiOSwweDdlLDB4NzQsMHg0YywweDI2 LDB4YzEsMHg3YSwKLSsJMHgzYiwweGE3LDB4NWMsMHg5MwotKwl9OwotKwotKwotKy8qIFNIQS0y NTYgUFIgICovCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMjU2X3ByX2VudHJvcHlpbnB1dFtdID0KLSsJewotKwkweGNlLDB4NDksMHgwMCwweDdhLDB4 NTYsMHhlMywweDY3LDB4OGYsMHhlMSwweGI2LDB4YTcsMHhkNCwKLSsJMHg0ZiwweDA4LDB4N2Es MHgxYiwweDAxLDB4ZjQsMHhmYSwweDZiLDB4ZWYsMHhiNywweGU1LDB4ZWIsCi0rCTB4MDcsMHgz ZCwweDExLDB4MGQsMHhjOCwweGVhLDB4MmIsMHhmZQotKwl9OwotKwotK19fZmlwc19jb25zdHNl ZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9wcl9ub25jZVtdID0KLSsJewot KwkweDczLDB4NDEsMHhjOCwweDkyLDB4OTQsMHhlMiwweGM1LDB4NWYsMHg5MywweGZkLDB4Mzks MHg1ZCwKLSsJMHgyYiwweDkxLDB4NGQsMHgzOAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwot K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9wcl9wZXJzb25hbGl6YXRpb25zdHJp bmdbXSA9Ci0rCXsKLSsJMHg1MCwweDZkLDB4MDEsMHgwMSwweDA3LDB4NWEsMHg4MCwweDM1LDB4 N2EsMHg1NiwweDFhLDB4NTYsCi0rCTB4MmYsMHg5YSwweDBiLDB4MzUsMHhiMiwweGIxLDB4Yzks MHhlNSwweGNhLDB4NjksMHg2MSwweDQ4LAotKwkweGZmLDB4ZmIsMHgwZiwweGQ5LDB4NGIsMHg3 OSwweDFkLDB4YmEKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBzaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0W10gPQotKwl7Ci0rCTB4MjAsMHhi OCwweGRmLDB4NDQsMHg3NywweDVhLDB4YjgsMHhkMywweGJmLDB4ZjYsMHhjZiwweGFjLAotKwkw eDVlLDB4YTYsMHg5NiwweDYyLDB4NzMsMHg0NCwweDQwLDB4NGEsMHgzMCwweGZiLDB4MzgsMHhh NSwKLSsJMHg3YiwweDBkLDB4ZTQsMHgwZCwweGM2LDB4ZTQsMHg5YSwweDFmCi0rCX07Ci0rCi0r X19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX2Vu dHJvcHlpbnB1dHByW10gPQotKwl7Ci0rCTB4MDQsMHhjNCwweDY1LDB4ZjQsMHhkMywweGJmLDB4 ODMsMHg0YiwweGFiLDB4YzgsMHg0MSwweGE4LAotKwkweGMyLDB4ZTAsMHg0NCwweDYzLDB4Nzcs MHg0YywweDZmLDB4NmMsMHg0OSwweDQ2LDB4ZmYsMHg5NCwKLSsJMHgxNywweGVhLDB4ZTYsMHgx YSwweDlkLDB4NWUsMHg2NiwweDc4Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsK LSsJMHgwNywweDRkLDB4YWMsMHg5YiwweDg2LDB4Y2EsMHg0YSwweGFhLDB4NmUsMHg3YSwweDAz LDB4YTIsCi0rCTB4NWQsMHgxMCwweGVhLDB4MGIsMHhmOSwweDgzLDB4Y2MsMHhkMSwweGZjLDB4 ZTIsMHgwNywweGM3LAotKwkweDA2LDB4MzQsMHg2MCwweDZmLDB4ODMsMHg5NCwweDk5LDB4NzYK LSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz aGEyNTZfcHJfYWRkaXRpb25hbGlucHV0MltdID0KLSsJewotKwkweDg5LDB4NGUsMHg0NSwweDhj LDB4MTEsMHhmOSwweGJjLDB4NWIsMHhhYywweDc0LDB4OGIsMHg0YiwKLSsJMHg1ZiwweGY3LDB4 MTksMHhmMywweGY1LDB4MjQsMHg1NCwweDE0LDB4ZDEsMHgxNSwweGIxLDB4NDMsCi0rCTB4MTIs MHhhNCwweDVmLDB4ZDQsMHhlYywweGZjLDB4Y2QsMHgwOQotKwl9OwotKwotK19fZmlwc19jb25z dHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9wcl9lbnRyb3B5aW5wdXRw cjJbXSA9Ci0rCXsKLSsJMHgwZSwweGViLDB4MWYsMHhkNywweGZjLDB4ZDEsMHg5ZCwweGQ0LDB4 MDUsMHgzNiwweDhiLDB4YjIsCi0rCTB4ZmIsMHhlNCwweGY0LDB4NTEsMHgwYywweDg3LDB4OWIs MHgwMiwweDQ0LDB4ZDUsMHg5MiwweDRkLAotKwkweDQ0LDB4ZmUsMHgxYSwweDAzLDB4NDMsMHg1 NiwweGJkLDB4ODYKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBzaGEyNTZfcHJfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4MDIsMHhhYSww eGI2LDB4MWQsMHg3ZSwweDJhLDB4NDAsMHgwMywweDY5LDB4MmQsMHg0OSwweGEzLAotKwkweDQx LDB4ZTcsMHg0NCwweDBiLDB4YWYsMHg3YiwweDg1LDB4ZTQsMHg1ZiwweDUzLDB4M2IsMHg2NCwK LSsJMHhiYywweDg5LDB4YzgsMHg4MiwweGQ0LDB4NzgsMHgzNywweGEyCi0rCX07Ci0rCi0rCi0r LyogU0hBLTI1NiBObyBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBzaGEyNTZfZW50cm9weWlucHV0W10gPQotKwl7Ci0rCTB4NWIsMHgxYiwweGVj LDB4NGQsMHhhOSwweDM4LDB4NzQsMHg1YSwweDM0LDB4MGIsMHg3YiwweGM1LAotKwkweGU1LDB4 ZDcsMHg2NiwweDdjLDB4YmMsMHg4MiwweGI5LDB4MGUsMHgyZCwweDFmLDB4OTIsMHhkNywKLSsJ MHhjMSwweGJjLDB4NjcsMHg2OSwweGVjLDB4NmIsMHgwMywweDNjCi0rCX07Ci0rCi0rX19maXBz X2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X25vbmNlW10gPQot Kwl7Ci0rCTB4YTQsMHgwYywweGQ4LDB4OWMsMHg2MSwweGQ4LDB4YzMsMHg1NCwweGZlLDB4NTMs MHhjOSwweGU1LAotKwkweDVkLDB4NmYsMHg2ZCwweDM1Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3BlcnNvbmFsaXphdGlvbnN0 cmluZ1tdID0KLSsJewotKwkweDIyLDB4NWUsMHg2MiwweDkzLDB4NDIsMHg4MywweDc4LDB4MjQs MHhkOCwweDQwLDB4OGMsMHhkZSwKLSsJMHg2ZiwweGY5LDB4YTQsMHg3YSwweGM1LDB4YTcsMHgz YiwweDg4LDB4YTMsMHhlZSwweDQyLDB4MjAsCi0rCTB4ZmQsMHg2MSwweDU2LDB4YzYsMHg0Yyww eDEzLDB4NDEsMHg5YwotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTI1Nl9hZGRpdGlvbmFsaW5wdXRbXSA9Ci0rCXsKLSsJMHhiZiwweDc0 LDB4NWIsMHhmNiwweGM1LDB4NjQsMHg1ZSwweDk5LDB4MzQsMHg4ZiwweGJjLDB4YTQsCi0rCTB4 ZTIsMHhiZCwweGQ4LDB4ODUsMHgyNiwweDM3LDB4ZWEsMHhiYSwweDRmLDB4ZjIsMHg5YSwweDlh LAotKwkweDY2LDB4ZmMsMHhkZiwweDYzLDB4MjYsMHgyNiwweDE5LDB4ODcKLSsJfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfaW50X3Jl dHVybmVkYml0c1tdID0KLSsJewotKwkweGIzLDB4YzYsMHgwNywweDA3LDB4ZDYsMHg3NSwweGY2 LDB4MmIsMHhkNiwweDIxLDB4OTYsMHhmMSwKLSsJMHhhZSwweGRiLDB4MmIsMHhhYywweDI1LDB4 MmEsMHhhZSwweGFlLDB4NDEsMHg3MiwweDAzLDB4NWUsCi0rCTB4YmYsMHhkMywweDY0LDB4YmMs MHg1OSwweGY5LDB4YzAsMHg3NgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJ MHhiZiwweDIwLDB4MzMsMHg1NiwweDI5LDB4YTgsMHgzNywweDA0LDB4MWYsMHg3OCwweDM0LDB4 M2QsCi0rCTB4ODEsMHgyYSwweGM5LDB4ODYsMHhjNiwweDdhLDB4MmYsMHg4OCwweDVlLDB4ZDUs MHhiZSwweDM0LAotKwkweDQ2LDB4MjAsMHhhNCwweDM1LDB4ZWIsMHhjNywweGUyLDB4OWQKLSsJ fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEy NTZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPQotKwl7Ci0rCTB4OWIsMHhhZSwweDJkLDB4MmQs MHg2MSwweGE0LDB4ODksMHhlYiwweDQzLDB4NDYsMHhhNywweGRhLAotKwkweGVmLDB4NDAsMHhj YSwweDRhLDB4OTksMHgxMSwweDQxLDB4ZGMsMHg1YywweDk0LDB4ZTksMHhhYywKLSsJMHhkNCww eGQwLDB4ZTYsMHhiZCwweGZiLDB4MDMsMHg5YywweGE4Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X2FkZGl0aW9uYWxpbnB1dDJb XSA9Ci0rCXsKLSsJMHgyMywweGFhLDB4MGMsMHhiZCwweDI4LDB4MzMsMHhlMiwweDUxLDB4ZmMs MHg3MSwweGQyLDB4MTUsCi0rCTB4MWYsMHg3NiwweGZkLDB4MGQsMHhlMCwweGI3LDB4YjUsMHg4 NCwweDc1LDB4NWIsMHhiZSwweGYzLAotKwkweDVjLDB4Y2EsMHhjNSwweDMwLDB4ZjIsMHg3NSww eDFmLDB4ZGEKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGEyNTZfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4OTAsMHgzYywweGMxLDB4 MTAsMHg4YywweDEyLDB4MDEsMHhjNiwweGE2LDB4M2EsMHgwZiwweDRkLAotKwkweGI2LDB4M2Es MHg0ZiwweDQxLDB4OWMsMHg2MSwweDc1LDB4ODQsMHhlOSwweDc0LDB4NzUsMHhmZCwKLSsJMHhm ZSwweGYyLDB4MWYsMHg0MywweGQ4LDB4NWUsMHgyNCwweGEzCi0rCX07Ci0rCi0rCi0rLyogU0hB LTM4NCBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBzaGEzODRfcHJfZW50cm9weWlucHV0W10gPQotKwl7Ci0rCTB4NzEsMHg5ZCwweGIyLDB4NWEs MHg3MSwweDZkLDB4MDQsMHhlOSwweDFlLDB4YzcsMHg5MiwweDI0LAotKwkweDZlLDB4MTIsMHgz MywweGE5LDB4NTIsMHg2NCwweDMxLDB4ZWYsMHg3MSwweGViLDB4MjIsMHg1NSwKLSsJMHgyOCww eDk3LDB4MDYsMHg2YSwweGMwLDB4MGMsMHhhMCwweDdlCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX25vbmNlW10gPQotKwl7 Ci0rCTB4ZjUsMHgwZCwweGZhLDB4YjAsMHhlYywweDZhLDB4N2MsMHhkNiwweGJkLDB4OWIsMHgw NSwweGZkLAotKwkweDM4LDB4M2UsMHgyZSwweDU2Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2Vn Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX3BlcnNvbmFsaXphdGlvbnN0 cmluZ1tdID0KLSsJewotKwkweDc0LDB4YWMsMHg3ZSwweDZkLDB4YjEsMHhhNCwweGU3LDB4MjEs MHhkMSwweDFlLDB4NmUsMHg5NiwKLSsJMHg2ZCwweDRkLDB4NTMsMHg0NiwweDgyLDB4OTYsMHg2 ZSwweGNmLDB4YWEsMHg4MSwweDhkLDB4N2QsCi0rCTB4OWUsMHhlMSwweDBmLDB4MTUsMHhlYSww eDQxLDB4YmYsMHhlMwotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTM4NF9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9Ci0rCXsKLSsJMHhkYSww eDk1LDB4ZDQsMHhkMCwweGI4LDB4MTEsMHhkMywweDQ5LDB4MjcsMHg1ZCwweGE5LDB4MzksCi0r CTB4NjgsMHhmMywweGE4LDB4ZTksMHg1ZCwweDE5LDB4OGEsMHgyYiwweDY2LDB4ZTgsMHg2OSww eDA2LAotKwkweDdjLDB4OWUsMHgwMywweGExLDB4OGIsMHgyNiwweDJkLDB4NmUKLSsJfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJf ZW50cm9weWlucHV0cHJbXSA9Ci0rCXsKLSsJMHg0OSwweGRmLDB4NDQsMHgwMCwweGU0LDB4MWMs MHg3NSwweDBiLDB4MjYsMHg1YSwweDU5LDB4NjQsCi0rCTB4MWYsMHg0ZSwweGIxLDB4YjIsMHgx MywweGYxLDB4MjIsMHg0ZSwweGI0LDB4NmQsMHg5YSwweGNjLAotKwkweGEwLDB4NDgsMHhlNiww eGNmLDB4MWQsMHhkMSwweDkyLDB4MGQKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfaW50X3JldHVybmVkYml0c1tdID0KLSsJ ewotKwkweGM4LDB4NTIsMHhhZSwweGJmLDB4MDQsMHgzYywweDI3LDB4YjcsMHg3OCwweDE4LDB4 YWEsMHg4ZiwKLSsJMHhmZiwweGNmLDB4YTQsMHhmMSwweGNjLDB4ZTcsMHg2OCwweGZhLDB4MjIs MHhhMiwweDEzLDB4NDUsCi0rCTB4ZTgsMHhkZCwweDg3LDB4ZTYsMHhmMiwweDZlLDB4ZGQsMHhj NywweDUyLDB4OTAsMHg5ZiwweDdiLAotKwkweGZhLDB4NjEsMHgyZCwweDlkLDB4OWUsMHhjZiww eDk4LDB4YWMsMHg1MiwweDQwLDB4Y2UsMHhhZgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwot K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9wcl9hZGRpdGlvbmFsaW5wdXQyW10g PQotKwl7Ci0rCTB4NjEsMHg3YywweDAzLDB4OWEsMHgzZSwweDUwLDB4NTcsMHg2MCwweGM1LDB4 ODMsMHhjOSwweGIyLAotKwkweGQxLDB4ODcsMHg4NSwweDY2LDB4OTIsMHg1ZCwweDg0LDB4MGUs MHg1MywweGZiLDB4NzAsMHgwMywKLSsJMHg3MiwweGZkLDB4YmEsMHhhZSwweDljLDB4OGYsMHhm OCwweDE4Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhMzg0X3ByX2VudHJvcHlpbnB1dHByMltdID0KLSsJewotKwkweGY4LDB4ZWIsMHg4 OSwweGIxLDB4OGQsMHg3OCwweGJlLDB4MjEsMHhlMCwweGJiLDB4OWQsMHhiNywKLSsJMHg5NSww eDBlLDB4ZDksMHg0NiwweDBjLDB4OGMsMHhlMiwweDYzLDB4YjcsMHg5ZCwweDY3LDB4OTAsCi0r CTB4YmQsMHhjNywweDBiLDB4YTUsMHhjZSwweGIyLDB4NjUsMHg4MQotKwl9OwotKwotK19fZmlw c19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9wcl9yZXR1cm5l ZGJpdHNbXSA9Ci0rCXsKLSsJMHhlNiwweDlmLDB4ZmUsMHg2OCwweGQ2LDB4YjUsMHg3OSwweGYx LDB4MDYsMHg1ZiwweGEzLDB4YmIsCi0rCTB4MjMsMHg4NSwweGQ4LDB4ZjAsMHgyOSwweDVhLDB4 NjgsMHg5ZSwweGY1LDB4ZjQsMHhhNiwweDEyLAotKwkweGUwLDB4OWEsMHhlMiwweGFjLDB4MDAs MHgxZCwweDk4LDB4MjYsMHhmYywweDUzLDB4OTUsMHg1MywKLSsJMHhlNCwweDNlLDB4MTcsMHhk NSwweDA4LDB4MGIsMHg3MCwweDNkLDB4NjcsMHg5OSwweGFjLDB4NjYKLSsJfTsKLSsKLSsKLSsv KiBTSEEtMzg0IE5vIFBSICAqLwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIHNoYTM4NF9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJMHgwNywweDE1LDB4Mjcs MHgyYSwweGFmLDB4NzQsMHgyNCwweDM3LDB4YmMsMHhkNSwweDE0LDB4NjksCi0rCTB4Y2UsMHgx MSwweGZmLDB4YTIsMHg2YiwweGI4LDB4MDUsMHg2NywweDM0LDB4ZjgsMHhiZCwweDZkLAotKwkw eDZhLDB4Y2MsMHhjZCwweDYwLDB4YTMsMHg2OCwweGNhLDB4ZjQKLSsJfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfbm9uY2VbXSA9Ci0r CXsKLSsJMHg3MCwweDE3LDB4YzIsMHg1YiwweDVkLDB4MjIsMHgwYiwweDA2LDB4MTUsMHg1NCww eDc4LDB4NzcsCi0rCTB4NDQsMHhhZiwweDJmLDB4MDkKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcGVyc29uYWxpemF0aW9uc3Ry aW5nW10gPQotKwl7Ci0rCTB4ODksMHgzOSwweDI4LDB4YjAsMHg2MCwweGViLDB4M2QsMHhkYyww eDU1LDB4NzUsMHg4NiwweGViLAotKwkweGFlLDB4YTIsMHg4ZiwweGJjLDB4MWIsMHg3NSwweGQ0 LDB4ZTEsMHgwZiwweGFhLDB4MzgsMHhjYSwKLSsJMHg2MiwweDhiLDB4Y2IsMHgyYywweDI2LDB4 ZjYsMHhiYywweGIxCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgc2hhMzg0X2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweDMwLDB4MmIs MHg0MiwweDM1LDB4ZWYsMHhkYSwweDQwLDB4NTUsMHgyOCwweGM2LDB4OTUsMHhmYiwKLSsJMHg1 NCwweDAxLDB4NjIsMHhkNywweDg3LDB4MTQsMHg0OCwweDZkLDB4OTAsMHg0YywweGE5LDB4MDIs Ci0rCTB4NTQsMHg0MCwweDIyLDB4YzgsMHg2NiwweGE1LDB4NDgsMHg0OAotKwl9OwotKwotK19f Zmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9pbnRfcmV0 dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4ODIsMHhjNCwweGExLDB4OWMsMHgyMSwweGQyLDB4ZTcs MHhhNSwweGE2LDB4ZjYsMHg1ZiwweDA0LAotKwkweDVjLDB4YzcsMHgzMSwweDlkLDB4OGQsMHg1 OSwweDc0LDB4NTAsMHgxOSwweDg5LDB4MmYsMHg2MywKLSsJMHhkNSwweGI3LDB4N2UsMHhlYiww eDE1LDB4ZTMsMHg3MCwweDgzLDB4YTEsMHgyNCwweDU5LDB4ZmEsCi0rCTB4MmMsMHg1NiwweGY2 LDB4ODgsMHgzYSwweDkyLDB4OTMsMHhhMSwweGZiLDB4NzksMHhjMSwweDdhCi0rCX07Ci0rCi0r X19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X2VudHJv cHlpbnB1dHJlc2VlZFtdID0KLSsJewotKwkweDM5LDB4YTYsMHhlOCwweDVjLDB4ODIsMHgxNyww eDcxLDB4MjYsMHg1NywweDRmLDB4OWYsMHhjMiwKLSsJMHg1NSwweGZmLDB4NWMsMHg5YiwweDUz LDB4MWEsMHhkMSwweDVmLDB4YmMsMHg2MiwweGU0LDB4MjcsCi0rCTB4MmQsMHgzMiwweGYwLDB4 ZTQsMHg1MiwweDhjLDB4YzUsMHgwYwotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9Ci0r CXsKLSsJMHg4ZCwweGNiLDB4OGQsMHhjZSwweDA4LDB4ZWEsMHg4MCwweGU4LDB4OWIsMHg2MSww eGE4LDB4MGYsCi0rCTB4YWYsMHg0OSwweDIwLDB4OWUsMHg3NCwweGNiLDB4NTcsMHg4MCwweDQy LDB4YjAsMHg4NCwweDVlLAotKwkweDMwLDB4MmEsMHg2NywweDA4LDB4ZjQsMHhlMywweDQwLDB4 MjIKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBzaGEzODRfYWRkaXRpb25hbGlucHV0MltdID0KLSsJewotKwkweDdjLDB4OGYsMHhjMiwweGFl LDB4MjIsMHg0YSwweGQ2LDB4ZjYsMHgwNSwweGE0LDB4N2EsMHhlYSwKLSsJMHhiYiwweDI1LDB4 ZDAsMHhiNywweDVhLDB4ZDYsMHhjZiwweDlkLDB4ZjMsMHg2YywweGUyLDB4YjIsCi0rCTB4NGUs MHhiNCwweGJkLDB4ZjQsMHhlNSwweDQwLDB4ODAsMHg5NAotKwl9OwotKwotK19fZmlwc19jb25z dHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9yZXR1cm5lZGJpdHNbXSA9 Ci0rCXsKLSsJMHg5ZSwweDdlLDB4ZmIsMHg1OSwweGJiLDB4YWEsMHgzYywweGY3LDB4ZTEsMHhm OCwweDc2LDB4ZGQsCi0rCTB4NjMsMHg1ZiwweGFmLDB4MjMsMHhkNiwweDY0LDB4NjEsMHhjMCww eDlhLDB4MDksMHg0NywweGM5LAotKwkweDMzLDB4ZGYsMHg2ZCwweDU1LDB4OTEsMHgzNCwweDc5 LDB4NzAsMHhjNCwweDk5LDB4NmUsMHg1NCwKLSsJMHgwOSwweDY0LDB4MjEsMHgxYSwweGJkLDB4 MWUsMHg4MCwweDQwLDB4MzQsMHhhZCwweGZhLDB4ZDcKLSsJfTsKLSsKLSsKLSsvKiBTSEEtNTEy IFBSICAqLwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTUxMl9wcl9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJMHgxMywweGY3LDB4NjEsMHg3NSwweDY1 LDB4MjgsMHhhMiwweDU5LDB4MTMsMHg1YSwweDRhLDB4NGYsCi0rCTB4NTYsMHg2MCwweDhjLDB4 NTMsMHg3ZCwweGIwLDB4YmQsMHgwNiwweDRmLDB4ZWQsMHhjYywweGQyLAotKwkweGEyLDB4YjUs MHhmZCwweDViLDB4M2EsMHhhYiwweGVjLDB4MjgKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcK LStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcHJfbm9uY2VbXSA9Ci0rCXsKLSsJ MHhiZSwweGEzLDB4OTEsMHg5MywweDFkLDB4YzMsMHgzMSwweDNhLDB4MjMsMHgzMywweDUwLDB4 NjcsCi0rCTB4ODgsMHhjNywweGEyLDB4YzQKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5n W10gPQotKwl7Ci0rCTB4MWYsMHg1OSwweDRkLDB4N2IsMHhlNiwweDQ2LDB4OTEsMHg0OCwweGMx LDB4MjUsMHhmYSwweGZmLAotKwkweDg5LDB4MTIsMHg3NywweDM1LDB4ZGYsMHgzZSwweGY0LDB4 ODAsMHg1ZiwweGQ5LDB4YjAsMHgwNywKLSsJMHgyMiwweDQxLDB4ZGQsMHg0OCwweDc4LDB4NmIs MHg3NywweDJiCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgc2hhNTEyX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweDMwLDB4ZmYs MHg2MywweDZmLDB4YWMsMHhkOSwweDg0LDB4MzksMHg2ZiwweGU0LDB4OTksMHhjZSwKLSsJMHg5 MSwweDdkLDB4N2UsMHhjOCwweDU4LDB4ZjIsMHgxMiwweGMzLDB4YjYsMHhhZCwweGRhLDB4MjIs Ci0rCTB4MDQsMHhhMCwweGQyLDB4MjEsMHhmZSwweGYyLDB4OTUsMHgxZAotKwl9OwotKwotK19f Zmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9lbnRy b3B5aW5wdXRwcltdID0KLSsJewotKwkweDY0LDB4NTQsMHgxMywweGVjLDB4NGYsMHg3NywweGRh LDB4YjIsMHg5MiwweDJlLDB4NTIsMHg4MCwKLSsJMHgxMSwweDEwLDB4YzIsMHhmOCwweGU2LDB4 YTcsMHhjZCwweDRiLDB4ZmMsMHgzMiwweDJlLDB4OWUsCi0rCTB4ZWIsMHhiYiwweGIxLDB4YmYs MHgxNSwweDVjLDB4NzMsMHgwOAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0r CTB4ZWYsMHgxZSwweGRjLDB4MGEsMHhhNCwweDM2LDB4OTEsMHg5YywweDNkLDB4MjcsMHg5Nyww eDUwLAotKwkweDhkLDB4MzYsMHgyOSwweDhkLDB4Y2UsMHg2YSwweDBjLDB4ZjcsMHgyMSwweGMw LDB4OTEsMHhhZSwKLSsJMHgwYywweDk2LDB4NzIsMHhiZCwweDUyLDB4ODEsMHg1OCwweGZjLDB4 NmQsMHhlNSwweGY3LDB4YTUsCi0rCTB4ZmQsMHg1ZCwweGE3LDB4NTgsMHg2OCwweGM4LDB4OTks MHg1OCwweDhlLDB4YzgsMHhjZSwweDk1LAotKwkweDAxLDB4N2QsMHhmZiwweGE0LDB4YzgsMHhm NywweDYzLDB4ZmUsMHg1ZiwweDY5LDB4ODMsMHg1MywKLSsJMHhlMiwweGM2LDB4OGIsMHhjMwot Kwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTUxMl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPQotKwl7Ci0rCTB4ZTYsMHg5YiwweGM0LDB4ODgs MHgzNCwweGNhLDB4ZWEsMHgyOSwweDJmLDB4OTgsMHgwNSwweGE0LAotKwkweGQzLDB4YzAsMHg3 YiwweDExLDB4ZTgsMHhiYiwweDc1LDB4ZjIsMHhiZCwweDI5LDB4YjcsMHg0MCwKLSsJMHgyNSww eDdmLDB4YzEsMHhiNywweGIxLDB4ZjEsMHgyNSwweDYxCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2VudHJvcHlpbnB1dHBy MltdID0KLSsJewotKwkweDIzLDB4NmQsMHhmZiwweGRlLDB4ZmIsMHhkMSwweGJhLDB4MzMsMHgx OCwweGU2LDB4YmUsMHhiNSwKLSsJMHg0OCwweDc3LDB4NmQsMHg3ZiwweGE3LDB4ZTEsMHg0ZCww eDQ4LDB4MWUsMHgzYywweGE3LDB4MzQsCi0rCTB4MWEsMHhjOCwweDYwLDB4ZGIsMHg4ZiwweDk5 LDB4MTUsMHg5OQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIHNoYTUxMl9wcl9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHg3MCwweDI3LDB4 MzEsMHhkYiwweDkyLDB4NzAsMHgyMSwweGZlLDB4MTYsMHhiNiwweGM4LDB4NTEsCi0rCTB4MzQs MHg4NywweDY1LDB4ZDAsMHg0ZSwweGZkLDB4ZmUsMHg2OCwweGVjLDB4YWMsMHhkYywweDkzLAot KwkweDQxLDB4MzgsMHg5MiwweDkwLDB4YjQsMHg5NCwweGY5LDB4MGQsMHhhNCwweGY3LDB4NGUs MHg4MCwKLSsJMHg5MiwweDY3LDB4NDgsMHg0MCwweGE3LDB4MDgsMHhjNywweGJjLDB4NjYsMHgw MCwweGZkLDB4ZjcsCi0rCTB4NGMsMHg4YiwweDE3LDB4NmUsMHhkMSwweDhmLDB4OWIsMHhmMyww eDZmLDB4ZjYsMHgzNCwweGRkLAotKwkweDY3LDB4ZjcsMHg2OCwweGRkCi0rCX07Ci0rCi0rCi0r LyogU0hBLTUxMiBObyBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBzaGE1MTJfZW50cm9weWlucHV0W10gPQotKwl7Ci0rCTB4YjYsMHgwYiwweGI3 LDB4YmMsMHg4NCwweDU2LDB4ZjYsMHgxMiwweGFmLDB4NDUsMHg2NywweDE3LAotKwkweDdjLDB4 ZDEsMHhiMiwweDc4LDB4MmIsMHhhMCwweGYyLDB4YmUsMHhiNiwweDZkLDB4OGIsMHg1NiwKLSsJ MHhjNiwweGJjLDB4NGQsMHhlMSwweGY3LDB4YmUsMHhjZSwweGJkCi0rCX07Ci0rCi0rX19maXBz X2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX25vbmNlW10gPQot Kwl7Ci0rCTB4OWQsMHhlZCwweGMwLDB4ZTUsMHg1YSwweDk4LDB4NmEsMHhjYiwweDUxLDB4N2Qs MHg3NiwweDMxLAotKwkweDVhLDB4NjQsMHhmMCwweGY3Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3BlcnNvbmFsaXphdGlvbnN0 cmluZ1tdID0KLSsJewotKwkweGMyLDB4NmQsMHhhMywweGMzLDB4MDYsMHg3NCwweGU1LDB4MDEs MHg1YywweDEwLDB4MTcsMHhjNywKLSsJMHhhZiwweDgzLDB4OWQsMHg1OSwweDhkLDB4MmQsMHgy OSwweDM4LDB4YzUsMHg1OSwweDcwLDB4OGIsCi0rCTB4NDYsMHg0OCwweDJkLDB4Y2YsMHgzNiww eDdkLDB4NTksMHhjMAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTUxMl9hZGRpdGlvbmFsaW5wdXRbXSA9Ci0rCXsKLSsJMHhlYywweDhj LDB4ZDQsMHhmNywweDYxLDB4NmUsMHgwZCwweDk1LDB4NzksMHhiNywweDI4LDB4YWQsCi0rCTB4 NWYsMHg2OSwweDc0LDB4NWYsMHgyZCwweDM2LDB4MDYsMHg4YSwweDZiLDB4YWMsMHg1NCwweDk3 LAotKwkweGM0LDB4YTEsMHgxMiwweDg1LDB4MGEsMHhkZiwweDRiLDB4MzQKLSsJfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfaW50X3Jl dHVybmVkYml0c1tdID0KLSsJewotKwkweDg0LDB4MmYsMHgxZiwweDY4LDB4NmEsMHhhMywweGFk LDB4MWUsMHhmYiwweGY0LDB4MTUsMHhiZCwKLSsJMHhkZSwweDM4LDB4ZDQsMHgzMCwweDgwLDB4 NTEsMHhlOSwweGQzLDB4YzcsMHgyMCwweDg4LDB4ZTksCi0rCTB4ZjUsMHhjYywweGRmLDB4NTcs MHg1YywweDQ3LDB4MmYsMHg1NywweDNjLDB4NWYsMHgxMywweDU2LAotKwkweGNjLDB4YzUsMHg0 ZiwweDg0LDB4ZjgsMHgxMCwweDQxLDB4ZDUsMHg3ZSwweDU4LDB4NmUsMHgxOSwKLSsJMHgxOSww eDllLDB4YWYsMHhjMiwweDIyLDB4NTgsMHg0MSwweDUwLDB4NzksMHhjMiwweGQ4LDB4MDQsCi0r CTB4MjgsMHhkNCwweDM5LDB4OWEKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfZW50cm9weWlucHV0cmVzZWVkW10gPQotKwl7Ci0r CTB4ZmEsMHg3ZiwweDQ2LDB4NTEsMHg4MywweDYyLDB4OTgsMHgxNiwweDlhLDB4MTksMHhhMiww eDQ5LAotKwkweGE5LDB4ZTYsMHg0YSwweGQ4LDB4ODUsMHhlNywweGQ0LDB4M2IsMHgyYywweDgy LDB4YzUsMHg4MiwKLSsJMHhiZiwweDExLDB4ZjksMHg5ZSwweGJjLDB4ZDAsMHgwMSwweGVlCi0r CX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hh NTEyX2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0KLSsJewotKwkweGI5LDB4MTIsMHhlMCwweDRm LDB4ZjcsMHhhNywweGM0LDB4ZDgsMHhkMCwweDhlLDB4OTksMHgyOSwKLSsJMHg3YywweDlhLDB4 ZTksMHhjZiwweGM0LDB4NmMsMHhmOCwweGMzLDB4YTcsMHg0MSwweDgzLDB4ZDYsCi0rCTB4MmUs MHhmYSwweGI4LDB4NWUsMHg4ZSwweDZiLDB4NzgsMHgyMAotKwl9OwotKwotK19fZmlwc19jb25z dHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9hZGRpdGlvbmFsaW5wdXQy W10gPQotKwl7Ci0rCTB4ZDcsMHgwNywweDUyLDB4YjksMHg4MywweDJjLDB4MDMsMHg3MSwweGVl LDB4YzksMHhjMCwweDg1LAotKwkweGUxLDB4NTcsMHhiMiwweGNkLDB4M2EsMHhmMCwweGM5LDB4 MzQsMHgyNCwweDQxLDB4MWMsMHg0MiwKLSsJMHg5OSwweGIyLDB4ODQsMHhlOSwweDE3LDB4ZDIs MHg3NiwweDkyCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgc2hhNTEyX3JldHVybmVkYml0c1tdID0KLSsJewotKwkweDM2LDB4MTcsMHg1ZCww eDk4LDB4MmIsMHg2NSwweDI1LDB4OGUsMHhjOCwweDI5LDB4ZGYsMHgyNywKLSsJMHgwNSwweDM2 LDB4MjYsMHgxMiwweDhhLDB4NjgsMHg3NCwweDI3LDB4MzcsMHhkNCwweDdmLDB4MzIsCi0rCTB4 YjEsMHgxMiwweGQ2LDB4ODUsMHg4MywweGViLDB4MmUsMHhhMCwweGVkLDB4NGIsMHhiNSwweDdi LAotKwkweDZmLDB4MzksMHgzYywweDcxLDB4NzcsMHgwMiwweDEyLDB4Y2MsMHgyYywweDNhLDB4 OGUsMHg2MywKLSsJMHhkZiwweDRhLDB4YmQsMHg2ZiwweDZlLDB4MmUsMHhlZCwweDBhLDB4ODUs MHhhNSwweDJmLDB4YTIsCi0rCTB4NjgsMHhkZSwweDQyLDB4YjUKLSsJfTsKLSsKLSsKLSsvKiBI TUFDIFNIQS0xIFBSICAqLwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGhtYWNfc2hhMV9wcl9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJMHgyNiwweDVmLDB4 MzYsMHgxNCwweGZmLDB4M2QsMHg4MywweGZhLDB4NzMsMHg1ZSwweDc1LDB4ZGMsCi0rCTB4MmMs MHgxOCwweDE3LDB4MWIKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBobWFjX3NoYTFfcHJfbm9uY2VbXSA9Ci0rCXsKLSsJMHhjOCwweGUzLDB4 NTcsMHhhNSwweDdiLDB4NzQsMHg4NiwweDZlCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0r c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX3BlcnNvbmFsaXphdGlvbnN0 cmluZ1tdID0KLSsJewotKwkweDZlLDB4ZGIsMHgwZCwweGZlLDB4N2QsMHhhYywweDc5LDB4ZDAs MHhhNSwweDNhLDB4NDgsMHg4NSwKLSsJMHg4MCwweGUyLDB4N2YsMHgyYQotKwl9OwotKwotK19f Zmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wcl9h ZGRpdGlvbmFsaW5wdXRbXSA9Ci0rCXsKLSsJMHgzMSwweGNkLDB4NWUsMHg0MywweGRjLDB4ZmIs MHg3YSwweDc5LDB4Y2EsMHg4OCwweGRlLDB4MWYsCi0rCTB4ZDcsMHhiYiwweDQyLDB4MDkKLSsJ fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTFfcHJfZW50cm9weWlucHV0cHJbXSA9Ci0rCXsKLSsJMHg3YywweDIzLDB4OTUsMHgzOCww eDAwLDB4OTUsMHhjMSwweDc4LDB4MWYsMHg4ZiwweGQ3LDB4NjMsCi0rCTB4MjMsMHg4NywweDJh LDB4ZWQKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTFfcHJfaW50X3JldHVybmVkYml0c1tdID0KLSsJewotKwkweGJiLDB4MzQs MHhlNywweDkzLDB4YTMsMHgwMiwweDJjLDB4NGEsMHhkMCwweDg5LDB4ZGEsMHg3ZiwKLSsJMHhl ZCwweGY0LDB4NGMsMHhkZSwweDE3LDB4ZWMsMHhlNSwweDZjCi0rCX07Ci0rCi0rX19maXBzX2Nv bnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX2FkZGl0aW9u YWxpbnB1dDJbXSA9Ci0rCXsKLSsJMHg0OSwweGJjLDB4MmQsMHgyYywweGI3LDB4MzIsMHhjYiww eDIwLDB4ZGYsMHhmNSwweDc3LDB4NTgsCi0rCTB4YTAsMHg0YiwweDkzLDB4NmUKLSsJfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFf cHJfZW50cm9weWlucHV0cHIyW10gPQotKwl7Ci0rCTB4M2MsMHhhYSwweGIwLDB4MjEsMHg0Miww eGIwLDB4ZGQsMHgzNCwweGYwLDB4MTYsMHg3ZiwweDBjLAotKwkweDBmLDB4ZmYsMHgyZSwweGFm Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGExX3ByX3JldHVybmVkYml0c1tdID0KLSsJewotKwkweDhlLDB4Y2IsMHhhMywweDY0 LDB4YjIsMHhiOCwweDMzLDB4NmMsMHg2NCwweDNiLDB4NzgsMHgxNiwKLSsJMHg5OSwweDM1LDB4 YzgsMHgzMCwweGNiLDB4M2UsMHhhMCwweGQ4Ci0rCX07Ci0rCi0rCi0rLyogSE1BQyBTSEEtMSBO byBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBo bWFjX3NoYTFfZW50cm9weWlucHV0W10gPQotKwl7Ci0rCTB4MzIsMHg5YSwweDJhLDB4ODcsMHg3 YiwweDg5LDB4N2MsMHhmNiwweGNiLDB4OTUsMHhkNSwweDQwLAotKwkweDE3LDB4ZmUsMHg0Nyww eDcwCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgaG1hY19zaGExX25vbmNlW10gPQotKwl7Ci0rCTB4MTYsMHhkOCwweGUwLDB4YzcsMHg1Miww eGNmLDB4NGEsMHgyNQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9Ci0rCXsKLSsJ MHgzNSwweDM1LDB4YTksMHhhNSwweDQwLDB4YmUsMHg5YiwweGQxLDB4NTYsMHhkZCwweDQ0LDB4 MDAsCi0rCTB4NzIsMHhmNywweGQzLDB4NWUKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfYWRkaXRpb25hbGlucHV0W10gPQot Kwl7Ci0rCTB4MWIsMHgyYywweDg0LDB4MmQsMHg0YSwweDg5LDB4OGYsMHg2OSwweDE5LDB4ZjEs MHhmMywweGRiLAotKwkweGJiLDB4ZTMsMHhhYSwweGVhCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX2ludF9yZXR1cm5lZGJp dHNbXSA9Ci0rCXsKLSsJMHhjZiwweGZhLDB4N2QsMHg3MiwweDBmLDB4ZTYsMHhjNywweDk2LDB4 YTAsMHg2OSwweDMxLDB4MTEsCi0rCTB4OWIsMHgwYiwweDFhLDB4MjAsMHgxZiwweDNmLDB4YWEs MHhkMQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMV9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHg5MCwweDc1LDB4 MTUsMHgwNCwweDk1LDB4ZjEsMHhiYSwweDgxLDB4MGMsMHgzNywweDk0LDB4NmYsCi0rCTB4ODYs MHg1MiwweDZkLDB4OWMKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBobWFjX3NoYTFfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPQotKwl7Ci0r CTB4NWIsMHg0MCwweGJhLDB4NWYsMHgxNywweDcwLDB4ZjAsMHg0YiwweGRmLDB4YzksMHg5Nyww eDkyLAotKwkweDc5LDB4YzUsMHg4MiwweDI4Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0r c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX2FkZGl0aW9uYWxpbnB1dDJbXSA9 Ci0rCXsKLSsJMHg5NywweGM4LDB4ODAsMHg5MCwweGIzLDB4YWEsMHg2ZSwweDYwLDB4ZWEsMHg4 MywweDdhLDB4ZTMsCi0rCTB4OGEsMHhjYSwweGE0LDB4N2YKLSsJfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcmV0dXJuZWRiaXRz W10gPQotKwl7Ci0rCTB4OTAsMHhiZCwweDA1LDB4NTYsMHg2ZCwweGI1LDB4MjIsMHhkNSwweGI5 LDB4NWEsMHgyOSwweDJkLAotKwkweGU5LDB4MGIsMHhlMSwweGFjLDB4ZGUsMHgyNywweDBiLDB4 YjAKLSsJfTsKLSsKLSsKLSsvKiBITUFDIFNIQS0yMjQgUFIgICovCi0rX19maXBzX2NvbnN0c2Vn Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfZW50cm9weWlucHV0 W10gPQotKwl7Ci0rCTB4MTcsMHgzMiwweDJiLDB4MmUsMHg2ZiwweDFiLDB4OWMsMHg2ZCwweDMx LDB4ZTAsMHgzNCwweDA3LAotKwkweGNmLDB4ZWQsMHhmNiwweGI2LDB4NWEsMHg3NiwweDRjLDB4 YmMsMHg2MiwweDg1LDB4MDEsMHg5MAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X3ByX25vbmNlW10gPQotKwl7Ci0rCTB4 MzgsMHhiZiwweDVmLDB4MjAsMHhiMywweDY4LDB4MmYsMHg0MywweDYxLDB4MDUsMHg4ZiwweDIz Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGEyMjRfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPQotKwl7Ci0rCTB4YzAsMHhj OSwweDQ1LDB4YWMsMHg4ZCwweDI3LDB4NzcsMHgwOCwweDBiLDB4MTcsMHg2ZCwweGVkLAotKwkw eGMxLDB4N2QsMHhkNSwweDA3LDB4OWQsMHg2ZSwweGY4LDB4MjMsMHgyYSwweDIyLDB4MTMsMHhi ZAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMjI0X3ByX2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweGE0LDB4M2MsMHhl NywweDNiLDB4ZWEsMHgxOSwweDQ1LDB4MzIsMHhjMiwweDgzLDB4NmQsMHgyMSwKLSsJMHg4YSww eGMwLDB4ZWUsMHg2NywweDQ1LDB4ZGUsMHgxMywweDdkLDB4OWQsMHg2MSwweDAwLDB4M2IKLSsJ fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTIyNF9wcl9lbnRyb3B5aW5wdXRwcltdID0KLSsJewotKwkweDE1LDB4MDUsMHg3NCwweDRh LDB4N2YsMHg4ZCwweDVjLDB4NjAsMHgxNiwweGU1LDB4N2IsMHhhZCwKLSsJMHhmNSwweDQxLDB4 OGYsMHg1NSwweDYwLDB4YzQsMHgwOSwweGVlLDB4MWUsMHgxMSwweDgxLDB4YWIKLSsJfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIy NF9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4NmYsMHhmNSwweDlhLDB4ZTIsMHg1 NCwweDUzLDB4MzAsMHgzZCwweDVhLDB4MjcsMHgyOSwweDM4LAotKwkweDI3LDB4ZjIsMHgwZCww eDA1LDB4ZTksMHgyNiwweGNiLDB4MTYsMHhjMywweDUxLDB4NWYsMHgxMywKLSsJMHg0MSwweGZl LDB4OTksMHhmMgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhMjI0X3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9Ci0rCXsKLSsJMHg3 MywweDgxLDB4ODgsMHg4NCwweDhmLDB4ZWQsMHg2ZiwweDEwLDB4OWYsMHg5MywweGJmLDB4MTcs Ci0rCTB4MzUsMHg3YywweGVmLDB4ZDUsMHg4ZCwweDI2LDB4YTYsMHg3YSwweGU4LDB4MDksMHgz NiwweDRmCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEyMjRfcHJfZW50cm9weWlucHV0cHIyW10gPQotKwl7Ci0rCTB4ZTYsMHhj ZiwweGNmLDB4N2UsMHgxMiwweGU1LDB4NDMsMHhkMiwweDM4LDB4ZDgsMHgyNCwweDZmLAotKwkw eDVhLDB4MzcsMHg2OCwweGJmLDB4NGYsMHhhMCwweGZmLDB4ZDUsMHg2MSwweDhhLDB4OTMsMHhl MAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMjI0X3ByX3JldHVybmVkYml0c1tdID0KLSsJewotKwkweGFmLDB4ZjksMHhkOCww eDE5LDB4OTEsMHgzMCwweDgyLDB4NmYsMHhhOSwweDFlLDB4OWQsMHhkNywKLSsJMHhmMywweDUw LDB4ZTAsMHhjNywweGQ1LDB4NjQsMHg5NiwweDdkLDB4NGMsMHg0ZCwweDc4LDB4MDMsCi0rCTB4 NmQsMHhkOCwweDllLDB4NzIKLSsJfTsKLSsKLSsKLSsvKiBITUFDIFNIQS0yMjQgTm8gUFIgICov Ci0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEy MjRfZW50cm9weWlucHV0W10gPQotKwl7Ci0rCTB4MTEsMHg4MiwweGZkLDB4ZDksMHg0MiwweGY0 LDB4ZmEsMHhjOCwweGYyLDB4NDEsMHhlNiwweDU0LAotKwkweDAxLDB4YWUsMHgyMiwweDZlLDB4 YzYsMHhhZiwweGFmLDB4ZDAsMHhhNiwweGIyLDB4ZTIsMHg2ZAotKwl9OwotKwotK19fZmlwc19j b25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X25vbmNlW10g PQotKwl7Ci0rCTB4YTksMHg0OCwweGQ3LDB4OTIsMHgzOSwweDdlLDB4MmEsMHhkYywweDMwLDB4 MWYsMHgwZSwweDJiCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPQotKwl7Ci0r CTB4MTEsMHhkNSwweGY0LDB4YmQsMHg2NywweDhjLDB4MzEsMHhjZiwweGEzLDB4M2YsMHgxZSww eDZiLAotKwkweGE4LDB4MDcsMHgwMiwweDBiLDB4YzgsMHgyZSwweDZjLDB4NjQsMHg0MSwweDVi LDB4YzgsMHgzNwotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhMjI0X2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweDY4LDB4 MTgsMHhjMiwweDA2LDB4ZWIsMHgzZSwweDA0LDB4OTUsMHg0NCwweDVlLDB4ZmIsMHhlNiwKLSsJ MHg0MSwweGMxLDB4NWMsMHhjYywweDQwLDB4MmYsMHhiNywweGQyLDB4MGYsMHhmMywweDZiLDB4 ZTcKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBobWFjX3NoYTIyNF9pbnRfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4N2YsMHg0NSwweGM3 LDB4NWQsMHgzMiwweGU2LDB4MTcsMHg2MCwweGJhLDB4ZGMsMHhiOCwweDQyLAotKwkweDFiLDB4 OWMsMHhmMSwweGZhLDB4M2IsMHg0ZCwweDI5LDB4NTQsMHhjNiwweDkwLDB4ZmYsMHg1YywKLSsJ MHhjZCwweGQ2LDB4YTksMHhjYwotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X2VudHJvcHlpbnB1dHJlc2VlZFtdID0KLSsJ ewotKwkweGM0LDB4OGUsMHgzNywweDk1LDB4NjksMHg1MywweDI4LDB4ZDcsMHgzNywweGJiLDB4 NzAsMHg5NSwKLSsJMHgxYywweDA3LDB4MWQsMHhkOSwweGI3LDB4ZTYsMHgxYiwweGJiLDB4ZmUs MHg0MSwweGViLDB4YzkKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9Ci0rCXsK LSsJMHg1MywweDE3LDB4YTEsMHg2YSwweGZhLDB4NzcsMHg0NywweGIwLDB4OTUsMHg1NiwweDlh LDB4MjAsCi0rCTB4NTcsMHhkZSwweDVjLDB4ODksMHg5ZiwweDdmLDB4ZTIsMHhkZSwweDE3LDB4 M2EsMHg1MCwweDIzCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfYWRkaXRpb25hbGlucHV0MltdID0KLSsJewotKwkweDNh LDB4MzIsMHhmOSwweDg1LDB4MGMsMHhjMSwweGVkLDB4NzYsMHgyZCwweGRmLDB4NDAsMHhjMywK LSsJMHgwNiwweDIyLDB4NjYsMHhkNCwweDlhLDB4OWEsMHhmZiwweDVhLDB4N2UsMHg3YSwweGYz LDB4OTYKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTIyNF9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHg0MywweGI0LDB4NTcs MHg1YywweDM4LDB4MjUsMHg5ZCwweGFlLDB4ZWMsMHg5NiwweGQxLDB4ODUsCi0rCTB4M2EsMHg4 NCwweDhkLDB4ZmUsMHg2OCwweGQ1LDB4MGUsMHg1YywweDhmLDB4NjUsMHhhNSwweDRlLAotKwkw eDQ1LDB4ODQsMHhhOCwweDk0Ci0rCX07Ci0rCi0rCi0rLyogSE1BQyBTSEEtMjU2IFBSICAqLwot K19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2 X3ByX2VudHJvcHlpbnB1dFtdID0KLSsJewotKwkweDRkLDB4YjAsMHg0MywweGQ4LDB4MzQsMHg0 YiwweDEwLDB4NzAsMHhiMSwweDhiLDB4ZWQsMHhlYSwKLSsJMHgwNywweDkyLDB4OWYsMHg2Yyww eDc5LDB4MzEsMHhhZiwweDgxLDB4MjksMHhlYiwweDZlLDB4Y2EsCi0rCTB4MzIsMHg0OCwweDI4 LDB4ZTcsMHgwMiwweDVkLDB4YTYsMHhhNgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3ByX25vbmNlW10gPQotKwl7Ci0r CTB4M2EsMHhhZSwweDE1LDB4YTksMHg5OSwweGRjLDB4ZTQsMHg2NywweDM0LDB4M2IsMHg3MCww eDE1LAotKwkweGFhLDB4ZDMsMHgzMCwweDlhCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0r c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfcGVyc29uYWxpemF0aW9u c3RyaW5nW10gPQotKwl7Ci0rCTB4MTMsMHgxZCwweDI0LDB4MDQsMHhiMCwweDE4LDB4ODEsMHgx NSwweDIxLDB4NTEsMHgyYSwweDI0LAotKwkweDUyLDB4NjEsMHhiZSwweDY0LDB4ODIsMHg2Yiww eDU1LDB4MmYsMHhlMiwweGYxLDB4NDAsMHg3ZCwKLSsJMHg3MSwweGQ4LDB4MDEsMHg4NiwweDE1 LDB4YjcsMHg4YiwweGI1Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0W10gPQotKwl7Ci0r CTB4OGYsMHhhNiwweDU0LDB4NWYsMHhiMSwweGQwLDB4ZDgsMHhjMywweGU3LDB4MGMsMHgxNSww eGE5LAotKwkweDIzLDB4NmUsMHhmZSwweGZiLDB4OTMsMHhmNywweDNhLDB4YmQsMHg1OSwweDAx LDB4ZmEsMHgxOCwKLSsJMHg4ZSwweGU5LDB4MWEsMHhhOSwweDc4LDB4ZmMsMHg3OSwweDBiCi0r CX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGEyNTZfcHJfZW50cm9weWlucHV0cHJbXSA9Ci0rCXsKLSsJMHhjZiwweDI0LDB4YjksMHhl YiwweGIzLDB4ZDQsMHhjZCwweDE3LDB4MzcsMHgzOCwweDc1LDB4NzksCi0rCTB4MTUsMHhjYiww eDJkLDB4NzUsMHg1MSwweGYxLDB4Y2MsMHhhYSwweDMyLDB4YTQsMHhhNywweDM2LAotKwkweDdj LDB4NWMsMHhlNCwweDQ3LDB4ZjEsMHgzZSwweDFkLDB4ZTUKLSsJfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wcl9pbnRfcmV0 dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4NTIsMHg0MiwweGZhLDB4ZWIsMHg4NSwweGUwLDB4MzAs MHgyMiwweDc5LDB4MDAsMHgxNiwweGIyLAotKwkweDg4LDB4MmYsMHgxNCwweDZhLDB4YjcsMHhm YywweGI3LDB4NTMsMHhkYywweDRhLDB4MTIsMHhlZiwKLSsJMHg1NCwweGQ2LDB4MzMsMHhlOSww eDIwLDB4ZDYsMHhmZCwweDU2Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0MltdID0KLSsJ ewotKwkweGY0LDB4ZjYsMHg0OSwweGExLDB4MmQsMHg2NCwweDJiLDB4MzAsMHg1OCwweGY4LDB4 YmQsMHhiOCwKLSsJMHg3NSwweGViLDB4YmIsMHg1ZSwweDFjLDB4OWIsMHg4MSwweDZhLDB4ZGEs MHgxNCwweDg2LDB4NmUsCi0rCTB4ZDAsMHhkYSwweDE4LDB4YjcsMHg4OCwweGZiLDB4NTksMHhm MwotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMjU2X3ByX2VudHJvcHlpbnB1dHByMltdID0KLSsJewotKwkweDIxLDB4Y2QsMHg2 ZSwweDQ2LDB4YWQsMHg5OSwweDA3LDB4MTcsMHhiNCwweDNkLDB4NzYsMHgwYSwKLSsJMHhmZiww eDViLDB4NTIsMHg1MCwweDc4LDB4ZGYsMHgxZiwweDI0LDB4MDYsMHgwZCwweDNmLDB4NzQsCi0r CTB4YTksMHhjOSwweDM3LDB4Y2YsMHhkOCwweDI2LDB4MjUsMHg5MQotKwl9OwotKwotK19fZmlw c19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3ByX3Jl dHVybmVkYml0c1tdID0KLSsJewotKwkweGE3LDB4YWYsMHgyZiwweDI5LDB4ZTAsMHgzYSwweDcy LDB4OTUsMHg5NiwweDFjLDB4YTksMHhmMCwKLSsJMHg0YSwweDE3LDB4NGQsMHg2NiwweDA2LDB4 MTAsMHhiZiwweDM5LDB4ODksMHg4OCwweGI4LDB4OTEsCi0rCTB4MzcsMHgxOCwweDk5LDB4Y2Ys MHg4YywweDUzLDB4M2IsMHg3ZQotKwl9OwotKwotKwotKy8qIEhNQUMgU0hBLTI1NiBObyBQUiAg Ki8KLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTI1Nl9lbnRyb3B5aW5wdXRbXSA9Ci0rCXsKLSsJMHg5NiwweGI3LDB4NTMsMHgyMiwweDFlLDB4 NTIsMHgyYSwweDk2LDB4YjEsMHgxNSwweDNjLDB4MzUsCi0rCTB4NWEsMHg4YiwweGQzLDB4NGEs MHhhNiwweDZjLDB4ODMsMHgwYSwweDdkLDB4YTMsMHgyMywweDNkLAotKwkweDQzLDB4YTEsMHgw NywweDJjLDB4MmQsMHhlMywweDgxLDB4Y2MKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9ub25jZVtdID0KLSsJewotKwkw eGYxLDB4YWMsMHg5NywweGNiLDB4NWUsMHgwNiwweDQ4LDB4ZDIsMHg5NCwweGJlLDB4MTUsMHgy ZSwKLSsJMHhjNywweGZjLDB4YzIsMHgwMQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3BlcnNvbmFsaXphdGlvbnN0cmlu Z1tdID0KLSsJewotKwkweDk4LDB4YzUsMHgxZSwweDM1LDB4NWUsMHg4OSwweDBkLDB4Y2UsMHg2 NCwweDZkLDB4MTgsMHhhNywKLSsJMHg1YSwweGM2LDB4ZjMsMHhlNywweGQ2LDB4OWUsMHhjMCww eGVhLDB4YjcsMHgzYSwweDhkLDB4NjUsCi0rCTB4YjgsMHhlYiwweDEwLDB4ZDcsMHg1NywweDE4 LDB4YTAsMHgzMgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhMjU2X2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweDFiLDB4 MTAsMHhhZiwweGFjLDB4ZDAsMHg2NSwweDk1LDB4YWQsMHgwNCwweGFkLDB4MDMsMHgxYywKLSsJ MHhlMCwweDQwLDB4ZDYsMHgzZSwweDFjLDB4NDYsMHg1MywweDM5LDB4N2MsMHhlMiwweGJjLDB4 ZGEsCi0rCTB4OGMsMHhhMiwweDMzLDB4YTcsMHg5YSwweDI2LDB4ZDMsMHgyNwotKwl9OwotKwot K19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2 X2ludF9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHhiYSwweDYxLDB4MGUsMHg1NSwweGZlLDB4 MTEsMHg4YSwweDllLDB4MGYsMHg4MCwweGRmLDB4MWQsCi0rCTB4MDMsMHgwYSwweGZlLDB4MTUs MHg5NCwweDI4LDB4NGIsMHhiYSwweGY0LDB4OWYsMHg1MSwweDI1LAotKwkweDg4LDB4ZTUsMHg0 ZSwweGZiLDB4YWYsMHhjZSwweDY5LDB4OTAKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9lbnRyb3B5aW5wdXRyZXNlZWRb XSA9Ci0rCXsKLSsJMHg2MiwweDdmLDB4MWUsMHg2YiwweGU4LDB4OGUsMHhlMSwweDM1LDB4N2Qs MHg5YiwweDRmLDB4YzcsCi0rCTB4ZWMsMHhjOCwweGFjLDB4ZWYsMHg2YiwweDEzLDB4OWUsMHgw NSwweDU2LDB4YzEsMHgwOCwweGY5LAotKwkweDJmLDB4MGYsMHgyNywweDljLDB4ZDQsMHgxNSww eGVkLDB4MmQKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTI1Nl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHhj NywweDc2LDB4NmUsMHhhOSwweGQyLDB4YjIsMHg3NiwweDQwLDB4ODIsMHgyNSwweDJjLDB4YjMs Ci0rCTB4NmYsMHhhYywweGU5LDB4NzQsMHhlZiwweDhmLDB4M2MsMHg4ZSwweGNkLDB4ZjEsMHhi ZiwweGIzLAotKwkweDQ5LDB4NzcsMHgzNCwweDg4LDB4NTIsMHgzNiwweGU2LDB4MmUKLSsJfTsK LSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTI1Nl9hZGRpdGlvbmFsaW5wdXQyW10gPQotKwl7Ci0rCTB4OGQsMHhiOCwweDBjLDB4ZDEsMHhi ZiwweDcwLDB4ZjYsMHgxOSwweGMzLDB4NDEsMHg4MCwweDlmLAotKwkweGUxLDB4YTUsMHhhNCww eDFmLDB4MmMsMHgyNiwweGIxLDB4ZTUsMHhkOCwweGViLDB4YmUsMHhmOCwKLSsJMHhkZiwweDg4 LDB4NmEsMHg4OSwweGQ2LDB4MDUsMHhkOCwweDlkCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2Vn Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcmV0dXJuZWRiaXRzW10g PQotKwl7Ci0rCTB4NDMsMHgxMiwweDJhLDB4MmMsMHg0MCwweDUzLDB4MmUsMHg3YywweDY2LDB4 MzQsMHhhYywweGMzLAotKwkweDQzLDB4ZTMsMHhlMCwweDZhLDB4ZmMsMHhmYSwweGVhLDB4ODcs MHgyMSwweDFmLDB4ZTIsMHgyNiwKLSsJMHhjNCwweGY5LDB4MDksMHg5YSwweDBkLDB4NmUsMHg3 ZiwweGUwCi0rCX07Ci0rCi0rCi0rLyogSE1BQyBTSEEtMzg0IFBSICAqLwotK19fZmlwc19jb25z dHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX2VudHJvcHlp bnB1dFtdID0KLSsJewotKwkweDY5LDB4ODEsMHg5OCwweDg4LDB4NDQsMHhmNSwweGQ2LDB4MmUs MHgwMCwweDA4LDB4M2IsMHhjNSwKLSsJMHhmYiwweGQ3LDB4OGUsMHg2ZiwweDIzLDB4ZjgsMHg2 ZCwweDA5LDB4ZDYsMHg4NSwweDQ5LDB4ZDEsCi0rCTB4ZjgsMHg2ZCwweGE0LDB4NTgsMHg1NCww eGZkLDB4ODgsMHhhOQotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX25vbmNlW10gPQotKwl7Ci0rCTB4NmUsMHgzOCww eDgxLDB4Y2EsMHhiNywweGU4LDB4NmUsMHg2NiwweDQ5LDB4OGEsMHhiMiwweDU5LAotKwkweGVl LDB4MTYsMHhjOSwweGRlCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPQot Kwl7Ci0rCTB4ZmUsMHg0YywweGQ5LDB4ZjQsMHg3OCwweDNiLDB4MDgsMHg0MSwweDhkLDB4OGYs MHg1NSwweGM0LAotKwkweDQzLDB4NTYsMHhiNiwweDEyLDB4MzYsMHg2YiwweDMwLDB4YjcsMHg1 ZSwweGUxLDB4YjksMHg0NywKLSsJMHgwNCwweGIxLDB4NGUsMHhhOSwweDAwLDB4YTEsMHg1Miww eGExCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgaG1hY19zaGEzODRfcHJfYWRkaXRpb25hbGlucHV0W10gPQotKwl7Ci0rCTB4ODksMHhlOSww eGNjLDB4OGYsMHgyNywweDNjLDB4MjYsMHhkMSwweDk1LDB4YzgsMHg3ZCwweDBmLAotKwkweDVi LDB4MWEsMHhmMCwweDc4LDB4MzksMHg1NiwweDZmLDB4YTQsMHgyMywweGU3LDB4ZDEsMHhkYSwK LSsJMHg3YywweDY2LDB4MzMsMHhhMCwweDkwLDB4YzksMHg5MiwweDg4Ci0rCX07Ci0rCi0rX19m aXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJf ZW50cm9weWlucHV0cHJbXSA9Ci0rCXsKLSsJMHhiZSwweDNkLDB4N2MsMHgwZCwweGNhLDB4ZGEs MHg3YywweDQ5LDB4YjgsMHgxMiwweDM2LDB4YzAsCi0rCTB4ZGIsMHhhZCwweDM1LDB4YTgsMHhj NywweDBiLDB4MmEsMHgyYywweDY5LDB4NmQsMHgyNSwweDU2LAotKwkweDYzLDB4ODIsMHgxMSww eDNlLDB4YTcsMHgzMywweDcwLDB4NzIKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9wcl9pbnRfcmV0dXJuZWRiaXRzW10g PQotKwl7Ci0rCTB4ODIsMHgzZCwweGU2LDB4NTQsMHg4MCwweDQyLDB4ZjgsMHhiYSwweDkwLDB4 NGYsMHgwNiwweGE2LAotKwkweGQyLDB4N2YsMHhiZiwweDc5LDB4N2MsMHgxMiwweDdkLDB4YTYs MHhhMiwweDY2LDB4ZTgsMHhhNiwKLSsJMHhjMCwweGQ2LDB4NGEsMHg1NSwweGJmLDB4ZDgsMHgw YSwweGM1LDB4ZjgsMHgwMywweDg4LDB4ZGQsCi0rCTB4OGUsMHg4NywweGQxLDB4NWEsMHg0OCww eDI2LDB4NzIsMHgyYSwweDhlLDB4Y2YsMHhlZSwweGJhCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfYWRkaXRpb25h bGlucHV0MltdID0KLSsJewotKwkweDhmLDB4ZmYsMHhkOSwweDg0LDB4YmIsMHg4NSwweDNhLDB4 NjYsMHhhMSwweDIxLDB4Y2UsMHhiMiwKLSsJMHgzYSwweDNhLDB4MTcsMHgyMiwweDE5LDB4YWUs MHhjNywweGI2LDB4NjMsMHg4MSwweGQ1LDB4ZmYsCi0rCTB4MGQsMHhjOCwweGUxLDB4YWYsMHg1 NywweGQyLDB4Y2IsMHg2MAotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX2VudHJvcHlpbnB1dHByMltdID0KLSsJewot KwkweGQ3LDB4ZmIsMHhjOSwweGU4LDB4ZTIsMHhmMiwweGFhLDB4NGMsMHhiOCwweDUxLDB4MmYs MHhlMSwKLSsJMHgyMiwweGJhLDB4ZjMsMHhkYSwweDBhLDB4MTksMHg3NiwweDcxLDB4NTcsMHhi MiwweDFkLDB4OTQsCi0rCTB4MDksMHg2OSwweDZjLDB4ZDMsMHg5NywweDUxLDB4ODEsMHg4Nwot Kwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhMzg0X3ByX3JldHVybmVkYml0c1tdID0KLSsJewotKwkweGU2LDB4MTksMHgyOCwweGE4 LDB4MjEsMHhjZSwweDVlLDB4ZGIsMHgyNCwweDc5LDB4OGMsMHg3NiwKLSsJMHg1ZCwweDczLDB4 YjIsMHhkZiwweGFjLDB4ZWYsMHg4NSwweGE3LDB4M2IsMHgxOSwweDA5LDB4OGIsCi0rCTB4N2Ys MHg5OCwweDI4LDB4YTksMHg5MywweGQ4LDB4N2EsMHhhZCwweDU1LDB4OGIsMHgyNCwweDlkLAot KwkweGU2LDB4OTgsMHhmZSwweDQ3LDB4ZDUsMHg0OCwweGMxLDB4MjMsMHhkOCwweDFkLDB4NjIs MHg3NQotKwl9OwotKwotKwotKy8qIEhNQUMgU0hBLTM4NCBObyBQUiAgKi8KLStfX2ZpcHNfY29u c3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9lbnRyb3B5aW5w dXRbXSA9Ci0rCXsKLSsJMHhjMywweDU2LDB4MmIsMHgxZCwweGMyLDB4YmIsMHhhOCwweGYwLDB4 YWUsMHgxYiwweDBkLDB4ZDMsCi0rCTB4NWEsMHg2YywweGRhLDB4NTcsMHg4ZSwweGE1LDB4OGEs MHgwZCwweDZjLDB4NGIsMHgxOCwweGIxLAotKwkweDA0LDB4M2UsMHhiNCwweDk5LDB4MzUsMHhj NCwweGMwLDB4NWYKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTM4NF9ub25jZVtdID0KLSsJewotKwkweGM1LDB4NDksMHgxZSww eDY2LDB4MjcsMHg5MiwweGJlLDB4ZWMsMHhiNSwweDFlLDB4NGIsMHhiMSwKLSsJMHgzOCwweGUz LDB4ZWIsMHg2MgotKwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhMzg0X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0KLSsJewotKwkw eGJlLDB4ZTcsMHg2YiwweDU3LDB4ZGUsMHg4OCwweDExLDB4OTYsMHg5YiwweDZlLDB4ZWEsMHhl NSwKLSsJMHg2MywweDgzLDB4NGMsMHhiNiwweDhkLDB4NjYsMHhhYSwweDFmLDB4OGIsMHg1NCww eGU3LDB4NjIsCi0rCTB4NmQsMHg1YSwweGZjLDB4YmYsMHg5NywweGJhLDB4Y2QsMHg3NwotKwl9 OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNf c2hhMzg0X2FkZGl0aW9uYWxpbnB1dFtdID0KLSsJewotKwkweGU1LDB4MjgsMHg1ZiwweDQzLDB4 ZjUsMHg4MywweDZlLDB4MGEsMHg4MywweDVjLDB4ZTMsMHg4MSwKLSsJMHgwMywweGYyLDB4Zjgs MHg3OCwweDAwLDB4N2MsMHg5NSwweDg3LDB4MTYsMHhkNiwweDZjLDB4NTgsCi0rCTB4MzMsMHg2 YywweDUzLDB4MzUsMHgwZCwweDY2LDB4ZTMsMHhjZQotKwl9OwotKwotK19fZmlwc19jb25zdHNl ZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X2ludF9yZXR1cm5lZGJp dHNbXSA9Ci0rCXsKLSsJMHhlMiwweDFmLDB4ZjMsMHhkYSwweDBkLDB4MTksMHg5OSwweDg3LDB4 YzQsMHg5MCwweGEyLDB4MzEsCi0rCTB4Y2EsMHgyYSwweDg5LDB4NTgsMHg0MywweDQ0LDB4Yjgs MHhkZSwweGNmLDB4YTQsMHhiZSwweDNiLAotKwkweDUzLDB4MjYsMHgyMiwweDMxLDB4NzYsMHg0 MSwweDIyLDB4YjUsMHhhOCwweDcwLDB4MmYsMHg0YiwKLSsJMHg2NCwweDk1LDB4NGQsMHg0OCww eDk2LDB4MzUsMHhlNiwweGJkLDB4M2MsMHgzNCwweGRiLDB4MWIKLSsJfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9lbnRyb3B5 aW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHg3NywweDYxLDB4YmEsMHhiYywweGYyLDB4YzEsMHhm MywweDRiLDB4ODYsMHg2NSwweGZkLDB4NDgsCi0rCTB4MGUsMHgzYywweDAyLDB4NWUsMHhhMiww eDdhLDB4NmIsMHg3YywweGVkLDB4MjEsMHg1ZSwweGY5LAotKwkweGNkLDB4Y2QsMHg3NywweDA3 LDB4MmIsMHhiZSwweGM1LDB4NWMKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9 Ci0rCXsKLSsJMHgxOCwweDI0LDB4NWYsMHhjNiwweDg0LDB4ZDEsMHg2NywweGMzLDB4OWEsMHgx MSwweGE1LDB4OGMsCi0rCTB4MDcsMHgzOSwweDIxLDB4ODMsMHg0ZCwweDA0LDB4YzQsMHg2YSww eDI4LDB4MTksMHhjZiwweDkyLAotKwkweDIxLDB4ZDksMHg5ZSwweDQxLDB4NzIsMHg2YywweDll LDB4NjMKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTM4NF9hZGRpdGlvbmFsaW5wdXQyW10gPQotKwl7Ci0rCTB4OTYsMHg2Nyww eDQxLDB4MjgsMHg5YiwweGI3LDB4OTIsMHg4ZCwweDY0LDB4M2IsMHhlNCwweGNmLAotKwkweDdl LDB4YWEsMHgxZSwweGIxLDB4NGIsMHgxZCwweDA5LDB4NTYsMHg2NywweDljLDB4YzYsMHg2ZCwK LSsJMHgzYiwweGU4LDB4OTEsMHg5ZCwweGUxLDB4OGEsMHhiNywweDMyCi0rCX07Ci0rCi0rX19m aXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcmV0 dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4ZTMsMHg1OSwweDYxLDB4MzgsMHg5MiwweGVjLDB4ZTIs MHgzYywweGZmLDB4YjcsMHhkYiwweDE5LAotKwkweDBmLDB4NWIsMHg5MywweDY4LDB4MGQsMHhh NCwweDk0LDB4NDAsMHg3MiwweDBiLDB4ZTAsMHhlZCwKLSsJMHg0ZCwweGNkLDB4NjgsMHhhMCww eDFlLDB4ZmUsMHg2NywweGIyLDB4ZmEsMHgyMSwweDU2LDB4NzQsCi0rCTB4YTQsMHhhZCwweGNm LDB4YjcsMHg2MCwweDY2LDB4MmUsMHg0MCwweGRlLDB4ODIsMHhjYSwweGZiCi0rCX07Ci0rCi0r Ci0rLyogSE1BQyBTSEEtNTEyIFBSICAqLwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3ByX2VudHJvcHlpbnB1dFtdID0KLSsJewotKwkw eGFhLDB4OWUsMHg0NSwweDY3LDB4MGUsMHgwMCwweDJhLDB4NjcsMHg5OCwweGQ2LDB4ZGEsMHgw YiwKLSsJMHgwZiwweDE3LDB4N2UsMHhhYywweGZkLDB4MjcsMHhjNCwweGNhLDB4ODQsMHhkZiww eGRlLDB4YmEsCi0rCTB4ODUsMHhkOSwweGJlLDB4OGYsMHhmMywweGZmLDB4OTEsMHg0ZAotKwl9 OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNf c2hhNTEyX3ByX25vbmNlW10gPQotKwl7Ci0rCTB4OGMsMHg0OSwweDJmLDB4NTgsMHgxZSwweDdh LDB4ZGEsMHg0YiwweDdlLDB4OGEsMHgzMCwweDdiLAotKwkweDg2LDB4ZWEsMHhhZiwweGEyCi0r CX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGE1MTJfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPQotKwl7Ci0rCTB4NzEsMHhlMSww eGJiLDB4YWQsMHhhNywweDRiLDB4MmUsMHgzMSwweDNiLDB4MGIsMHhlYywweDI0LAotKwkweDk5 LDB4MzgsMHhiYywweGFhLDB4MDUsMHg0YywweDQ2LDB4NDQsMHhmYSwweGFkLDB4OGUsMHgwMiwK LSsJMHhjMSwweDdlLDB4YWQsMHhlYywweDU0LDB4YTYsMHhkMCwweGFkCi0rCX07Ci0rCi0rX19m aXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJf YWRkaXRpb25hbGlucHV0W10gPQotKwl7Ci0rCTB4M2QsMHg2ZSwweGE2LDB4YTgsMHgyOSwweDJh LDB4YjIsMHhmNSwweDk4LDB4NDIsMHhlNCwweDkyLAotKwkweDc4LDB4MjIsMHg2NywweGZkLDB4 MWIsMHgxNSwweDFlLDB4MjksMHhhYSwweDcxLDB4M2MsMHgzYywKLSsJMHhlNywweDA1LDB4MjAs MHhhOSwweDI5LDB4YzYsMHg3NSwweDcxCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfZW50cm9weWlucHV0cHJbXSA9 Ci0rCXsKLSsJMHhhYiwweGI5LDB4MTYsMHhkOCwweDU1LDB4MzUsMHg1NCwweGI3LDB4OTcsMHgz ZiwweDk0LDB4YmMsCi0rCTB4MmYsMHg3YywweDcwLDB4YzcsMHhkMCwweGVkLDB4YjcsMHg0Yiww eGY3LDB4ZjYsMHg2YywweDAzLAotKwkweDBjLDB4YjAsMHgwMywweGQ4LDB4YmIsMHg3MSwweGQ5 LDB4MTAKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTUxMl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4OGUsMHhk MywweGZkLDB4NTIsMHg5ZSwweDgzLDB4MDgsMHg0OSwweDE4LDB4NmUsMHgyMywweDU2LAotKwkw eDVjLDB4NDUsMHg5MywweDM0LDB4MDUsMHhlMiwweDk4LDB4OGYsMHgwYywweGQ0LDB4MzIsMHgw YywKLSsJMHhmZCwweGRhLDB4NWYsMHg5MiwweDNhLDB4OGMsMHg4MSwweGJkLDB4ZjYsMHg2Yyww eDU1LDB4ZmQsCi0rCTB4YjgsMHgyMCwweGNlLDB4OGQsMHg5NywweDI3LDB4ZTgsMHhlOCwweGUw LDB4YjMsMHg4NSwweDUwLAotKwkweGEyLDB4YzIsMHhiMiwweDk1LDB4MWQsMHg0OCwweGQzLDB4 N2IsMHg0YiwweDc4LDB4MTMsMHgzNSwKLSsJMHgwNSwweDE3LDB4YmUsMHgwZAotKwl9OwotKwot K19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEy X3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9Ci0rCXsKLSsJMHhjMywweGZjLDB4OTUsMHhhYSwweDY5 LDB4MDYsMHhhZSwweDU5LDB4NDEsMHhjZSwweDI2LDB4MDgsCi0rCTB4MjksMHg2ZCwweDQ1LDB4 ZGEsMHhlOCwweGIzLDB4NmMsMHg5NSwweDYwLDB4MGYsMHg3MCwweDJjLAotKwkweDEwLDB4YmEs MHgzOCwweDhjLDB4Y2YsMHgyOSwweDk5LDB4YWEKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcK LStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9lbnRyb3B5aW5wdXRw cjJbXSA9Ci0rCXsKLSsJMHgzYiwweDlhLDB4MjUsMHhjZSwweGQ3LDB4ZjksMHg1YywweGQxLDB4 M2EsMHgzZSwweGFhLDB4NzEsCi0rCTB4MTQsMHgzZSwweDE5LDB4ZTgsMHhjZSwweGU2LDB4ZmUs MHg1MSwweDg0LDB4ZTksMHgxYiwweGZlLAotKwkweDNmLDB4YTcsMHhmMiwweGZkLDB4NzYsMHg1 ZiwweDZhLDB4ZTcKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9yZXR1cm5lZGJpdHNbXSA9Ci0rCXsKLSsJMHhiNyww eDgyLDB4YTksMHg1NywweDgxLDB4NjcsMHg1MywweGI1LDB4YTEsMHhlOSwweDNkLDB4MzUsCi0r CTB4ZjksMHhlNCwweDk3LDB4YmUsMHhhNiwweGNhLDB4ZjEsMHgwMSwweDEzLDB4MDksMHhlNyww eDIxLAotKwkweGMwLDB4ZWQsMHg5MywweDVkLDB4NGIsMHhmNCwweGViLDB4OGQsMHg1MywweDI1 LDB4OGEsMHhjNCwKLSsJMHhiMSwweDZmLDB4NmUsMHgzNywweGNkLDB4MmUsMHhhYywweDM5LDB4 YjIsMHhiNiwweDk5LDB4YTMsCi0rCTB4ODIsMHgwMCwweGIwLDB4MjEsMHhmMCwweGM3LDB4MmYs MHg0YywweDczLDB4OTIsMHhmZCwweDAwLAotKwkweGI2LDB4YWYsMHhiYywweGQzCi0rCX07Ci0r Ci0rCi0rLyogSE1BQyBTSEEtNTEyIE5vIFBSICAqLwotK19fZmlwc19jb25zdHNlZwotK3N0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX2VudHJvcHlpbnB1dFtdID0KLSsJewot KwkweDZlLDB4ODUsMHhlNiwweDI1LDB4OTYsMHgyOSwweGE3LDB4NTIsMHg1YiwweDYwLDB4YmEs MHhhYSwKLSsJMHhkZSwweGRiLDB4MzYsMHgwYSwweDUxLDB4OWEsMHgxNSwweGFlLDB4NmUsMHgx OCwweGQzLDB4ZmUsCi0rCTB4MzksMHhiOSwweDRhLDB4OTYsMHhmOCwweDc3LDB4Y2IsMHg5NQot Kwl9OwotKwotK19fZmlwc19jb25zdHNlZwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhNTEyX25vbmNlW10gPQotKwl7Ci0rCTB4ZTAsMHhhNiwweDVkLDB4MDgsMHhjMywweDdj LDB4YWUsMHgyNSwweDJlLDB4ODAsMHhkMSwweDNlLAotKwkweGQ5LDB4YWYsMHg0MywweDNjCi0r CX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGE1MTJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPQotKwl7Ci0rCTB4NTMsMHg5OSwweDUy LDB4NWYsMHgxMSwweGE5LDB4NjQsMHg2NiwweDIwLDB4NWUsMHgxYiwweDVmLAotKwkweDQyLDB4 YjMsMHhmNCwweGRhLDB4ZWQsMHhiYiwweDYzLDB4YzEsMHgyMywweGFmLDB4ZDAsMHgwMSwKLSsJ MHg5MCwweDNiLDB4ZDAsMHg3OCwweGU0LDB4MGIsMHhhNywweDIwCi0rCX07Ci0rCi0rX19maXBz X2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfYWRkaXRp b25hbGlucHV0W10gPQotKwl7Ci0rCTB4ODUsMHg5MCwweDgwLDB4ZDMsMHg5OCwweGYxLDB4NTMs MHg2ZCwweDY4LDB4MTUsMHg4ZiwweGU1LAotKwkweDYwLDB4M2YsMHgxNywweDI5LDB4NTUsMHg4 ZCwweDMzLDB4YjEsMHg0NSwweDY0LDB4NjQsMHg4ZCwKLSsJMHg1MCwweDIxLDB4ODksMHhhZSww eGY2LDB4ZmQsMHgzMiwweDczCi0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfaW50X3JldHVybmVkYml0c1tdID0KLSsJewot KwkweDI4LDB4NTYsMHgzMCwweDZmLDB4ZjQsMHhhMSwweDQ4LDB4ZTAsMHhjOSwweGY1LDB4NzUs MHg5MCwKLSsJMHhjYywweGZiLDB4ZGYsMHhkZiwweDcxLDB4M2QsMHgwYSwweDlhLDB4MDMsMHg2 NSwweDNiLDB4MTgsCi0rCTB4NjEsMHhlMywweGQxLDB4ZGEsMHhjYywweDRhLDB4ZmUsMHg1NSww eDM4LDB4ZjgsMHgyMSwweDZiLAotKwkweGZhLDB4MTgsMHgwMSwweDQyLDB4MzksMHgyZiwweDk5 LDB4NTMsMHgzOCwweDE1LDB4ODIsMHgzNCwKLSsJMHhjNSwweDkzLDB4OTIsMHhiYywweDRkLDB4 NzUsMHgxYSwweDVmLDB4MjEsMHgyNywweGNjLDB4YTEsCi0rCTB4YjEsMHg1NywweDY5LDB4ZTgK LSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBo bWFjX3NoYTUxMl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHg4YywweDUyLDB4N2Us MHg3NywweDcyLDB4M2YsMHhhMywweDA0LDB4OTcsMHgxMCwweDliLDB4NDEsCi0rCTB4YmQsMHhl OCwweGZmLDB4ODksMHhlZCwweDgwLDB4ZTMsMHhiZCwweGFhLDB4MTIsMHgyZCwweGNhLAotKwkw eDc1LDB4ODIsMHgzNiwweDc3LDB4ODgsMHhjZCwweGE2LDB4NzMKLSsJfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9hZGRpdGlv bmFsaW5wdXRyZXNlZWRbXSA9Ci0rCXsKLSsJMHg3ZSwweDMyLDB4ZTMsMHg2OSwweDY5LDB4MDcs MHgzNCwweGEyLDB4MTYsMHhhMiwweDVkLDB4MWEsCi0rCTB4MTAsMHg5MSwweGQzLDB4ZTIsMHgy MSwweGEyLDB4YTMsMHhkZCwweGNkLDB4MGMsMHgwOSwweDg2LAotKwkweDExLDB4ZTEsMHg1MCww eGZmLDB4NWMsMHhiNywweGViLDB4NWMKLSsJfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLStzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9hZGRpdGlvbmFsaW5wdXQyW10gPQot Kwl7Ci0rCTB4N2YsMHg3OCwweDY2LDB4ZDgsMHhmYiwweDY3LDB4Y2YsMHg4ZCwweDhjLDB4MDgs MHgzMCwweGE1LAotKwkweGY4LDB4N2QsMHhjZiwweDQ0LDB4NTksMHhjZSwweGY4LDB4ZGYsMHg1 OCwweGQzLDB4NjAsMHhjYiwKLSsJMHhhOCwweDYwLDB4YjksMHgwNywweGM0LDB4YjEsMHg5NSww eDQ4Ci0rCX07Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgaG1hY19zaGE1MTJfcmV0dXJuZWRiaXRzW10gPQotKwl7Ci0rCTB4ZGYsMHhhNywweDM2LDB4 ZDQsMHhkYywweDVkLDB4NGQsMHgzMSwweGFkLDB4NjksMHg0NiwweDlmLAotKwkweGYxLDB4N2Ms MHhkNywweDNiLDB4NGYsMHg1NSwweGYyLDB4ZDcsMHhiOSwweDlkLDB4YWQsMHg3YSwKLSsJMHg3 OSwweDA4LDB4NTksMHhhNSwweGRjLDB4NzQsMHhmNSwweDliLDB4NzMsMHhkMiwweDEzLDB4MjUs Ci0rCTB4MGIsMHg4MSwweDA4LDB4MDgsMHgyNSwweGZiLDB4MzksMHhmMiwweGYwLDB4YTMsMHhh NCwweDhkLAotKwkweGVmLDB4MDUsMHg5ZSwweGI4LDB4YzcsMHg1MiwweGU0LDB4MGUsMHg0Miww eGFhLDB4N2MsMHg3OSwKLSsJMHhjMiwweGQ2LDB4ZmQsMHhhNQotKwl9OwotKwotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19kc2Ffc2VsZnRlc3QuYy5maXBzIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfZHNhX3NlbGZ0ZXN0LmMKLS0tLSBvcGVuc3NsLTEu MC4xay9jcnlwdG8vZmlwcy9maXBzX2RzYV9zZWxmdGVzdC5jLmZpcHMJMjAxNS0wMS0wOSAwOTo1 MTo1MS41NjI5MjI1NDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBz X2RzYV9zZWxmdGVzdC5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTYyOTIyNTQwICswMTAwCi1AQCAt MCwwICsxLDE5MyBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRo ZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv bGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0 IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhl IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot KyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlh bHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11 c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHBy b2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QK LSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5z c2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJP cGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHBy b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAg IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNl IGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQ cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3Bl blNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0 aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9q ZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIg bXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAg ICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NM IFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93 d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg VEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsg KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB TEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVN UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1Qg TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK LSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg V0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9V VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRI RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRlIDxz dHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9kc2EuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wv ZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvYm4u aD4KLSsjaW5jbHVkZSAiZmlwc19sb2NsLmgiCi0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwot K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRzYV90ZXN0XzIwNDhfcFtdID0gewotKwkweGE4 LDB4NTMsMHg3OCwweGQ4LDB4ZmQsMHgzZiwweDhkLDB4NzIsMHhlYywweDc0LDB4MTgsMHgwOCwK LSsJMHgwZCwweGEyLDB4MTMsMHgxNywweGU0LDB4M2UsMHhjNCwweGI2LDB4MmIsMHhhOCwweGM4 LDB4NjIsCi0rCTB4M2IsMHg3ZSwweDRkLDB4MDQsMHg0NCwweDFkLDB4ZDEsMHhhMCwweDY1LDB4 ODYsMHg2MiwweDU5LAotKwkweDY0LDB4OTMsMHhjYSwweDhlLDB4OWUsMHg4ZiwweGJiLDB4N2Us MHgzNCwweGFhLDB4ZGQsMHhiNiwKLSsJMHgyZSwweDVkLDB4NjcsMHhiNiwweGQwLDB4OWEsMHg2 ZSwweDYxLDB4YjcsMHg2OSwweGU3LDB4YzMsCi0rCTB4NTIsMHhhYSwweDJiLDB4MTAsMHhlMiww eDBjLDB4YTAsMHg2MywweDY5LDB4NjMsMHhiNSwweDUyLAotKwkweDNlLDB4ODYsMHg0NywweDBk LDB4ZWMsMHhiYiwweGVkLDB4YTAsMHgyNywweGU3LDB4OTcsMHhlNywKLSsJMHhiNiwweDc2LDB4 MzUsMHhkNCwweGQ0LDB4OWMsMHgzMCwweDcwLDB4MGUsMHg3NCwweGFmLDB4OGEsCi0rCTB4MGYs MHhmMSwweDU2LDB4YTgsMHgwMSwweGFmLDB4NTcsMHhhMiwweDZlLDB4NzAsMHg3OCwweGYxLAot KwkweGQ4LDB4MmYsMHg3NCwweDkwLDB4OGUsMHhjYiwweDZkLDB4MDcsMHhlNywweDBiLDB4MzUs MHgwMywKLSsJMHhlZSwweGQ5LDB4NGYsMHhhMywweDJjLDB4ZjEsMHg3YSwweDdmLDB4YzMsMHhk NiwweGNmLDB4NDAsCi0rCTB4ZGMsMHg3YiwweDAwLDB4ODMsMHgwZSwweDZhLDB4MjUsMHg2Niww eGRjLDB4MDcsMHgzZSwweDM0LAotKwkweDMzLDB4MTIsMHg1MSwweDdjLDB4NmEsMHhhNSwweDE1 LDB4MmIsMHg0YiwweGZlLDB4Y2QsMHgyZSwKLSsJMHg1NSwweDFmLDB4ZWUsMHgzNCwweDYzLDB4 MTgsMHhhMSwweDUzLDB4NDIsMHgzYywweDk5LDB4NmIsCi0rCTB4MGQsMHg1ZCwweGNiLDB4OTEs MHgwMiwweGFlLDB4ZGQsMHgzOCwweDc5LDB4ODYsMHgxNiwweGYxLAotKwkweGYxLDB4ZTAsMHhk NiwweGM0LDB4MDMsMHg1MiwweDViLDB4MWYsMHg5YiwweDNkLDB4NGQsMHhjNywKLSsJMHg2Niww eGRlLDB4MmQsMHhmYywweDRhLDB4NTYsMHhkNywweGI4LDB4YmEsMHg1OSwweDYzLDB4ZDYsCi0r CTB4MGYsMHgzZSwweDE2LDB4MzEsMHg4OCwweDcwLDB4YWQsMHg0MywweDY5LDB4NTIsMHhlNSww eDU3LAotKwkweDY1LDB4MzcsMHg0ZSwweGFiLDB4ODUsMHhlOCwweGVjLDB4MTcsMHhkNiwweGI5 LDB4YTQsMHg1NCwKLSsJMHg3YiwweDliLDB4NWYsMHgyNywweDUyLDB4ZjMsMHgxMCwweDViLDB4 ZTgsMHgwOSwweGIyLDB4M2EsCi0rCTB4MmMsMHg4ZCwweDc0LDB4NjksMHhkYiwweDAyLDB4ZTIs MHg0ZCwweDU5LDB4MjMsMHg5NCwweGE3LAotKwkweGRiLDB4YTAsMHg2OSwweGU5Ci0rfTsKLSsK LStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkc2FfdGVzdF8yMDQ4X3FbXSA9IHsKLSsJMHhk MiwweDc3LDB4MDQsMHg0ZSwweDUwLDB4ZjUsMHhhNCwweGUzLDB4ZjUsMHgxMCwweGE1LDB4MGEs Ci0rCTB4MGIsMHg4NCwweGZkLDB4ZmYsMHhiYywweGEwLDB4NDcsMHhlZCwweDI3LDB4NjAsMHgy MCwweDU2LAotKwkweDc0LDB4NDEsMHhhMCwweGE1Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBkc2FfdGVzdF8yMDQ4X2dbXSA9IHsKLSsJMHgxMywweGQ3LDB4NTQsMHhlMiww eDFmLDB4ZDIsMHg0MSwweDY1LDB4NWQsMHhhOCwweDkxLDB4YzUsCi0rCTB4MjIsMHhhNiwweDVh LDB4NzIsMHhhOCwweDliLDB4ZGMsMHg2NCwweGVjLDB4OWIsMHg1NCwweGE4LAotKwkweDIxLDB4 ZWQsMHg0YSwweDg5LDB4OGIsMHg0OSwweDBlLDB4MGMsMHg0ZiwweGNiLDB4NzIsMHgxOSwKLSsJ MHgyYSwweDRhLDB4MjAsMHhmNSwweDQxLDB4ZjMsMHhmMiwweDkyLDB4NTMsMHg5OSwweGYwLDB4 YmEsCi0rCTB4ZWMsMHhmOSwweDI5LDB4YWEsMHhmYiwweGY3LDB4OWQsMHhmZSwweDQzLDB4MzIs MHgzOSwweDNiLAotKwkweDMyLDB4Y2QsMHgyZSwweDJmLDB4Y2YsMHgyNywweDJmLDB4MzIsMHhh NiwweDI3LDB4NDMsMHg0YSwKLSsJMHgwZCwweGYyLDB4NDIsMHhiNywweDViLDB4NDEsMHg0ZCww eGYzLDB4NzIsMHgxMiwweDFlLDB4NTMsCi0rCTB4YTUsMHg1MywweGYyLDB4MjIsMHhmOCwweDM2 LDB4YjAsMHgwMCwweGYwLDB4MTYsMHg0OCwweDViLAotKwkweDZiLDB4ZDAsMHg4OSwweDg0LDB4 NTEsMHg4MCwweDFkLDB4Y2QsMHg4ZCwweGU2LDB4NGMsMHhkNSwKLSsJMHgzNiwweDU2LDB4OTYs MHhmZiwweGM1LDB4MzIsMHhkNSwweDI4LDB4YzUsMHgwNiwweDYyLDB4MGEsCi0rCTB4OTQsMHgy YSwweDAzLDB4MDUsMHgwNCwweDZkLDB4OGYsMHgxOCwweDc2LDB4MzQsMHgxZiwweDFlLAotKwkw eDU3LDB4MGIsMHhjMywweDk3LDB4NGIsMHhhNiwweGI5LDB4YTQsMHgzOCwweGU5LDB4NzAsMHgy MywKLSsJMHgwMiwweGEyLDB4ZTYsMHhlNiwweDdiLDB4ZmQsMHgwNiwweGQzLDB4MmIsMHhjNiww eDc5LDB4OTYsCi0rCTB4MjIsMHg3MSwweGQ3LDB4YjQsMHgwYywweGQ3LDB4MmYsMHgzOCwweDZl LDB4NjQsMHhlMCwweGQ3LAotKwkweGVmLDB4ODYsMHhjYSwweDhjLDB4YTUsMHhkMSwweDQyLDB4 MjgsMHhkYywweDJhLDB4NGYsMHgxNiwKLSsJMHhlMywweDE4LDB4OTgsMHg4NiwweGI1LDB4OTks MHgwNiwweDc0LDB4ZjQsMHgyMCwweDBmLDB4M2EsCi0rCTB4NGMsMHhmNiwweDVhLDB4M2YsMHgw ZCwweGRiLDB4YTEsMHhmYSwweDY3LDB4MmQsMHhmZiwweDJmLAotKwkweDVlLDB4MTQsMHgzZCww eDEwLDB4ZTQsMHhlOSwweDdhLDB4ZTgsMHg0ZiwweDZkLDB4YTAsMHg5NSwKLSsJMHgzNSwweGQ1 LDB4YjksMHhkZiwweDI1LDB4OTEsMHg4MSwweGE3LDB4OWIsMHg2MywweGIwLDB4NjksCi0rCTB4 ZTksMHg0OSwweDk3LDB4MmIsMHgwMiwweGJhLDB4MzYsMHhiMywweDU4LDB4NmEsMHhhYiwweDdl LAotKwkweDQ1LDB4ZjMsMHgyMiwweGY4LDB4MmUsMHg0ZSwweDg1LDB4Y2EsMHgzYSwweGI4LDB4 NTUsMHg5MSwKLSsJMHhiMywweGMyLDB4YTksMHg2NgotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9wdWJfa2V5W10gPSB7Ci0rCTB4MjQsMHg1MiwweGYz LDB4Y2MsMHhiZSwweDllLDB4ZDUsMHhjYSwweDdkLDB4YzcsMHg0YywweDYwLAotKwkweDJiLDB4 OTksMHgyMiwweDZlLDB4OGYsMHgyZiwweGFiLDB4MzgsMHhlNywweGQ3LDB4ZGQsMHhmYiwKLSsJ MHg3NSwweDUzLDB4OWIsMHgxNywweDE1LDB4NWUsMHg5ZiwweGNmLDB4ZDEsMHhhYiwweGE1LDB4 NjQsCi0rCTB4ZWIsMHg4NSwweDM1LDB4ZDgsMHgxMiwweGM5LDB4YzIsMHhkYywweGY5LDB4NzIs MHg4NCwweDQ0LAotKwkweDFiLDB4YzQsMHg4MiwweDI0LDB4MzYsMHgyNCwweGM3LDB4ZjQsMHg1 NywweDU4LDB4MGMsMHgxYywKLSsJMHgzOCwweGE1LDB4N2MsMHg0NiwweGM0LDB4NTcsMHgzOSww eDI0LDB4NzAsMHhlZCwweGI1LDB4MmMsCi0rCTB4YjUsMHhhNiwweGUwLDB4M2YsMHhlNiwweDI4 LDB4N2IsMHhiNiwweGY0LDB4OWEsMHg0MiwweGEyLAotKwkweDA2LDB4NWEsMHgwNSwweDRmLDB4 MDMsMHgwOCwweDM5LDB4ZGYsMHgxZiwweGQzLDB4MTQsMHg5YywKLSsJMHg0YywweGEwLDB4NTMs MHgxZCwweGQ4LDB4Y2EsMHg4YSwweGFhLDB4OWMsMHhjNywweDMzLDB4NzEsCi0rCTB4OTMsMHgz OCwweDczLDB4NDgsMHgzMywweDYxLDB4MTgsMHgyMiwweDQ1LDB4NDUsMHhlOCwweDhjLAotKwkw eDgwLDB4ZmYsMHhkOCwweDc2LDB4NWQsMHg3NCwweDM2LDB4MDMsMHgzMywweGNjLDB4YWIsMHg5 OSwKLSsJMHg3MiwweDc3LDB4OWIsMHg2NSwweDI1LDB4YTYsMHg1YiwweGRkLDB4MGQsMHgxMCww eGM2LDB4NzUsCi0rCTB4YzEsMHgwOSwweGJiLDB4ZDMsMHhlNSwweGJlLDB4NGQsMHg3MiwweGVm LDB4NmUsMHhiYSwweDZlLAotKwkweDQzLDB4OGQsMHg1MiwweDI2LDB4MjMsMHg3ZCwweGI4LDB4 ODgsMHgzNywweDljLDB4NWYsMHhjYywKLSsJMHg0NywweGEzLDB4ODQsMHg3ZiwweGY2LDB4Mzcs MHgxMSwweGJhLDB4ZWQsMHg2ZCwweDAzLDB4YWYsCi0rCTB4ZTgsMHgxZSwweDY5LDB4NGEsMHg0 MSwweDNiLDB4NjgsMHgwYiwweGQzLDB4OGEsMHhiNCwweDkwLAotKwkweDNmLDB4ODMsMHg3MCww eGE3LDB4MDcsMHhlZiwweDU1LDB4MWQsMHg0OSwweDQxLDB4MDIsMHg2ZCwKLSsJMHg5NSwweDc5 LDB4ZDYsMHg5MSwweGRlLDB4OGUsMHhkYSwweGExLDB4NjEsMHgwNSwweGViLDB4OWQsCi0rCTB4 YmEsMHgzYywweDJmLDB4NGMsMHgxYiwweGVjLDB4NTAsMHg4MiwweDc1LDB4YWEsMHgwMiwweDA3 LAotKwkweGUyLDB4NTEsMHhiNSwweGVjLDB4Y2IsMHgyOCwweDZhLDB4NGIsMHgwMSwweGQ0LDB4 NDksMHhkMywKLSsJMHgwYSwweGNiLDB4NjcsMHgzNywweDE3LDB4YTAsMHhkMiwweGZiLDB4M2Is MHg1MCwweGM4LDB4OTMsCi0rCTB4ZjcsMHhkYSwweGIxLDB4NGYKLSt9OwotKwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGRzYV90ZXN0XzIwNDhfcHJpdl9rZXlbXSA9IHsKLSsJMHgwYyww eDRiLDB4MzAsMHg4OSwweGQxLDB4YjgsMHg2MiwweGNiLDB4M2MsMHg0MywweDY0LDB4OTEsCi0r CTB4ZjAsMHg5MSwweDU0LDB4NzAsMHhjNSwweDI3LDB4OTYsMHhlMywweGFjLDB4YmUsMHhlOCww eDAwLAotKwkweGVjLDB4NTUsMHhmNiwweGNjCi0rfTsKLSsKLStzdGF0aWMgaW50IGNvcnJ1cHRf ZHNhOwotKwotK3ZvaWQgRklQU19jb3JydXB0X2RzYSgpCi0rICAgIHsKLSsgICAgY29ycnVwdF9k c2EgPSAxOwotKyAgICB9Ci0rCi0raW50IEZJUFNfc2VsZnRlc3RfZHNhKCkKLSsJewotKwlEU0Eg KmRzYSA9IE5VTEw7Ci0rCUVWUF9QS0VZICpwayA9IE5VTEw7Ci0rCWludCByZXQgPSAwOwotKwot Kwlkc2EgPSBEU0FfbmV3KCk7Ci0rCi0rCWlmKGRzYSA9PSBOVUxMKQotKwkJZ290byBlcnI7Ci0r Ci0rCWZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGRzYSwgcCwgZHNhX3Rlc3RfMjA0OCk7Ci0rCWZp cHNfbG9hZF9rZXlfY29tcG9uZW50KGRzYSwgcSwgZHNhX3Rlc3RfMjA0OCk7Ci0rCWZpcHNfbG9h ZF9rZXlfY29tcG9uZW50KGRzYSwgZywgZHNhX3Rlc3RfMjA0OCk7Ci0rCWZpcHNfbG9hZF9rZXlf Y29tcG9uZW50KGRzYSwgcHViX2tleSwgZHNhX3Rlc3RfMjA0OCk7Ci0rCWZpcHNfbG9hZF9rZXlf Y29tcG9uZW50KGRzYSwgcHJpdl9rZXksIGRzYV90ZXN0XzIwNDgpOwotKwotKwlpZiAoY29ycnVw dF9kc2EpCi0rCQlCTl9zZXRfYml0KGRzYS0+cHViX2tleSwgMjA0Nyk7Ci0rCi0rCWlmICgocGs9 RVZQX1BLRVlfbmV3KCkpID09IE5VTEwpCi0rCQlnb3RvIGVycjsKLSsKLSsJRVZQX1BLRVlfYXNz aWduX0RTQShwaywgZHNhKTsKLSsKLSsJaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGss IE5VTEwsIDAsCi0rCQkJCQlOVUxMLCAwLCBFVlBfc2hhMjU2KCksIDAsCi0rCQkJCQkiRFNBIFNI QTI1NiIpKQotKwkJZ290byBlcnI7Ci0rCXJldCA9IDE7Ci0rCi0rCWVycjoKLSsJaWYgKHBrKQot KwkJRVZQX1BLRVlfZnJlZShwayk7Ci0rCWVsc2UgaWYgKGRzYSkKLSsJCURTQV9mcmVlKGRzYSk7 Ci0rCXJldHVybiByZXQ7Ci0rCX0KLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9maXBzL2ZpcHNfZW5jLmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBz X2VuYy5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19lbmMuYy5maXBzCTIw MTUtMDEtMDkgMDk6NTE6NTEuNTYyOTIyNTQwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5 cHRvL2ZpcHMvZmlwc19lbmMuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2MjkyMjU0MCArMDEwMAot QEAgLTAsMCArMSwxOTEgQEAKLSsvKiBmaXBlL2V2cC9maXBzX2VuYy5jICovCi0rLyogQ29weXJp Z2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pCi0rICogQWxs IHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFRoaXMgcGFja2FnZSBpcyBhbiBTU0wgaW1wbGVt ZW50YXRpb24gd3JpdHRlbgotKyAqIGJ5IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKS4K LSsgKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gc28gYXMgdG8gY29uZm9ybSB3aXRo IE5ldHNjYXBlcyBTU0wuCi0rICogCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgZm9yIGNvbW1l cmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFzCi0rICogdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0r ICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0cmlidXRpb24sIGJlIGl0IHRo ZSBSQzQsIFJTQSwKLSsgKiBsaGFzaCwgREVTLCBldGMuLCBjb2RlOyBub3QganVzdCB0aGUgU1NM IGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KLSsgKiBpbmNsdWRlZCB3aXRoIHRoaXMgZGlz dHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29weXJpZ2h0IHRlcm1zCi0rICogZXhj ZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuCi0r ICogCi0rICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3VuZydzLCBhbmQgYXMgc3VjaCBhbnkg Q29weXJpZ2h0IG5vdGljZXMgaW4KLSsgKiB0aGUgY29kZSBhcmUgbm90IHRvIGJlIHJlbW92ZWQu Ci0rICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9kdWN0LCBFcmljIFlvdW5nIHNo b3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgotKyAqIGFzIHRoZSBhdXRob3Igb2YgdGhlIHBhcnRz IG9mIHRoZSBsaWJyYXJ5IHVzZWQuCi0rICogVGhpcyBjYW4gYmUgaW4gdGhlIGZvcm0gb2YgYSB0 ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCi0rICogaW4gZG9jdW1lbnRhdGlv biAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhlIHBhY2thZ2UuCi0rICogCi0r ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKiAxLiBSZWRpc3Ry aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGNvcHlyaWdodAotKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4KLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSsgKiAgICBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0 aW9uLgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl cyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotKyAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93 aW5nIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0 b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQotKyAqICAgICBFcmljIFlvdW5nIChlYXlAY3J5 cHRzb2Z0LmNvbSkiCi0rICogICAgVGhlIHdvcmQgJ2NyeXB0b2dyYXBoaWMnIGNhbiBiZSBsZWZ0 IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5Ci0rICogICAgYmVpbmcgdXNlZCBh cmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCi0rICogNC4gSWYgeW91IGluY2x1ZGUg YW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJpdmF0aXZlIHRoZXJlb2YpIGZyb20g Ci0rICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlvbiBjb2RlKSB5b3UgbXVzdCBp bmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVz IHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pIgotKyAq IAotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycg QU5ECi0rICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSsgKiBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJF IExJQUJMRQotKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0rICogREFNQUdFUyAoSU5DTFVESU5HLCBC VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSsgKiBP UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotKyAqIExJQUJJTElUWSwgT1IgVE9S VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkK LSsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg VEhFIFBPU1NJQklMSVRZIE9GCi0rICogU1VDSCBEQU1BR0UuCi0rICogCi0rICogVGhlIGxpY2Vu Y2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1YmxpY2FsbHkgYXZhaWxhYmxlIHZl cnNpb24gb3IKLSsgKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBjYW5ub3QgYmUgY2hhbmdlZC4g IGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKLSsgKiBjb3BpZWQgYW5kIHB1dCB1bmRl ciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCi0rICogW2luY2x1ZGluZyB0aGUgR05VIFB1 YmxpYyBMaWNlbmNlLl0KLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8 c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wv ZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKwotK2NvbnN0IEVWUF9DSVBIRVIg KkZJUFNfZ2V0X2NpcGhlcmJ5bmlkKGludCBuaWQpCi0rCXsKLSsJc3dpdGNoIChuaWQpCi0rCQl7 Ci0rCQljYXNlIE5JRF9hZXNfMTI4X2NiYzoKLSsJCXJldHVybiBFVlBfYWVzXzEyOF9jYmMoKTsK LSsKLSsJCWNhc2UgTklEX2Flc18xMjhfY2NtOgotKwkJcmV0dXJuIEVWUF9hZXNfMTI4X2NjbSgp OwotKwotKwkJY2FzZSBOSURfYWVzXzEyOF9jZmIxOgotKwkJcmV0dXJuIEVWUF9hZXNfMTI4X2Nm YjEoKTsKLSsKLSsJCWNhc2UgTklEX2Flc18xMjhfY2ZiMTI4OgotKwkJcmV0dXJuIEVWUF9hZXNf MTI4X2NmYjEyOCgpOwotKwotKwkJY2FzZSBOSURfYWVzXzEyOF9jZmI4OgotKwkJcmV0dXJuIEVW UF9hZXNfMTI4X2NmYjgoKTsKLSsKLSsJCWNhc2UgTklEX2Flc18xMjhfY3RyOgotKwkJcmV0dXJu IEVWUF9hZXNfMTI4X2N0cigpOwotKwotKwkJY2FzZSBOSURfYWVzXzEyOF9lY2I6Ci0rCQlyZXR1 cm4gRVZQX2Flc18xMjhfZWNiKCk7Ci0rCi0rCQljYXNlIE5JRF9hZXNfMTI4X2djbToKLSsJCXJl dHVybiBFVlBfYWVzXzEyOF9nY20oKTsKLSsKLSsJCWNhc2UgTklEX2Flc18xMjhfb2ZiMTI4Ogot KwkJcmV0dXJuIEVWUF9hZXNfMTI4X29mYigpOwotKwotKwkJY2FzZSBOSURfYWVzXzEyOF94dHM6 Ci0rCQlyZXR1cm4gRVZQX2Flc18xMjhfeHRzKCk7Ci0rCi0rCQljYXNlIE5JRF9hZXNfMTkyX2Ni YzoKLSsJCXJldHVybiBFVlBfYWVzXzE5Ml9jYmMoKTsKLSsKLSsJCWNhc2UgTklEX2Flc18xOTJf Y2NtOgotKwkJcmV0dXJuIEVWUF9hZXNfMTkyX2NjbSgpOwotKwotKwkJY2FzZSBOSURfYWVzXzE5 Ml9jZmIxOgotKwkJcmV0dXJuIEVWUF9hZXNfMTkyX2NmYjEoKTsKLSsKLSsJCWNhc2UgTklEX2Fl c18xOTJfY2ZiMTI4OgotKwkJcmV0dXJuIEVWUF9hZXNfMTkyX2NmYjEyOCgpOwotKwotKwkJY2Fz ZSBOSURfYWVzXzE5Ml9jZmI4OgotKwkJcmV0dXJuIEVWUF9hZXNfMTkyX2NmYjgoKTsKLSsKLSsJ CWNhc2UgTklEX2Flc18xOTJfY3RyOgotKwkJcmV0dXJuIEVWUF9hZXNfMTkyX2N0cigpOwotKwot KwkJY2FzZSBOSURfYWVzXzE5Ml9lY2I6Ci0rCQlyZXR1cm4gRVZQX2Flc18xOTJfZWNiKCk7Ci0r Ci0rCQljYXNlIE5JRF9hZXNfMTkyX2djbToKLSsJCXJldHVybiBFVlBfYWVzXzE5Ml9nY20oKTsK LSsKLSsJCWNhc2UgTklEX2Flc18xOTJfb2ZiMTI4OgotKwkJcmV0dXJuIEVWUF9hZXNfMTkyX29m YigpOwotKwotKwkJY2FzZSBOSURfYWVzXzI1Nl9jYmM6Ci0rCQlyZXR1cm4gRVZQX2Flc18yNTZf Y2JjKCk7Ci0rCi0rCQljYXNlIE5JRF9hZXNfMjU2X2NjbToKLSsJCXJldHVybiBFVlBfYWVzXzI1 Nl9jY20oKTsKLSsKLSsJCWNhc2UgTklEX2Flc18yNTZfY2ZiMToKLSsJCXJldHVybiBFVlBfYWVz XzI1Nl9jZmIxKCk7Ci0rCi0rCQljYXNlIE5JRF9hZXNfMjU2X2NmYjEyODoKLSsJCXJldHVybiBF VlBfYWVzXzI1Nl9jZmIxMjgoKTsKLSsKLSsJCWNhc2UgTklEX2Flc18yNTZfY2ZiODoKLSsJCXJl dHVybiBFVlBfYWVzXzI1Nl9jZmI4KCk7Ci0rCi0rCQljYXNlIE5JRF9hZXNfMjU2X2N0cjoKLSsJ CXJldHVybiBFVlBfYWVzXzI1Nl9jdHIoKTsKLSsKLSsJCWNhc2UgTklEX2Flc18yNTZfZWNiOgot KwkJcmV0dXJuIEVWUF9hZXNfMjU2X2VjYigpOwotKwotKwkJY2FzZSBOSURfYWVzXzI1Nl9nY206 Ci0rCQlyZXR1cm4gRVZQX2Flc18yNTZfZ2NtKCk7Ci0rCi0rCQljYXNlIE5JRF9hZXNfMjU2X29m YjEyODoKLSsJCXJldHVybiBFVlBfYWVzXzI1Nl9vZmIoKTsKLSsKLSsJCWNhc2UgTklEX2Flc18y NTZfeHRzOgotKwkJcmV0dXJuIEVWUF9hZXNfMjU2X3h0cygpOwotKwotKwkJY2FzZSBOSURfZGVz X2VkZV9lY2I6Ci0rCQlyZXR1cm4gRVZQX2Rlc19lZGUoKTsKLSsKLSsJCWNhc2UgTklEX2Rlc19l ZGUzX2VjYjoKLSsJCXJldHVybiBFVlBfZGVzX2VkZTMoKTsKLSsKLSsJCWNhc2UgTklEX2Rlc19l ZGUzX2NiYzoKLSsJCXJldHVybiBFVlBfZGVzX2VkZTNfY2JjKCk7Ci0rCi0rCQljYXNlIE5JRF9k ZXNfZWRlM19jZmIxOgotKwkJcmV0dXJuIEVWUF9kZXNfZWRlM19jZmIxKCk7Ci0rCi0rCQljYXNl IE5JRF9kZXNfZWRlM19jZmI2NDoKLSsJCXJldHVybiBFVlBfZGVzX2VkZTNfY2ZiNjQoKTsKLSsK LSsJCWNhc2UgTklEX2Rlc19lZGUzX2NmYjg6Ci0rCQlyZXR1cm4gRVZQX2Rlc19lZGUzX2NmYjgo KTsKLSsKLSsJCWNhc2UgTklEX2Rlc19lZGUzX29mYjY0OgotKwkJcmV0dXJuIEVWUF9kZXNfZWRl M19vZmIoKTsKLSsKLSsJCWNhc2UgTklEX2Rlc19lZGVfY2JjOgotKwkJcmV0dXJuIEVWUF9kZXNf ZWRlX2NiYygpOwotKwotKwkJY2FzZSBOSURfZGVzX2VkZV9jZmI2NDoKLSsJCXJldHVybiBFVlBf ZGVzX2VkZV9jZmI2NCgpOwotKwotKwkJY2FzZSBOSURfZGVzX2VkZV9vZmI2NDoKLSsJCXJldHVy biBFVlBfZGVzX2VkZV9vZmIoKTsKLSsKLSsJCWRlZmF1bHQ6Ci0rCQlyZXR1cm4gTlVMTDsKLSsK LSsJCX0KLSsJfQotKwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwcy5o LmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwcy5oCi0tLS0gb3BlbnNzbC0xLjAu MWsvY3J5cHRvL2ZpcHMvZmlwcy5oLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NjI5MjI1NDAg KzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzLmgJMjAxNS0wMS0wOSAw OTo1MTo1MS41NjI5MjI1NDAgKzAxMDAKLUBAIC0wLDAgKzEsMjc5IEBACi0rLyogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUg bWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0 cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln aHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0r ICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVz ZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNr bm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZl bG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5T U0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBu YW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUg dXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g dGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBG b3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29y ZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5T U0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBw ZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1 dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0r ICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0 d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4g dGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICog VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMn JyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJF IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0r ICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ TkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B R0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNU UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF LgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KLSsjaW5j bHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rCi0rI2lmbmRl ZiBPUEVOU1NMX0ZJUFMKLSsjZXJyb3IgRklQUyBpcyBkaXNhYmxlZC4KLSsjZW5kaWYKLSsKLSsj aWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rI2lmZGVmICBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIg ewotKyNlbmRpZgotKwotK3N0cnVjdCBkc2Ffc3Q7Ci0rc3RydWN0IHJzYV9zdDsKLStzdHJ1Y3Qg ZXZwX3BrZXlfc3Q7Ci0rc3RydWN0IGVudl9tZF9zdDsKLStzdHJ1Y3QgZW52X21kX2N0eF9zdDsK LStzdHJ1Y3QgZXZwX2NpcGhlcl9zdDsKLStzdHJ1Y3QgZXZwX2NpcGhlcl9jdHhfc3Q7Ci0rc3Ry dWN0IGRoX21ldGhvZDsKLStzdHJ1Y3QgQ01BQ19DVFhfc3Q7Ci0rc3RydWN0IGhtYWNfY3R4X3N0 OwotKwotK2ludCBGSVBTX21vZHVsZV9tb2RlX3NldChpbnQgb25vZmYsIGNvbnN0IGNoYXIgKmF1 dGgpOwotK2ludCBGSVBTX21vZHVsZV9tb2RlKHZvaWQpOwotK2NvbnN0IHZvaWQgKkZJUFNfcmFu ZF9jaGVjayh2b2lkKTsKLStpbnQgRklQU19zZWxmdGVzdCh2b2lkKTsKLStpbnQgRklQU19zZWxm dGVzdF9mYWlsZWQodm9pZCk7Ci0rdm9pZCBGSVBTX2NvcnJ1cHRfc2hhMSh2b2lkKTsKLStpbnQg RklQU19zZWxmdGVzdF9zaGExKHZvaWQpOwotK2ludCBGSVBTX3NlbGZ0ZXN0X3NoYTIodm9pZCk7 Ci0rdm9pZCBGSVBTX2NvcnJ1cHRfYWVzKHZvaWQpOwotK2ludCBGSVBTX3NlbGZ0ZXN0X2Flc19j Y20odm9pZCk7Ci0raW50IEZJUFNfc2VsZnRlc3RfYWVzX2djbSh2b2lkKTsKLStpbnQgRklQU19z ZWxmdGVzdF9hZXNfeHRzKHZvaWQpOwotK2ludCBGSVBTX3NlbGZ0ZXN0X2Flcyh2b2lkKTsKLSt2 b2lkIEZJUFNfY29ycnVwdF9kZXModm9pZCk7Ci0raW50IEZJUFNfc2VsZnRlc3RfZGVzKHZvaWQp OwotK3ZvaWQgRklQU19jb3JydXB0X3JzYSh2b2lkKTsKLSt2b2lkIEZJUFNfY29ycnVwdF9yc2Ff a2V5Z2VuKHZvaWQpOwotK2ludCBGSVBTX3NlbGZ0ZXN0X3JzYSh2b2lkKTsKLSt2b2lkIEZJUFNf Y29ycnVwdF9kc2Eodm9pZCk7Ci0rdm9pZCBGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbih2b2lkKTsK LStpbnQgRklQU19zZWxmdGVzdF9kc2Eodm9pZCk7Ci0rdm9pZCBGSVBTX2NvcnJ1cHRfcm5nKHZv aWQpOwotK3ZvaWQgRklQU19ybmdfc3RpY2sodm9pZCk7Ci0rdm9pZCBGSVBTX3g5MzFfc3RpY2so aW50IG9ub2ZmKTsKLSt2b2lkIEZJUFNfZHJiZ19zdGljayhpbnQgb25vZmYpOwotK2ludCBGSVBT X3NlbGZ0ZXN0X3JuZyh2b2lkKTsKLStpbnQgRklQU19zZWxmdGVzdF94OTMxKHZvaWQpOwotK2lu dCBGSVBTX3NlbGZ0ZXN0X2htYWModm9pZCk7Ci0raW50IEZJUFNfc2VsZnRlc3RfZHJiZyh2b2lk KTsKLStpbnQgRklQU19zZWxmdGVzdF9kcmJnX2FsbCh2b2lkKTsKLStpbnQgRklQU19zZWxmdGVz dF9jbWFjKHZvaWQpOwotKwotK3ZvaWQgRklQU19nZXRfdGltZXZlYyh1bnNpZ25lZCBjaGFyICpi dWYsIHVuc2lnbmVkIGxvbmcgKnBjdHIpOwotKwotKyNkZWZpbmUgRklQU19FUlJPUl9JR05PUkVE KGFsZykgT3BlblNTTERpZShfX0ZJTEVfXywgX19MSU5FX18sIFwKLSsJCWFsZyAiIHByZXZpb3Vz IEZJUFMgZm9yYmlkZGVuIGFsZ29yaXRobSBlcnJvciBpZ25vcmVkIik7Ci0rCi0raW50IGZpcHNf cGtleV9zaWduYXR1cmVfdGVzdChzdHJ1Y3QgZXZwX3BrZXlfc3QgKnBrZXksCi0rCQkJY29uc3Qg dW5zaWduZWQgY2hhciAqdGJzLCBpbnQgdGJzbGVuLAotKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIg KmthdCwgdW5zaWduZWQgaW50IGthdGxlbiwKLSsJCQljb25zdCBzdHJ1Y3QgZW52X21kX3N0ICpk aWdlc3QsIHVuc2lnbmVkIGludCBtZF9mbGFncywKLSsJCQljb25zdCBjaGFyICpmYWlsX3N0cik7 Ci0rCi0raW50IGZpcHNfY2lwaGVyX3Rlc3Qoc3RydWN0IGV2cF9jaXBoZXJfY3R4X3N0ICpjdHgs Ci0rCQkJY29uc3Qgc3RydWN0IGV2cF9jaXBoZXJfc3QgKmNpcGhlciwKLSsJCQljb25zdCB1bnNp Z25lZCBjaGFyICprZXksCi0rCQkJY29uc3QgdW5zaWduZWQgY2hhciAqaXYsCi0rCQkJY29uc3Qg dW5zaWduZWQgY2hhciAqcGxhaW50ZXh0LAotKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmNpcGhl cnRleHQsCi0rCQkJaW50IGxlbik7Ci0rCi0rdm9pZCBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKHZv aWQpOwotKwotK2NvbnN0IHN0cnVjdCBlbnZfbWRfc3QgKkZJUFNfZ2V0X2RpZ2VzdGJ5bmlkKGlu dCBuaWQpOwotKwotK2NvbnN0IHN0cnVjdCBldnBfY2lwaGVyX3N0ICpGSVBTX2dldF9jaXBoZXJi eW5pZChpbnQgbmlkKTsKLSsKLSsKLSsvKiBCRUdJTiBFUlJPUiBDT0RFUyAqLwotKy8qIFRoZSBm b2xsb3dpbmcgbGluZXMgYXJlIGF1dG8gZ2VuZXJhdGVkIGJ5IHRoZSBzY3JpcHQgbWtlcnIucGwu IEFueSBjaGFuZ2VzCi0rICogbWFkZSBhZnRlciB0aGlzIHBvaW50IG1heSBiZSBvdmVyd3JpdHRl biB3aGVuIHRoZSBzY3JpcHQgaXMgbmV4dCBydW4uCi0rICovCi0rdm9pZCBFUlJfbG9hZF9GSVBT X3N0cmluZ3Modm9pZCk7Ci0rCi0rLyogRXJyb3IgY29kZXMgZm9yIHRoZSBGSVBTIGZ1bmN0aW9u cy4gKi8KLSsKLSsvKiBGdW5jdGlvbiBjb2Rlcy4gKi8KLSsjZGVmaW5lIEZJUFNfRl9ESF9CVUlM VElOX0dFTlBBUkFNUwkJCSAxMDAKLSsjZGVmaW5lIEZJUFNfRl9ESF9JTklUCQkJCQkgMTQ4Ci0r I2RlZmluZSBGSVBTX0ZfRFJCR19SRVNFRUQJCQkJIDE2MgotKyNkZWZpbmUgRklQU19GX0RTQV9C VUlMVElOX1BBUkFNR0VOCQkJIDEwMQotKyNkZWZpbmUgRklQU19GX0RTQV9CVUlMVElOX1BBUkFN R0VOMgkJCSAxMDcKLSsjZGVmaW5lIEZJUFNfRl9EU0FfRE9fU0lHTgkJCQkgMTAyCi0rI2RlZmlu ZSBGSVBTX0ZfRFNBX0RPX1ZFUklGWQkJCQkgMTAzCi0rI2RlZmluZSBGSVBTX0ZfRUNESF9DT01Q VVRFX0tFWQkJCQkgMTYzCi0rI2RlZmluZSBGSVBTX0ZfRUNEU0FfRE9fU0lHTgkJCQkgMTY0Ci0r I2RlZmluZSBGSVBTX0ZfRUNEU0FfRE9fVkVSSUZZCQkJCSAxNjUKLSsjZGVmaW5lIEZJUFNfRl9F Q19LRVlfR0VORVJBVEVfS0VZCQkJIDE2NgotKyNkZWZpbmUgRklQU19GX0VWUF9DSVBIRVJJTklU X0VYCQkJIDEyNAotKyNkZWZpbmUgRklQU19GX0VWUF9ESUdFU1RJTklUX0VYCQkJIDEyNQotKyNk ZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfRFNBCQkJCSAxMDQKLSsjZGVmaW5lIEZJUFNfRl9GSVBT X0NIRUNLX0RTQV9QUk5HCQkJIDE1MQotKyNkZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfRUMJCQkJ IDE0MgotKyNkZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfRUNfUFJORwkJCSAxNTIKLSsjZGVmaW5l IEZJUFNfRl9GSVBTX0NIRUNLX0lOQ09SRV9GSU5HRVJQUklOVAkJIDEwNQotKyNkZWZpbmUgRklQ U19GX0ZJUFNfQ0hFQ0tfUlNBCQkJCSAxMDYKLSsjZGVmaW5lIEZJUFNfRl9GSVBTX0NIRUNLX1JT QV9QUk5HCQkJIDE1MAotKyNkZWZpbmUgRklQU19GX0ZJUFNfQ0lQSEVSCQkJCSAxNjAKLSsjZGVm aW5lIEZJUFNfRl9GSVBTX0NJUEhFUklOSVQJCQkJIDE0MwotKyNkZWZpbmUgRklQU19GX0ZJUFNf Q0lQSEVSX0NUWF9DVFJMCQkJIDE2MQotKyNkZWZpbmUgRklQU19GX0ZJUFNfRElHRVNURklOQUwJ CQkJIDE1OAotKyNkZWZpbmUgRklQU19GX0ZJUFNfRElHRVNUSU5JVAkJCQkgMTI4Ci0rI2RlZmlu ZSBGSVBTX0ZfRklQU19ESUdFU1RVUERBVEUJCQkgMTU5Ci0rI2RlZmluZSBGSVBTX0ZfRklQU19E UkJHX0JZVEVTCQkJCSAxMzEKLSsjZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfQ0hFQ0sJCQkJIDE0 NgotKyNkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19DUFJOR19URVNUCQkJIDEzMgotKyNkZWZpbmUg RklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSwkJCSAxMzYKLSsjZGVmaW5lIEZJUFNfRl9GSVBT X0RSQkdfR0VORVJBVEUJCQkgMTM0Ci0rI2RlZmluZSBGSVBTX0ZfRklQU19EUkJHX0lOSVQJCQkJ IDEzNQotKyNkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19JTlNUQU5USUFURQkJCSAxMzgKLSsjZGVm aW5lIEZJUFNfRl9GSVBTX0RSQkdfTkVXCQkJCSAxMzkKLSsjZGVmaW5lIEZJUFNfRl9GSVBTX0RS QkdfUkVTRUVECQkJCSAxNDAKLSsjZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVAkJ CSAxNDEKLSsjZGVmaW5lIEZJUFNfRl9GSVBTX0RTQV9DSEVDSwkJLyogdW51c2VkICovCSAxMDcK LSsjZGVmaW5lIEZJUFNfRl9GSVBTX0RTQV9TSUdOX0RJR0VTVAkJCSAxNTQKLSsjZGVmaW5lIEZJ UFNfRl9GSVBTX0RTQV9WRVJJRllfRElHRVNUCQkJIDE1NQotKyNkZWZpbmUgRklQU19GX0ZJUFNf R0VUX0VOVFJPUFkJCQkJIDE0NwotKyNkZWZpbmUgRklQU19GX0ZJUFNfTU9ERV9TRVQJCS8qIHVu dXNlZCAqLwkgMTA4Ci0rI2RlZmluZSBGSVBTX0ZfRklQU19NT0RVTEVfTU9ERV9TRVQJCQkgMTA4 Ci0rI2RlZmluZSBGSVBTX0ZfRklQU19QS0VZX1NJR05BVFVSRV9URVNUCQkJIDEwOQotKyNkZWZp bmUgRklQU19GX0ZJUFNfUkFORF9BREQJCQkJIDEzNwotKyNkZWZpbmUgRklQU19GX0ZJUFNfUkFO RF9CWVRFUwkJCQkgMTIyCi0rI2RlZmluZSBGSVBTX0ZfRklQU19SQU5EX1BTRVVET19CWVRFUwkJ CSAxNjcKLSsjZGVmaW5lIEZJUFNfRl9GSVBTX1JBTkRfU0VFRAkJCQkgMTY4Ci0rI2RlZmluZSBG SVBTX0ZfRklQU19SQU5EX1NFVF9NRVRIT0QJCQkgMTI2Ci0rI2RlZmluZSBGSVBTX0ZfRklQU19S QU5EX1NUQVRVUwkJCQkgMTI3Ci0rI2RlZmluZSBGSVBTX0ZfRklQU19SU0FfU0lHTl9ESUdFU1QJ CQkgMTU2Ci0rI2RlZmluZSBGSVBTX0ZfRklQU19SU0FfVkVSSUZZX0RJR0VTVAkJCSAxNTcKLSsj ZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0FFUwkJCSAxMTAKLSsjZGVmaW5lIEZJUFNfRl9G SVBTX1NFTEZURVNUX0FFU19DQ00JCQkgMTQ1Ci0rI2RlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVT VF9BRVNfR0NNCQkJIDEyOQotKyNkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX1hUUwkJ CSAxNDQKLSsjZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0NNQUMJCQkgMTMwCi0rI2RlZmlu ZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9ERVMJCQkgMTExCi0rI2RlZmluZSBGSVBTX0ZfRklQU19T RUxGVEVTVF9EU0EJCQkgMTEyCi0rI2RlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9FQ0RTQQkJ CSAxMzMKLSsjZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0hNQUMJCQkgMTEzCi0rI2RlZmlu ZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9STkcJLyogdW51c2VkICovCSAxMTQKLSsjZGVmaW5lIEZJ UFNfRl9GSVBTX1NFTEZURVNUX1NIQTEJCQkgMTE1Ci0rI2RlZmluZSBGSVBTX0ZfRklQU19TRUxG VEVTVF9YOTMxCQkJIDExNAotKyNkZWZpbmUgRklQU19GX0ZJUFNfU0VUX1BSTkdfS0VZCQkJIDE1 MwotKyNkZWZpbmUgRklQU19GX0hBU0hfRklOQUwJCQkJIDEyMwotKyNkZWZpbmUgRklQU19GX1JT QV9CVUlMVElOX0tFWUdFTgkJCSAxMTYKLSsjZGVmaW5lIEZJUFNfRl9SU0FfRUFZX0lOSVQJCQkJ IDE0OQotKyNkZWZpbmUgRklQU19GX1JTQV9FQVlfUFJJVkFURV9ERUNSWVBUCQkJIDExNwotKyNk ZWZpbmUgRklQU19GX1JTQV9FQVlfUFJJVkFURV9FTkNSWVBUCQkJIDExOAotKyNkZWZpbmUgRklQ U19GX1JTQV9FQVlfUFVCTElDX0RFQ1JZUFQJCQkgMTE5Ci0rI2RlZmluZSBGSVBTX0ZfUlNBX0VB WV9QVUJMSUNfRU5DUllQVAkJCSAxMjAKLSsjZGVmaW5lIEZJUFNfRl9SU0FfWDkzMV9HRU5FUkFU RV9LRVlfRVgJCQkgMTIxCi0rI2RlZmluZSBGSVBTX0ZfU1NMRUFZX1JBTkRfQllURVMJLyogdW51 c2VkICovCSAxMjIKLSsKLSsvKiBSZWFzb24gY29kZXMuICovCi0rI2RlZmluZSBGSVBTX1JfQURE SVRJT05BTF9JTlBVVF9FUlJPUl9VTkRFVEVDVEVECSAxNTAKLSsjZGVmaW5lIEZJUFNfUl9BRERJ VElPTkFMX0lOUFVUX1RPT19MT05HCQkgMTI1Ci0rI2RlZmluZSBGSVBTX1JfQUxSRUFEWV9JTlNU QU5USUFURUQJCQkgMTM0Ci0rI2RlZmluZSBGSVBTX1JfQVVUSEVOVElDQVRJT05fRkFJTFVSRQkJ CSAxNTEKLSsjZGVmaW5lIEZJUFNfUl9DQU5OT1RfUkVBRF9FWEUJCS8qIHVudXNlZCAqLwkgMTAz Ci0rI2RlZmluZSBGSVBTX1JfQ0FOTk9UX1JFQURfRVhFX0RJR0VTVAkvKiB1bnVzZWQgKi8JIDEw NAotKyNkZWZpbmUgRklQU19SX0NPTlRSQURJQ1RJTkdfRVZJREVOQ0UJCQkgMTE0Ci0rI2RlZmlu ZSBGSVBTX1JfRFJCR19OT1RfSU5JVElBTElTRUQJCQkgMTUyCi0rI2RlZmluZSBGSVBTX1JfRFJC R19TVFVDSwkJCQkgMTAzCi0rI2RlZmluZSBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVE CQkJIDEwNAotKyNkZWZpbmUgRklQU19SX0VOVFJPUFlfTk9UX1JFUVVFU1RFRF9GT1JfUkVTRUVE CQkgMTA1Ci0rI2RlZmluZSBGSVBTX1JfRU5UUk9QWV9TT1VSQ0VfU1RVQ0sJCQkgMTQyCi0rI2Rl ZmluZSBGSVBTX1JfRVJST1JfSU5JVElBTElTSU5HX0RSQkcJCQkgMTE1Ci0rI2RlZmluZSBGSVBT X1JfRVJST1JfSU5TVEFOVElBVElOR19EUkJHCQkJIDEyNwotKyNkZWZpbmUgRklQU19SX0VSUk9S X1JFVFJJRVZJTkdfQURESVRJT05BTF9JTlBVVAkgMTI0Ci0rI2RlZmluZSBGSVBTX1JfRVJST1Jf UkVUUklFVklOR19FTlRST1BZCQkJIDEyMgotKyNkZWZpbmUgRklQU19SX0VSUk9SX1JFVFJJRVZJ TkdfTk9OQ0UJCQkgMTQwCi0rI2RlZmluZSBGSVBTX1JfRVhFX0RJR0VTVF9ET0VTX05PVF9NQVRD SCAgIC8qIHVudXNlZCAqLwkgMTA1Ci0rI2RlZmluZSBGSVBTX1JfRklOR0VSUFJJTlRfRE9FU19O T1RfTUFUQ0gJCSAxMTAKLSsjZGVmaW5lIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRD SF9OT05QSUNfUkVMT0NBVEVEIDExMQotKyNkZWZpbmUgRklQU19SX0ZJTkdFUlBSSU5UX0RPRVNf Tk9UX01BVENIX1NFR01FTlRfQUxJQVNJTkcgMTEyCi0rI2RlZmluZSBGSVBTX1JfRklQU19NT0RF X0FMUkVBRFlfU0VUCQkJIDEwMgotKyNkZWZpbmUgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVE CQkJIDEwNgotKyNkZWZpbmUgRklQU19SX0ZVTkNUSU9OX0VSUk9SCQkJCSAxMTYKLSsjZGVmaW5l IEZJUFNfUl9HRU5FUkFURV9FUlJPUgkJCQkgMTM3Ci0rI2RlZmluZSBGSVBTX1JfR0VORVJBVEVf RVJST1JfVU5ERVRFQ1RFRAkJIDExOAotKyNkZWZpbmUgRklQU19SX0lOU1RBTlRJQVRFX0VSUk9S CQkJIDExOQotKyNkZWZpbmUgRklQU19SX0lOU1VGRklDSUVOVF9TRUNVUklUWV9TVFJFTkdUSAkJ IDEyMAotKyNkZWZpbmUgRklQU19SX0lOVEVSTkFMX0VSUk9SCQkJCSAxMjEKLSsjZGVmaW5lIEZJ UFNfUl9JTlZBTElEX0tFWV9MRU5HVEgJCQkgMTA5Ci0rI2RlZmluZSBGSVBTX1JfSU5WQUxJRF9Q QVJBTUVURVJTCQkJIDE0NAotKyNkZWZpbmUgRklQU19SX0lOX0VSUk9SX1NUQVRFCQkJCSAxMjMK LSsjZGVmaW5lIEZJUFNfUl9LRVlfVE9PX1NIT1JUCQkJCSAxMDgKLSsjZGVmaW5lIEZJUFNfUl9O T05DRV9FUlJPUl9VTkRFVEVDVEVECQkJIDE0OQotKyNkZWZpbmUgRklQU19SX05PTl9GSVBTX01F VEhPRAkJCQkgMTAwCi0rI2RlZmluZSBGSVBTX1JfTk9QUl9URVNUMV9GQUlMVVJFCQkJIDE0NQot KyNkZWZpbmUgRklQU19SX05PUFJfVEVTVDJfRkFJTFVSRQkJCSAxNDYKLSsjZGVmaW5lIEZJUFNf Ul9OT1RfSU5TVEFOVElBVEVECQkJCSAxMjYKLSsjZGVmaW5lIEZJUFNfUl9QQUlSV0lTRV9URVNU X0ZBSUxFRAkJCSAxMDcKLSsjZGVmaW5lIEZJUFNfUl9QRVJTT05BTElTQVRJT05fRVJST1JfVU5E RVRFQ1RFRAkJIDEyOAotKyNkZWZpbmUgRklQU19SX1BFUlNPTkFMSVNBVElPTl9TVFJJTkdfVE9P X0xPTkcJCSAxMjkKLSsjZGVmaW5lIEZJUFNfUl9QUk5HX1NUUkVOR1RIX1RPT19MT1cJCQkgMTQz Ci0rI2RlZmluZSBGSVBTX1JfUFJfVEVTVDFfRkFJTFVSRQkJCQkgMTQ3Ci0rI2RlZmluZSBGSVBT X1JfUFJfVEVTVDJfRkFJTFVSRQkJCQkgMTQ4Ci0rI2RlZmluZSBGSVBTX1JfUkVRVUVTVF9MRU5H VEhfRVJST1JfVU5ERVRFQ1RFRAkJIDEzMAotKyNkZWZpbmUgRklQU19SX1JFUVVFU1RfVE9PX0xB UkdFX0ZPUl9EUkJHCQkgMTMxCi0rI2RlZmluZSBGSVBTX1JfUkVTRUVEX0NPVU5URVJfRVJST1IJ CQkgMTMyCi0rI2RlZmluZSBGSVBTX1JfUkVTRUVEX0VSUk9SCQkJCSAxMzMKLSsjZGVmaW5lIEZJ UFNfUl9SU0FfREVDUllQVF9FUlJPUgkvKiB1bnVzZWQgKi8JIDExNQotKyNkZWZpbmUgRklQU19S X1JTQV9FTkNSWVBUX0VSUk9SCS8qIHVudXNlZCAqLwkgMTE2Ci0rI2RlZmluZSBGSVBTX1JfU0VM RlRFU1RfRkFJTEVECQkJCSAxMDEKLSsjZGVmaW5lIEZJUFNfUl9TRUxGVEVTVF9GQUlMVVJFCQkJ CSAxMzUKLSsjZGVmaW5lIEZJUFNfUl9TVFJFTkdUSF9FUlJPUl9VTkRFVEVDVEVECQkgMTM2Ci0r I2RlZmluZSBGSVBTX1JfVEVTVF9GQUlMVVJFCQkJCSAxMTcKLSsjZGVmaW5lIEZJUFNfUl9VTklO U1RBTlRJQVRFX0VSUk9SCQkJIDE0MQotKyNkZWZpbmUgRklQU19SX1VOSU5TVEFOVElBVEVfWkVS T0lTRV9FUlJPUgkJIDEzOAotKyNkZWZpbmUgRklQU19SX1VOU1VQUE9SVEVEX0RSQkdfVFlQRQkJ CSAxMzkKLSsjZGVmaW5lIEZJUFNfUl9VTlNVUFBPUlRFRF9QTEFURk9STQkJCSAxMTMKLSsKLSsj aWZkZWYgIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19obWFjX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEu MC4xay9jcnlwdG8vZmlwcy9maXBzX2htYWNfc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9maXBzL2ZpcHNfaG1hY19zZWxmdGVzdC5jLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1 MS41NjM5MjI1NjIgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX2ht YWNfc2VsZnRlc3QuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2MzkyMjU2MiArMDEwMAotQEAgLTAs MCArMSwxMzcgQEAKLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAwNSBUaGUg T3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsg KiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxz IG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0 IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0r ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3Ns Lm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3Bl blNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBw cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBj b250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJv ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5T U0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhv dXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVj dC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11 c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3 Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICog SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0r ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3Ry aW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwot KyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8b3BlbnNzbC9o bWFjLmg+Ci0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotK3R5cGVkZWYgc3RydWN0IHsKLSsJY29u c3QgRVZQX01EICooKmFsZykodm9pZCk7Ci0rCWNvbnN0IGNoYXIgKmtleSwgKml2OwotKwl1bnNp Z25lZCBjaGFyIGthdmFsW0VWUF9NQVhfTURfU0laRV07Ci0rfSBITUFDX0tBVDsKLSsKLStzdGF0 aWMgY29uc3QgSE1BQ19LQVQgdmVjdG9yW10gPSB7Ci0rICAgIHsJRVZQX3NoYTEsCi0rCS8qIGZy b20gaHR0cDovL2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL2ZpcHMvZmlwczE5OC9maXBzLTE5 OGEucGRmICovCi0rCSIwMTIzNDU2Nzg5Ojs8PT4/QEFCQyIsCi0rCSJTYW1wbGUgIzIiLAotKwl7 IDB4MDksMHgyMiwweGQzLDB4NDAsMHg1ZiwweGFhLDB4M2QsMHgxOSwKLSsJICAweDRmLDB4ODIs MHhhNCwweDU4LDB4MzAsMHg3MywweDdkLDB4NWMsCi0rCSAgMHhjNiwweGM3LDB4NWQsMHgyNCB9 Ci0rICAgIH0sCi0rICAgIHsJRVZQX3NoYTIyNCwKLSsJLyoganVzdCBrZWVwIGV4dGVuZGluZyB0 aGUgYWJvdmUuLi4gKi8KLSsJIjAxMjM0NTY3ODk6Ozw9Pj9AQUJDIiwKLSsJIlNhbXBsZSAjMiIs Ci0rCXsgMHhkZCwweGVmLDB4MGEsMHg0MCwweGNiLDB4N2QsMHg1MCwweGZiLAotKwkgIDB4NmUs MHhlNiwweGNlLDB4YTEsMHgyMCwweGJhLDB4MjYsMHhhYSwKLSsJICAweDA4LDB4ZjMsMHgwNyww eDc1LDB4ODcsMHhiOCwweGFkLDB4MWIsCi0rCSAgMHg4YywweDhkLDB4MTIsMHhjNyB9Ci0rICAg IH0sCi0rICAgIHsJRVZQX3NoYTI1NiwKLSsJIjAxMjM0NTY3ODk6Ozw9Pj9AQUJDIiwKLSsJIlNh bXBsZSAjMiIsCi0rCXsgMHhiOCwweGYyLDB4MGQsMHhiNSwweDQxLDB4ZWEsMHg0MywweDA5LAot KwkgIDB4Y2EsMHg0ZSwweGE5LDB4MzgsMHgwYywweGQwLDB4ZTgsMHgzNCwKLSsJICAweGY3LDB4 MWYsMHhiZSwweDkxLDB4NzQsMHhhMiwweDYxLDB4MzgsCi0rCSAgMHgwZCwweGMxLDB4N2UsMHhh ZSwweDZhLDB4MzQsMHg1MSwweGQ5IH0KLSsgICAgfSwKLSsgICAgewlFVlBfc2hhMzg0LAotKwki MDEyMzQ1Njc4OTo7PD0+P0BBQkMiLAotKwkiU2FtcGxlICMyIiwKLSsJeyAweDA4LDB4YmMsMHhi MCwweGRhLDB4NDksMHgxZSwweDg3LDB4YWQsCi0rCSAgMHg5YSwweDFkLDB4NmEsMHhjZSwweDIz LDB4YzUsMHgwYiwweGY2LAotKwkgIDB4YjcsMHgxOCwweDA2LDB4YTUsMHg3NywweGNkLDB4NDks MHgwNCwKLSsJICAweDg5LDB4ZjEsMHhlNiwweDIzLDB4NDQsMHg1MSwweDUxLDB4OWYsCi0rCSAg MHg4NSwweDU2LDB4ODAsMHg3OSwweDBjLDB4YmQsMHg0ZCwweDUwLAotKwkgIDB4YTQsMHg1Ziww eDI5LDB4ZTMsMHg5MywweGYwLDB4ZTgsMHg3ZiB9Ci0rICAgIH0sCi0rICAgIHsJRVZQX3NoYTUx MiwKLSsJIjAxMjM0NTY3ODk6Ozw9Pj9AQUJDIiwKLSsJIlNhbXBsZSAjMiIsCi0rCXsgMHg4MCww eDlkLDB4NDQsMHgwNSwweDdjLDB4NWIsMHg5NSwweDQxLAotKwkgIDB4MDUsMHhiZCwweDA0LDB4 MTMsMHgxNiwweGRiLDB4MGYsMHhhYywKLSsJICAweDQ0LDB4ZDUsMHhhNCwweGQ1LDB4ZDAsMHg4 OSwweDJiLDB4ZDAsCi0rCSAgMHg0ZSwweDg2LDB4NjQsMHgxMiwweGMwLDB4OTAsMHg3NywweDY4 LAotKwkgIDB4ZjEsMHg4NywweGI3LDB4N2MsMHg0ZiwweGFlLDB4MmMsMHgyZiwKLSsJICAweDIx LDB4YTUsMHhiNSwweDY1LDB4OWEsMHg0ZiwweDRiLDB4YTcsCi0rCSAgMHg0NywweDAyLDB4YTMs MHhkZSwweDliLDB4NTEsMHhmMSwweDQ1LAotKwkgIDB4YmQsMHg0ZiwweDI1LDB4MjcsMHg0Miww eDk4LDB4OTksMHgwNSB9Ci0rICAgIH0sCi0rfTsKLSsKLStpbnQgRklQU19zZWxmdGVzdF9obWFj KCkKLSsgICAgewotKyAgICBpbnQgbjsKLSsgICAgdW5zaWduZWQgaW50ICAgIG91dGxlbjsKLSsg ICAgdW5zaWduZWQgY2hhciAgIG91dFtFVlBfTUFYX01EX1NJWkVdOwotKyAgICBjb25zdCBFVlBf TUQgICAqbWQ7Ci0rICAgIGNvbnN0IEhNQUNfS0FUICp0OwotKwotKyAgICBmb3Iobj0wLHQ9dmVj dG9yOyBuPHNpemVvZih2ZWN0b3IpL3NpemVvZih2ZWN0b3JbMF0pOyBuKyssdCsrKQotKwl7Ci0r CW1kID0gKCp0LT5hbGcpKCk7Ci0rCUhNQUMobWQsdC0+a2V5LHN0cmxlbih0LT5rZXkpLAotKwkJ KGNvbnN0IHVuc2lnbmVkIGNoYXIgKil0LT5pdixzdHJsZW4odC0+aXYpLAotKwkJb3V0LCZvdXRs ZW4pOwotKwotKwlpZihtZW1jbXAob3V0LHQtPmthdmFsLG91dGxlbikpCi0rCSAgICB7Ci0rCSAg ICBGSVBTZXJyKEZJUFNfRl9GSVBTX1NFTEZURVNUX0hNQUMsRklQU19SX1NFTEZURVNUX0ZBSUxF RCk7Ci0rCSAgICByZXR1cm4gMDsKLSsJICAgIH0KLSsJfQotKyAgICByZXR1cm4gMTsKLSsgICAg fQotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19sb2Ns LmguZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX2xvY2wuaAotLS0tIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfbG9jbC5oLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1 MS41NjM5MjI1NjIgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX2xv Y2wuaAkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2MzkyMjU2MiArMDEwMAotQEAgLTAsMCArMSw3MSBA QAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFBy b2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsg KgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3Ry aWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmlu ZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0 aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0r ICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2pl Y3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsg KiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAg ICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3 cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0r ICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4g dGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5v cmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wg UFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK LSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5T U0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9G IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhP V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD T05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElU WSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsK LSsjaWZkZWYgIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rI2RlZmlu ZSBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFCTMyCi0rI2RlZmluZSBmaXBzX2xvYWRfa2V5X2Nv bXBvbmVudChrZXksIGNvbXAsIHByZSkgXAotKwlrZXktPmNvbXAgPSBCTl9iaW4yYm4ocHJlIyNf IyNjb21wLCBzaXplb2YocHJlIyNfIyNjb21wKSwga2V5LT5jb21wKTsgXAotKwlpZiAoIWtleS0+ Y29tcCkgXAotKwkJZ290byBlcnIKLSsKLSsjZGVmaW5lIGZpcHNfcG9zdF9zdGFydGVkKGlkLCBz dWJpZCwgZXgpIDEKLSsjZGVmaW5lIGZpcHNfcG9zdF9zdWNjZXNzKGlkLCBzdWJpZCwgZXgpIDEK LSsjZGVmaW5lIGZpcHNfcG9zdF9mYWlsZWQoaWQsIHN1YmlkLCBleCkgMQotKyNkZWZpbmUgZmlw c19wb3N0X2NvcnJ1cHQoaWQsIHN1YmlkLCBleCkgMQotKyNkZWZpbmUgZmlwc19wb3N0X3N0YXR1 cygpIDEKLSsKLSsjaWZkZWYgIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKyNlbmRpZgotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19tZC5jLmZpcHMgb3BlbnNzbC0x LjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19tZC5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Zp cHMvZmlwc19tZC5jLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NjM5MjI1NjIgKzAxMDAKLSsr KyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX21kLmMJMjAxNS0wMS0wOSAwOTo1MTo1 MS41NjM5MjI1NjIgKzAxMDAKLUBAIC0wLDAgKzEsMTQ1IEBACi0rLyogZmlwcy9ldnAvZmlwc19t ZC5jICovCi0rLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0 c29mdC5jb20pCi0rICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFRoaXMgcGFja2Fn ZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgotKyAqIGJ5IEVyaWMgWW91bmcgKGVh eUBjcnlwdHNvZnQuY29tKS4KLSsgKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gc28g YXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wuCi0rICogCi0rICogVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFz Ci0rICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxv d2luZyBjb25kaXRpb25zCi0rICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0 cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKLSsgKiBsaGFzaCwgREVTLCBldGMuLCBjb2Rl OyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KLSsgKiBpbmNs dWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29weXJp Z2h0IHRlcm1zCi0rICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhA Y3J5cHRzb2Z0LmNvbSkuCi0rICogCi0rICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3VuZydz LCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGljZXMgaW4KLSsgKiB0aGUgY29kZSBhcmUg bm90IHRvIGJlIHJlbW92ZWQuCi0rICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9k dWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgotKyAqIGFzIHRoZSBh dXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5IHVzZWQuCi0rICogVGhpcyBjYW4gYmUg aW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCi0r ICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhl IHBhY2thZ2UuCi0rICogCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1l dDoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0 aGUKLSsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotKyAqICAgIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQotKyAqICAgICBF cmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCi0rICogICAgVGhlIHdvcmQgJ2NyeXB0b2dy YXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5Ci0r ICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCi0rICog NC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJpdmF0 aXZlIHRoZXJlb2YpIGZyb20gCi0rICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlv biBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNy eXB0c29mdC5jb20pIgotKyAqIAotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJ QyBZT1VORyBgYEFTIElTJycgQU5ECi0rICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UKLSsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0rICogREFN QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMKLSsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotKyAq IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB UklTSU5HIElOIEFOWSBXQVkKLSsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0rICogU1VDSCBEQU1BR0UuCi0r ICogCi0rICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1Ymxp Y2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKLSsgKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBj YW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKLSsgKiBj b3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCi0rICogW2lu Y2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSsgKi8KLSsvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot KyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmln aHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUg cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJl IG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlz dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp Z2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgot KyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1 c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFj a25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVu U1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUg bmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJl IHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t IHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4g Rm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNv cmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz b2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVu U1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAg cGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmli dXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwot KyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGlu IHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAq IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElT JycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFS RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgot KyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN QUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFO RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBT VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ U0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB UkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH RS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotKyAqCi0rICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0 b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCi0rICogKGVheUBjcnlwdHNv ZnQuY29tKS4gIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQot KyAqIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgotKyAqCi0rICovCi0rCi0rLyogTWluaW1h bCBzdGFuZGFsb25lIEZJUFMgdmVyc2lvbnMgb2YgRGlnZXN0IG9wZXJhdGlvbnMgKi8KLSsKLSsj ZGVmaW5lIE9QRU5TU0xfRklQU0FQSQotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRl IDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+Ci0rI2luY2x1ZGUgPG9w ZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5z c2wvZmlwcy5oPgotKwotK2NvbnN0IEVWUF9NRCAqRklQU19nZXRfZGlnZXN0YnluaWQoaW50IG5p ZCkKLSsJewotKwlzd2l0Y2ggKG5pZCkKLSsJCXsKLSsJCWNhc2UgTklEX3NoYTE6Ci0rCQlyZXR1 cm4gRVZQX3NoYTEoKTsKLSsKLSsJCWNhc2UgTklEX3NoYTIyNDoKLSsJCXJldHVybiBFVlBfc2hh MjI0KCk7Ci0rCi0rCQljYXNlIE5JRF9zaGEyNTY6Ci0rCQlyZXR1cm4gRVZQX3NoYTI1NigpOwot KwotKwkJY2FzZSBOSURfc2hhMzg0OgotKwkJcmV0dXJuIEVWUF9zaGEzODQoKTsKLSsKLSsJCWNh c2UgTklEX3NoYTUxMjoKLSsJCXJldHVybiBFVlBfc2hhNTEyKCk7Ci0rCi0rCQlkZWZhdWx0Ogot KwkJcmV0dXJuIE5VTEw7Ci0rCQl9Ci0rCX0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0 by9maXBzL2ZpcHNfcG9zdC5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19w b3N0LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYy5maXBzCTIw MTUtMDEtMDkgMDk6NTE6NTEuNTYzOTIyNTYyICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5 cHRvL2ZpcHMvZmlwc19wb3N0LmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NjM5MjI1NjIgKzAxMDAK LUBAIC0wLDAgKzEsMjA1IEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIw MTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBS ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0 cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK LSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAg ICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg dGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1h dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdh cmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRo aXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJv amVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cu b3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBh bmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ug b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0r ICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBw bGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAq IDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVk ICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1l cyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NM IFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNv ZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0r ICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9w ZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0 cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VE IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO VCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAq IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF UlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICog T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2RlZmlu ZSBPUEVOU1NMX0ZJUFNBUEkKLSsKLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5j bHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+Ci0r I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2RzYS5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8bGlt aXRzLmg+Ci0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwotKy8qIFBvd2VyIG9uIHNlbGYgdGVz dCAoUE9TVCkgc3VwcG9ydCBmdW5jdGlvbnMgKi8KLSsKLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBz Lmg+Ci0rI2luY2x1ZGUgImZpcHNfbG9jbC5oIgotKwotKy8qIFJ1biBhbGwgc2VsZnRlc3RzICov Ci0raW50IEZJUFNfc2VsZnRlc3Qodm9pZCkKLSsJewotKwlpbnQgcnYgPSAxOwotKwlpZiAoIUZJ UFNfc2VsZnRlc3RfZHJiZygpKQotKwkJcnYgPSAwOwotKwlpZiAoIUZJUFNfc2VsZnRlc3RfeDkz MSgpKQotKwkJcnYgPSAwOwotKyAgICAJaWYgKCFGSVBTX3NlbGZ0ZXN0X3NoYTEoKSkKLSsJCXJ2 ID0gMDsKLSsgICAgCWlmICghRklQU19zZWxmdGVzdF9zaGEyKCkpCi0rCQlydiA9IDA7Ci0rCWlm ICghRklQU19zZWxmdGVzdF9obWFjKCkpCi0rCQlydiA9IDA7Ci0rCWlmICghRklQU19zZWxmdGVz dF9jbWFjKCkpCi0rCQlydiA9IDA7Ci0rCWlmICghRklQU19zZWxmdGVzdF9hZXMoKSkKLSsJCXJ2 ID0gMDsKLSsJaWYgKCFGSVBTX3NlbGZ0ZXN0X2Flc19jY20oKSkKLSsJCXJ2ID0gMDsKLSsJaWYg KCFGSVBTX3NlbGZ0ZXN0X2Flc19nY20oKSkKLSsJCXJ2ID0gMDsKLSsJaWYgKCFGSVBTX3NlbGZ0 ZXN0X2Flc194dHMoKSkKLSsJCXJ2ID0gMDsKLSsJaWYgKCFGSVBTX3NlbGZ0ZXN0X2RlcygpKQot KwkJcnYgPSAwOwotKwlpZiAoIUZJUFNfc2VsZnRlc3RfcnNhKCkpCi0rCQlydiA9IDA7Ci0rCWlm ICghRklQU19zZWxmdGVzdF9kc2EoKSkKLSsJCXJ2ID0gMDsKLSsJcmV0dXJuIHJ2OwotKwl9Ci0r Ci0rLyogR2VuZXJhbGl6ZWQgcHVibGljIGtleSB0ZXN0IHJvdXRpbmUuIFNpZ25zIGFuZCB2ZXJp ZmllcyB0aGUgZGF0YQotKyAqIHN1cHBsaWVkIGluIHRicyB1c2luZyBtZXNhZ2UgZGlnZXN0IG1k IGFuZCBzZXR0aW5nIG9wdGlvbiBkaWdlc3QKLSsgKiBmbGFncyBtZF9mbGFncy4gSWYgdGhlICdr YXQnIHBhcmFtZXRlciBpcyBub3QgTlVMTCBpdCB3aWxsCi0rICogYWRkaXRpb25hbGx5IGNoZWNr IHRoZSBzaWduYXR1cmUgbWF0Y2hlcyBpdDogYSBrbm93biBhbnN3ZXIgdGVzdAotKyAqIFRoZSBz dHJpbmcgImZhaWxfc3RyIiBpcyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcyBpbiBj YXNlCi0rICogb2YgZmFpbHVyZS4gSWYgInBrZXkiIGlzIE5VTEwganVzdCBwZXJmb3JtIGEgbWVz c2FnZSBkaWdlc3QgY2hlY2suCi0rICovCi0rCi0raW50IGZpcHNfcGtleV9zaWduYXR1cmVfdGVz dChFVlBfUEtFWSAqcGtleSwKLSsJCQljb25zdCB1bnNpZ25lZCBjaGFyICp0YnMsIGludCB0YnNs ZW4sCi0rCQkJY29uc3QgdW5zaWduZWQgY2hhciAqa2F0LCB1bnNpZ25lZCBpbnQga2F0bGVuLAot KwkJCWNvbnN0IEVWUF9NRCAqZGlnZXN0LCB1bnNpZ25lZCBpbnQgbWRfZmxhZ3MsCi0rCQkJY29u c3QgY2hhciAqZmFpbF9zdHIpCi0rCXsJCi0rCWludCByZXQgPSAwOwotKwl1bnNpZ25lZCBjaGFy IHNpZ3RtcFsyNTZdLCAqc2lnID0gc2lndG1wOwotKwl1bnNpZ25lZCBpbnQgc2lnbGVuOwotKwlF VlBfTURfQ1RYIG1jdHg7Ci0rCUVWUF9NRF9DVFhfaW5pdCgmbWN0eCk7Ci0rCi0rCWlmIChkaWdl c3QgPT0gTlVMTCkKLSsJCWRpZ2VzdCA9IEVWUF9zaGEyNTYoKTsKLSsKLSsJaWYgKChwa2V5LT50 eXBlID09IEVWUF9QS0VZX1JTQSkKLSsJCSYmIChSU0Ffc2l6ZShwa2V5LT5wa2V5LnJzYSkgPiBz aXplb2Yoc2lndG1wKSkpCi0rCQl7Ci0rCQlzaWcgPSBPUEVOU1NMX21hbGxvYyhSU0Ffc2l6ZShw a2V5LT5wa2V5LnJzYSkpOwotKwkJaWYgKCFzaWcpCi0rCQkJewotKwkJCUZJUFNlcnIoRklQU19G X0ZJUFNfUEtFWV9TSUdOQVRVUkVfVEVTVCxFUlJfUl9NQUxMT0NfRkFJTFVSRSk7Ci0rCQkJcmV0 dXJuIDA7Ci0rCQkJfQotKwkJfQotKwotKwlpZiAodGJzbGVuID09IC0xKQotKwkJdGJzbGVuID0g c3RybGVuKChjaGFyICopdGJzKTsKLSsKLSsJaWYgKG1kX2ZsYWdzKQotKwkJRVZQX01EX0NUWF9z ZXRfZmxhZ3MoJm1jdHgsIG1kX2ZsYWdzKTsKLSsKLSsJaWYgKCFFVlBfU2lnbkluaXRfZXgoJm1j dHgsIGRpZ2VzdCwgTlVMTCkpCi0rCQlnb3RvIGVycm9yOwotKwlpZiAoIUVWUF9TaWduVXBkYXRl KCZtY3R4LCB0YnMsIHRic2xlbikpCi0rCQlnb3RvIGVycm9yOwotKwlpZiAoIUVWUF9TaWduRmlu YWwoJm1jdHgsIHNpZywgJnNpZ2xlbiwgcGtleSkpCi0rCQlnb3RvIGVycm9yOwotKwotKwlpZiAo a2F0ICYmICgoc2lnbGVuICE9IGthdGxlbikgfHwgbWVtY21wKGthdCwgc2lnLCBrYXRsZW4pKSkK LSsJCWdvdG8gZXJyb3I7Ci0rCi0rCWlmICghRVZQX1ZlcmlmeUluaXRfZXgoJm1jdHgsIGRpZ2Vz dCwgTlVMTCkpCi0rCQlnb3RvIGVycm9yOwotKwlpZiAoIUVWUF9WZXJpZnlVcGRhdGUoJm1jdHgs IHRicywgdGJzbGVuKSkKLSsJCWdvdG8gZXJyb3I7Ci0rCXJldCA9IEVWUF9WZXJpZnlGaW5hbCgm bWN0eCwgc2lnLCBzaWdsZW4sIHBrZXkpOwotKwotKwllcnJvcjoKLSsJaWYgKHNpZyAhPSBzaWd0 bXApCi0rCQlPUEVOU1NMX2ZyZWUoc2lnKTsKLSsJRVZQX01EX0NUWF9jbGVhbnVwKCZtY3R4KTsK LSsJaWYgKHJldCAhPSAxKQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19QS0VZX1NJR05B VFVSRV9URVNULEZJUFNfUl9URVNUX0ZBSUxVUkUpOwotKwkJaWYgKGZhaWxfc3RyKQotKwkJCUVS Ul9hZGRfZXJyb3JfZGF0YSgyLCAiVHlwZT0iLCBmYWlsX3N0cik7Ci0rCQlyZXR1cm4gMDsKLSsJ CX0KLSsJcmV0dXJuIDE7Ci0rCX0KLSsKLSsvKiBHZW5lcmFsaXplZCBzeW1tZXRyaWMgY2lwaGVy IHRlc3Qgcm91dGluZS4gRW5jcnlwdCBkYXRhLCB2ZXJpZnkgcmVzdWx0Ci0rICogYWdhaW5zdCBr bm93biBhbnN3ZXIsIGRlY3J5cHQgYW5kIGNvbXBhcmUgd2l0aCBvcmlnaW5hbCBwbGFpbnRleHQu Ci0rICovCi0rCi0raW50IGZpcHNfY2lwaGVyX3Rlc3QoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29u c3QgRVZQX0NJUEhFUiAqY2lwaGVyLAotKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKLSsJ CQljb25zdCB1bnNpZ25lZCBjaGFyICppdiwKLSsJCQljb25zdCB1bnNpZ25lZCBjaGFyICpwbGFp bnRleHQsCi0rCQkJY29uc3QgdW5zaWduZWQgY2hhciAqY2lwaGVydGV4dCwKLSsJCQlpbnQgbGVu KQotKwl7Ci0rCXVuc2lnbmVkIGNoYXIgcGx0bXBbRklQU19NQVhfQ0lQSEVSX1RFU1RfU0laRV07 Ci0rCXVuc2lnbmVkIGNoYXIgY2l0bXBbRklQU19NQVhfQ0lQSEVSX1RFU1RfU0laRV07Ci0rCi0r CU9QRU5TU0xfYXNzZXJ0KGxlbiA8PSBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFKTsKLSsJbWVt c2V0KHBsdG1wLCAwLCBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFKTsKLSsJbWVtc2V0KGNpdG1w LCAwLCBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFKTsKLSsKLSsJaWYgKEVWUF9DaXBoZXJJbml0 X2V4KGN0eCwgY2lwaGVyLCBOVUxMLCBrZXksIGl2LCAxKSA8PSAwKQotKwkJcmV0dXJuIDA7Ci0r CWlmIChFVlBfQ2lwaGVyKGN0eCwgY2l0bXAsIHBsYWludGV4dCwgbGVuKSA8PSAwKQotKwkJcmV0 dXJuIDA7Ci0rCWlmIChtZW1jbXAoY2l0bXAsIGNpcGhlcnRleHQsIGxlbikpCi0rCQlyZXR1cm4g MDsKLSsJaWYgKEVWUF9DaXBoZXJJbml0X2V4KGN0eCwgY2lwaGVyLCBOVUxMLCBrZXksIGl2LCAw KSA8PSAwKQotKwkJcmV0dXJuIDA7Ci0rCWlmIChFVlBfQ2lwaGVyKGN0eCwgcGx0bXAsIGNpdG1w LCBsZW4pIDw9IDApCi0rCQlyZXR1cm4gMDsKLSsJaWYgKG1lbWNtcChwbHRtcCwgcGxhaW50ZXh0 LCBsZW4pKQotKwkJcmV0dXJuIDA7Ci0rCXJldHVybiAxOwotKwl9Ci0rI2VuZGlmCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX3JhbmQuYy5maXBzIG9wZW5zc2wtMS4w LjFrL2NyeXB0by9maXBzL2ZpcHNfcmFuZC5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Zp cHMvZmlwc19yYW5kLmMuZmlwcwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2NDkyMjU4NSArMDEwMAot KysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfcmFuZC5jCTIwMTUtMDEtMDkgMDk6 NTE6NTEuNTY0OTIyNTg1ICswMTAwCi1AQCAtMCwwICsxLDQ1NyBAQAotKy8qID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0rICogQ29weXJpZ2h0IChjKSAyMDA3IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRz IHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1l dDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJp YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0 Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAq IDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ug b2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25v d2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NM IFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFt ZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVz ZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo aXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9y IHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVA b3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0 d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NM IiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVy bWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRp b25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAq ICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdh cmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRo ZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycg QU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBE SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAq IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D SURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF UyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJ Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up Ci0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs IEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K LSsgKgotKyAqLwotKwotKy8qCi0rICogVGhpcyBpcyBhIEZJUFMgYXBwcm92ZWQgQUVTIFBSTkcg YmFzZWQgb24gQU5TSSBYOS4zMSBBLjIuNC4KLSsgKi8KLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlw dG8uaD4KLSsjaW5jbHVkZSAiZV9vcy5oIgotKwotKy8qIElmIHdlIGRvbid0IGRlZmluZSBfWE9Q RU5fU09VUkNFX0VYVEVOREVELCBzdHJ1Y3QgdGltZXZhbCB3b24ndAotKyAgIGJlIGRlZmluZWQg YW5kIGdldHRpbWVvZmRheSgpIHdvbid0IGJlIGRlY2xhcmVkIHdpdGggc3RyaWN0IGNvbXBpbGVy cwotKyAgIGxpa2UgREVDIEMgaW4gQU5TSSBDIG1vZGUuICAqLwotKyNpZm5kZWYgX1hPUEVOX1NP VVJDRV9FWFRFTkRFRAotKyNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAxCi0rI2VuZGlm Ci0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Flcy5o PgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFu ZC5oPgotKyNpZiAhKGRlZmluZWQoT1BFTlNTTF9TWVNfV0lOMzIpIHx8IGRlZmluZWQoT1BFTlNT TF9TWVNfVlhXT1JLUykpCi0rIyBpbmNsdWRlIDxzeXMvdGltZS5oPgotKyNlbmRpZgotKyNpZiBk ZWZpbmVkKE9QRU5TU0xfU1lTX1ZYV09SS1MpCi0rIyBpbmNsdWRlIDx0aW1lLmg+Ci0rI2VuZGlm Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpZm5kZWYgT1BFTlNTTF9TWVNfV0lOMzIKLSsjIGlm ZGVmIE9QRU5TU0xfVU5JU1RECi0rIyAgaW5jbHVkZSBPUEVOU1NMX1VOSVNURAotKyMgZWxzZQot KyMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotKyMgZW5kaWYKLSsjZW5kaWYKLSsjaW5jbHVkZSA8c3Ry aW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNpbmNsdWRlICJmaXBzX2xvY2wu aCIKLSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rdm9pZCAqT1BFTlNTTF9zdGRlcnIodm9p ZCk7Ci0rCi0rI2RlZmluZSBBRVNfQkxPQ0tfTEVOR1RICTE2Ci0rCi0rCi0rLyogQUVTIEZJUFMg UFJORyBpbXBsZW1lbnRhdGlvbiAqLwotKwotK3R5cGVkZWYgc3RydWN0IAotKwl7Ci0rCWludCBz ZWVkZWQ7Ci0rCWludCBrZXllZDsKLSsJaW50IHRlc3RfbW9kZTsKLSsJaW50IHNlY29uZDsKLSsJ aW50IGVycm9yOwotKwl1bnNpZ25lZCBsb25nIGNvdW50ZXI7Ci0rCUFFU19LRVkga3M7Ci0rCWlu dCB2cG9zOwotKwkvKiBUZW1wb3Jhcnkgc3RvcmFnZSBmb3Iga2V5IGlmIGl0IGVxdWFscyBzZWVk IGxlbmd0aCAqLwotKwl1bnNpZ25lZCBjaGFyIHRtcF9rZXlbQUVTX0JMT0NLX0xFTkdUSF07Ci0r CXVuc2lnbmVkIGNoYXIgVltBRVNfQkxPQ0tfTEVOR1RIXTsKLSsJdW5zaWduZWQgY2hhciBEVFtB RVNfQkxPQ0tfTEVOR1RIXTsKLSsJdW5zaWduZWQgY2hhciBsYXN0W0FFU19CTE9DS19MRU5HVEhd OwotKwl9IEZJUFNfUFJOR19DVFg7Ci0rCi0rc3RhdGljIEZJUFNfUFJOR19DVFggc2N0eDsKLSsK LStzdGF0aWMgaW50IGZpcHNfcHJuZ19mYWlsID0gMDsKLSsKLSt2b2lkIEZJUFNfeDkzMV9zdGlj ayhpbnQgb25vZmYpCi0rCXsKLSsJZmlwc19wcm5nX2ZhaWwgPSBvbm9mZjsKLSsJfQotKwotK3Zv aWQgRklQU19ybmdfc3RpY2sodm9pZCkKLSsJewotKwlGSVBTX3g5MzFfc3RpY2soMSk7Ci0rCX0K LSsKLStzdGF0aWMgdm9pZCBmaXBzX3JhbmRfcHJuZ19yZXNldChGSVBTX1BSTkdfQ1RYICpjdHgp Ci0rCXsKLSsJY3R4LT5zZWVkZWQgPSAwOwotKwljdHgtPmtleWVkID0gMDsKLSsJY3R4LT50ZXN0 X21vZGUgPSAwOwotKwljdHgtPmNvdW50ZXIgPSAwOwotKwljdHgtPnNlY29uZCA9IDA7Ci0rCWN0 eC0+ZXJyb3IgPSAwOwotKwljdHgtPnZwb3MgPSAwOwotKwlPUEVOU1NMX2NsZWFuc2UoY3R4LT5W LCBBRVNfQkxPQ0tfTEVOR1RIKTsKLSsJT1BFTlNTTF9jbGVhbnNlKCZjdHgtPmtzLCBzaXplb2Yo QUVTX0tFWSkpOwotKwl9Ci0rCQotKwotK3N0YXRpYyBpbnQgZmlwc19zZXRfcHJuZ19rZXkoRklQ U19QUk5HX0NUWCAqY3R4LAotKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwgdW5zaWduZWQg aW50IGtleWxlbikKLSsJewotKwlpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkKLSsJCXsKLSsJ CUZJUFNlcnIoRklQU19GX0ZJUFNfU0VUX1BSTkdfS0VZLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVE KTsKLSsJCXJldHVybiAwOwotKwkJfQotKwlpZiAoa2V5bGVuICE9IDE2ICYmIGtleWxlbiAhPSAy NCAmJiBrZXlsZW4gIT0gMzIpCi0rCQl7Ci0rCQkvKiBlcnJvcjogaW52YWxpZCBrZXkgc2l6ZSAq LwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCUFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LCBrZXlsZW4g PDwgMywgJmN0eC0+a3MpOwotKwlpZiAoa2V5bGVuID09IDE2KQotKwkJewotKwkJbWVtY3B5KGN0 eC0+dG1wX2tleSwga2V5LCAxNik7Ci0rCQljdHgtPmtleWVkID0gMjsKLSsJCX0KLSsJZWxzZQot KwkJY3R4LT5rZXllZCA9IDE7Ci0rCWN0eC0+c2VlZGVkID0gMDsKLSsJY3R4LT5zZWNvbmQgPSAw OwotKwlyZXR1cm4gMTsKLSsJfQotKwotK3N0YXRpYyBpbnQgZmlwc19zZXRfcHJuZ19zZWVkKEZJ UFNfUFJOR19DVFggKmN0eCwKLSsJCQljb25zdCB1bnNpZ25lZCBjaGFyICpzZWVkLCB1bnNpZ25l ZCBpbnQgc2VlZGxlbikKLSsJewotKwl1bnNpZ25lZCBpbnQgaTsKLSsJaWYgKCFjdHgtPmtleWVk KQotKwkJcmV0dXJuIDA7Ci0rCS8qIEluIHRlc3QgbW9kZSBzZWVkIGlzIGp1c3Qgc3VwcGxpZWQg ZGF0YSAqLwotKwlpZiAoY3R4LT50ZXN0X21vZGUpCi0rCQl7Ci0rCQlpZiAoc2VlZGxlbiAhPSBB RVNfQkxPQ0tfTEVOR1RIKQotKwkJCXJldHVybiAwOwotKwkJbWVtY3B5KGN0eC0+Viwgc2VlZCwg QUVTX0JMT0NLX0xFTkdUSCk7Ci0rCQljdHgtPnNlZWRlZCA9IDE7Ci0rCQlyZXR1cm4gMTsKLSsJ CX0KLSsJLyogT3V0c2lkZSB0ZXN0IG1vZGUgWE9SIHN1cHBsaWVkIGRhdGEgd2l0aCBleGlzdGlu ZyBzZWVkICovCi0rCWZvciAoaSA9IDA7IGkgPCBzZWVkbGVuOyBpKyspCi0rCQl7Ci0rCQljdHgt PlZbY3R4LT52cG9zKytdIF49IHNlZWRbaV07Ci0rCQlpZiAoY3R4LT52cG9zID09IEFFU19CTE9D S19MRU5HVEgpCi0rCQkJewotKwkJCWN0eC0+dnBvcyA9IDA7Ci0rCQkJLyogU3BlY2lhbCBjYXNl IGlmIGZpcnN0IHNlZWQgYW5kIGtleSBsZW5ndGggZXF1YWxzCi0rIAkJCSAqIGJsb2NrIHNpemUg Y2hlY2sga2V5IGFuZCBzZWVkIGRvIG5vdCBtYXRjaC4KLSsgCQkJICovIAotKwkJCWlmIChjdHgt PmtleWVkID09IDIpCi0rCQkJCXsKLSsJCQkJaWYgKCFtZW1jbXAoY3R4LT50bXBfa2V5LCBjdHgt PlYsIDE2KSkKLSsJCQkJCXsKLSsJCQkJCVJBTkRlcnIoUkFORF9GX0ZJUFNfU0VUX1BSTkdfU0VF RCwKLSsJCQkJCQlSQU5EX1JfUFJOR19TRUVEX01VU1RfTk9UX01BVENIX0tFWSk7Ci0rCQkJCQly ZXR1cm4gMDsKLSsJCQkJCX0KLSsJCQkJT1BFTlNTTF9jbGVhbnNlKGN0eC0+dG1wX2tleSwgMTYp OwotKwkJCQljdHgtPmtleWVkID0gMTsKLSsJCQkJfQotKwkJCWN0eC0+c2VlZGVkID0gMTsKLSsJ CQl9Ci0rCQl9Ci0rCXJldHVybiAxOwotKwl9Ci0rCi0rc3RhdGljIGludCBmaXBzX3NldF90ZXN0 X21vZGUoRklQU19QUk5HX0NUWCAqY3R4KQotKwl7Ci0rCWlmIChjdHgtPmtleWVkKQotKwkJewot KwkJUkFORGVycihSQU5EX0ZfRklQU19TRVRfVEVTVF9NT0RFLFJBTkRfUl9QUk5HX0tFWUVEKTsK LSsJCXJldHVybiAwOwotKwkJfQotKwljdHgtPnRlc3RfbW9kZSA9IDE7Ci0rCXJldHVybiAxOwot Kwl9Ci0rCi0raW50IEZJUFNfeDkzMV90ZXN0X21vZGUodm9pZCkKLSsJewotKwlyZXR1cm4gZmlw c19zZXRfdGVzdF9tb2RlKCZzY3R4KTsKLSsJfQotKwotK2ludCBGSVBTX3JhbmRfdGVzdF9tb2Rl KHZvaWQpCi0rCXsKLSsJcmV0dXJuIGZpcHNfc2V0X3Rlc3RfbW9kZSgmc2N0eCk7Ci0rCX0KLSsK LSsKLStpbnQgRklQU194OTMxX3NldF9kdCh1bnNpZ25lZCBjaGFyICpkdCkKLSsJewotKwlpZiAo IXNjdHgudGVzdF9tb2RlKQotKwkJewotKwkJUkFORGVycihSQU5EX0ZfRklQU19YOTMxX1NFVF9E VCxSQU5EX1JfTk9UX0lOX1RFU1RfTU9ERSk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsJbWVtY3B5 KHNjdHguRFQsIGR0LCBBRVNfQkxPQ0tfTEVOR1RIKTsKLSsJcmV0dXJuIDE7Ci0rCX0KLSsKLStp bnQgRklQU19yYW5kX3NldF9kdCh1bnNpZ25lZCBjaGFyICpkdCkKLSsJewotKwlpZiAoIXNjdHgu dGVzdF9tb2RlKQotKwkJewotKwkJUkFORGVycihSQU5EX0ZfRklQU19SQU5EX1NFVF9EVCxSQU5E X1JfTk9UX0lOX1RFU1RfTU9ERSk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsJbWVtY3B5KHNjdHgu RFQsIGR0LCBBRVNfQkxPQ0tfTEVOR1RIKTsKLSsJcmV0dXJuIDE7Ci0rCX0KLSsKLSt2b2lkIEZJ UFNfZ2V0X3RpbWV2ZWModW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nICpwY3RyKQot Kwl7Ci0rI2lmZGVmIE9QRU5TU0xfU1lTX1dJTjMyCi0rCUZJTEVUSU1FIGZ0OwotKyNlbGlmIGRl ZmluZWQoT1BFTlNTTF9TWVNfVlhXT1JLUykKLSsgICAgICAgIHN0cnVjdCB0aW1lc3BlYyB0czsK LSsjZWxzZQotKwlzdHJ1Y3QgdGltZXZhbCB0djsKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEdFVFBJ RF9JU19NRUFOSU5HTEVTUwotKwl1bnNpZ25lZCBsb25nIHBpZDsKLSsjZW5kaWYKLSsKLSsjaWZk ZWYgT1BFTlNTTF9TWVNfV0lOMzIKLSsJR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoJmZ0KTsKLSsJ YnVmWzBdID0gKHVuc2lnbmVkIGNoYXIpIChmdC5kd0hpZ2hEYXRlVGltZSAmIDB4ZmYpOwotKwli dWZbMV0gPSAodW5zaWduZWQgY2hhcikgKChmdC5kd0hpZ2hEYXRlVGltZSA+PiA4KSAmIDB4ZmYp OwotKwlidWZbMl0gPSAodW5zaWduZWQgY2hhcikgKChmdC5kd0hpZ2hEYXRlVGltZSA+PiAxNikg JiAweGZmKTsKLSsJYnVmWzNdID0gKHVuc2lnbmVkIGNoYXIpICgoZnQuZHdIaWdoRGF0ZVRpbWUg Pj4gMjQpICYgMHhmZik7Ci0rCWJ1Zls0XSA9ICh1bnNpZ25lZCBjaGFyKSAoZnQuZHdMb3dEYXRl VGltZSAmIDB4ZmYpOwotKwlidWZbNV0gPSAodW5zaWduZWQgY2hhcikgKChmdC5kd0xvd0RhdGVU aW1lID4+IDgpICYgMHhmZik7Ci0rCWJ1Zls2XSA9ICh1bnNpZ25lZCBjaGFyKSAoKGZ0LmR3TG93 RGF0ZVRpbWUgPj4gMTYpICYgMHhmZik7Ci0rCWJ1Zls3XSA9ICh1bnNpZ25lZCBjaGFyKSAoKGZ0 LmR3TG93RGF0ZVRpbWUgPj4gMjQpICYgMHhmZik7Ci0rI2VsaWYgZGVmaW5lZChPUEVOU1NMX1NZ U19WWFdPUktTKQotKwljbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHMpOwotKwlidWZb MF0gPSAodW5zaWduZWQgY2hhcikgKHRzLnR2X3NlYyAmIDB4ZmYpOwotKwlidWZbMV0gPSAodW5z aWduZWQgY2hhcikgKCh0cy50dl9zZWMgPj4gOCkgJiAweGZmKTsKLSsJYnVmWzJdID0gKHVuc2ln bmVkIGNoYXIpICgodHMudHZfc2VjID4+IDE2KSAmIDB4ZmYpOwotKwlidWZbM10gPSAodW5zaWdu ZWQgY2hhcikgKCh0cy50dl9zZWMgPj4gMjQpICYgMHhmZik7Ci0rCWJ1Zls0XSA9ICh1bnNpZ25l ZCBjaGFyKSAodHMudHZfbnNlYyAmIDB4ZmYpOwotKwlidWZbNV0gPSAodW5zaWduZWQgY2hhcikg KCh0cy50dl9uc2VjID4+IDgpICYgMHhmZik7Ci0rCWJ1Zls2XSA9ICh1bnNpZ25lZCBjaGFyKSAo KHRzLnR2X25zZWMgPj4gMTYpICYgMHhmZik7Ci0rCWJ1Zls3XSA9ICh1bnNpZ25lZCBjaGFyKSAo KHRzLnR2X25zZWMgPj4gMjQpICYgMHhmZik7Ci0rI2Vsc2UKLSsJZ2V0dGltZW9mZGF5KCZ0dixO VUxMKTsKLSsJYnVmWzBdID0gKHVuc2lnbmVkIGNoYXIpICh0di50dl9zZWMgJiAweGZmKTsKLSsJ YnVmWzFdID0gKHVuc2lnbmVkIGNoYXIpICgodHYudHZfc2VjID4+IDgpICYgMHhmZik7Ci0rCWJ1 ZlsyXSA9ICh1bnNpZ25lZCBjaGFyKSAoKHR2LnR2X3NlYyA+PiAxNikgJiAweGZmKTsKLSsJYnVm WzNdID0gKHVuc2lnbmVkIGNoYXIpICgodHYudHZfc2VjID4+IDI0KSAmIDB4ZmYpOwotKwlidWZb NF0gPSAodW5zaWduZWQgY2hhcikgKHR2LnR2X3VzZWMgJiAweGZmKTsKLSsJYnVmWzVdID0gKHVu c2lnbmVkIGNoYXIpICgodHYudHZfdXNlYyA+PiA4KSAmIDB4ZmYpOwotKwlidWZbNl0gPSAodW5z aWduZWQgY2hhcikgKCh0di50dl91c2VjID4+IDE2KSAmIDB4ZmYpOwotKwlidWZbN10gPSAodW5z aWduZWQgY2hhcikgKCh0di50dl91c2VjID4+IDI0KSAmIDB4ZmYpOwotKyNlbmRpZgotKwlidWZb OF0gPSAodW5zaWduZWQgY2hhcikgKCpwY3RyICYgMHhmZik7Ci0rCWJ1Zls5XSA9ICh1bnNpZ25l ZCBjaGFyKSAoKCpwY3RyID4+IDgpICYgMHhmZik7Ci0rCWJ1ZlsxMF0gPSAodW5zaWduZWQgY2hh cikgKCgqcGN0ciA+PiAxNikgJiAweGZmKTsKLSsJYnVmWzExXSA9ICh1bnNpZ25lZCBjaGFyKSAo KCpwY3RyID4+IDI0KSAmIDB4ZmYpOwotKwotKwkoKnBjdHIpKys7Ci0rCi0rCi0rI2lmbmRlZiBH RVRQSURfSVNfTUVBTklOR0xFU1MKLSsJcGlkPSh1bnNpZ25lZCBsb25nKWdldHBpZCgpOwotKwli dWZbMTJdID0gKHVuc2lnbmVkIGNoYXIpIChwaWQgJiAweGZmKTsKLSsJYnVmWzEzXSA9ICh1bnNp Z25lZCBjaGFyKSAoKHBpZCA+PiA4KSAmIDB4ZmYpOwotKwlidWZbMTRdID0gKHVuc2lnbmVkIGNo YXIpICgocGlkID4+IDE2KSAmIDB4ZmYpOwotKwlidWZbMTVdID0gKHVuc2lnbmVkIGNoYXIpICgo cGlkID4+IDI0KSAmIDB4ZmYpOwotKyNlbmRpZgotKyAgICB9Ci0rCi0rc3RhdGljIGludCBmaXBz X3JhbmQoRklQU19QUk5HX0NUWCAqY3R4LAotKwkJCXVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWdu ZWQgaW50IG91dGxlbikKLSsJewotKwl1bnNpZ25lZCBjaGFyIFJbQUVTX0JMT0NLX0xFTkdUSF0s IElbQUVTX0JMT0NLX0xFTkdUSF07Ci0rCXVuc2lnbmVkIGNoYXIgdG1wW0FFU19CTE9DS19MRU5H VEhdOwotKwlpbnQgaTsKLSsJaWYgKGN0eC0+ZXJyb3IpCi0rCQl7Ci0rCQlSQU5EZXJyKFJBTkRf Rl9GSVBTX1JBTkQsUkFORF9SX1BSTkdfRVJST1IpOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCWlm ICghY3R4LT5rZXllZCkKLSsJCXsKLSsJCVJBTkRlcnIoUkFORF9GX0ZJUFNfUkFORCxSQU5EX1Jf Tk9fS0VZX1NFVCk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsJaWYgKCFjdHgtPnNlZWRlZCkKLSsJ CXsKLSsJCVJBTkRlcnIoUkFORF9GX0ZJUFNfUkFORCxSQU5EX1JfUFJOR19OT1RfU0VFREVEKTsK LSsJCXJldHVybiAwOwotKwkJfQotKwlmb3IgKDs7KQotKwkJewotKwkJaWYgKCFjdHgtPnRlc3Rf bW9kZSkKLSsJCQlGSVBTX2dldF90aW1ldmVjKGN0eC0+RFQsICZjdHgtPmNvdW50ZXIpOwotKwkJ QUVTX2VuY3J5cHQoY3R4LT5EVCwgSSwgJmN0eC0+a3MpOwotKwkJZm9yIChpID0gMDsgaSA8IEFF U19CTE9DS19MRU5HVEg7IGkrKykKLSsJCQl0bXBbaV0gPSBJW2ldIF4gY3R4LT5WW2ldOwotKwkJ QUVTX2VuY3J5cHQodG1wLCBSLCAmY3R4LT5rcyk7Ci0rCQlmb3IgKGkgPSAwOyBpIDwgQUVTX0JM T0NLX0xFTkdUSDsgaSsrKQotKwkJCXRtcFtpXSA9IFJbaV0gXiBJW2ldOwotKwkJQUVTX2VuY3J5 cHQodG1wLCBjdHgtPlYsICZjdHgtPmtzKTsKLSsJCS8qIENvbnRpbnVvdXMgUFJORyB0ZXN0ICov Ci0rCQlpZiAoY3R4LT5zZWNvbmQpCi0rCQkJewotKwkJCWlmIChmaXBzX3BybmdfZmFpbCkKLSsJ CQkJbWVtY3B5KGN0eC0+bGFzdCwgUiwgQUVTX0JMT0NLX0xFTkdUSCk7Ci0rCQkJaWYgKCFtZW1j bXAoUiwgY3R4LT5sYXN0LCBBRVNfQkxPQ0tfTEVOR1RIKSkKLSsJCQkJewotKwkgICAgCQkJUkFO RGVycihSQU5EX0ZfRklQU19SQU5ELFJBTkRfUl9QUk5HX1NUVUNLKTsKLSsJCQkJY3R4LT5lcnJv ciA9IDE7Ci0rCQkJCWZpcHNfc2V0X3NlbGZ0ZXN0X2ZhaWwoKTsKLSsJCQkJcmV0dXJuIDA7Ci0r CQkJCX0KLSsJCQl9Ci0rCQltZW1jcHkoY3R4LT5sYXN0LCBSLCBBRVNfQkxPQ0tfTEVOR1RIKTsK LSsJCWlmICghY3R4LT5zZWNvbmQpCi0rCQkJewotKwkJCWN0eC0+c2Vjb25kID0gMTsKLSsJCQlp ZiAoIWN0eC0+dGVzdF9tb2RlKQotKwkJCQljb250aW51ZTsKLSsJCQl9Ci0rCi0rCQlpZiAob3V0 bGVuIDw9IEFFU19CTE9DS19MRU5HVEgpCi0rCQkJewotKwkJCW1lbWNweShvdXQsIFIsIG91dGxl bik7Ci0rCQkJYnJlYWs7Ci0rCQkJfQotKwotKwkJbWVtY3B5KG91dCwgUiwgQUVTX0JMT0NLX0xF TkdUSCk7Ci0rCQlvdXQgKz0gQUVTX0JMT0NLX0xFTkdUSDsKLSsJCW91dGxlbiAtPSBBRVNfQkxP Q0tfTEVOR1RIOwotKwkJfQotKwlyZXR1cm4gMTsKLSsJfQotKwotKwotK2ludCBGSVBTX3g5MzFf c2V0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4pCi0rCXsKLSsJaW50 IHJldDsKLSsJQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsJcmV0ID0gZmlwc19z ZXRfcHJuZ19rZXkoJnNjdHgsIGtleSwga2V5bGVuKTsKLSsJQ1JZUFRPX3dfdW5sb2NrKENSWVBU T19MT0NLX1JBTkQpOwotKwlyZXR1cm4gcmV0OwotKwl9Ci0rCi0raW50IEZJUFNfcmFuZF9zZXRf a2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwgRklQU19SQU5EX1NJWkVfVCBrZXlsZW4pCi0r CXsKLSsJcmV0dXJuIEZJUFNfeDkzMV9zZXRfa2V5KGtleSwga2V5bGVuKTsKLSsJfQotKwotK2lu dCBGSVBTX3g5MzFfc2VlZChjb25zdCB2b2lkICpzZWVkLCBpbnQgc2VlZGxlbikKLSsJewotKwlp bnQgcmV0OwotKwlDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKwlyZXQgPSBmaXBz X3NldF9wcm5nX3NlZWQoJnNjdHgsIHNlZWQsIHNlZWRsZW4pOwotKwlDUllQVE9fd191bmxvY2so Q1JZUFRPX0xPQ0tfUkFORCk7Ci0rCXJldHVybiByZXQ7Ci0rCX0KLSsKLSsKLStpbnQgRklQU194 OTMxX2J5dGVzKHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IGNvdW50KQotKwl7Ci0rCWludCByZXQ7 Ci0rCUNSWVBUT193X2xvY2soQ1JZUFRPX0xPQ0tfUkFORCk7Ci0rCXJldCA9IGZpcHNfcmFuZCgm c2N0eCwgb3V0LCBjb3VudCk7Ci0rCUNSWVBUT193X3VubG9jayhDUllQVE9fTE9DS19SQU5EKTsK LSsJcmV0dXJuIHJldDsKLSsJfQotKwotK2ludCBGSVBTX3g5MzFfc3RhdHVzKHZvaWQpCi0rCXsK LSsJaW50IHJldDsKLSsJQ1JZUFRPX3JfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsJcmV0ID0g c2N0eC5zZWVkZWQ7Ci0rCUNSWVBUT19yX3VubG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsJcmV0 dXJuIHJldDsKLSsJfQotKwotK3ZvaWQgRklQU194OTMxX3Jlc2V0KHZvaWQpCi0rCXsKLSsJQ1JZ UFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsJZmlwc19yYW5kX3BybmdfcmVzZXQoJnNj dHgpOwotKwlDUllQVE9fd191bmxvY2soQ1JZUFRPX0xPQ0tfUkFORCk7Ci0rCX0KLSsKLStzdGF0 aWMgaW50IGZpcHNfZG9fcmFuZF9zZWVkKGNvbnN0IHZvaWQgKnNlZWQsIGludCBzZWVkbGVuKQot Kwl7Ci0rCUZJUFNfeDkzMV9zZWVkKHNlZWQsIHNlZWRsZW4pOwotKwlyZXR1cm4gMTsKLSsJfQot KwotK3N0YXRpYyBpbnQgZmlwc19kb19yYW5kX2FkZChjb25zdCB2b2lkICpzZWVkLCBpbnQgc2Vl ZGxlbiwKLSsJCQkJCWRvdWJsZSBhZGRfZW50cm9weSkKLSsJewotKwlGSVBTX3g5MzFfc2VlZChz ZWVkLCBzZWVkbGVuKTsKLSsJcmV0dXJuIDE7Ci0rCX0KLSsKLStzdGF0aWMgY29uc3QgUkFORF9N RVRIT0QgcmFuZF94OTMxX21ldGg9Ci0rICAgIHsKLSsgICAgZmlwc19kb19yYW5kX3NlZWQsCi0r ICAgIEZJUFNfeDkzMV9ieXRlcywKLSsgICAgRklQU194OTMxX3Jlc2V0LAotKyAgICBmaXBzX2Rv X3JhbmRfYWRkLAotKyAgICBGSVBTX3g5MzFfYnl0ZXMsCi0rICAgIEZJUFNfeDkzMV9zdGF0dXMK LSsgICAgfTsKLSsKLStjb25zdCBSQU5EX01FVEhPRCAqRklQU194OTMxX21ldGhvZCh2b2lkKQot K3sKLSsgIHJldHVybiAmcmFuZF94OTMxX21ldGg7Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19yYW5kLmguZmlwcyBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vZmlwcy9maXBzX3JhbmQuaAotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBz L2ZpcHNfcmFuZC5oLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NjQ5MjI1ODUgKzAxMDAKLSsr KyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX3JhbmQuaAkyMDE1LTAxLTA5IDA5OjUx OjUxLjU2NDkyMjU4NSArMDEwMAotQEAgLTAsMCArMSwxNDUgQEAKLSsvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot KyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6 Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAz LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m IHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVz ICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2Vk IHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3 cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9w ZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh cmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIg YXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1p c3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9u cyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAg ICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFO RCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJ VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE RU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg KElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNU IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0r ICoKLSsgKi8KLSsKLSsjaWZuZGVmIEhFQURFUl9GSVBTX1JBTkRfSAotKyNkZWZpbmUgSEVBREVS X0ZJUFNfUkFORF9ICi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+Ci0rI2luY2x1ZGUgPG9w ZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgotKyNpbmNsdWRlIDxvcGVu c3NsL3JhbmQuaD4KLSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rI2lmZGVmICBfX2NwbHVz cGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotK2ludCBGSVBTX3g5MzFfc2V0X2tleShj b25zdCB1bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4pOwotK2ludCBGSVBTX3g5MzFfc2Vl ZChjb25zdCB2b2lkICpidWYsIGludCBudW0pOwotK2ludCBGSVBTX3g5MzFfYnl0ZXModW5zaWdu ZWQgY2hhciAqb3V0LCBpbnQgb3V0bGVuKTsKLSsKLStpbnQgRklQU194OTMxX3Rlc3RfbW9kZSh2 b2lkKTsKLSt2b2lkIEZJUFNfeDkzMV9yZXNldCh2b2lkKTsKLStpbnQgRklQU194OTMxX3NldF9k dCh1bnNpZ25lZCBjaGFyICpkdCk7Ci0rCi0raW50IEZJUFNfeDkzMV9zdGF0dXModm9pZCk7Ci0r Ci0rY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfeDkzMV9tZXRob2Qodm9pZCk7Ci0rCi0rdHlwZWRl ZiBzdHJ1Y3QgZHJiZ19jdHhfc3QgRFJCR19DVFg7Ci0rLyogRFJCRyBleHRlcm5hbCBmbGFncyAq LwotKy8qIEZsYWcgZm9yIENUUiBtb2RlIG9ubHk6IHVzZSBkZXJpdmF0aW9uIGZ1bmN0aW9uIGN0 cl9kZiAqLwotKyNkZWZpbmUJRFJCR19GTEFHX0NUUl9VU0VfREYJCTB4MQotKy8qIFBSTkcgaXMg aW4gdGVzdCBzdGF0ZSAqLwotKyNkZWZpbmUJRFJCR19GTEFHX1RFU1QJCQkweDIKLSsKLStEUkJH X0NUWCAqRklQU19kcmJnX25ldyhpbnQgdHlwZSwgdW5zaWduZWQgaW50IGZsYWdzKTsKLStpbnQg RklQU19kcmJnX2luaXQoRFJCR19DVFggKmRjdHgsIGludCB0eXBlLCB1bnNpZ25lZCBpbnQgZmxh Z3MpOwotK2ludCBGSVBTX2RyYmdfaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgsCi0rCQkJCWNv bnN0IHVuc2lnbmVkIGNoYXIgKnBlcnMsIHNpemVfdCBwZXJzbGVuKTsKLStpbnQgRklQU19kcmJn X3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90 IGFkaW5sZW4pOwotK2ludCBGSVBTX2RyYmdfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgsIHVuc2ln bmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbiwKLSsJCQlpbnQgcHJlZGljdGlvbl9yZXNpc3Rh bmNlLAotKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKTsKLSsK LStpbnQgRklQU19kcmJnX3VuaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgpOwotK3ZvaWQgRklQ U19kcmJnX2ZyZWUoRFJCR19DVFggKmRjdHgpOwotKwotK2ludCBGSVBTX2RyYmdfc2V0X2NhbGxi YWNrcyhEUkJHX0NUWCAqZGN0eCwKLSsJc2l6ZV90ICgqZ2V0X2VudHJvcHkpKERSQkdfQ1RYICpj dHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0LAotKwkJCQlpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9s ZW4sIHNpemVfdCBtYXhfbGVuKSwKLSsJdm9pZCAoKmNsZWFudXBfZW50cm9weSkoRFJCR19DVFgg KmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb2xlbiksCi0rCXNpemVfdCBlbnRyb3B5 X2Jsb2NrbGVuLAotKwlzaXplX3QgKCpnZXRfbm9uY2UpKERSQkdfQ1RYICpjdHgsIHVuc2lnbmVk IGNoYXIgKipwb3V0LAotKwkJCQlpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBt YXhfbGVuKSwKLSsJdm9pZCAoKmNsZWFudXBfbm9uY2UpKERSQkdfQ1RYICpjdHgsIHVuc2lnbmVk IGNoYXIgKm91dCwgc2l6ZV90IG9sZW4pKTsKLSsKLStpbnQgRklQU19kcmJnX3NldF9yYW5kX2Nh bGxiYWNrcyhEUkJHX0NUWCAqZGN0eCwKLSsJc2l6ZV90ICgqZ2V0X2FkaW4pKERSQkdfQ1RYICpj dHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0KSwKLSsJdm9pZCAoKmNsZWFudXBfYWRpbikoRFJCR19D VFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb2xlbiksCi0rCWludCAoKnJhbmRf c2VlZF9jYikoRFJCR19DVFggKmN0eCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnVtKSwKLSsJaW50 ICgqcmFuZF9hZGRfY2IpKERSQkdfQ1RYICpjdHgsCi0rCQkJCWNvbnN0IHZvaWQgKmJ1ZiwgaW50 IG51bSwgZG91YmxlIGVudHJvcHkpKTsKLSsKLSt2b2lkICpGSVBTX2RyYmdfZ2V0X2FwcF9kYXRh KERSQkdfQ1RYICpjdHgpOwotK3ZvaWQgRklQU19kcmJnX3NldF9hcHBfZGF0YShEUkJHX0NUWCAq Y3R4LCB2b2lkICphcHBfZGF0YSk7Ci0rc2l6ZV90IEZJUFNfZHJiZ19nZXRfYmxvY2tsZW5ndGgo RFJCR19DVFggKmRjdHgpOwotK2ludCBGSVBTX2RyYmdfZ2V0X3N0cmVuZ3RoKERSQkdfQ1RYICpk Y3R4KTsKLSt2b2lkIEZJUFNfZHJiZ19zZXRfY2hlY2tfaW50ZXJ2YWwoRFJCR19DVFggKmRjdHgs IGludCBpbnRlcnZhbCk7Ci0rdm9pZCBGSVBTX2RyYmdfc2V0X3Jlc2VlZF9pbnRlcnZhbChEUkJH X0NUWCAqZGN0eCwgaW50IGludGVydmFsKTsKLSsKLStpbnQgRklQU19kcmJnX2hlYWx0aF9jaGVj ayhEUkJHX0NUWCAqZGN0eCk7Ci0rCi0rRFJCR19DVFggKkZJUFNfZ2V0X2RlZmF1bHRfZHJiZyh2 b2lkKTsKLStjb25zdCBSQU5EX01FVEhPRCAqRklQU19kcmJnX21ldGhvZCh2b2lkKTsKLSsKLSsK LStpbnQgRklQU19yYW5kX3NldF9tZXRob2QoY29uc3QgUkFORF9NRVRIT0QgKm1ldGgpOwotK2Nv bnN0IFJBTkRfTUVUSE9EICpGSVBTX3JhbmRfZ2V0X21ldGhvZCh2b2lkKTsKLSsKLSt2b2lkIEZJ UFNfcmFuZF9zZXRfYml0cyhpbnQgbmJpdHMpOwotKwotK2ludCBGSVBTX3JhbmRfc3RyZW5ndGgo dm9pZCk7Ci0rCi0rLyogMS4wLjAgY29tcGF0IGZ1bmN0aW9ucyAqLwotK2ludCBGSVBTX3JhbmRf c2V0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIEZJUFNfUkFORF9TSVpFX1Qga2V5bGVu KTsKLStpbnQgRklQU19yYW5kX3NlZWQoY29uc3Qgdm9pZCAqYnVmLCBGSVBTX1JBTkRfU0laRV9U IG51bSk7Ci0raW50IEZJUFNfcmFuZF9ieXRlcyh1bnNpZ25lZCBjaGFyICpvdXQsIEZJUFNfUkFO RF9TSVpFX1Qgb3V0bGVuKTsKLStpbnQgRklQU19yYW5kX3Rlc3RfbW9kZSh2b2lkKTsKLSt2b2lk IEZJUFNfcmFuZF9yZXNldCh2b2lkKTsKLStpbnQgRklQU19yYW5kX3NldF9kdCh1bnNpZ25lZCBj aGFyICpkdCk7Ci0raW50IEZJUFNfcmFuZF9zdGF0dXModm9pZCk7Ci0rY29uc3QgUkFORF9NRVRI T0QgKkZJUFNfcmFuZF9tZXRob2Qodm9pZCk7Ci0rCi0rI2lmZGVmICBfX2NwbHVzcGx1cwotK30K LSsjZW5kaWYKLSsjZW5kaWYKLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0 by9maXBzL2ZpcHNfcmFuZF9sY2wuaC5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2Zp cHNfcmFuZF9sY2wuaAotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9s Y2wuaC5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTY0OTIyNTg1ICswMTAwCi0rKysgb3BlbnNz bC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX2xjbC5oCTIwMTUtMDEtMDkgMDk6NTE6NTEu NTY0OTIyNTg1ICswMTAwCi1AQCAtMCwwICsxLDIxOSBAQAotKy8qIGZpcHMvcmFuZC9maXBzX3Jh bmRfbGNsLmggKi8KLSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9w ZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwotKy8qID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwg cmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBh cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICog YXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJl ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w eXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90 aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsg KgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBv ciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5n IGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBP cGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBU aGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90 IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv bi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNp bmdAT3BlblNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz b2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVu U1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAg cGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmli dXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwot KyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGlu IHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAq IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElT JycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFS RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgot KyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN QUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFO RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBT VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ U0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB UkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH RS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotKyAqLwotKwotK3R5cGVkZWYgc3RydWN0IGRyYmdfaGFzaF9j dHhfc3QgRFJCR19IQVNIX0NUWDsKLSt0eXBlZGVmIHN0cnVjdCBkcmJnX2htYWNfY3R4X3N0IERS QkdfSE1BQ19DVFg7Ci0rdHlwZWRlZiBzdHJ1Y3QgZHJiZ19jdHJfY3R4X3N0IERSQkdfQ1RSX0NU WDsKLSsKLSsvKiA4ODggYml0cyBmcm9tIDEwLjEgdGFibGUgMiAqLwotKyNkZWZpbmUgSEFTSF9Q Uk5HX01BWF9TRUVETEVOCTExMQotKwotK3N0cnVjdCBkcmJnX2hhc2hfY3R4X3N0Ci0rCXsKLSsJ Y29uc3QgRVZQX01EICptZDsKLSsJRVZQX01EX0NUWCBtY3R4OwotKwl1bnNpZ25lZCBjaGFyIFZb SEFTSF9QUk5HX01BWF9TRUVETEVOXTsKLSsJdW5zaWduZWQgY2hhciBDW0hBU0hfUFJOR19NQVhf U0VFRExFTl07Ci0rCS8qIFRlbXBvcmFyeSB2YWx1ZSBzdG9yYWdlOiBzaG91bGQgYWx3YXlzIGV4 Y2VlZCBtYXggZGlnZXN0IGxlbmd0aCAqLwotKwl1bnNpZ25lZCBjaGFyIHZ0bXBbSEFTSF9QUk5H X01BWF9TRUVETEVOXTsKLSsJfTsKLSsKLStzdHJ1Y3QgZHJiZ19obWFjX2N0eF9zdAotKwl7Ci0r CWNvbnN0IEVWUF9NRCAqbWQ7Ci0rCUhNQUNfQ1RYIGhjdHg7Ci0rCXVuc2lnbmVkIGNoYXIgS1tF VlBfTUFYX01EX1NJWkVdOwotKwl1bnNpZ25lZCBjaGFyIFZbRVZQX01BWF9NRF9TSVpFXTsKLSsJ fTsKLSsKLStzdHJ1Y3QgZHJiZ19jdHJfY3R4X3N0Ci0rCXsKLSsJQUVTX0tFWSBrczsKLSsJc2l6 ZV90IGtleWxlbjsKLSsJdW5zaWduZWQgY2hhciBLWzMyXTsKLSsJdW5zaWduZWQgY2hhciBWWzE2 XTsKLSsJLyogVGVtcCB2YXJpYWJsZXMgdXNlZCBieSBkZXJpdmF0aW9uIGZ1bmN0aW9uICovCi0r CUFFU19LRVkgZGZfa3M7Ci0rCUFFU19LRVkgZGZfa3hrczsKLSsJLyogVGVtcG9yYXJ5IGJsb2Nr IHN0b3JhZ2UgdXNlZCBieSBjdHJfZGYgKi8KLSsJdW5zaWduZWQgY2hhciBibHRtcFsxNl07Ci0r CXNpemVfdCBibHRtcF9wb3M7Ci0rCXVuc2lnbmVkIGNoYXIgS1hbNDhdOwotKwl9OwotKwotKy8q IERSQkcgaW50ZXJuYWwgZmxhZ3MgKi8KLSsKLSsvKiBGdW5jdGlvbnMgc2hvdWxkbid0IGNhbGwg ZXJyIGxpYnJhcnkgKi8KLSsjZGVmaW5lCURSQkdfRkxBR19OT0VSUgkJCTB4MQotKy8qIEN1c3Rv bSByZXNlZWQgY2hlY2tpbmcgKi8KLSsjZGVmaW5lCURSQkdfQ1VTVE9NX1JFU0VFRAkJMHgyCi0r Ci0rLyogRFJCRyBzdGF0dXMgdmFsdWVzICovCi0rLyogbm90IGluaXRpYWxpc2VkICovCi0rI2Rl ZmluZSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VECTAKLSsvKiBvayBhbmQgcmVhZHkgdG8gZ2Vu ZXJhdGUgcmFuZG9tIGJpdHMgKi8KLSsjZGVmaW5lIERSQkdfU1RBVFVTX1JFQURZCQkxCi0rLyog cmVzZWVkIHJlcXVpcmVkICovCi0rI2RlZmluZSBEUkJHX1NUQVRVU19SRVNFRUQJCTIKLSsvKiBm YXRhbCBlcnJvciBjb25kaXRpb24gKi8KLSsjZGVmaW5lIERSQkdfU1RBVFVTX0VSUk9SCQkzCi0r Ci0rLyogQSBkZWZhdWx0IG1heGltdW0gbGVuZ3RoOiBsYXJnZXIgdGhhbiBhbnkgcmVhc29uYWJs ZSB2YWx1ZSB1c2VkIGluIHByYXRpY2UgKi8KLSsKLSsjZGVmaW5lIERSQkdfTUFYX0xFTkdUSAkJ CTB4N2ZmZmZmZjAKLSsvKiBNYXhpbXVtIERSQkcgYmxvY2sgbGVuZ3RoOiBhbGwgbWQgc2l6ZXMg YXJlIGJpZ2dlciB0aGFuIGNpcGhlciBibG9ja3Mgc2l6ZXMKLSsgKiBzbyB1c2UgbWF4IGRpZ2Vz dCBsZW5ndGguCi0rICovCi0rI2RlZmluZSBEUkJHX01BWF9CTE9DSwkJCUVWUF9NQVhfTURfU0la RQotKwotKyNkZWZpbmUgRFJCR19IRUFMVEhfSU5URVJWQUwJCSgxIDw8IDI0KQotKwotKy8qIERS QkcgY29udGV4dCBzdHJ1Y3R1cmUgKi8KLSsKLStzdHJ1Y3QgZHJiZ19jdHhfc3QKLSsJewotKwkv KiBGaXJzdCB0eXBlcyBjb21tb24gdG8gYWxsIGltcGxlbWVudGF0aW9ucyAqLwotKwkvKiBEUkJH IHR5cGU6IGEgTklEIGZvciB0aGUgdW5kZXJseWluZyBhbGdvcml0aG0gKi8KLSsJaW50IHR5cGU7 Ci0rCS8qIFZhcmlvdXMgZXh0ZXJuYWwgZmxhZ3MgKi8KLSsJdW5zaWduZWQgaW50IHhmbGFnczsK LSsJLyogVmFyaW91cyBpbnRlcm5hbCB1c2Ugb25seSBmbGFncyAqLwotKwl1bnNpZ25lZCBpbnQg aWZsYWdzOwotKwkvKiBVc2VkIGZvciBwZXJpb2RpYyBoZWFsdGggY2hlY2tzICovCi0rCWludCBo ZWFsdGhfY2hlY2tfY250LCBoZWFsdGhfY2hlY2tfaW50ZXJ2YWw7Ci0rCi0rCS8qIFRoZSBmb2xs b3dpbmcgcGFyYW1ldGVycyBhcmUgc2V0dXAgYnkgbWVjaGFuaXNtIGRyYmdfaW5pdCgpIGNhbGwg Ki8KLSsJaW50IHN0cmVuZ3RoOwotKwlzaXplX3QgYmxvY2tsZW5ndGg7Ci0rCXNpemVfdCBtYXhf cmVxdWVzdDsKLSsKLSsJc2l6ZV90IG1pbl9lbnRyb3B5LCBtYXhfZW50cm9weTsKLSsJc2l6ZV90 IG1pbl9ub25jZSwgbWF4X25vbmNlOwotKwlzaXplX3QgbWF4X3BlcnMsIG1heF9hZGluOwotKwl1 bnNpZ25lZCBpbnQgcmVzZWVkX2NvdW50ZXI7Ci0rCXVuc2lnbmVkIGludCByZXNlZWRfaW50ZXJ2 YWw7Ci0rCXNpemVfdCBzZWVkbGVuOwotKwlpbnQgc3RhdHVzOwotKwkvKiBBcHBsaWNhdGlvbiBk YXRhOiB0eXBpY2FsbHkgdXNlZCBieSB0ZXN0IGdldF9lbnRyb3B5ICovCi0rCXZvaWQgKmFwcF9k YXRhOwotKwkvKiBJbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBzdHJ1Y3R1cmVzICovCi0rCXVuaW9u IAotKwkJewotKwkJRFJCR19IQVNIX0NUWCBoYXNoOwotKwkJRFJCR19ITUFDX0NUWCBobWFjOwot KwkJRFJCR19DVFJfQ1RYICBjdHI7Ci0rCQl9IGQ7Ci0rCS8qIEluaXRpYWxpYXNlIFBSTkcgYW5k IHNldHVwIGNhbGxiYWNrcyBiZWxvdyAqLwotKwlpbnQgKCppbml0KShEUkJHX0NUWCAqY3R4LCBp bnQgbmlkLCBpbnQgc2VjdXJpdHksIHVuc2lnbmVkIGludCBmbGFncyk7Ci0rCS8qIEludGFudGlh dGUgUFJORyAqLwotKwlpbnQgKCppbnN0YW50aWF0ZSkoRFJCR19DVFggKmN0eCwKLSsJCQkJY29u c3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXplX3QgZW50bGVuLAotKwkJCQljb25zdCB1bnNpZ25l ZCBjaGFyICpub25jZSwgc2l6ZV90IG5vbmNlbGVuLAotKwkJCQljb25zdCB1bnNpZ25lZCBjaGFy ICpwZXJzLCBzaXplX3QgcGVyc2xlbik7Ci0rCS8qIHJlc2VlZCAqLwotKwlpbnQgKCpyZXNlZWQp KERSQkdfQ1RYICpjdHgsCi0rCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90IGVu dGxlbiwKLSsJCQkJY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4pOwot KwkvKiBnZW5lcmF0IG91dHB1dCAqLwotKwlpbnQgKCpnZW5lcmF0ZSkoRFJCR19DVFggKmN0eCwK LSsJCQkJdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuLAotKwkJCQljb25zdCB1bnNp Z25lZCBjaGFyICphZGluLCBzaXplX3QgYWRpbmxlbik7Ci0rCS8qIHVuaW5zdGFudGlhdGUgKi8K LSsJaW50ICgqdW5pbnN0YW50aWF0ZSkoRFJCR19DVFggKmN0eCk7Ci0rCi0rCS8qIEVudHJvcHkg c291cmNlIGJsb2NrIGxlbmd0aCAqLwotKwlzaXplX3QgZW50cm9weV9ibG9ja2xlbjsKLSsKLSsJ LyogZW50cm9weSBnYXRoZXJpbmcgZnVuY3Rpb24gKi8KLSsJc2l6ZV90ICgqZ2V0X2VudHJvcHkp KERSQkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0LAotKwkJCQlpbnQgZW50cm9weSwg c2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVuKTsKLSsJLyogSW5kaWNhdGVzIHdlIGhhdmUg ZmluaXNoZWQgd2l0aCBlbnRyb3B5IGJ1ZmZlciAqLwotKwl2b2lkICgqY2xlYW51cF9lbnRyb3B5 KShEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvbGVuKTsKLSsKLSsJ Lyogbm9uY2UgZ2F0aGVyaW5nIGZ1bmN0aW9uICovCi0rCXNpemVfdCAoKmdldF9ub25jZSkoRFJC R19DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqKnBvdXQsCi0rCQkJCWludCBlbnRyb3B5LCBzaXpl X3QgbWluX2xlbiwgc2l6ZV90IG1heF9sZW4pOwotKwkvKiBJbmRpY2F0ZXMgd2UgaGF2ZSBmaW5p c2hlZCB3aXRoIG5vbmNlIGJ1ZmZlciAqLwotKwl2b2lkICgqY2xlYW51cF9ub25jZSkoRFJCR19D VFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb2xlbik7Ci0rCi0rCS8qIENvbnRp bnVvdXMgcmFuZG9tIG51bWJlciB0ZXN0IHRlbXBvcmFyeSBhcmVhICovCi0rCS8qIExhc3QgYmxv Y2sgKi8JCi0rCXVuc2lnbmVkIGNoYXIgbGJbRVZQX01BWF9NRF9TSVpFXTsKLSsJLyogc2V0IGlm IGxiIGlzIHZhbGlkICovCi0rCWludCBsYl92YWxpZDsKLSsKLSsJLyogQ2FsbGJhY2tzIHVzZWQg d2hlbiBjYWxsZWQgdGhyb3VnaCBSQU5EIGludGVyZmFjZSAqLwotKwkvKiBHZXQgYW55IGFkZGl0 aW9uYWwgaW5wdXQgZm9yIGdlbmVyYXRlICovCi0rCXNpemVfdCAoKmdldF9hZGluKShEUkJHX0NU WCAqY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91dCk7Ci0rCXZvaWQgKCpjbGVhbnVwX2FkaW4pKERS QkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG9sZW4pOwotKwkvKiBDYWxs YmFjayBmb3IgUkFORF9zZWVkKCksIFJBTkRfYWRkKCkgKi8KLSsJaW50ICgqcmFuZF9zZWVkX2Ni KShEUkJHX0NUWCAqY3R4LCBjb25zdCB2b2lkICpidWYsIGludCBudW0pOwotKwlpbnQgKCpyYW5k X2FkZF9jYikoRFJCR19DVFggKmN0eCwKLSsJCQkJY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnVtLCBk b3VibGUgZW50cm9weSk7Ci0rCX07Ci0rCi0rCi0raW50IGZpcHNfZHJiZ19jdHJfaW5pdChEUkJH X0NUWCAqZGN0eCk7Ci0raW50IGZpcHNfZHJiZ19oYXNoX2luaXQoRFJCR19DVFggKmRjdHgpOwot K2ludCBmaXBzX2RyYmdfaG1hY19pbml0KERSQkdfQ1RYICpkY3R4KTsKLStpbnQgZmlwc19kcmJn X2thdChEUkJHX0NUWCAqZGN0eCwgaW50IG5pZCwgdW5zaWduZWQgaW50IGZsYWdzKTsKLStpbnQg Zmlwc19kcmJnX2Nwcm5nX3Rlc3QoRFJCR19DVFggKmRjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIg Km91dCk7Ci0rCi0rY29uc3Qgc3RydWN0IGVudl9tZF9zdCAqRklQU19nZXRfZGlnZXN0YnluaWQo aW50IG5pZCk7Ci0rCi0rY29uc3Qgc3RydWN0IGV2cF9jaXBoZXJfc3QgKkZJUFNfZ2V0X2NpcGhl cmJ5bmlkKGludCBuaWQpOwotKwotKyNkZWZpbmUgRklQU19kaWdlc3Rpbml0IEVWUF9EaWdlc3RJ bml0Ci0rI2RlZmluZSBGSVBTX2RpZ2VzdHVwZGF0ZSBFVlBfRGlnZXN0VXBkYXRlCi0rI2RlZmlu ZSBGSVBTX2RpZ2VzdGZpbmFsIEVWUF9EaWdlc3RGaW5hbAotKyNkZWZpbmUgTV9FVlBfTURfc2l6 ZSBFVlBfTURfc2l6ZQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19y YW5kX2xpYi5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX2xpYi5j Ci0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX2xpYi5jLmZpcHMJMjAx NS0wMS0wOSAwOTo1MTo1MS41NjU5MjI2MDggKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlw dG8vZmlwcy9maXBzX3JhbmRfbGliLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NjU5MjI2MDggKzAx MDAKLUBAIC0wLDAgKzEsMTkxIEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMp IDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsg KiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29m dHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93 d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0 IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9u LCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgot KyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2Fs bGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBu YW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVu U1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hh dHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6 Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAo aHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVT U0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAot KyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0r ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2lu Y2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNp bmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5j bHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsjaW5jbHVkZSAiZV9vcy5oIgotKwotKy8qIEZJ UFMgQVBJIGZvciBQUk5HIHVzZS4gU2ltaWxhciB0byBSQU5EIGZ1bmN0aW9uYWxpdHkgYnV0IHdp dGhvdXQKLSsgKiBFTkdJTkUgYW5kIGFkZGl0aW9uYWwgY2hlY2tpbmcgZm9yIG5vbi1GSVBTIHJh bmQgbWV0aG9kcy4KLSsgKi8KLSsKLStzdGF0aWMgY29uc3QgUkFORF9NRVRIT0QgKmZpcHNfcmFu ZF9tZXRoID0gTlVMTDsKLStzdGF0aWMgaW50IGZpcHNfYXBwcm92ZWRfcmFuZF9tZXRoID0gMDsK LStzdGF0aWMgaW50IGZpcHNfcmFuZF9iaXRzID0gMDsKLSsKLSsvKiBBbGxvd3MgYXBwbGljYXRp b24gdG8gb3ZlcnJpZGUgbnVtYmVyIG9mIGJpdHMgYW5kIHVzZXMgbm9uLUZJUFMgbWV0aG9kcyAq LwotK3ZvaWQgRklQU19yYW5kX3NldF9iaXRzKGludCBuYml0cykKLSsJewotKwlmaXBzX3JhbmRf Yml0cyA9IG5iaXRzOwotKwl9Ci0rCi0raW50IEZJUFNfcmFuZF9zZXRfbWV0aG9kKGNvbnN0IFJB TkRfTUVUSE9EICptZXRoKQotKwl7Ci0rCWlmICghZmlwc19yYW5kX2JpdHMpCi0rCQl7Ci0rCQlp ZiAobWV0aCA9PSBGSVBTX2RyYmdfbWV0aG9kKCkpCi0rCQkJZmlwc19hcHByb3ZlZF9yYW5kX21l dGggPSAxOwotKwkJZWxzZSBpZiAobWV0aCA9PSBGSVBTX3g5MzFfbWV0aG9kKCkpCi0rCQkJZmlw c19hcHByb3ZlZF9yYW5kX21ldGggPSAyOwotKwkJZWxzZQotKwkJCXsKLSsJCQlmaXBzX2FwcHJv dmVkX3JhbmRfbWV0aCA9IDA7Ci0rCQkJaWYgKEZJUFNfbW9kdWxlX21vZGUoKSkKLSsJCQkJewot KwkJCQlGSVBTZXJyKEZJUFNfRl9GSVBTX1JBTkRfU0VUX01FVEhPRCwKLSsJCQkJCQlGSVBTX1Jf Tk9OX0ZJUFNfTUVUSE9EKTsKLSsJCQkJcmV0dXJuIDA7Ci0rCQkJCX0KLSsJCQl9Ci0rCQl9Ci0r CWZpcHNfcmFuZF9tZXRoID0gbWV0aDsKLSsJcmV0dXJuIDE7Ci0rCX0KLSsKLStjb25zdCBSQU5E X01FVEhPRCAqRklQU19yYW5kX2dldF9tZXRob2Qodm9pZCkKLSsJewotKwlyZXR1cm4gZmlwc19y YW5kX21ldGg7Ci0rCX0KLSsKLStjb25zdCBSQU5EX01FVEhPRCAqRklQU19yYW5kX21ldGhvZCh2 b2lkKQotKwl7Ci0rCXJldHVybiBGSVBTX3JhbmRfZ2V0X21ldGhvZCgpOwotKwl9Ci0rCi0rdm9p ZCBGSVBTX3JhbmRfcmVzZXQodm9pZCkKLSsJewotKwlpZiAoZmlwc19yYW5kX21ldGggJiYgZmlw c19yYW5kX21ldGgtPmNsZWFudXApCi0rCQlmaXBzX3JhbmRfbWV0aC0+Y2xlYW51cCgpOwotKwl9 Ci0rCi0raW50IEZJUFNfcmFuZF9zZWVkKGNvbnN0IHZvaWQgKmJ1ZiwgRklQU19SQU5EX1NJWkVf VCBudW0pCi0rCXsKLSsJaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVs ZV9tb2RlKCkpCi0rCQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9GSVBTX1JBTkRfU0VFRCwgRklQU19S X05PTl9GSVBTX01FVEhPRCk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsJaWYgKGZpcHNfcmFuZF9t ZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5zZWVkKQotKwkJZmlwc19yYW5kX21ldGgtPnNlZWQoYnVm LG51bSk7Ci0rCXJldHVybiAxOwotKwl9Ci0rCi0rdm9pZCBGSVBTX3JhbmRfYWRkKGNvbnN0IHZv aWQgKmJ1ZiwgaW50IG51bSwgZG91YmxlIGVudHJvcHkpCi0rCXsKLSsJaWYgKCFmaXBzX2FwcHJv dmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpCi0rCQl7Ci0rCQlGSVBTZXJyKEZJ UFNfRl9GSVBTX1JBTkRfQURELCBGSVBTX1JfTk9OX0ZJUFNfTUVUSE9EKTsKLSsJCXJldHVybjsK LSsJCX0KLSsJaWYgKGZpcHNfcmFuZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5hZGQpCi0rCQlm aXBzX3JhbmRfbWV0aC0+YWRkKGJ1ZixudW0sZW50cm9weSk7Ci0rCX0KLSsKLStpbnQgRklQU19y YW5kX2J5dGVzKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgRklQU19SQU5EX1NJWkVfVCBudW0pCi0rCXsK LSsJaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpCi0r CQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9GSVBTX1JBTkRfQllURVMsIEZJUFNfUl9OT05fRklQU19N RVRIT0QpOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCWlmIChmaXBzX3JhbmRfbWV0aCAmJiBmaXBz X3JhbmRfbWV0aC0+Ynl0ZXMpCi0rCQlyZXR1cm4gZmlwc19yYW5kX21ldGgtPmJ5dGVzKGJ1Zixu dW0pOwotKwlyZXR1cm4gMDsKLSsJfQotKwotK2ludCBGSVBTX3JhbmRfcHNldWRvX2J5dGVzKHVu c2lnbmVkIGNoYXIgKmJ1ZiwgaW50IG51bSkKLSsJewotKwlpZiAoIWZpcHNfYXBwcm92ZWRfcmFu ZF9tZXRoICYmIEZJUFNfbW9kdWxlX21vZGUoKSkKLSsJCXsKLSsJCUZJUFNlcnIoRklQU19GX0ZJ UFNfUkFORF9QU0VVRE9fQllURVMsIEZJUFNfUl9OT05fRklQU19NRVRIT0QpOwotKwkJcmV0dXJu IDA7Ci0rCQl9Ci0rCWlmIChmaXBzX3JhbmRfbWV0aCAmJiBmaXBzX3JhbmRfbWV0aC0+cHNldWRv cmFuZCkKLSsJCXJldHVybiBmaXBzX3JhbmRfbWV0aC0+cHNldWRvcmFuZChidWYsbnVtKTsKLSsJ cmV0dXJuIC0xOwotKwl9Ci0rCi0raW50IEZJUFNfcmFuZF9zdGF0dXModm9pZCkKLSsJewotKwlp ZiAoIWZpcHNfYXBwcm92ZWRfcmFuZF9tZXRoICYmIEZJUFNfbW9kdWxlX21vZGUoKSkKLSsJCXsK LSsJCUZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9TVEFUVVMsIEZJUFNfUl9OT05fRklQU19NRVRI T0QpOwotKwkJcmV0dXJuIDA7Ci0rCQl9Ci0rCWlmIChmaXBzX3JhbmRfbWV0aCAmJiBmaXBzX3Jh bmRfbWV0aC0+c3RhdHVzKQotKwkJcmV0dXJuIGZpcHNfcmFuZF9tZXRoLT5zdGF0dXMoKTsKLSsJ cmV0dXJuIDA7Ci0rCX0KLSsKLSsvKiBSZXR1cm4gaW5zdGFudGlhdGVkIHN0cmVuZ3RoIG9mIFBS TkcuIEZvciBEUkJHIHRoaXMgaXMgYW4gaW50ZXJuYWwKLSsgKiBwYXJhbWV0ZXIuIEZvciBYOS4z MSBQUk5HIGl0IGlzIDgwIGJpdHMgKGZyb20gU1A4MDAtMTMxKS4gQW55IG90aGVyCi0rICogdHlw ZSBvZiBQUk5HIGlzIG5vdCBhcHByb3ZlZCBhbmQgcmV0dXJucyAwIGluIEZJUFMgbW9kZSBhbmQg bWF4aW11bQotKyAqIDI1NiBvdXRzaWRlIEZJUFMgbW9kZS4KLSsgKi8KLSsKLStpbnQgRklQU19y YW5kX3N0cmVuZ3RoKHZvaWQpCi0rCXsKLSsJaWYgKGZpcHNfcmFuZF9iaXRzKQotKwkJcmV0dXJu IGZpcHNfcmFuZF9iaXRzOwotKwlpZiAoZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMSkKLSsJ CXJldHVybiBGSVBTX2RyYmdfZ2V0X3N0cmVuZ3RoKEZJUFNfZ2V0X2RlZmF1bHRfZHJiZygpKTsK LSsJZWxzZSBpZiAoZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMikKLSsJCXJldHVybiA4MDsK LSsJZWxzZSBpZiAoZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMCkKLSsJCXsKLSsJCWlmIChG SVBTX21vZHVsZV9tb2RlKCkpCi0rCQkJcmV0dXJuIDA7Ci0rCQllbHNlCi0rCQkJcmV0dXJuIDI1 NjsKLSsJCX0KLSsJcmV0dXJuIDA7Ci0rCX0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0 by9maXBzL2ZpcHNfcmFuZF9zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Zp cHMvZmlwc19yYW5kX3NlbGZ0ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9m aXBzX3JhbmRfc2VsZnRlc3QuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTY1OTIyNjA4ICsw MTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX3NlbGZ0ZXN0LmMJ MjAxNS0wMS0wOSAwOTo1MTo1MS41NjU5MjI2MDggKzAxMDAKLUBAIC0wLDAgKzEsMTgzIEBACi0r LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJvamVj dC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0r ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0 aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZl YXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBm b2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBz b2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2Ug aW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgot KyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIg bXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAg IG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5v ciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0 ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2 LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUg Zm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBp bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAg IGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8p IgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9K RUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAq IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQ Uk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNF LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZF UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF IE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9G IFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVk ZSA8b3BlbnNzbC9yYW5kLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+Ci0rI2lu Y2x1ZGUgImZpcHNfbG9jbC5oIgotKwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsKLSsKLSsKLSt0 eXBlZGVmIHN0cnVjdAotKwl7Ci0rCXVuc2lnbmVkIGNoYXIgRFRbMTZdOwotKwl1bnNpZ25lZCBj aGFyIFZbMTZdOwotKwl1bnNpZ25lZCBjaGFyIFJbMTZdOwotKwl9IEFFU19QUk5HX1RWOwotKwot Ky8qIFRoZSBmb2xsb3dpbmcgdGVzdCB2ZWN0b3JzIGFyZSB0YWtlbiBkaXJlY3RseSBmcm9tIHRo ZSBSR05WUyBzcGVjICovCi0rCi0rc3RhdGljIHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9rZXlbMTZd ID0KLSsJCXsweGYzLDB4YjEsMHg2NiwweDZkLDB4MTMsMHg2MCwweDcyLDB4NDIsCi0rCQkgMHhl ZCwweDA2LDB4MWMsMHhhYiwweGI4LDB4ZDQsMHg2MiwweDAyfTsKLSsKLStzdGF0aWMgQUVTX1BS TkdfVFYgYWVzXzEyOF90diA9IAotKwl7Ci0rCQkJCS8qIERUICovCi0rCQl7MHhlNiwweGIzLDB4 YmUsMHg3OCwweDJhLDB4MjMsMHhmYSwweDYyLAotKwkJIDB4ZDcsMHgxZCwweDRhLDB4ZmIsMHhi MCwweGU5LDB4MjIsMHhmOX0sCi0rCQkJCS8qIFYgKi8KLSsJCXsweDgwLDB4MDAsMHgwMCwweDAw LDB4MDAsMHgwMCwweDAwLDB4MDAsCi0rCQkgMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs MHgwMCwweDAwfSwKLSsJCQkJLyogUiAqLwotKwkJezB4NTksMHg1MywweDFlLDB4ZDEsMHgzYiww eGIwLDB4YzAsMHg1NSwKLSsJCSAweDg0LDB4NzksMHg2NiwweDg1LDB4YzEsMHgyZiwweDc2LDB4 NDF9Ci0rCX07Ci0rCi0rc3RhdGljIHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9rZXlbMjRdID0KLSsJ CXsweDE1LDB4ZDgsMHg3OCwweDBkLDB4NjIsMHhkMywweDI1LDB4NmUsCi0rCQkgMHg0NCwweDY0 LDB4MTAsMHgxMywweDYwLDB4MmIsMHhhOSwweGJjLAotKwkJIDB4NGEsMHhmYiwweGNhLDB4ZWIs MHg0YywweDhiLDB4OTksMHgzYn07Ci0rCi0rc3RhdGljIEFFU19QUk5HX1RWIGFlc18xOTJfdHYg PSAKLSsJewotKwkJCQkvKiBEVCAqLwotKwkJezB4M2YsMHhkOCwweGZmLDB4ZTgsMHg4MCwweDY5 LDB4OGIsMHhjMSwKLSsJCSAweGJmLDB4OTksMHg3ZCwweGE0LDB4MjQsMHg3OCwweGYzLDB4NGJ9 LAotKwkJCQkvKiBWICovCi0rCQl7MHg4MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCww eDAwLAotKwkJIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMH0sCi0rCQkJ CS8qIFIgKi8KLSsJCXsweDE3LDB4MDcsMHhkNSwweDI4LDB4MTksMHg3OSwweDFlLDB4ZWYsCi0r CQkgMHhhNSwweDBjLDB4YmYsMHgyNSwweGU1LDB4NTYsMHhiNCwweDkzfQotKwl9OwotKwotK3N0 YXRpYyB1bnNpZ25lZCBjaGFyIGFlc18yNTZfa2V5WzMyXSA9Ci0rCQl7MHg2ZCwweDE0LDB4MDYs MHg2YywweGI2LDB4ZDgsMHgyMSwweDJkLAotKwkJIDB4ODIsMHg4ZCwweGZhLDB4ZjIsMHg3YSww eDAzLDB4YjcsMHg5ZiwKLSsJCSAweDBjLDB4YzcsMHgzZSwweGNkLDB4NzYsMHhlYiwweGVlLDB4 YjUsCi0rCQkgMHgyMSwweDA1LDB4OGMsMHg0ZiwweDMxLDB4N2EsMHg4MCwweGJifTsKLSsKLStz dGF0aWMgQUVTX1BSTkdfVFYgYWVzXzI1Nl90diA9Ci0rCXsKLSsJCQkJLyogRFQgKi8KLSsJCXsw eGRhLDB4M2EsMHg0MSwweGVjLDB4MWQsMHhhMywweGIwLDB4ZDUsCi0rCQkgMHhmMiwweGE5LDB4 NGUsMHgzNCwweDc0LDB4OGUsMHg5ZSwweDg4fSwKLSsJCQkJLyogViAqLwotKwkJezB4ODAsMHgw MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKLSsJCSAweDAwLDB4MDAsMHgwMCwweDAw LDB4MDAsMHgwMCwweDAwLDB4MDB9LAotKwkJCQkvKiBSICovCi0rCQl7MHgzNSwweGM3LDB4ZWYs MHhhNywweDc4LDB4NGQsMHgyOSwweGJjLAotKwkJIDB4ODIsMHg3OSwweDk5LDB4ZmIsMHhkMCww eGIzLDB4M2IsMHg3Mn0KLSsJfTsKLSsKLSt2b2lkIEZJUFNfY29ycnVwdF9ybmcoKQotKyAgICB7 Ci0rICAgIGFlc18xOTJfdHYuVlswXSsrOwotKyAgICB9Ci0rCi0rI2RlZmluZSBmaXBzX3g5MzFf dGVzdChrZXksIHR2KSBcCi0rCWRvX3g5MzFfdGVzdChrZXksIHNpemVvZiBrZXksICZ0dikKLSsK LStzdGF0aWMgaW50IGRvX3g5MzFfdGVzdCh1bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4s Ci0rCQkJQUVTX1BSTkdfVFYgKnR2KQotKwl7Ci0rCXVuc2lnbmVkIGNoYXIgUlsxNl0sIFZbMTZd OwotKwlpbnQgcnYgPSAxOwotKwltZW1jcHkoViwgdHYtPlYsIHNpemVvZihWKSk7Ci0rCWlmICgh RklQU194OTMxX3NldF9rZXkoa2V5LCBrZXlsZW4pKQotKwkJcmV0dXJuIDA7Ci0rCWlmICghZmlw c19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX1g5MzEsIGtleWxlbiwgTlVMTCkpCi0rCQlyZXR1cm4g MTsKLSsJaWYgKCFmaXBzX3Bvc3RfY29ycnVwdChGSVBTX1RFU1RfWDkzMSwga2V5bGVuLCBOVUxM KSkKLSsJCVZbMF0rKzsKLSsJRklQU194OTMxX3NlZWQoViwgMTYpOwotKwlGSVBTX3g5MzFfc2V0 X2R0KHR2LT5EVCk7Ci0rCUZJUFNfeDkzMV9ieXRlcyhSLCAxNik7Ci0rCWlmIChtZW1jbXAoUiwg dHYtPlIsIDE2KSkKLSsJCXsKLSsJCWZpcHNfcG9zdF9mYWlsZWQoRklQU19URVNUX1g5MzEsIGtl eWxlbiwgTlVMTCk7Ci0rCQlydiA9IDA7Ci0rCQl9Ci0rCWVsc2UgaWYgKCFmaXBzX3Bvc3Rfc3Vj Y2VzcyhGSVBTX1RFU1RfWDkzMSwga2V5bGVuLCBOVUxMKSkKLSsJCXJldHVybiAwOwotKwlyZXR1 cm4gcnY7Ci0rCX0KLSsKLStpbnQgRklQU19zZWxmdGVzdF94OTMxKCkKLSsJewotKwlpbnQgcnYg PSAxOwotKwlGSVBTX3g5MzFfcmVzZXQoKTsKLSsJaWYgKCFGSVBTX3g5MzFfdGVzdF9tb2RlKCkp Ci0rCQl7Ci0rCQlGSVBTZXJyKEZJUFNfRl9GSVBTX1NFTEZURVNUX1g5MzEsRklQU19SX1NFTEZU RVNUX0ZBSUxFRCk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsJaWYgKCFmaXBzX3g5MzFfdGVzdChh ZXNfMTI4X2tleSxhZXNfMTI4X3R2KSkKLSsJCXJ2ID0gMDsKLSsJaWYgKCFmaXBzX3g5MzFfdGVz dChhZXNfMTkyX2tleSwgYWVzXzE5Ml90dikpCi0rCQlydiA9IDA7Ci0rCWlmICghZmlwc194OTMx X3Rlc3QoYWVzXzI1Nl9rZXksIGFlc18yNTZfdHYpKQotKwkJcnYgPSAwOwotKwlGSVBTX3g5MzFf cmVzZXQoKTsKLSsJaWYgKCFydikKLSsJCUZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfWDkz MSxGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsJcmV0dXJuIHJ2OwotKwl9Ci0rCi0raW50IEZJ UFNfc2VsZnRlc3Rfcm5nKHZvaWQpCi0rCXsKLSsJcmV0dXJuIEZJUFNfc2VsZnRlc3RfeDkzMSgp OwotKwl9Ci0rCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9m aXBzX3JhbmR0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX3JhbmR0 ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX3JhbmR0ZXN0LmMuZmlw cwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2NTkyMjYwOCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9maXBzL2ZpcHNfcmFuZHRlc3QuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2NTkyMjYw OCArMDEwMAotQEAgLTAsMCArMSwyNTAgQEAKLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCBF cmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkKLSsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgot KyAqCi0rICogVGhpcyBwYWNrYWdlIGlzIGFuIFNTTCBpbXBsZW1lbnRhdGlvbiB3cml0dGVuCi0r ICogYnkgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pLgotKyAqIFRoZSBpbXBsZW1lbnRh dGlvbiB3YXMgd3JpdHRlbiBzbyBhcyB0byBjb25mb3JtIHdpdGggTmV0c2NhcGVzIFNTTC4KLSsg KiAKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBmb3IgY29tbWVyY2lhbCBhbmQgbm9uLWNvbW1l cmNpYWwgdXNlIGFzIGxvbmcgYXMKLSsgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIGFo ZWFyZWQgdG8uICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcHBseSB0byBhbGwgY29k ZSBmb3VuZCBpbiB0aGlzIGRpc3RyaWJ1dGlvbiwgYmUgaXQgdGhlIFJDNCwgUlNBLAotKyAqIGxo YXNoLCBERVMsIGV0Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBTU0wgY29kZS4gIFRoZSBTU0wgZG9j dW1lbnRhdGlvbgotKyAqIGluY2x1ZGVkIHdpdGggdGhpcyBkaXN0cmlidXRpb24gaXMgY292ZXJl ZCBieSB0aGUgc2FtZSBjb3B5cmlnaHQgdGVybXMKLSsgKiBleGNlcHQgdGhhdCB0aGUgaG9sZGVy IGlzIFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4KLSsgKiAKLSsgKiBDb3B5cmlnaHQg cmVtYWlucyBFcmljIFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFueSBDb3B5cmlnaHQgbm90aWNlcyBp bgotKyAqIHRoZSBjb2RlIGFyZSBub3QgdG8gYmUgcmVtb3ZlZC4KLSsgKiBJZiB0aGlzIHBhY2th Z2UgaXMgdXNlZCBpbiBhIHByb2R1Y3QsIEVyaWMgWW91bmcgc2hvdWxkIGJlIGdpdmVuIGF0dHJp YnV0aW9uCi0rICogYXMgdGhlIGF1dGhvciBvZiB0aGUgcGFydHMgb2YgdGhlIGxpYnJhcnkgdXNl ZC4KLSsgKiBUaGlzIGNhbiBiZSBpbiB0aGUgZm9ybSBvZiBhIHRleHR1YWwgbWVzc2FnZSBhdCBw cm9ncmFtIHN0YXJ0dXAgb3IKLSsgKiBpbiBkb2N1bWVudGF0aW9uIChvbmxpbmUgb3IgdGV4dHVh bCkgcHJvdmlkZWQgd2l0aCB0aGUgcGFja2FnZS4KLSsgKiAKLSsgKiBSZWRpc3RyaWJ1dGlvbiBh bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBt b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug Y29kZSBtdXN0IHJldGFpbiB0aGUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKyAqIDIuIFJlZGlz dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp Z2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyIGluIHRoZQotKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0rICogMy4gQWxsIGFk dmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNv ZnR3YXJlCi0rICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50 OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3 cml0dGVuIGJ5Ci0rICogICAgIEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKSIKLSsgKiAg ICBUaGUgd29yZCAnY3J5cHRvZ3JhcGhpYycgY2FuIGJlIGxlZnQgb3V0IGlmIHRoZSByb3VpbmVz IGZyb20gdGhlIGxpYnJhcnkKLSsgKiAgICBiZWluZyB1c2VkIGFyZSBub3QgY3J5cHRvZ3JhcGhp YyByZWxhdGVkIDotKS4KLSsgKiA0LiBJZiB5b3UgaW5jbHVkZSBhbnkgV2luZG93cyBzcGVjaWZp YyBjb2RlIChvciBhIGRlcml2YXRpdmUgdGhlcmVvZikgZnJvbSAKLSsgKiAgICB0aGUgYXBwcyBk aXJlY3RvcnkgKGFwcGxpY2F0aW9uIGNvZGUpIHlvdSBtdXN0IGluY2x1ZGUgYW4gYWNrbm93bGVk Z2VtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBi eSBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkiCi0rICogCi0rICogVEhJUyBTT0ZUV0FS RSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKLSsgKiBBTlkgRVhQUkVT UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU SEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF TlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0rICogRk9SIEFO WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP TlNFUVVFTlRJQUwKLSsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9G IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhP V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD T05UUkFDVCwgU1RSSUNUCi0rICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotKyAqIE9VVCBPRiBUSEUgVVNF IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK LSsgKiBTVUNIIERBTUFHRS4KLSsgKiAKLSsgKiBUaGUgbGljZW5jZSBhbmQgZGlzdHJpYnV0aW9u IHRlcm1zIGZvciBhbnkgcHVibGljYWxseSBhdmFpbGFibGUgdmVyc2lvbiBvcgotKyAqIGRlcml2 YXRpdmUgb2YgdGhpcyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2VkLiAgaS5lLiB0aGlzIGNvZGUgY2Fu bm90IHNpbXBseSBiZQotKyAqIGNvcGllZCBhbmQgcHV0IHVuZGVyIGFub3RoZXIgZGlzdHJpYnV0 aW9uIGxpY2VuY2UKLSsgKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGljIExpY2VuY2UuXQotKyAq LwotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDAzIFRoZSBPcGVuU1NMIFBy b2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsg KgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3Ry aWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmlu ZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0 aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0r ICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2pl Y3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsg KiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAg ICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3 cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0r ICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4g dGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5v cmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wg UFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK LSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5T U0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9G IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhP V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD T05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElU WSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNp bmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGN0eXBl Lmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNf cmFuZC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Ju Lmg+Ci0rCi0rI2luY2x1ZGUgImVfb3MuaCIKLSsKLSsjaWZuZGVmIE9QRU5TU0xfRklQUwotK2lu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0rewotKyAgICBwcmludGYoIk5vIEZJUFMg UkFORCBzdXBwb3J0XG4iKTsKLSsgICAgcmV0dXJuKDApOwotK30KLSsKLSsjZWxzZQotKwotKyNp bmNsdWRlICJmaXBzX3V0bC5oIgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsKLSt0eXBl ZGVmIHN0cnVjdAotKwl7Ci0rCXVuc2lnbmVkIGNoYXIgRFRbMTZdOwotKwl1bnNpZ25lZCBjaGFy IFZbMTZdOwotKwl1bnNpZ25lZCBjaGFyIFJbMTZdOwotKwl9IEFFU19QUk5HX01DVDsKLSsKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X21jdF9rZXlbMTZdID0KLSsJezB4OWYs MHg1YiwweDUxLDB4MjAsMHgwYiwweGYzLDB4MzQsMHhiNSwKLSsJIDB4ZDgsMHgyYiwweGU4LDB4 YzMsMHg3MiwweDU1LDB4YzgsMHg0OH07Ci0rCi0rc3RhdGljIGNvbnN0IEFFU19QUk5HX01DVCBh ZXNfMTI4X21jdF90diA9IHsKLSsJCQkvKiBEVCAqLwotKwl7MHg2MywweDc2LDB4YmIsMHhlNSww eDI5LDB4MDIsMHhiYSwweDNiLAotKwkgMHg2NywweGM5LDB4MjUsMHhmYSwweDcwLDB4MWYsMHgx MSwweGFjfSwKLSsJCQkvKiBWICovCi0rCXsweDU3LDB4MmMsMHg4ZSwweDc2LDB4ODcsMHgyNiww eDQ3LDB4OTcsCi0rCSAweDdlLDB4NzQsMHhmYiwweGRkLDB4YzQsMHg5NSwweDAxLDB4ZDF9LAot KwkJCS8qIFIgKi8KLSsJezB4NDgsMHhlOSwweGJkLDB4MGQsMHgwNiwweGVlLDB4MTgsMHhmYiwK LSsJIDB4ZTQsMHg1NywweDkwLDB4ZDUsMHhjMywweGZjLDB4OWIsMHg3M30KLSt9OwotKwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbWN0X2tleVsyNF0gPQotKwl7MHhiNyww eDZjLDB4MzQsMHhkMSwweDA5LDB4NjcsMHhhYiwweDczLAotKwkgMHg0ZCwweDVhLDB4ZDUsMHgz NCwweDk4LDB4MTYsMHgwYiwweDkxLAotKwkgMHhiYywweDM1LDB4NTEsMHgxNiwweDZiLDB4YWUs MHg5MywweDhhfTsKLSsKLStzdGF0aWMgY29uc3QgQUVTX1BSTkdfTUNUIGFlc18xOTJfbWN0X3R2 ID0gewotKwkJCS8qIERUICovCi0rCXsweDg0LDB4Y2UsMHgyMiwweDdkLDB4OTEsMHg1YSwweGEz LDB4YzksCi0rCSAweDg0LDB4M2MsMHgwYSwweGIzLDB4YTksMHg2MywweDE1LDB4NTJ9LAotKwkJ CS8qIFYgKi8KLSsJezB4YjYsMHhhZiwweGU2LDB4OGYsMHg5OSwweDllLDB4OTAsMHg2NCwKLSsJ IDB4ZGQsMHhjNywweDdhLDB4YzEsMHhiYiwweDkwLDB4M2EsMHg2ZH0sCi0rCQkJLyogUiAqLwot Kwl7MHhmYywweDg1LDB4NjAsMHg5YSwweDI5LDB4NmYsMHhlZiwweDIxLAotKwkgMHhkZCwweDg2 LDB4MjAsMHgzMiwweDhhLDB4MjksMHg2ZiwweDQ3fQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzI1Nl9tY3Rfa2V5WzMyXSA9Ci0rCXsweDliLDB4MDUsMHhjOCwweDY4 LDB4ZmYsMHg0NywweGY4LDB4M2EsCi0rCSAweGE2LDB4M2EsMHhhOCwweGNiLDB4NGUsMHg3MSww eGIyLDB4ZTAsCi0rCSAweGI4LDB4N2UsMHhmMSwweDM3LDB4YjYsMHhiNCwweGY2LDB4NmQsCi0r CSAweDg2LDB4MzIsMHhmYywweDFmLDB4NWUsMHgxZCwweDFlLDB4NTB9OwotKwotK3N0YXRpYyBj b25zdCBBRVNfUFJOR19NQ1QgYWVzXzI1Nl9tY3RfdHYgPSB7Ci0rCQkJLyogRFQgKi8KLSsJezB4 MzEsMHg2ZSwweDM1LDB4OWEsMHhiMSwweDQ0LDB4ZjAsMHhlZSwKLSsJIDB4NjIsMHg2ZCwweDA0 LDB4NDYsMHhlMCwweGEzLDB4OTIsMHg0Y30sCi0rCQkJLyogViAqLwotKwl7MHg0ZiwweGNkLDB4 YzEsMHg4NywweDgyLDB4MWYsMHg0ZCwweGExLAotKwkgMHgzZSwweDBlLDB4NTYsMHg0NCwweDU5 LDB4ZTgsMHg4MywweGNhfSwKLSsJCQkvKiBSICovCi0rCXsweGM4LDB4ODcsMHhjMiwweDYxLDB4 NWIsMHhkMCwweGI5LDB4ZTEsCi0rCSAweGU3LDB4ZjMsMHg4YiwweGQ3LDB4NWIsMHhkNSwweGYx LDB4OGR9Ci0rfTsKLSsKLStzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmIs aW50IG4pCi0rICAgIHsKLSsgICAgd2hpbGUobi0tID4gMCkKLSsJewotKwlwcmludGYoIiAlMDJ4 IiwqYisrKTsKLSsJfQotKyAgICB9Ci0rCi0rc3RhdGljIHZvaWQgY29tcGFyZShjb25zdCB1bnNp Z25lZCBjaGFyICpyZXN1bHQsY29uc3QgdW5zaWduZWQgY2hhciAqZXhwZWN0ZWQsCi0rCQkgICAg aW50IG4pCi0rICAgIHsKLSsgICAgaW50IGk7Ci0rCi0rICAgIGZvcihpPTAgOyBpIDwgbiA7ICsr aSkKLSsJaWYocmVzdWx0W2ldICE9IGV4cGVjdGVkW2ldKQotKwkgICAgewotKwkgICAgcHV0cygi UmFuZG9tIHRlc3QgZmFpbGVkLCBnb3Q6Iik7Ci0rCSAgICBkdW1wKHJlc3VsdCxuKTsKLSsJICAg IHB1dHMoIlxuICAgICAgICAgICAgICAgZXhwZWN0ZWQ6Iik7Ci0rCSAgICBkdW1wKGV4cGVjdGVk LG4pOwotKwkgICAgcHV0Y2hhcignXG4nKTsKLSsJICAgIEVYSVQoMSk7Ci0rCSAgICB9Ci0rICAg IH0KLSsKLSsKLStzdGF0aWMgdm9pZCBydW5fdGVzdChjb25zdCB1bnNpZ25lZCBjaGFyICprZXks IGludCBrZXlsZW4sCi0rCQkJCQkJCWNvbnN0IEFFU19QUk5HX01DVCAqdHYpCi0rICAgIHsKLSsg ICAgdW5zaWduZWQgY2hhciBidWZbMTZdLCBkdFsxNl07Ci0rICAgIGludCBpLCBqOwotKyAgICBG SVBTX3g5MzFfcmVzZXQoKTsKLSsgICAgRklQU194OTMxX3Rlc3RfbW9kZSgpOwotKyAgICBGSVBT X3g5MzFfc2V0X2tleShrZXksIGtleWxlbik7Ci0rICAgIEZJUFNfeDkzMV9zZWVkKHR2LT5WLCAx Nik7Ci0rICAgIG1lbWNweShkdCwgdHYtPkRULCAxNik7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCAx MDAwMDsgaSsrKQotKwl7Ci0rICAgIAlGSVBTX3g5MzFfc2V0X2R0KGR0KTsKLSsJRklQU194OTMx X2J5dGVzKGJ1ZiwgMTYpOwotKwkvKiBJbmNyZW1lbnQgRFQgKi8KLSsJZm9yIChqID0gMTU7IGog Pj0gMDsgai0tKQotKwkJewotKwkJZHRbal0rKzsKLSsJCWlmIChkdFtqXSkKLSsJCQlicmVhazsK LSsJCX0KLSsJfQotKwotKyAgICBjb21wYXJlKGJ1Zix0di0+UiwgMTYpOwotKyAgICB9Ci0rCi0r aW50IG1haW4oKQotKwl7Ci0rCXJ1bl90ZXN0KGFlc18xMjhfbWN0X2tleSwgMTYsICZhZXNfMTI4 X21jdF90dik7Ci0rCXByaW50ZigiRklQUyBQUk5HIHRlc3QgMSBkb25lXG4iKTsKLSsJcnVuX3Rl c3QoYWVzXzE5Ml9tY3Rfa2V5LCAyNCwgJmFlc18xOTJfbWN0X3R2KTsKLSsJcHJpbnRmKCJGSVBT IFBSTkcgdGVzdCAyIGRvbmVcbiIpOwotKwlydW5fdGVzdChhZXNfMjU2X21jdF9rZXksIDMyLCAm YWVzXzI1Nl9tY3RfdHYpOwotKwlwcmludGYoIkZJUFMgUFJORyB0ZXN0IDMgZG9uZVxuIik7Ci0r CXJldHVybiAwOwotKwl9Ci0rCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlw dG8vZmlwcy9maXBzX3JzYV9zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2Zp cHMvZmlwc19yc2Ffc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2Zp cHNfcnNhX3NlbGZ0ZXN0LmMuZmlwcwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2NjkyMjYzMCArMDEw MAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfcnNhX3NlbGZ0ZXN0LmMJMjAx NS0wMS0wOSAwOTo1MTo1MS41NjY5MjI2MzAgKzAxMDAKLUBAIC0wLDAgKzEsNDQ0IEBACi0rLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNyBUaGUgT3BlblNTTCBQcm9q ZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoK LSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmli dXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcg ZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhl IGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVz IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVz ZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAq Ci0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0 IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVu IHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICog ICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZl ZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAg bm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3Jp dHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAq IDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRo ZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0 IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICog ICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3Jn LykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBS T0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0r ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NM IFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBV U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dF VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O VFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkg T0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyNpbmNsdWRlIDxv cGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KLSsjaW5j bHVkZSA8b3BlbnNzbC9ldnAuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotKyNpbmNsdWRl IDxvcGVuc3NsL29wZW5zc2xjb25mLmg+Ci0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIG5bXSA9Ci0rIlx4MDBceEJCXHhGOFx4MkZceDA5XHgw Nlx4ODJceENFXHg5Q1x4MjNceDM4XHhBQ1x4MkJceDlEXHhBOFx4NzEiCi0rIlx4RjdceDM2XHg4 RFx4MDdceEVFXHhENFx4MTBceDQzXHhBNFx4NDBceEQ2XHhCNlx4RjBceDc0XHg1NFx4RjUiCi0r Ilx4MUZceEI4XHhERlx4QkFceEFGXHgwM1x4NUNceDAyXHhBQlx4NjFceEVBXHg0OFx4Q0VceEVC XHg2Rlx4Q0QiCi0rIlx4NDhceDc2XHhFRFx4NTJceDBEXHg2MFx4RTFceEVDXHg0Nlx4MTlceDcx XHg5RFx4OEFceDVCXHg4Qlx4ODAiCi0rIlx4N0ZceEFGXHhCOFx4RTBceEEzXHhERlx4QzdceDM3 XHg3Mlx4M0VceEU2XHhCNFx4QjdceEQ5XHgzQVx4MjUiCi0rIlx4ODRceEVFXHg2QVx4NjRceDlE XHgwNlx4MDlceDUzXHg3NFx4ODhceDM0XHhCMlx4NDVceDQ1XHg5OFx4MzkiCi0rIlx4NEVceEUw XHhBQVx4QjFceDJEXHg3Qlx4NjFceEE1XHgxRlx4NTJceDdBXHg5QVx4NDFceEY2XHhDMVx4Njgi Ci0rIlx4N0ZceEUyXHg1M1x4NzJceDk4XHhDQVx4MkFceDhGXHg1OVx4NDZceEY4XHhFNVx4RkRc eDA5XHgxRFx4QkQiCi0rIlx4Q0IiOwotKwotK3N0YXRpYyBpbnQgY29ycnVwdF9yc2E7Ci0rCi0r c3RhdGljIGludCBzZXRyc2FrZXkoUlNBICprZXkpCi0rICAgIHsKLSsgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgZVtdID0gIlx4MTEiOwotKwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBkW10gPQotKyJceDAwXHhBNVx4REFceEZDXHg1M1x4NDFceEZBXHhGMlx4ODlceEM0 XHhCOVx4ODhceERCXHgzMFx4QzFceENEIgotKyJceEY4XHgzRlx4MzFceDI1XHgxRVx4MDZceDY4 XHhCNFx4MjdceDg0XHg4MVx4MzhceDAxXHg1N1x4OTZceDQxIgotKyJceEIyXHg5NFx4MTBceEIz XHhDN1x4OTlceDhEXHg2Qlx4QzRceDY1XHg3NFx4NUVceDVDXHgzOVx4MjZceDY5IgotKyJceEQ2 XHg4N1x4MERceEEyXHhDMFx4ODJceEE5XHgzOVx4RTNceDdGXHhEQ1x4QjhceDJFXHhDOVx4M0Vc eERBIgotKyJceEM5XHg3Rlx4RjNceEFEXHg1OVx4NTBceEFDXHhDRlx4QkNceDExXHgxQ1x4NzZc eEYxXHhBOVx4NTJceDk0IgotKyJceDQ0XHhFNVx4NkFceEFGXHg2OFx4QzVceDZDXHgwOVx4MkNc eEQzXHg4RFx4QzNceEJFXHhGNVx4RDJceDBBIgotKyJceDkzXHg5OVx4MjZceEVEXHg0Rlx4NzRc eEExXHgzRVx4RERceEZCXHhFMVx4QTFceENFXHhDQ1x4NDhceDk0IgotKyJceEFGXHg5NFx4Mjhc eEMyXHhCN1x4QjhceDg4XHgzRlx4RTRceDQ2XHgzQVx4NEJceEM4XHg1Qlx4MUNceEIzIgotKyJc eEMxIjsKLSsKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFtdID0KLSsiXHgwMFx4 RUVceENGXHhBRVx4ODFceEIxXHhCOVx4QjNceEM5XHgwOFx4ODFceDBCXHgxMFx4QTFceEI1XHg2 MCIKLSsiXHgwMVx4OTlceEVCXHg5Rlx4NDRceEFFXHhGNFx4RkRceEE0XHg5M1x4QjhceDFBXHg5 RVx4M0RceDg0XHhGNiIKLSsiXHgzMlx4MTJceDRFXHhGMFx4MjNceDZFXHg1RFx4MUVceDNCXHg3 RVx4MjhceEZBXHhFN1x4QUFceDA0XHgwQSIKLSsiXHgyRFx4NUJceDI1XHgyMVx4NzZceDQ1XHg5 RFx4MUZceDM5XHg3NVx4NDFceEJBXHgyQVx4NThceEZCXHg2NSIKLSsiXHg5OSI7Ci0rCi0rICAg IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHFbXSA9Ci0rIlx4MDBceEM5XHg3Rlx4QjFceEYw XHgyN1x4RjRceDUzXHhGNlx4MzRceDEyXHgzM1x4RUFceEFBXHhEMVx4RDkiCi0rIlx4MzVceDNG XHg2Q1x4NDJceEQwXHg4OFx4NjZceEIxXHhEMFx4NUFceDBGXHgyMFx4MzVceDAyXHg4Qlx4OUQi Ci0rIlx4ODZceDk4XHg0MFx4QjRceDE2XHg2Nlx4QjRceDJFXHg5Mlx4RUFceDBEXHhBM1x4QjRc eDMyXHgwNFx4QjUiCi0rIlx4Q0ZceENFXHgzM1x4NTJceDUyXHg0RFx4MDRceDE2XHhBNVx4QTRc eDQxXHhFN1x4MDBceEFGXHg0Nlx4MTUiCi0rIlx4MDMiOwotKwotKyAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBkbXAxW10gPQotKyJceDU0XHg0OVx4NENceEE2XHgzRVx4QkFceDAzXHgz N1x4RTRceEUyXHg0MFx4MjNceEZDXHhENlx4OUFceDVBIgotKyJceEVCXHgwN1x4RERceERDXHgw MVx4ODNceEE0XHhEMFx4QUNceDlCXHg1NFx4QjBceDUxXHhGMlx4QjFceDNFIgotKyJceEQ5XHg0 OVx4MDlceDc1XHhFQVx4QjdceDc0XHgxNFx4RkZceDU5XHhDMVx4RjdceDY5XHgyRVx4OUFceDJF IgotKyJceDIwXHgyQlx4MzhceEZDXHg5MVx4MEFceDQ3XHg0MVx4NzRceEFEXHhDOVx4M0NceDFG XHg2N1x4QzlceDgxIjsKLSsKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZG1xMVtd ID0KLSsiXHg0N1x4MUVceDAyXHg5MFx4RkZceDBBXHhGMFx4NzVceDAzXHg1MVx4QjdceEY4XHg3 OFx4ODZceDRDXHhBOSIKLSsiXHg2MVx4QURceEJEXHgzQVx4OEFceDdFXHg5OVx4MUNceDVDXHgw NVx4NTZceEE5XHg0Q1x4MzFceDQ2XHhBNyIKLSsiXHhGOVx4ODBceDNGXHg4Rlx4NkZceDhBXHhF M1x4NDJceEU5XHgzMVx4RkRceDhBXHhFNFx4N0FceDIyXHgwRCIKLSsiXHgxQlx4OTlceEE0XHg5 NVx4ODRceDk4XHgwN1x4RkVceDM5XHhGOVx4MjRceDVBXHg5OFx4MzZceERBXHgzRCI7Ci0rICAg IAotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBpcW1wW10gPQotKyJceDAwXHhCMFx4 NkNceDRGXHhEQVx4QkJceDYzXHgwMVx4MTlceDhEXHgyNlx4NUJceERCXHhBRVx4OTRceDIzIgot KyJceEIzXHg4MFx4RjJceDcxXHhGN1x4MzRceDUzXHg4OFx4NTBceDkzXHgwN1x4N0ZceENEXHgz OVx4RTJceDExIgotKyJceDlGXHhDOVx4ODZceDMyXHgxNVx4NEZceDU4XHg4M1x4QjFceDY3XHhB OVx4NjdceEJGXHg0MFx4MkJceDRFIgotKyJceDlFXHgyRVx4MEZceDk2XHg1Nlx4RTZceDk4XHhF QVx4MzZceDY2XHhFRFx4RkJceDI1XHg3OVx4ODBceDM5IgotKyJceEY3IjsKLSsKLSsgICAga2V5 LT5uID0gQk5fYmluMmJuKG4sIHNpemVvZihuKS0xLCBrZXktPm4pOwotKyAgICBpZiAoY29ycnVw dF9yc2EpCi0rCUJOX3NldF9iaXQoa2V5LT5uLCAxMDI0KTsKLSsgICAga2V5LT5lID0gQk5fYmlu MmJuKGUsIHNpemVvZihlKS0xLCBrZXktPmUpOwotKyAgICBrZXktPmQgPSBCTl9iaW4yYm4oZCwg c2l6ZW9mKGQpLTEsIGtleS0+ZCk7Ci0rICAgIGtleS0+cCA9IEJOX2JpbjJibihwLCBzaXplb2Yo cCktMSwga2V5LT5wKTsKLSsgICAga2V5LT5xID0gQk5fYmluMmJuKHEsIHNpemVvZihxKS0xLCBr ZXktPnEpOwotKyAgICBrZXktPmRtcDEgPSBCTl9iaW4yYm4oZG1wMSwgc2l6ZW9mKGRtcDEpLTEs IGtleS0+ZG1wMSk7Ci0rICAgIGtleS0+ZG1xMSA9IEJOX2JpbjJibihkbXExLCBzaXplb2YoZG1x MSktMSwga2V5LT5kbXExKTsKLSsgICAga2V5LT5pcW1wID0gQk5fYmluMmJuKGlxbXAsIHNpemVv ZihpcW1wKS0xLCBrZXktPmlxbXApOwotKyAgICByZXR1cm4gMTsKLSsgICAgfQotKwotK3ZvaWQg RklQU19jb3JydXB0X3JzYSgpCi0rICAgIHsKLSsgICAgY29ycnVwdF9yc2EgPSAxOwotKyAgICB9 Ci0rCi0rLyogS25vd24gQW5zd2VyIFRlc3QgKEtBVCkgZGF0YSBmb3IgdGhlIGFib3ZlIFJTQSBw cml2YXRlIGtleSBzaWduaW5nCi0rICoga2F0X3Ricy4KLSsgKi8KLSsKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBrYXRfdGJzW10gPSAiT3BlblNTTCBGSVBTIDE0MC0yIFB1YmxpYyBLZXkg UlNBIEtBVCI7Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9QU1NfU0hB MVtdID0gewotKyAgMHgyRCwgMHhBRiwgMHg2RSwgMHhDMiwgMHg5OCwgMHhGQiwgMHg4QSwgMHhB MSwgMHhCOSwgMHg0NiwgMHhEQSwgMHgwRiwKLSsgIDB4MDEsIDB4MUUsIDB4MzcsIDB4OTMsIDB4 QzIsIDB4NTUsIDB4MjcsIDB4RTQsIDB4MUQsIDB4RDIsIDB4OTAsIDB4QkIsCi0rICAweEY0LCAw eEJGLCAweDRBLCAweDc0LCAweDM5LCAweDUxLCAweEJCLCAweEU4LCAweDBDLCAweEI3LCAweEY4 LCAweEQzLAotKyAgMHhEMSwgMHhERiwgMHhFNywgMHhCRSwgMHg4MCwgMHgwNSwgMHhDMywgMHhC NSwgMHhDNywgMHg4MywgMHhENSwgMHg0QywKLSsgIDB4N0YsIDB4NDksIDB4RkIsIDB4M0YsIDB4 MjksIDB4OUIsIDB4RTEsIDB4MTIsIDB4NTEsIDB4NjAsIDB4RDAsIDB4QTcsCi0rICAweDBELCAw eEE5LCAweDI4LCAweDU2LCAweDczLCAweEQ5LCAweDA3LCAweEUzLCAweDVFLCAweDNGLCAweDlC LCAweEY1LAotKyAgMHhCNiwgMHhGMywgMHhGMiwgMHg1RSwgMHg3NCwgMHhDOSwgMHg4MywgMHg4 MSwgMHg0NywgMHhGMCwgMHhDNSwgMHg0NSwKLSsgIDB4MEEsIDB4RTksIDB4OEUsIDB4MzgsIDB4 RDcsIDB4MTgsIDB4QzYsIDB4MkEsIDB4MEYsIDB4RjgsIDB4QjcsIDB4MzEsCi0rICAweEQ2LCAw eDU1LCAweEU0LCAweDY2LCAweDc4LCAweDgxLCAweEQ0LCAweEU2LCAweERCLCAweDlGLCAweEJB LCAweEU4LAotKyAgMHgyMywgMHhCNSwgMHg3RiwgMHhEQywgMHgwOCwgMHhFQSwgMHhENSwgMHgy NiwgMHgxRSwgMHgyMCwgMHgyNSwgMHg4NCwKLSsgIDB4MjYsIDB4QzYsIDB4NzksIDB4QzksIDB4 OUIsIDB4M0QsIDB4N0UsIDB4QTkKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGthdF9SU0FfUFNTX1NIQTIyNFtdID0gewotKyAgMHgzOSwgMHg0QSwgMHg2QSwgMHgyMCwgMHhC QywgMHhFOSwgMHgzMywgMHhFRCwgMHhFRiwgMHhDNSwgMHg1OCwgMHhBNywKLSsgIDB4RkUsIDB4 ODEsIDB4QzQsIDB4MzYsIDB4NTAsIDB4OUEsIDB4MkMsIDB4ODIsIDB4OTgsIDB4MDgsIDB4OTUs IDB4RkEsCi0rICAweEIxLCAweDlFLCAweEQyLCAweDU1LCAweDYxLCAweDg3LCAweDIxLCAweDU5 LCAweDg3LCAweDdCLCAweDFGLCAweDU3LAotKyAgMHgzMCwgMHg5RCwgMHgwRCwgMHg0QSwgMHgw NiwgMHhFQiwgMHg1MiwgMHgzNywgMHg1NSwgMHg1NCwgMHgxQywgMHg4OSwKLSsgIDB4ODMsIDB4 NzUsIDB4NTksIDB4NjUsIDB4NjQsIDB4OTAsIDB4MkUsIDB4MTYsIDB4Q0MsIDB4ODYsIDB4MDUs IDB4RUUsCi0rICAweEIxLCAweEU2LCAweDdCLCAweEJBLCAweDE2LCAweDc1LCAweDBELCAweDBD LCAweDY0LCAweDBCLCAweEFCLCAweDIyLAotKyAgMHgxNSwgMHg3OCwgMHg2QiwgMHg2RiwgMHhB NCwgMHhGQiwgMHg3NywgMHg0MCwgMHg2NCwgMHg2MiwgMHhEMSwgMHhCNSwKLSsgIDB4MzcsIDB4 MUUsIDB4RTAsIDB4M0QsIDB4QTgsIDB4RjksIDB4RDIsIDB4QkQsIDB4QUEsIDB4MzgsIDB4MjQs IDB4NDksCi0rICAweDU4LCAweEQyLCAweDc0LCAweDg1LCAweEY0LCAweEI1LCAweDkzLCAweDhF LCAweEY1LCAweDAzLCAweEVBLCAweDJELAotKyAgMHhDOCwgMHg1MiwgMHhGQSwgMHhDRiwgMHg3 RSwgMHgzNSwgMHhCMCwgMHg2QSwgMHhBRiwgMHg5NSwgMHhDMCwgMHgwMCwKLSsgIDB4NTQsIDB4 NzYsIDB4M0QsIDB4MEMsIDB4OUMsIDB4QjIsIDB4RUUsIDB4QzAKLSt9OwotKwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTI1NltdID0gewotKyAgMHg2RCwgMHgz RCwgMHhCRSwgMHg4RiwgMHg2MCwgMHg2RCwgMHgyNSwgMHgxNCwgMHhGMCwgMHgzMSwgMHhFMywg MHg4OSwKLSsgIDB4MDAsIDB4OTcsIDB4RkEsIDB4OTksIDB4NzEsIDB4MjgsIDB4RTUsIDB4MTAs IDB4MjUsIDB4OUEsIDB4RjMsIDB4OEYsCi0rICAweDdCLCAweEM1LCAweEE4LCAweDRBLCAweDc0 LCAweDUxLCAweDM2LCAweEUyLCAweDhELCAweDdELCAweDczLCAweDI4LAotKyAgMHhDMSwgMHg3 NywgMHhDNiwgMHgyNywgMHg5NywgMHgwMCwgMHg4QiwgMHgwMCwgMHhBMywgMHg5NiwgMHg3Mywg MHg0RSwKLSsgIDB4N0QsIDB4MkUsIDB4MkMsIDB4MzQsIDB4NjgsIDB4OEMsIDB4OEUsIDB4REYs IDB4OUQsIDB4NDksIDB4NDcsIDB4MDUsCi0rICAweEFCLCAweEY1LCAweDAxLCAweEQ2LCAweDgx LCAweDQ3LCAweDcwLCAweEY1LCAweDFELCAweDZELCAweDI2LCAweEJBLAotKyAgMHgyRiwgMHg3 QSwgMHg1NCwgMHg1MywgMHg0RSwgMHhFRCwgMHg3MSwgMHhEOSwgMHg1QSwgMHhGMywgMHhEQSwg MHhCNiwKLSsgIDB4MEIsIDB4NDcsIDB4MzQsIDB4QUYsIDB4OTAsIDB4REMsIDB4QzgsIDB4RDks IDB4NkYsIDB4NTYsIDB4Q0QsIDB4OUYsCi0rICAweDIxLCAweEI3LCAweDdFLCAweEFELCAweDdD LCAweDJGLCAweDc1LCAweDUwLCAweDQ3LCAweDEyLCAweEU0LCAweDZELAotKyAgMHg1RiwgMHhC NywgMHgwMSwgMHhERiwgMHhDMywgMHgxMSwgMHg2QywgMHhBOSwgMHg5RSwgMHg0OSwgMHhCOSwg MHhGNiwKLSsgIDB4NzIsIDB4RjQsIDB4RjYsIDB4RUYsIDB4ODgsIDB4MUUsIDB4MkQsIDB4MUMK LSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTM4NFtd ID0gewotKyAgMHg0MCwgMHhGQiwgMHhBMSwgMHgyMSwgMHhGNCwgMHhCMiwgMHg0MCwgMHg5QSwg MHhCNCwgMHgzMSwgMHhBOCwgMHhGMiwKLSsgIDB4RUMsIDB4MUMsIDB4QzQsIDB4QzgsIDB4N0Ms IDB4MjIsIDB4NjUsIDB4OUMsIDB4NTcsIDB4NDUsIDB4Q0QsIDB4NUUsCi0rICAweDg2LCAweDAw LCAweEY3LCAweDI1LCAweDc4LCAweERFLCAweERDLCAweDdBLCAweDcxLCAweDQ0LCAweDlBLCAw eENELAotKyAgMHhBQSwgMHgyNSwgMHhGNCwgMHhCMiwgMHhGQywgMHhGMCwgMHg3NSwgMHhEOSwg MHgyRiwgMHg3OCwgMHgyMywgMHg3RiwKLSsgIDB4NkYsIDB4MDIsIDB4RUYsIDB4QzEsIDB4QUYs IDB4QTYsIDB4MjgsIDB4MTYsIDB4MzEsIDB4REMsIDB4NDIsIDB4NkMsCi0rICAweEIyLCAweDQ0 LCAweEU1LCAweDRELCAweDY2LCAweEEyLCAweEU2LCAweDcxLCAweEYzLCAweEFDLCAweDRGLCAw eEZCLAotKyAgMHg5MSwgMHhDQSwgMHhGNSwgMHg3MCwgMHhFRiwgMHg2QiwgMHg5RCwgMHhBNCwg MHhFRiwgMHhEOSwgMHgzRCwgMHgyRiwKLSsgIDB4M0EsIDB4QkUsIDB4ODksIDB4MzgsIDB4NTks IDB4MDEsIDB4QkEsIDB4REEsIDB4MzIsIDB4QUQsIDB4NDIsIDB4ODksCi0rICAweDk4LCAweDhC LCAweDM5LCAweDQ0LCAweEYwLCAweEZDLCAweDM4LCAweEFDLCAweDg3LCAweDFGLCAweENBLCAw eDZGLAotKyAgMHg0OCwgMHhGNiwgMHhBRSwgMHhENywgMHg0NSwgMHhFRSwgMHhBRSwgMHg4OCwg MHgwRSwgMHg2MCwgMHhGNCwgMHg1NSwKLSsgIDB4NDgsIDB4NDQsIDB4RUUsIDB4MUYsIDB4OTAs IDB4MTgsIDB4NEIsIDB4RjEKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGth dF9SU0FfUFNTX1NIQTUxMltdID0gewotKyAgMHgwNywgMHgxRSwgMHhEOCwgMHhENSwgMHgwNSwg MHhFOCwgMHhFNiwgMHhFNiwgMHg1NywgMHhBRSwgMHg2MywgMHg4QywKLSsgIDB4QzYsIDB4ODMs IDB4QjcsIDB4QTAsIDB4NTksIDB4QkIsIDB4RjIsIDB4QzYsIDB4OEYsIDB4MTIsIDB4NTMsIDB4 OUEsCi0rICAweDlCLCAweDU0LCAweDlFLCAweEIzLCAweEMxLCAweDFELCAweDIzLCAweDRELCAw eDUxLCAweEVELCAweDlFLCAweERELAotKyAgMHg0QiwgMHhGMywgMHg0NiwgMHg5QiwgMHg2Qiwg MHhGNiwgMHg3QywgMHgyNCwgMHg2MCwgMHg3OSwgMHgyMywgMHgzOSwKLSsgIDB4MDEsIDB4MUMs IDB4NTEsIDB4Q0IsIDB4RDgsIDB4RTksIDB4OUEsIDB4MDEsIDB4NjcsIDB4NUYsIDB4RkUsIDB4 RDcsCi0rICAweDdDLCAweEUzLCAweDdGLCAweEVELCAweERCLCAweDg3LCAweEJCLCAweEYwLCAw eDNELCAweDc4LCAweDU1LCAweDYxLAotKyAgMHg1NywgMHhFMywgMHgwRiwgMHhFMywgMHhEMiwg MHg5RCwgMHgwQywgMHgyQSwgMHgyMCwgMHhCMCwgMHg4NSwgMHgxMywKLSsgIDB4QzUsIDB4NDcs IDB4MzQsIDB4MEQsIDB4MzIsIDB4MTUsIDB4QzgsIDB4QUUsIDB4OUEsIDB4NkEsIDB4MzksIDB4 NjMsCi0rICAweDJELCAweDYwLCAweEY1LCAweDRDLCAweERGLCAweDhBLCAweDQ4LCAweDRCLCAw eEJGLCAweEY0LCAweEE4LCAweEZFLAotKyAgMHg3NiwgMHhGMiwgMHgzMiwgMHgxQiwgMHg5Qywg MHg3QywgMHhDQSwgMHhGRSwgMHg3RiwgMHg4MCwgMHhDMiwgMHg4OCwKLSsgIDB4NUMsIDB4OTcs IDB4NzAsIDB4QjQsIDB4MjYsIDB4QzksIDB4MTQsIDB4OEIKLSt9OwotKwotK3N0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfU0hBMVtdID0gewotKyAgMHg3MSwgMHhFRSwgMHgxQSwg MHhDMCwgMHhGRSwgMHgwMSwgMHg5MywgMHg1NCwgMHg3OSwgMHg1QywgMHhGMiwgMHg0QywKLSsg IDB4NEEsIDB4RkQsIDB4MUEsIDB4MDUsIDB4OEYsIDB4NjQsIDB4QjEsIDB4NkQsIDB4NjEsIDB4 MzMsIDB4OEQsIDB4OUIsCi0rICAweEU3LCAweEZELCAweDYwLCAweEEzLCAweDgzLCAweEI1LCAw eEEzLCAweDUxLCAweDU1LCAweDc3LCAweDkwLCAweENGLAotKyAgMHhEQywgMHgyMiwgMHgzNywg MHg4RSwgMHhEMCwgMHhFMSwgMHhBRSwgMHgwOSwgMHhFMywgMHgzRCwgMHgxRSwgMHhGOCwKLSsg IDB4ODAsIDB4RDEsIDB4OEIsIDB4QzIsIDB4RUMsIDB4MEEsIDB4RDcsIDB4NkIsIDB4ODgsIDB4 OEIsIDB4OEIsIDB4QTEsCi0rICAweDIwLCAweDIyLCAweEJFLCAweDU5LCAweDVCLCAweEUwLCAw eDIzLCAweDI0LCAweEExLCAweDQ5LCAweDMwLCAweEJBLAotKyAgMHhBOSwgMHg5RSwgMHhFOCwg MHhCMSwgMHg4QSwgMHg2MiwgMHgxNiwgMHhCRiwgMHg0RSwgMHhDQSwgMHgyRSwgMHg0RSwKLSsg IDB4QkMsIDB4MjksIDB4QTgsIDB4NjcsIDB4MTMsIDB4QjcsIDB4OUYsIDB4MUQsIDB4MDQsIDB4 NDQsIDB4RTUsIDB4NUYsCi0rICAweDM1LCAweDA3LCAweDExLCAweEJDLCAweEVELCAweDE5LCAw eDM3LCAweDIxLCAweENGLCAweDIzLCAweDQ4LCAweDFGLAotKyAgMHg3MiwgMHgwNSwgMHhERSwg MHhFNiwgMHhFOCwgMHg3RiwgMHgzMywgMHg4QSwgMHg3NiwgMHg0QiwgMHgyRiwgMHg5NSwKLSsg IDB4REYsIDB4RjEsIDB4NUYsIDB4ODQsIDB4ODAsIDB4RDksIDB4NDYsIDB4QjQKLSt9OwotKwot K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfU0hBMjI0W10gPSB7Ci0rICAweDYy LCAweEFBLCAweDc5LCAweEE5LCAweDE4LCAweDBFLCAweDVGLCAweDhDLCAweEJCLCAweEI3LCAw eDE1LCAweEY5LAotKyAgMHgyNSwgMHhCQiwgMHhGQSwgMHhENCwgMHgzQSwgMHgzNCwgMHhFRCwg MHg5RSwgMHhBMCwgMHhBOSwgMHgxOCwgMHg4RCwKLSsgIDB4NUIsIDB4NTUsIDB4OUEsIDB4N0Us IDB4MUUsIDB4MDgsIDB4MDgsIDB4NjAsIDB4QzUsIDB4MUEsIDB4QzUsIDB4ODksCi0rICAweDA4 LCAweEUyLCAweDFCLCAweEJELCAweDYyLCAweDUwLCAweDE3LCAweDc2LCAweDMwLCAweDJDLCAw eDlFLCAweENELAotKyAgMHhBNCwgMHgwMiwgMHhBRCwgMHhCMSwgMHg2RCwgMHg0NCwgMHg2RCwg MHhENSwgMHhDNiwgMHg0NSwgMHg0MSwgMHhFNSwKLSsgIDB4RUUsIDB4MUYsIDB4OEQsIDB4N0Us IDB4MDgsIDB4MTYsIDB4QTYsIDB4RTEsIDB4NUUsIDB4MEIsIDB4QTksIDB4Q0MsCi0rICAweERC LCAweDU5LCAweDU1LCAweDg3LCAweDA5LCAweDI1LCAweDcwLCAweDg2LCAweDg0LCAweDAyLCAw eEM2LCAweDNCLAotKyAgMHgwQiwgMHg0NCwgMHg0QywgMHg0NiwgMHg5NSwgMHhGNCwgMHhGOCwg MHg1QSwgMHg5MSwgMHgyOCwgMHgzRSwgMHhCMiwKLSsgIDB4NTgsIDB4MkUsIDB4MDYsIDB4NDUs IDB4NDksIDB4RTAsIDB4OTIsIDB4RTIsIDB4QzAsIDB4NjYsIDB4RTYsIDB4MzUsCi0rICAweEQ5 LCAweDc5LCAweDdGLCAweDE3LCAweDVFLCAweDAyLCAweDczLCAweDA0LCAweDc3LCAweDgyLCAw eEU2LCAweERDLAotKyAgMHg0MCwgMHgyMSwgMHg4OSwgMHg4QiwgMHgzNywgMHgzRSwgMHgxRSwg MHg4RAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEEyNTZb XSA9IHsKLSsgIDB4MEQsIDB4NTUsIDB4RTIsIDB4QUEsIDB4ODEsIDB4REIsIDB4OEUsIDB4ODIs IDB4MDUsIDB4MTcsIDB4QTUsIDB4MjMsCi0rICAweEU3LCAweDNCLCAweDFELCAweEFGLCAweEZC LCAweDhDLCAweEQwLCAweDgxLCAweDIwLCAweDdCLCAweEFBLCAweDIzLAotKyAgMHg5MiwgMHg4 NywgMHg4QywgMHhEMSwgMHg1MywgMHg4NSwgMHgxNiwgMHhEQywgMHhCRSwgMHhBRCwgMHg2Riwg MHgzNSwKLSsgIDB4OTgsIDB4MkQsIDB4NjksIDB4ODQsIDB4QkYsIDB4RDksIDB4OEEsIDB4MDEs IDB4MTcsIDB4NTgsIDB4QjIsIDB4NkUsCi0rICAweDJDLCAweDQ0LCAweDlCLCAweDkwLCAweEYx LCAweEZCLCAweDUxLCAweEU4LCAweDZBLCAweDkwLCAweDJELCAweDE4LAotKyAgMHgwRSwgMHhD MCwgMHg5MCwgMHgxMCwgMHgyNCwgMHhBOSwgMHgxRCwgMHhCMywgMHg1OCwgMHg3QSwgMHg5MSwg MHgzMCwKLSsgIDB4QkUsIDB4MjIsIDB4QzcsIDB4RDMsIDB4RUMsIDB4QzMsIDB4MDksIDB4NUQs IDB4QkYsIDB4RTIsIDB4ODAsIDB4M0EsCi0rICAweDdDLCAweDg1LCAweEI0LCAweEJDLCAweEQx LCAweEU5LCAweEYwLCAweDVDLCAweERFLCAweDgxLCAweEE2LCAweDM4LAotKyAgMHhCOCwgMHg0 MiwgMHhCQiwgMHg4NiwgMHhDNSwgMHg5RCwgMHhDRSwgMHg3QywgMHgyQywgMHhFRSwgMHhEMSwg MHhEQSwKLSsgIDB4MjcsIDB4NDgsIDB4MkIsIDB4RjUsIDB4QUIsIDB4QjksIDB4RjcsIDB4ODAs IDB4RDEsIDB4OTAsIDB4MjcsIDB4OTAsCi0rICAweEJELCAweDQ0LCAweDk3LCAweDYwLCAweENE LCAweDU3LCAweEMwLCAweDdBCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBr YXRfUlNBX1NIQTM4NFtdID0gewotKyAgMHgxRCwgMHhFMywgMHg2QSwgMHhERCwgMHgyNywgMHg0 QywgMHhDMCwgMHhBNSwgMHgyNywgMHhFRiwgMHhFNiwgMHgxRiwKLSsgIDB4RDIsIDB4OTEsIDB4 NjgsIDB4NTksIDB4MDQsIDB4QUUsIDB4QkQsIDB4OTksIDB4NjMsIDB4NTYsIDB4NDcsIDB4Qzcs Ci0rICAweDZGLCAweDIyLCAweDE2LCAweDQ4LCAweEQwLCAweEY5LCAweDE4LCAweEE5LCAweENB LCAweEZBLCAweDVELCAweDVDLAotKyAgMHhBNywgMHg2NSwgMHg1MiwgMHg4QSwgMHhDOCwgMHg0 NCwgMHg3RSwgMHg4NiwgMHg1RCwgMHhBOSwgMHhBNiwgMHg1NSwKLSsgIDB4NjUsIDB4M0UsIDB4 RDksIDB4MkQsIDB4MDIsIDB4MzgsIDB4QTgsIDB4NzksIDB4MjgsIDB4N0YsIDB4QjYsIDB4Q0Ys Ci0rICAweDgyLCAweERELCAweDdFLCAweDU1LCAweEUxLCAweEIxLCAweEJDLCAweEUyLCAweDE5 LCAweDJCLCAweDMwLCAweEMyLAotKyAgMHgxQiwgMHgyQiwgMHhCMCwgMHg4MiwgMHg0NiwgMHhB QywgMHg0QiwgMHhEMSwgMHhFMiwgMHg3RCwgMHhFQiwgMHg4QywKLSsgIDB4RkYsIDB4OTUsIDB4 RTksIDB4NkEsIDB4MUMsIDB4M0QsIDB4NEQsIDB4QkYsIDB4OEYsIDB4OEIsIDB4OUMsIDB4Q0Qs Ci0rICAweEVBLCAweDg1LCAweEVFLCAweDAwLCAweERDLCAweDFDLCAweEE3LCAweEVCLCAweEQw LCAweDhGLCAweDk5LCAweEYxLAotKyAgMHgxNiwgMHgyOCwgMHgyNCwgMHg2NCwgMHgwNCwgMHgz OSwgMHgyRCwgMHg1OCwgMHgxRSwgMHgzNywgMHhEQywgMHgwNCwKLSsgIDB4QkQsIDB4MzEsIDB4 QTIsIDB4MkYsIDB4QjMsIDB4MzUsIDB4NTYsIDB4QkYKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGthdF9SU0FfU0hBNTEyW10gPSB7Ci0rICAweDY5LCAweDUyLCAweDFCLCAw eDUxLCAweDVFLCAweDA2LCAweENBLCAweDlCLCAweDE2LCAweDUxLCAweDVELCAweENGLAotKyAg MHg0OSwgMHgyNSwgMHg0QSwgMHhBMSwgMHg2QSwgMHg3NywgMHg0QywgMHgzNiwgMHg0MCwgMHhG OCwgMHhCMiwgMHg5QSwKLSsgIDB4MTUsIDB4RUEsIDB4NUMsIDB4RTUsIDB4RTYsIDB4ODIsIDB4 RTAsIDB4ODYsIDB4ODIsIDB4NkIsIDB4MzIsIDB4RjEsCi0rICAweDA0LCAweEMxLCAweDVBLCAw eDFBLCAweEVELCAweDFFLCAweDlBLCAweEI2LCAweDRDLCAweDU0LCAweDlGLCAweEQ4LAotKyAg MHg4RCwgMHhDQywgMHhBQywgMHg4QSwgMHhCQiwgMHg5QywgMHg4MiwgMHgzRiwgMHhBNiwgMHg1 MywgMHg2MiwgMHhCNSwKLSsgIDB4ODAsIDB4RTIsIDB4QkMsIDB4REQsIDB4NjcsIDB4MkIsIDB4 RDksIDB4M0YsIDB4RTQsIDB4NzUsIDB4OTIsIDB4NkIsCi0rICAweEFGLCAweDYyLCAweDdDLCAw eDUyLCAweEYwLCAweEVFLCAweDMzLCAweERGLCAweDFCLCAweDFELCAweDQ3LCAweEU2LAotKyAg MHg1OSwgMHg1NiwgMHhBNSwgMHhCOSwgMHg1QywgMHhFNiwgMHg3NywgMHg3OCwgMHgxNiwgMHg2 MywgMHg4NCwgMHgwNSwKLSsgIDB4NkYsIDB4MEUsIDB4MkIsIDB4MzEsIDB4OUQsIDB4RjcsIDB4 N0YsIDB4QjIsIDB4NjQsIDB4NzEsIDB4RTAsIDB4MkQsCi0rICAweDNFLCAweDYyLCAweENFLCAw eEI1LCAweDNGLCAweDg4LCAweERGLCAweDJELCAweEFCLCAweDk4LCAweDY1LCAweDkxLAotKyAg MHhERiwgMHg3MCwgMHgxNCwgMHhBNSwgMHgzRiwgMHgzNiwgMHhBQiwgMHg4NAotK307Ci0rCi0r c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMxX1NIQTFbXSA9IHsKLSsgIDB4 ODYsIDB4QjQsIDB4MTgsIDB4QkEsIDB4RDEsIDB4ODAsIDB4QjYsIDB4N0MsIDB4NDIsIDB4NDUs IDB4NEQsIDB4REYsCi0rICAweEU5LCAweDJELCAweEUxLCAweDgzLCAweDVGLCAweEI1LCAweDJG LCAweEM5LCAweENELCAweEM0LCAweEIyLCAweDc1LAotKyAgMHg4MCwgMHhBNCwgMHhGMSwgMHg0 QSwgMHhFNywgMHg4MywgMHgxMiwgMHgxRSwgMHgxRSwgMHgxNCwgMHhCOCwgMHhBQywKLSsgIDB4 MzUsIDB4RTIsIDB4QUEsIDB4MEIsIDB4NUMsIDB4RjgsIDB4MzgsIDB4NEQsIDB4MDQsIDB4RUUs IDB4QTksIDB4OTcsCi0rICAweDcwLCAweEZCLCAweDVFLCAweEU3LCAweEI3LCAweEUzLCAweDYy LCAweDIzLCAweDRCLCAweDM4LCAweEJFLCAweEQ2LAotKyAgMHg1MywgMHgxNSwgMHhGNywgMHhE RiwgMHg4NywgMHhCNCwgMHgwRSwgMHhDQywgMHhCMSwgMHgxQSwgMHgxMSwgMHgxOSwKLSsgIDB4 RUUsIDB4NTEsIDB4Q0MsIDB4OTIsIDB4REQsIDB4QkMsIDB4NjMsIDB4MjksIDB4NjMsIDB4MEMs IDB4NTksIDB4RDcsCi0rICAweDZGLCAweDRDLCAweDNDLCAweDM3LCAweDVCLCAweDM3LCAweDAz LCAweDYxLCAweDdELCAweDI0LCAweDFDLCAweDk5LAotKyAgMHg0OCwgMHhBRiwgMHg4MiwgMHhG RSwgMHgzMiwgMHg0MSwgMHg5QiwgMHhCMiwgMHhEQiwgMHhFQSwgMHhFRCwgMHg3NiwKLSsgIDB4 OEUsIDB4NkUsIDB4Q0EsIDB4N0UsIDB4NEUsIDB4MTQsIDB4QkEsIDB4MzAsIDB4ODQsIDB4MUMs IDB4QjMsIDB4NjcsCi0rICAweEEzLCAweDI5LCAweDgwLCAweDcwLCAweDU0LCAweDY4LCAweDdE LCAweDQ5Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1g5MzFf U0hBMjU2W10gPSB7Ci0rICAweDdFLCAweEEyLCAweDc3LCAweEZFLCAweEI4LCAweDU0LCAweDhB LCAweEM3LCAweDdGLCAweDY0LCAweDU0LCAweDg5LAotKyAgMHhFNSwgMHg1MiwgMHgxNSwgMHg4 RSwgMHg1MiwgMHg5NiwgMHg0RSwgMHhBNiwgMHg1OCwgMHg5MiwgMHgxQywgMHhERCwKLSsgIDB4 RUEsIDB4QTIsIDB4MkQsIDB4NUMsIDB4RDEsIDB4NjIsIDB4MDAsIDB4NDksIDB4MDUsIDB4OTUs IDB4NzMsIDB4Q0YsCi0rICAweDE2LCAweDc2LCAweDY4LCAweEY2LCAweEM2LCAweDVFLCAweDgw LCAweEI4LCAweEI4LCAweDdCLCAweEM4LCAweDlCLAotKyAgMHhDNiwgMHg1MywgMHg4OCwgMHgy NiwgMHgyMCwgMHg4OCwgMHg3MywgMHhCNiwgMHgxMywgMHhCOCwgMHhGMCwgMHg0QiwKLSsgIDB4 MDAsIDB4ODUsIDB4RjMsIDB4REQsIDB4MDcsIDB4NTAsIDB4RUIsIDB4MjAsIDB4QzQsIDB4Mzgs IDB4MEUsIDB4OTgsCi0rICAweEFELCAweDRFLCAweDQ5LCAweDJDLCAweEQ3LCAweDY1LCAweEE1 LCAweDE5LCAweDBFLCAweDU5LCAweDAxLCAweEVDLAotKyAgMHg3RSwgMHg3NSwgMHg4OSwgMHg2 OSwgMHgyRSwgMHg2MywgMHg3NiwgMHg4NSwgMHg0NiwgMHg4RCwgMHhBMCwgMHg4QywKLSsgIDB4 MzMsIDB4MUQsIDB4ODIsIDB4OEMsIDB4MDMsIDB4RUEsIDB4NjksIDB4ODgsIDB4MzUsIDB4QTEs IDB4NDIsIDB4QkQsCi0rICAweDIxLCAweEVELCAweDhELCAweEJDLCAweEJDLCAweERCLCAweDMw LCAweEZGLCAweDg2LCAweEYwLCAweDVCLCAweERDLAotKyAgMHhFMywgMHhFMiwgMHhFOCwgMHgw QSwgMHgwQSwgMHgyOSwgMHg5NCwgMHg4MAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIga2F0X1JTQV9YOTMxX1NIQTM4NFtdID0gewotKyAgMHg1QywgMHg3RCwgMHg5NiwgMHgz NSwgMHhFQywgMHg3RSwgMHgxMSwgMHgzOCwgMHhCQiwgMHg3QiwgMHhFQywgMHg3QiwKLSsgIDB4 RjIsIDB4ODIsIDB4OEUsIDB4OTksIDB4QkQsIDB4RUYsIDB4RDgsIDB4QUUsIDB4RDcsIDB4Mzks IDB4MzcsIDB4Q0IsCi0rICAweEU2LCAweDRGLCAweDVFLCAweDBBLCAweDEzLCAweEU0LCAweDJF LCAweDQwLCAweEI5LCAweEJFLCAweDJFLCAweEUzLAotKyAgMHhFRiwgMHg3OCwgMHg4MywgMHgx OCwgMHg0NCwgMHgzNSwgMHg5QywgMHg4RSwgMHhENywgMHg0QSwgMHg2MywgMHhGNiwKLSsgIDB4 NTcsIDB4QzIsIDB4QjAsIDB4MDgsIDB4NTEsIDB4NzMsIDB4Q0YsIDB4Q0EsIDB4OTksIDB4NjYs IDB4RUUsIDB4MzEsCi0rICAweEQ4LCAweDY5LCAweEU5LCAweEFCLCAweDEzLCAweDI3LCAweDdC LCAweDQxLCAweDFFLCAweDZELCAweDhELCAweEYxLAotKyAgMHgzRSwgMHg5QywgMHgzNSwgMHg5 NSwgMHg1OCwgMHhERCwgMHgyQiwgMHhENSwgMHhBMCwgMHg2MCwgMHg0MSwgMHg3OSwKLSsgIDB4 MjQsIDB4MjIsIDB4RTQsIDB4QjcsIDB4QkYsIDB4NDcsIDB4NTMsIDB4RjYsIDB4MzQsIDB4RDUs IDB4N0MsIDB4RkYsCi0rICAweDBFLCAweDA5LCAweEVFLCAweDJFLCAweEUyLCAweDM3LCAweEI5 LCAweERFLCAweEM1LCAweDEyLCAweDQ0LCAweDM1LAotKyAgMHhFRiwgMHgwMSwgMHhFNiwgMHg1 RSwgMHgzOSwgMHgzMSwgMHgyRCwgMHg3MSwgMHhBNSwgMHhEQywgMHhDNiwgMHg2RCwKLSsgIDB4 RTIsIDB4Q0QsIDB4ODUsIDB4REIsIDB4NzMsIDB4ODIsIDB4NjUsIDB4MjgKLSt9OwotKwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfWDkzMV9TSEE1MTJbXSA9IHsKLSsgIDB4 QTYsIDB4NjUsIDB4QTIsIDB4NzcsIDB4NEYsIDB4QjMsIDB4ODYsIDB4Q0IsIDB4NjQsIDB4M0Es IDB4QzEsIDB4NjMsCi0rICAweEZDLCAweEExLCAweEFBLCAweENCLCAweDlCLCAweDc5LCAweERE LCAweDRCLCAweEUxLCAweEQ5LCAweERBLCAweEFDLAotKyAgMHhFNywgMHg0NywgMHgwOSwgMHhC MiwgMHgxMSwgMHg0QiwgMHg4QSwgMHhBQSwgMHgwNSwgMHg5RSwgMHg3NywgMHhENywKLSsgIDB4 M0EsIDB4QkQsIDB4NUUsIDB4NTMsIDB4MDksIDB4NEEsIDB4RTYsIDB4MEYsIDB4NUUsIDB4Rjks IDB4MTQsIDB4MjgsCi0rICAweEEwLCAweDk5LCAweDc0LCAweDY0LCAweDcwLCAweDRFLCAweEYy LCAweEUzLCAweEZBLCAweEM3LCAweEY4LCAweEM1LAotKyAgMHg2RSwgMHgyQiwgMHg3OSwgMHg5 NiwgMHgwRCwgMHgwQywgMHhDOCwgMHgxMCwgMHgzNCwgMHg1MywgMHhEMiwgMHhBRiwKLSsgIDB4 MTcsIDB4MEUsIDB4RTAsIDB4QkYsIDB4NzksIDB4RjYsIDB4MDQsIDB4NzIsIDB4MTAsIDB4RTAs IDB4RjYsIDB4RDAsCi0rICAweENFLCAweDhBLCAweDZGLCAweEExLCAweDk1LCAweDg5LCAweEJG LCAweDU4LCAweDhGLCAweDQ2LCAweDVGLCAweDA5LAotKyAgMHg5RiwgMHgwOSwgMHhDQSwgMHg4 NCwgMHgxNSwgMHg4NSwgMHhFMCwgMHhFRCwgMHgwNCwgMHgyRCwgMHhGQiwgMHg3QywKLSsgIDB4 MzYsIDB4MzUsIDB4MjEsIDB4MzEsIDB4QzMsIDB4RkQsIDB4OTIsIDB4NDIsIDB4MTEsIDB4MzAs IDB4NzEsIDB4MUIsCi0rICAweDYwLCAweDgzLCAweDE4LCAweDg4LCAweEEzLCAweEY1LCAweDU5 LCAweEMzCi0rfTsKLSsKLSsKLStpbnQgRklQU19zZWxmdGVzdF9yc2EoKQotKwl7Ci0rCWludCBy ZXQgPSAwOwotKwlSU0EgKmtleTsKLSsJRVZQX1BLRVkgKnBrID0gTlVMTDsKLSsKLSsJaWYgKChr ZXk9UlNBX25ldygpKSA9PSBOVUxMKQotKwkJZ290byBlcnI7Ci0rCXNldHJzYWtleShrZXkpOwot KwlpZiAoKHBrPUVWUF9QS0VZX25ldygpKSA9PSBOVUxMKQotKwkJZ290byBlcnI7Ci0rCi0rCUVW UF9QS0VZX2Fzc2lnbl9SU0EocGssIGtleSk7Ci0rCi0rCWlmICghZmlwc19wa2V5X3NpZ25hdHVy ZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotKwkJCQlrYXRfUlNBX1NI QTEsIHNpemVvZihrYXRfUlNBX1NIQTEpLAotKwkJCQlFVlBfc2hhMSgpLCBFVlBfTURfQ1RYX0ZM QUdfUEFEX1BLQ1MxLAotKwkJCQkiUlNBIFNIQTEgUEtDUyMxIikpCi0rCQlnb3RvIGVycjsKLSsJ aWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJz KSAtIDEsCi0rCQkJCWthdF9SU0FfU0hBMjI0LCBzaXplb2Yoa2F0X1JTQV9TSEEyMjQpLAotKwkJ CQlFVlBfc2hhMjI0KCksIEVWUF9NRF9DVFhfRkxBR19QQURfUEtDUzEsCi0rCQkJCSJSU0EgU0hB MjI0IFBLQ1MjMSIpKQotKwkJZ290byBlcnI7Ci0rCWlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90 ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotKwkJCQlrYXRfUlNBX1NIQTI1 Niwgc2l6ZW9mKGthdF9SU0FfU0hBMjU2KSwKLSsJCQkJRVZQX3NoYTI1NigpLCBFVlBfTURfQ1RY X0ZMQUdfUEFEX1BLQ1MxLAotKwkJCQkiUlNBIFNIQTI1NiBQS0NTIzEiKSkKLSsJCWdvdG8gZXJy OwotKwlpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGth dF90YnMpIC0gMSwKLSsJCQkJa2F0X1JTQV9TSEEzODQsIHNpemVvZihrYXRfUlNBX1NIQTM4NCks Ci0rCQkJCUVWUF9zaGEzODQoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9QS0NTMSwKLSsJCQkJIlJT QSBTSEEzODQgUEtDUyMxIikpCi0rCQlnb3RvIGVycjsKLSsJaWYgKCFmaXBzX3BrZXlfc2lnbmF0 dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0rCQkJCWthdF9SU0Ff U0hBNTEyLCBzaXplb2Yoa2F0X1JTQV9TSEE1MTIpLAotKwkJCQlFVlBfc2hhNTEyKCksIEVWUF9N RF9DVFhfRkxBR19QQURfUEtDUzEsCi0rCQkJCSJSU0EgU0hBNTEyIFBLQ1MjMSIpKQotKwkJZ290 byBlcnI7Ci0rCi0rCWlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBz aXplb2Yoa2F0X3RicykgLSAxLAotKwkJCQlrYXRfUlNBX1BTU19TSEExLCBzaXplb2Yoa2F0X1JT QV9QU1NfU0hBMSksCi0rCQkJCUVWUF9zaGExKCksIEVWUF9NRF9DVFhfRkxBR19QQURfUFNTLAot KwkJCQkiUlNBIFNIQTEgUFNTIikpCi0rCQlnb3RvIGVycjsKLSsJaWYgKCFmaXBzX3BrZXlfc2ln bmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0rCQkJCWthdF9S U0FfUFNTX1NIQTIyNCwgc2l6ZW9mKGthdF9SU0FfUFNTX1NIQTIyNCksCi0rCQkJCUVWUF9zaGEy MjQoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MsCi0rCQkJCSJSU0EgU0hBMjI0IFBTUyIpKQot KwkJZ290byBlcnI7Ci0rCWlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJz LCBzaXplb2Yoa2F0X3RicykgLSAxLAotKwkJCQlrYXRfUlNBX1BTU19TSEEyNTYsIHNpemVvZihr YXRfUlNBX1BTU19TSEEyNTYpLAotKwkJCQlFVlBfc2hhMjU2KCksIEVWUF9NRF9DVFhfRkxBR19Q QURfUFNTLAotKwkJCQkiUlNBIFNIQTI1NiBQU1MiKSkKLSsJCWdvdG8gZXJyOwotKwlpZiAoIWZp cHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwK LSsJCQkJa2F0X1JTQV9QU1NfU0hBMzg0LCBzaXplb2Yoa2F0X1JTQV9QU1NfU0hBMzg0KSwKLSsJ CQkJRVZQX3NoYTM4NCgpLCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywKLSsJCQkJIlJTQSBTSEEz ODQgUFNTIikpCi0rCQlnb3RvIGVycjsKLSsJaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3Qo cGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0rCQkJCWthdF9SU0FfUFNTX1NIQTUx Miwgc2l6ZW9mKGthdF9SU0FfUFNTX1NIQTUxMiksCi0rCQkJCUVWUF9zaGE1MTIoKSwgRVZQX01E X0NUWF9GTEFHX1BBRF9QU1MsCi0rCQkJCSJSU0EgU0hBNTEyIFBTUyIpKQotKwkJZ290byBlcnI7 Ci0rCi0rCi0rCWlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXpl b2Yoa2F0X3RicykgLSAxLAotKwkJCWthdF9SU0FfWDkzMV9TSEExLCBzaXplb2Yoa2F0X1JTQV9Y OTMxX1NIQTEpLAotKwkJCUVWUF9zaGExKCksIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSwKLSsJ CQkiUlNBIFNIQTEgWDkzMSIpKQotKwkJZ290byBlcnI7Ci0rCS8qIE5COiBTSEEyMjQgbm90IHN1 cHBvcnRlZCBpbiBYOS4zMSAqLwotKwlpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywg a2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKLSsJCQlrYXRfUlNBX1g5MzFfU0hBMjU2LCBz aXplb2Yoa2F0X1JTQV9YOTMxX1NIQTI1NiksCi0rCQkJRVZQX3NoYTI1NigpLCBFVlBfTURfQ1RY X0ZMQUdfUEFEX1g5MzEsCi0rCQkJIlJTQSBTSEEyNTYgWDkzMSIpKQotKwkJZ290byBlcnI7Ci0r CWlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3Ri cykgLSAxLAotKwkJCWthdF9SU0FfWDkzMV9TSEEzODQsIHNpemVvZihrYXRfUlNBX1g5MzFfU0hB Mzg0KSwKLSsJCQlFVlBfc2hhMzg0KCksIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSwKLSsJCQki UlNBIFNIQTM4NCBYOTMxIikpCi0rCQlnb3RvIGVycjsKLSsJaWYgKCFmaXBzX3BrZXlfc2lnbmF0 dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0rCQkJa2F0X1JTQV9Y OTMxX1NIQTUxMiwgc2l6ZW9mKGthdF9SU0FfWDkzMV9TSEE1MTIpLAotKwkJCUVWUF9zaGE1MTIo KSwgRVZQX01EX0NUWF9GTEFHX1BBRF9YOTMxLAotKwkJCSJSU0EgU0hBNTEyIFg5MzEiKSkKLSsJ CWdvdG8gZXJyOwotKwotKwotKwlyZXQgPSAxOwotKwotKwllcnI6Ci0rCWlmIChwaykKLSsJCUVW UF9QS0VZX2ZyZWUocGspOwotKwllbHNlIGlmIChrZXkpCi0rCQlSU0FfZnJlZShrZXkpOwotKwly ZXR1cm4gcmV0OwotKwl9Ci0rCi0rI2VuZGlmIC8qIGRlZiBPUEVOU1NMX0ZJUFMgKi8KLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfcnNhX3g5MzFnLmMuZmlwcyBvcGVu c3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX3JzYV94OTMxZy5jCi0tLS0gb3BlbnNzbC0xLjAu MWsvY3J5cHRvL2ZpcHMvZmlwc19yc2FfeDkzMWcuYy5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEu NTY2OTIyNjMwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19yc2Ff eDkzMWcuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2NjkyMjYzMCArMDEwMAotQEAgLTAsMCArMSwy ODIgQEAKLSsvKiBjcnlwdG8vcnNhL3JzYV9nZW4uYyAqLwotKy8qIENvcHlyaWdodCAoQykgMTk5 NS0xOTk4IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKQotKyAqIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCi0rICoKLSsgKiBUaGlzIHBhY2thZ2UgaXMgYW4gU1NMIGltcGxlbWVudGF0aW9uIHdy aXR0ZW4KLSsgKiBieSBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkuCi0rICogVGhlIGlt cGxlbWVudGF0aW9uIHdhcyB3cml0dGVuIHNvIGFzIHRvIGNvbmZvcm0gd2l0aCBOZXRzY2FwZXMg U1NMLgotKyAqIAotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIGZvciBjb21tZXJjaWFsIGFuZCBu b24tY29tbWVyY2lhbCB1c2UgYXMgbG9uZyBhcwotKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u cyBhcmUgYWhlYXJlZCB0by4gIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFwcGx5IHRv IGFsbCBjb2RlIGZvdW5kIGluIHRoaXMgZGlzdHJpYnV0aW9uLCBiZSBpdCB0aGUgUkM0LCBSU0Es Ci0rICogbGhhc2gsIERFUywgZXRjLiwgY29kZTsgbm90IGp1c3QgdGhlIFNTTCBjb2RlLiAgVGhl IFNTTCBkb2N1bWVudGF0aW9uCi0rICogaW5jbHVkZWQgd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbiBp cyBjb3ZlcmVkIGJ5IHRoZSBzYW1lIGNvcHlyaWdodCB0ZXJtcwotKyAqIGV4Y2VwdCB0aGF0IHRo ZSBob2xkZXIgaXMgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgotKyAqIAotKyAqIENv cHlyaWdodCByZW1haW5zIEVyaWMgWW91bmcncywgYW5kIGFzIHN1Y2ggYW55IENvcHlyaWdodCBu b3RpY2VzIGluCi0rICogdGhlIGNvZGUgYXJlIG5vdCB0byBiZSByZW1vdmVkLgotKyAqIElmIHRo aXMgcGFja2FnZSBpcyB1c2VkIGluIGEgcHJvZHVjdCwgRXJpYyBZb3VuZyBzaG91bGQgYmUgZ2l2 ZW4gYXR0cmlidXRpb24KLSsgKiBhcyB0aGUgYXV0aG9yIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbGli cmFyeSB1c2VkLgotKyAqIFRoaXMgY2FuIGJlIGluIHRoZSBmb3JtIG9mIGEgdGV4dHVhbCBtZXNz YWdlIGF0IHByb2dyYW0gc3RhcnR1cCBvcgotKyAqIGluIGRvY3VtZW50YXRpb24gKG9ubGluZSBv ciB0ZXh0dWFsKSBwcm92aWRlZCB3aXRoIHRoZSBwYWNrYWdlLgotKyAqIAotKyAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICogMS4gUmVkaXN0cmlidXRpb25zIG9m IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICog Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92 ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0rICogICAgZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSsgKiAz LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m IHRoaXMgc29mdHdhcmUKLSsgKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnZW1lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNv ZnR3YXJlIHdyaXR0ZW4gYnkKLSsgKiAgICAgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20p IgotKyAqICAgIFRoZSB3b3JkICdjcnlwdG9ncmFwaGljJyBjYW4gYmUgbGVmdCBvdXQgaWYgdGhl IHJvdWluZXMgZnJvbSB0aGUgbGlicmFyeQotKyAqICAgIGJlaW5nIHVzZWQgYXJlIG5vdCBjcnlw dG9ncmFwaGljIHJlbGF0ZWQgOi0pLgotKyAqIDQuIElmIHlvdSBpbmNsdWRlIGFueSBXaW5kb3dz IHNwZWNpZmljIGNvZGUgKG9yIGEgZGVyaXZhdGl2ZSB0aGVyZW9mKSBmcm9tIAotKyAqICAgIHRo ZSBhcHBzIGRpcmVjdG9yeSAoYXBwbGljYXRpb24gY29kZSkgeW91IG11c3QgaW5jbHVkZSBhbiBh Y2tub3dsZWRnZW1lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3 cml0dGVuIGJ5IFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKSIKLSsgKiAKLSsgKiBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVSSUMgWU9VTkcgYGBBUyBJUycnIEFORAotKyAqIEFO WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0rICogQVJFIERJU0NMQUlNRUQuICBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSsg KiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS WSwgT1IgQ09OU0VRVUVOVElBTAotKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0rICogT1IgU0VSVklDRVM7 IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p Ci0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0rICogT1VUIE9G IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ TElUWSBPRgotKyAqIFNVQ0ggREFNQUdFLgotKyAqIAotKyAqIFRoZSBsaWNlbmNlIGFuZCBkaXN0 cmlidXRpb24gdGVybXMgZm9yIGFueSBwdWJsaWNhbGx5IGF2YWlsYWJsZSB2ZXJzaW9uIG9yCi0r ICogZGVyaXZhdGl2ZSBvZiB0aGlzIGNvZGUgY2Fubm90IGJlIGNoYW5nZWQuICBpLmUuIHRoaXMg Y29kZSBjYW5ub3Qgc2ltcGx5IGJlCi0rICogY29waWVkIGFuZCBwdXQgdW5kZXIgYW5vdGhlciBk aXN0cmlidXRpb24gbGljZW5jZQotKyAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5j ZS5dCi0rICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgot KyNpbmNsdWRlIDx0aW1lLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUg PG9wZW5zc2wvYm4uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KLSsjaWZkZWYgT1BFTlNT TF9GSVBTCi0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKwotK2V4dGVybiBpbnQgZmlwc19j aGVja19yc2EoUlNBICpyc2EpOwotKyNlbmRpZgotKwotKy8qIFg5LjMxIFJTQSBrZXkgZGVyaXZh dGlvbiBhbmQgZ2VuZXJhdGlvbiAqLwotKwotK2ludCBSU0FfWDkzMV9kZXJpdmVfZXgoUlNBICpy c2EsIEJJR05VTSAqcDEsIEJJR05VTSAqcDIsIEJJR05VTSAqcTEsIEJJR05VTSAqcTIsCi0rCQkJ Y29uc3QgQklHTlVNICpYcDEsIGNvbnN0IEJJR05VTSAqWHAyLCBjb25zdCBCSUdOVU0gKlhwLAot KwkJCWNvbnN0IEJJR05VTSAqWHExLCBjb25zdCBCSUdOVU0gKlhxMiwgY29uc3QgQklHTlVNICpY cSwKLSsJCQljb25zdCBCSUdOVU0gKmUsIEJOX0dFTkNCICpjYikKLSsJewotKwlCSUdOVU0gKnIw PU5VTEwsKnIxPU5VTEwsKnIyPU5VTEwsKnIzPU5VTEw7Ci0rCUJOX0NUWCAqY3R4PU5VTEwsKmN0 eDI9TlVMTDsKLSsKLSsJaWYgKCFyc2EpIAotKwkJZ290byBlcnI7Ci0rCi0rCWN0eCA9IEJOX0NU WF9uZXcoKTsKLSsJaWYgKCFjdHgpIAotKwkJZ290byBlcnI7Ci0rCUJOX0NUWF9zdGFydChjdHgp OwotKwotKwlyMCA9IEJOX0NUWF9nZXQoY3R4KTsKLSsJcjEgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0r CXIyID0gQk5fQ1RYX2dldChjdHgpOwotKwlyMyA9IEJOX0NUWF9nZXQoY3R4KTsKLSsKLSsJaWYg KHIzID09IE5VTEwpCi0rCQlnb3RvIGVycjsKLSsJaWYgKCFyc2EtPmUpCi0rCQl7Ci0rCQlyc2Et PmUgPSBCTl9kdXAoZSk7Ci0rCQlpZiAoIXJzYS0+ZSkKLSsJCQlnb3RvIGVycjsKLSsJCX0KLSsJ ZWxzZQotKwkJZSA9IHJzYS0+ZTsKLSsKLSsJLyogSWYgbm90IGFsbCBwYXJhbWV0ZXJzIHByZXNl bnQgb25seSBjYWxjdWxhdGUgd2hhdCB3ZSBjYW4uCi0rCSAqIFRoaXMgYWxsb3dzIHRlc3QgcHJv Z3JhbXMgdG8gb3V0cHV0IHNlbGVjdGl2ZSBwYXJhbWV0ZXJzLgotKwkgKi8KLSsKLSsJaWYgKFhw ICYmICFyc2EtPnApCi0rCQl7Ci0rCQlyc2EtPnAgPSBCTl9uZXcoKTsKLSsJCWlmICghcnNhLT5w KQotKwkJCWdvdG8gZXJyOwotKwotKwkJaWYgKCFCTl9YOTMxX2Rlcml2ZV9wcmltZV9leChyc2Et PnAsIHAxLCBwMiwKLSsJCQkJCVhwLCBYcDEsIFhwMiwgZSwgY3R4LCBjYikpCi0rCQkJZ290byBl cnI7Ci0rCQl9Ci0rCi0rCWlmIChYcSAmJiAhcnNhLT5xKQotKwkJewotKwkJcnNhLT5xID0gQk5f bmV3KCk7Ci0rCQlpZiAoIXJzYS0+cSkKLSsJCQlnb3RvIGVycjsKLSsJCWlmICghQk5fWDkzMV9k ZXJpdmVfcHJpbWVfZXgocnNhLT5xLCBxMSwgcTIsCi0rCQkJCQlYcSwgWHExLCBYcTIsIGUsIGN0 eCwgY2IpKQotKwkJCWdvdG8gZXJyOwotKwkJfQotKwotKwlpZiAoIXJzYS0+cCB8fCAhcnNhLT5x KQotKwkJewotKwkJQk5fQ1RYX2VuZChjdHgpOwotKwkJQk5fQ1RYX2ZyZWUoY3R4KTsKLSsJCXJl dHVybiAyOwotKwkJfQotKwotKwkvKiBTaW5jZSBib3RoIHByaW1lcyBhcmUgc2V0IHdlIGNhbiBu b3cgY2FsY3VsYXRlIGFsbCByZW1haW5pbmcgCi0rCSAqIGNvbXBvbmVudHMuCi0rCSAqLwotKwot KwkvKiBjYWxjdWxhdGUgbiAqLwotKwlyc2EtPm49Qk5fbmV3KCk7Ci0rCWlmIChyc2EtPm4gPT0g TlVMTCkKLSsJCWdvdG8gZXJyOwotKwlpZiAoIUJOX211bChyc2EtPm4scnNhLT5wLHJzYS0+cSxj dHgpKQotKwkJZ290byBlcnI7Ci0rCi0rCS8qIGNhbGN1bGF0ZSBkICovCi0rCWlmICghQk5fc3Vi KHIxLHJzYS0+cCxCTl92YWx1ZV9vbmUoKSkpCi0rCQlnb3RvIGVycjsJLyogcC0xICovCi0rCWlm ICghQk5fc3ViKHIyLHJzYS0+cSxCTl92YWx1ZV9vbmUoKSkpCi0rCQlnb3RvIGVycjsJLyogcS0x ICovCi0rCWlmICghQk5fbXVsKHIwLHIxLHIyLGN0eCkpCi0rCQlnb3RvIGVycjsJLyogKHAtMSko cS0xKSAqLwotKwotKwlpZiAoIUJOX2djZChyMywgcjEsIHIyLCBjdHgpKQotKwkJZ290byBlcnI7 Ci0rCi0rCWlmICghQk5fZGl2KHIwLCBOVUxMLCByMCwgcjMsIGN0eCkpCi0rCQlnb3RvIGVycjsJ LyogTENNKChwLTEpKHEtMSkpICovCi0rCi0rCWN0eDIgPSBCTl9DVFhfbmV3KCk7Ci0rCWlmICgh Y3R4MikKLSsJCWdvdG8gZXJyOwotKwotKwlyc2EtPmQ9Qk5fbW9kX2ludmVyc2UoTlVMTCxyc2Et PmUscjAsY3R4Mik7CS8qIGQgKi8KLSsJaWYgKHJzYS0+ZCA9PSBOVUxMKQotKwkJZ290byBlcnI7 Ci0rCi0rCS8qIGNhbGN1bGF0ZSBkIG1vZCAocC0xKSAqLwotKwlyc2EtPmRtcDE9Qk5fbmV3KCk7 Ci0rCWlmIChyc2EtPmRtcDEgPT0gTlVMTCkKLSsJCWdvdG8gZXJyOwotKwlpZiAoIUJOX21vZChy c2EtPmRtcDEscnNhLT5kLHIxLGN0eCkpCi0rCQlnb3RvIGVycjsKLSsKLSsJLyogY2FsY3VsYXRl IGQgbW9kIChxLTEpICovCi0rCXJzYS0+ZG1xMT1CTl9uZXcoKTsKLSsJaWYgKHJzYS0+ZG1xMSA9 PSBOVUxMKQotKwkJZ290byBlcnI7Ci0rCWlmICghQk5fbW9kKHJzYS0+ZG1xMSxyc2EtPmQscjIs Y3R4KSkKLSsJCWdvdG8gZXJyOwotKwotKwkvKiBjYWxjdWxhdGUgaW52ZXJzZSBvZiBxIG1vZCBw ICovCi0rCXJzYS0+aXFtcD1CTl9tb2RfaW52ZXJzZShOVUxMLHJzYS0+cSxyc2EtPnAsY3R4Mik7 Ci0rCi0rCWVycjoKLSsJaWYgKGN0eCkKLSsJCXsKLSsJCUJOX0NUWF9lbmQoY3R4KTsKLSsJCUJO X0NUWF9mcmVlKGN0eCk7Ci0rCQl9Ci0rCWlmIChjdHgyKQotKwkJQk5fQ1RYX2ZyZWUoY3R4Mik7 Ci0rCS8qIElmIHRoaXMgaXMgc2V0IGFsbCBjYWxscyBzdWNjZXNzZnVsICovCi0rCWlmIChyc2Eg JiYgcnNhLT5pcW1wICE9IE5VTEwpCi0rCQlyZXR1cm4gMTsKLSsKLSsJcmV0dXJuIDA7Ci0rCi0r CX0KLSsKLStpbnQgUlNBX1g5MzFfZ2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNhLCBpbnQgYml0cywg Y29uc3QgQklHTlVNICplLCBCTl9HRU5DQiAqY2IpCi0rCXsKLSsJaW50IG9rID0gMDsKLSsJQklH TlVNICpYcCA9IE5VTEwsICpYcSA9IE5VTEw7Ci0rCUJOX0NUWCAqY3R4ID0gTlVMTDsKLSsKLSsj aWZkZWYgT1BFTlNTTF9GSVBTCi0rCWlmIChGSVBTX21vZGUoKSAmJiAhKHJzYS0+ZmxhZ3MgJiBS U0FfRkxBR19OT05fRklQU19BTExPVykgJiYgCi0rCQkoYml0cyA8IE9QRU5TU0xfUlNBX0ZJUFNf TUlOX01PRFVMVVNfQklUUykpCi0rCSAgICB7Ci0rCSAgICBGSVBTZXJyKEZJUFNfRl9SU0FfWDkz MV9HRU5FUkFURV9LRVlfRVgsRklQU19SX0tFWV9UT09fU0hPUlQpOwotKwkgICAgcmV0dXJuIDA7 Ci0rCSAgICB9Ci0rCi0rCWlmIChiaXRzICYgMHhmZikKLSsJICAgIHsKLSsJICAgIEZJUFNlcnIo RklQU19GX1JTQV9YOTMxX0dFTkVSQVRFX0tFWV9FWCxGSVBTX1JfSU5WQUxJRF9LRVlfTEVOR1RI KTsKLSsJICAgIHJldHVybiAwOwotKwkgICAgfQotKwotKwlpZihGSVBTX3NlbGZ0ZXN0X2ZhaWxl ZCgpKQotKwkgICAgewotKwkgICAgRklQU2VycihGSVBTX0ZfUlNBX1g5MzFfR0VORVJBVEVfS0VZ X0VYLEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rCSAgICByZXR1cm4gMDsKLSsJICAg IH0KLSsjZW5kaWYKLSsKLSsJY3R4ID0gQk5fQ1RYX25ldygpOwotKwlpZiAoIWN0eCkKLSsJCWdv dG8gZXJyb3I7Ci0rCi0rCUJOX0NUWF9zdGFydChjdHgpOwotKwlYcCA9IEJOX0NUWF9nZXQoY3R4 KTsKLSsJWHEgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rCWlmICghQk5fWDkzMV9nZW5lcmF0ZV9YcHEo WHAsIFhxLCBiaXRzLCBjdHgpKQotKwkJZ290byBlcnJvcjsKLSsKLSsJcnNhLT5wID0gQk5fbmV3 KCk7Ci0rCXJzYS0+cSA9IEJOX25ldygpOwotKwlpZiAoIXJzYS0+cCB8fCAhcnNhLT5xKQotKwkJ Z290byBlcnJvcjsKLSsKLSsJLyogR2VuZXJhdGUgdHdvIHByaW1lcyBmcm9tIFhwLCBYcSAqLwot KwotKwlpZiAoIUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXgocnNhLT5wLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMLCBYcCwKLSsJCQkJCWUsIGN0eCwgY2IpKQotKwkJZ290byBlcnJvcjsKLSsKLSsJ aWYgKCFCTl9YOTMxX2dlbmVyYXRlX3ByaW1lX2V4KHJzYS0+cSwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCwgWHEsCi0rCQkJCQllLCBjdHgsIGNiKSkKLSsJCWdvdG8gZXJyb3I7Ci0rCi0rCS8qIFNp bmNlIHJzYS0+cCBhbmQgcnNhLT5xIGFyZSB2YWxpZCB0aGlzIGNhbGwgd2lsbCBqdXN0IGRlcml2 ZQotKwkgKiByZW1haW5pbmcgUlNBIGNvbXBvbmVudHMuCi0rCSAqLwotKwotKwlpZiAoIVJTQV9Y OTMxX2Rlcml2ZV9leChyc2EsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCi0rCQkJCU5VTEwsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGUsIGNiKSkKLSsJCWdvdG8gZXJyb3I7Ci0rCi0r I2lmZGVmIE9QRU5TU0xfRklQUwotKwlpZighZmlwc19jaGVja19yc2EocnNhKSkKLSsJICAgIGdv dG8gZXJyb3I7Ci0rI2VuZGlmCi0rCi0rCW9rID0gMTsKLSsKLSsJZXJyb3I6Ci0rCWlmIChjdHgp Ci0rCQl7Ci0rCQlCTl9DVFhfZW5kKGN0eCk7Ci0rCQlCTl9DVFhfZnJlZShjdHgpOwotKwkJfQot KwotKwlpZiAob2spCi0rCQlyZXR1cm4gMTsKLSsKLSsJcmV0dXJuIDA7Ci0rCi0rCX0KLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfc2hhX3NlbGZ0ZXN0LmMuZmlwcyBv cGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX3NoYV9zZWxmdGVzdC5jCi0tLS0gb3BlbnNz bC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19zaGFfc2VsZnRlc3QuYy5maXBzCTIwMTUtMDEtMDkg MDk6NTE6NTEuNTY2OTIyNjMwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMv Zmlwc19zaGFfc2VsZnRlc3QuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2NjkyMjYzMCArMDEwMAot QEAgLTAsMCArMSwxNDAgQEAKLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAw MyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3Ry aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAg IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0 ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2Fy ZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9q ZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5v cGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFu ZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBv ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsg KiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBs ZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICog NS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQg Ik9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVz IHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wg UHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29l dmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRw Oi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF Ci0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICog Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVk ZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2lmZGVmIE9QRU5TU0xf RklQUwotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8b3Bl bnNzbC9ldnAuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KLSsKLSsjaWZkZWYgT1BFTlNT TF9GSVBTCi0rc3RhdGljIGNvbnN0IGNoYXIgdGVzdFtdWzYwXT0KLSsgICAgewotKyAgICAiIiwK LSsgICAgImFiYyIsCi0rICAgICJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xq a2xta2xtbmxtbm9tbm9wbm9wcSIKLSsgICAgfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciByZXRbXVtTSEFfRElHRVNUX0xFTkdUSF09Ci0rICAgIHsKLSsgICAgeyAweGRhLDB4Mzks MHhhMywweGVlLDB4NWUsMHg2YiwweDRiLDB4MGQsMHgzMiwweDU1LAotKyAgICAgIDB4YmYsMHhl ZiwweDk1LDB4NjAsMHgxOCwweDkwLDB4YWYsMHhkOCwweDA3LDB4MDkgfSwKLSsgICAgeyAweGE5 LDB4OTksMHgzZSwweDM2LDB4NDcsMHgwNiwweDgxLDB4NmEsMHhiYSwweDNlLAotKyAgICAgIDB4 MjUsMHg3MSwweDc4LDB4NTAsMHhjMiwweDZjLDB4OWMsMHhkMCwweGQ4LDB4OWQgfSwKLSsgICAg eyAweDg0LDB4OTgsMHgzZSwweDQ0LDB4MWMsMHgzYiwweGQyLDB4NmUsMHhiYSwweGFlLAotKyAg ICAgIDB4NGEsMHhhMSwweGY5LDB4NTEsMHgyOSwweGU1LDB4ZTUsMHg0NiwweDcwLDB4ZjEgfSwK LSsgICAgfTsKLSsKLStzdGF0aWMgaW50IGNvcnJ1cHRfc2hhOwotKwotK3ZvaWQgRklQU19jb3Jy dXB0X3NoYTEoKQotKyAgICB7Ci0rICAgIGNvcnJ1cHRfc2hhID0gMTsKLSsgICAgfQotKwotK2lu dCBGSVBTX3NlbGZ0ZXN0X3NoYTEoKQotKyAgICB7Ci0rICAgIGludCBuOwotKwotKyAgICBmb3Io bj0wIDsgbjxzaXplb2YodGVzdCkvc2l6ZW9mKHRlc3RbMF0pIDsgKytuKQotKwl7Ci0rCXVuc2ln bmVkIGNoYXIgbWRbU0hBX0RJR0VTVF9MRU5HVEhdOwotKwotKwlFVlBfRGlnZXN0KHRlc3Rbbl0s c3RybGVuKHRlc3Rbbl0pK2NvcnJ1cHRfc2hhLG1kLCBOVUxMLCBFVlBfc2hhMSgpLCBOVUxMKTsK LSsJaWYobWVtY21wKG1kLHJldFtuXSxzaXplb2YgbWQpKQotKwkgICAgewotKwkgICAgRklQU2Vy cihGSVBTX0ZfRklQU19TRUxGVEVTVF9TSEExLEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOwotKwkg ICAgcmV0dXJuIDA7Ci0rCSAgICB9Ci0rCX0KLSsgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBtc2dfc2hhMjU2W10gPSB7IDB4ZmEsIDB4NDgsIDB4 NTksIDB4MmEsIDB4ZTEsIDB4YWUsIDB4MWYsIDB4MzAsCi0rCQkJCQkgICAgMHhmYyB9OwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRpZ19zaGEyNTZbXSA9IHsgMHhmNywgMHgyNiwgMHhk OCwgMHg5OCwgMHg0NywgMHg5MSwgMHg2OCwgMHg1YiwKLSsJCQkJCSAgICAweDllLCAweDM5LCAw eGIyLCAweDU4LCAweGJiLCAweDc1LCAweGJmLCAweDAxLAotKwkJCQkJICAgIDB4MTcsIDB4MGMs IDB4ODQsIDB4MDAsIDB4MDEsIDB4N2EsIDB4OTQsIDB4ODMsCi0rCQkJCQkgICAgMHhmMywgMHgw YiwgMHgxNSwgMHg4NCwgMHg0YiwgMHg2OSwgMHg4OCwgMHg4YSB9OwotKwotK3N0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIG1zZ19zaGE1MTJbXSA9IHsgMHgzNywgMHhkMSwgMHgzNSwgMHg5ZCwg MHgxOCwgMHg0MSwgMHhlOSwgMHhiNywKLSsJCQkJCSAgICAweDZkLCAweDlhLCAweDEzLCAweGRh LCAweDVmLCAweGYzLCAweGJkIH07Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGlnX3No YTUxMltdID0geyAweDExLCAweDEzLCAweGM0LCAweDE5LCAweGVkLCAweDJiLCAweDFkLCAweDE2 LAotKwkJCQkJICAgIDB4MTEsIDB4ZWIsIDB4OWIsIDB4YmUsIDB4ZjAsIDB4N2YsIDB4Y2YsIDB4 NDQsCi0rCQkJCQkgICAgMHg4YiwgMHhkNywgMHg1NywgMHhiZCwgMHg4ZCwgMHhhOSwgMHgyNSwg MHhiMCwKLSsJCQkJCSAgICAweDQ3LCAweDI1LCAweGQ2LCAweDZjLCAweDlhLCAweDU0LCAweDdm LCAweDhmLAotKwkJCQkJICAgIDB4MGIsIDB4NTMsIDB4MWEsIDB4MTAsIDB4NjgsIDB4MzIsIDB4 MDMsIDB4MzgsCi0rCQkJCQkgICAgMHg4MiwgMHhjNCwgMHg4NywgMHhjNCwgMHhlYSwgMHgwZSwg MHhkMSwgMHgwNCwKLSsJCQkJCSAgICAweGE5LCAweDk4LCAweGMxLCAweDA1LCAweGEzLCAweGYz LCAweGY4LCAweGIxLAotKwkJCQkJICAgIDB4YWYsIDB4YmMsIDB4ZDksIDB4NzgsIDB4N2UsIDB4 ZWUsIDB4M2QsIDB4NDMgfTsKLSsKLStpbnQgRklQU19zZWxmdGVzdF9zaGEyKHZvaWQpCi0rCXsK LSsJdW5zaWduZWQgY2hhciBtZFtTSEE1MTJfRElHRVNUX0xFTkdUSF07Ci0rCi0rCUVWUF9EaWdl c3QobXNnX3NoYTI1Niwgc2l6ZW9mKG1zZ19zaGEyNTYpLCBtZCwgTlVMTCwgRVZQX3NoYTI1Nigp LCBOVUxMKTsKLSsJaWYobWVtY21wKGRpZ19zaGEyNTYsIG1kLCBzaXplb2YoZGlnX3NoYTI1Nikp KQotKwkJewotKwkJRklQU2VycihGSVBTX0ZfRklQU19NT0RFX1NFVCwgRklQU19SX1NFTEZURVNU X0ZBSUxFRCk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsKLSsJRVZQX0RpZ2VzdChtc2dfc2hhNTEy LCBzaXplb2YobXNnX3NoYTUxMiksIG1kLCBOVUxMLCBFVlBfc2hhNTEyKCksIE5VTEwpOwotKwlp ZihtZW1jbXAoZGlnX3NoYTUxMiwgbWQsIHNpemVvZihkaWdfc2hhNTEyKSkpCi0rCQl7Ci0rCQlG SVBTZXJyKEZJUFNfRl9GSVBTX01PREVfU0VULCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsJ CXJldHVybiAwOwotKwkJfQotKwotKwlyZXR1cm4gMTsKLSsJfQotKwotKyNlbmRpZgotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc19zdGFuZGFsb25lX2htYWMuYy5maXBz IG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL2ZpcHNfc3RhbmRhbG9uZV9obWFjLmMKLS0tLSBv cGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX3N0YW5kYWxvbmVfaG1hYy5jLmZpcHMJMjAx NS0wMS0wOSAwOTo1MTo1MS41Njc5MjI2NTMgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlw dG8vZmlwcy9maXBzX3N0YW5kYWxvbmVfaG1hYy5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTY3OTIy NjUzICswMTAwCi1AQCAtMCwwICsxLDIzNiBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJp Z2h0IChjKSAyMDAzIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot KyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAq IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg Y29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy IGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZl cnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAq ICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50Ogot KyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBP cGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuICho dHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wg VG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAg ICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg d2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVy bWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcu Ci0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90 IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4g dGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0 aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBm b3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xl ZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRv b2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUg SVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAq IEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J VEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg SU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklC VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsg KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H LCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E UyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT SU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZ LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lO RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW SVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwot KwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8 c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9zaGEuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+Ci0rCi0rI2lmbmRlZiBG SVBTQ0FOSVNURVJfTwotK2ludCBGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpIHsgcmV0dXJuIDA7IH0K LSt2b2lkIEZJUFNfc2VsZnRlc3RfY2hlY2soKSB7fQotKyNlbmRpZgotKwotKyNpZmRlZiBPUEVO U1NMX0ZJUFMKLStpbnQgYm5fbXVsX21vbnRfZnB1NjQoQk5fVUxPTkcgKnJwLCBjb25zdCBCTl9V TE9ORyAqYXAsIGNvbnN0IEJOX1VMT05HICpicCwgY29uc3QgQk5fVUxPTkcgKm5wLCBjb25zdCBC Tl9VTE9ORyAqbjAsIGludCBudW0pIHsgcmV0dXJuIDA7IH07Ci0raW50IGJuX211bF9tb250X2lu dChCTl9VTE9ORyAqcnAsIGNvbnN0IEJOX1VMT05HICphcCwgY29uc3QgQk5fVUxPTkcgKmJwLCBj b25zdCBCTl9VTE9ORyAqbnAsIGNvbnN0IEJOX1VMT05HICpuMCwgaW50IG51bSkgeyByZXR1cm4g MDsgfTsKLSsKLSsjaWYJZGVmaW5lZChfX2kzODYpICAgfHwgZGVmaW5lZChfX2kzODZfXykgICB8 fCBkZWZpbmVkKF9NX0lYODYpIHx8IFwKLSsJZGVmaW5lZChfX0lOVEVMX18pIHx8IFwKLSsJZGVm aW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX0FNRDY0 KSB8fCBkZWZpbmVkKF9NX1g2NCkKLSsKLSt1bnNpZ25lZCBpbnQgIE9QRU5TU0xfaWEzMmNhcF9Q WzJdOwotK3Vuc2lnbmVkIGxvbmcgKk9QRU5TU0xfaWEzMmNhcF9sb2Modm9pZCkKLSt7ICAgaWYg KHNpemVvZihsb25nKT09NCkKLSsJLyoKLSsJICogSWYgMzItYml0IGFwcGxpY2F0aW9uIHB1bGxz IGFkZHJlc3Mgb2YgT1BFTlNTTF9pYTMyY2FwX1BbMF0KLSsJICogY2xlYXIgc2Vjb25kIGVsZW1l bnQgdG8gbWFpbnRhaW4gdGhlIGlsbHVzaW9uIHRoYXQgdmVjdG9yCi0rCSAqIGlzIDMyLWJpdC4K LSsJICovCi0rCU9QRU5TU0xfaWEzMmNhcF9QWzFdPTA7Ci0rICAgIHJldHVybiAodW5zaWduZWQg bG9uZyAqKU9QRU5TU0xfaWEzMmNhcF9QOwotK30KLSsKLSsjaWYgZGVmaW5lZChPUEVOU1NMX0NQ VUlEX09CSikgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19BU00pICYmICFkZWZpbmVkKEkzODZfT05M WSkKLSsjZGVmaW5lIE9QRU5TU0xfQ1BVSURfU0VUVVAKLSsjaWYgZGVmaW5lZChfV0lOMzIpCi0r dHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IElBMzJDQVA7Ci0rI2Vsc2UKLSt0eXBlZGVmIHVuc2ln bmVkIGxvbmcgbG9uZyBJQTMyQ0FQOwotKyNlbmRpZgotK3ZvaWQgT1BFTlNTTF9jcHVpZF9zZXR1 cCh2b2lkKQotK3sgc3RhdGljIGludCB0cmlnZ2VyPTA7Ci0rICBJQTMyQ0FQIE9QRU5TU0xfaWEz Ml9jcHVpZCh2b2lkKTsKLSsgIElBMzJDQVAgdmVjOwotKyAgY2hhciAqZW52OwotKwotKyAgICBp ZiAodHJpZ2dlcikJcmV0dXJuOwotKwotKyAgICB0cmlnZ2VyPTE7Ci0rICAgIGlmICgoZW52PWdl dGVudigiT1BFTlNTTF9pYTMyY2FwIikpKSB7Ci0rCWludCBvZmYgPSAoZW52WzBdPT0nficpPzE6 MDsKLSsjaWYgZGVmaW5lZChfV0lOMzIpCi0rCWlmICghc3NjYW5mKGVuditvZmYsIiVJNjRpIiwm dmVjKSkgdmVjID0gc3RydG91bChlbnYrb2ZmLE5VTEwsMCk7Ci0rI2Vsc2UKLSsJaWYgKCFzc2Nh bmYoZW52K29mZiwiJWxsaSIsKGxvbmcgbG9uZyAqKSZ2ZWMpKSB2ZWMgPSBzdHJ0b3VsKGVuditv ZmYsTlVMTCwwKTsKLSsjZW5kaWYKLSsJaWYgKG9mZikgdmVjID0gT1BFTlNTTF9pYTMyX2NwdWlk KCkmfnZlYzsKLSsgICAgfQotKyAgICBlbHNlCi0rCXZlYyA9IE9QRU5TU0xfaWEzMl9jcHVpZCgp OwotKwotKyAgICAvKgotKyAgICAgKiB8KDE8PDEwKSBzZXRzIGEgcmVzZXJ2ZWQgYml0IHRvIHNp Z25hbCB0aGF0IHZhcmlhYmxlCi0rICAgICAqIHdhcyBpbml0aWFsaXplZCBhbHJlYWR5Li4uIFRo aXMgaXMgdG8gYXZvaWQgaW50ZXJmZXJlbmNlCi0rICAgICAqIHdpdGggY3B1aWQgc25pcHBldHMg aW4gRUxGIC5pbml0IHNlZ21lbnQuCi0rICAgICAqLwotKyAgICBPUEVOU1NMX2lhMzJjYXBfUFsw XSA9ICh1bnNpZ25lZCBpbnQpdmVjfCgxPDwxMCk7Ci0rICAgIE9QRU5TU0xfaWEzMmNhcF9QWzFd ID0gKHVuc2lnbmVkIGludCkodmVjPj4zMik7Ci0rfQotKyNlbmRpZgotKwotKyNlbHNlCi0rdW5z aWduZWQgbG9uZyAqT1BFTlNTTF9pYTMyY2FwX2xvYyh2b2lkKSB7IHJldHVybiBOVUxMOyB9Ci0r I2VuZGlmCi0raW50IE9QRU5TU0xfTk9OUElDX3JlbG9jYXRlZCA9IDA7Ci0rI2lmICFkZWZpbmVk KE9QRU5TU0xfQ1BVSURfU0VUVVApICYmICFkZWZpbmVkKE9QRU5TU0xfQ1BVSURfT0JKKQotK3Zv aWQgT1BFTlNTTF9jcHVpZF9zZXR1cCh2b2lkKSB7fQotKyNlbmRpZgotKwotK3N0YXRpYyB2b2lk IGhtYWNfaW5pdChTSEEyNTZfQ1RYICptZF9jdHgsU0hBMjU2X0NUWCAqb19jdHgsCi0rCQkgICAg ICBjb25zdCBjaGFyICprZXkpCi0rICAgIHsKLSsgICAgc2l6ZV90IGxlbj1zdHJsZW4oa2V5KTsK LSsgICAgaW50IGk7Ci0rICAgIHVuc2lnbmVkIGNoYXIga2V5bWRbSE1BQ19NQVhfTURfQ0JMT0NL XTsKLSsgICAgdW5zaWduZWQgY2hhciBwYWRbSE1BQ19NQVhfTURfQ0JMT0NLXTsKLSsKLSsgICAg aWYgKGxlbiA+IFNIQV9DQkxPQ0spCi0rCXsKLSsJU0hBMjU2X0luaXQobWRfY3R4KTsKLSsJU0hB MjU2X1VwZGF0ZShtZF9jdHgsa2V5LGxlbik7Ci0rCVNIQTI1Nl9GaW5hbChrZXltZCxtZF9jdHgp OwotKwlsZW49U0hBMjU2X0RJR0VTVF9MRU5HVEg7Ci0rCX0KLSsgICAgZWxzZQotKwltZW1jcHko a2V5bWQsa2V5LGxlbik7Ci0rICAgIG1lbXNldCgma2V5bWRbbGVuXSwnXDAnLEhNQUNfTUFYX01E X0NCTE9DSy1sZW4pOwotKwotKyAgICBmb3IoaT0wIDsgaSA8IEhNQUNfTUFYX01EX0NCTE9DSyA7 IGkrKykKLSsJcGFkW2ldPTB4MzZea2V5bWRbaV07Ci0rICAgIFNIQTI1Nl9Jbml0KG1kX2N0eCk7 Ci0rICAgIFNIQTI1Nl9VcGRhdGUobWRfY3R4LHBhZCxTSEEyNTZfQ0JMT0NLKTsKLSsKLSsgICAg Zm9yKGk9MCA7IGkgPCBITUFDX01BWF9NRF9DQkxPQ0sgOyBpKyspCi0rCXBhZFtpXT0weDVjXmtl eW1kW2ldOwotKyAgICBTSEEyNTZfSW5pdChvX2N0eCk7Ci0rICAgIFNIQTI1Nl9VcGRhdGUob19j dHgscGFkLFNIQTI1Nl9DQkxPQ0spOwotKyAgICB9Ci0rCi0rc3RhdGljIHZvaWQgaG1hY19maW5h bCh1bnNpZ25lZCBjaGFyICptZCxTSEEyNTZfQ1RYICptZF9jdHgsU0hBMjU2X0NUWCAqb19jdHgp Ci0rICAgIHsKLSsgICAgdW5zaWduZWQgY2hhciBidWZbU0hBMjU2X0RJR0VTVF9MRU5HVEhdOwot KwotKyAgICBTSEEyNTZfRmluYWwoYnVmLG1kX2N0eCk7Ci0rICAgIFNIQTI1Nl9VcGRhdGUob19j dHgsYnVmLHNpemVvZiBidWYpOwotKyAgICBTSEEyNTZfRmluYWwobWQsb19jdHgpOwotKyAgICB9 Ci0rCi0rI2VuZGlmCi0rCi0raW50IG1haW4oaW50IGFyZ2MsY2hhciAqKmFyZ3YpCi0rICAgIHsK LSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIHN0YXRpYyBjaGFyIGtleVtdPSJvcmJvRGVKSVRJ VGVqc2lycEFET05pdmlycFVrdmFyUCI7Ci0rICAgIGludCBuLGJpbmFyeT0wOwotKwotKyAgICBp ZihhcmdjIDwgMikKLSsJewotKwlmcHJpbnRmKHN0ZGVyciwiJXMgWzxmaWxlPl0rXG4iLGFyZ3Zb MF0pOwotKwlleGl0KDEpOwotKwl9Ci0rCi0rICAgIG49MTsKLSsgICAgaWYgKCFzdHJjbXAoYXJn dltuXSwiLWJpbmFyeSIpKQotKwl7Ci0rCW4rKzsKLSsJYmluYXJ5PTE7CS8qIGVtaXQgYmluYXJ5 IGZpbmdlcnByaW50Li4uICovCi0rCX0KLSsKLSsgICAgZm9yKDsgbiA8IGFyZ2MgOyArK24pCi0r CXsKLSsJRklMRSAqZj1mb3Blbihhcmd2W25dLCJyYiIpOwotKwlTSEEyNTZfQ1RYIG1kX2N0eCxv X2N0eDsKLSsJdW5zaWduZWQgY2hhciBtZFtTSEEyNTZfRElHRVNUX0xFTkdUSF07Ci0rCWludCBp OwotKwotKwlpZighZikKLSsJICAgIHsKLSsJICAgIHBlcnJvcihhcmd2W25dKTsKLSsJICAgIGV4 aXQoMik7Ci0rCSAgICB9Ci0rCi0rCWhtYWNfaW5pdCgmbWRfY3R4LCZvX2N0eCxrZXkpOwotKwlm b3IoIDsgOyApCi0rCSAgICB7Ci0rCSAgICBjaGFyIGJ1ZlsxMDI0XTsKLSsJICAgIHNpemVfdCBs PWZyZWFkKGJ1ZiwxLHNpemVvZiBidWYsZik7Ci0rCi0rCSAgICBpZihsID09IDApCi0rCQl7Ci0r CQlpZihmZXJyb3IoZikpCi0rCQkgICAgewotKwkJICAgIHBlcnJvcihhcmd2W25dKTsKLSsJCSAg ICBleGl0KDMpOwotKwkJICAgIH0KLSsJCWVsc2UKLSsJCSAgICBicmVhazsKLSsJCX0KLSsJICAg IFNIQTI1Nl9VcGRhdGUoJm1kX2N0eCxidWYsbCk7Ci0rCSAgICB9Ci0rCWhtYWNfZmluYWwobWQs Jm1kX2N0eCwmb19jdHgpOwotKwotKwlpZiAoYmluYXJ5KQotKwkgICAgewotKwkgICAgZndyaXRl KG1kLFNIQTI1Nl9ESUdFU1RfTEVOR1RILDEsc3Rkb3V0KTsKLSsJICAgIGJyZWFrOwkvKiAuLi4g Zm9yIHNpbmdsZSghKSBmaWxlICovCi0rCSAgICB9Ci0rCi0rLyoJcHJpbnRmKCJITUFDLVNIQTEo JXMpPSAiLGFyZ3Zbbl0pOyAqLwotKwlmb3IoaT0wIDsgaSA8IFNIQTI1Nl9ESUdFU1RfTEVOR1RI IDsgKytpKQotKwkgICAgcHJpbnRmKCIlMDJ4IixtZFtpXSk7Ci0rCXByaW50ZigiXG4iKTsKLSsJ fQotKyNlbmRpZgotKyAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKwotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMWsvY3J5cHRvL2ZpcHMvZmlwc190ZXN0X3N1aXRlLmMuZmlwcyBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vZmlwcy9maXBzX3Rlc3Rfc3VpdGUuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0 by9maXBzL2ZpcHNfdGVzdF9zdWl0ZS5jLmZpcHMJMjAxNS0wMS0wOSAwOTo1MTo1MS41Njc5MjI2 NTMgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlwcy9maXBzX3Rlc3Rfc3VpdGUu YwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU2NzkyMjY1MyArMDEwMAotQEAgLTAsMCArMSw1ODggQEAK LSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9q ZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqCi0rICogVGhpcyBjb21tYW5kIGlz IGludGVuZGVkIGFzIGEgdGVzdCBkcml2ZXIgZm9yIHRoZSBGSVBTLTE0MCB0ZXN0aW5nCi0rICog bGFiIHBlcmZvcm1pbmcgRklQUy0xNDAgdmFsaWRhdGlvbi4gIEl0IGRlbW9uc3RyYXRlcyB0aGUg dXNlIG9mIHRoZQotKyAqIE9wZW5TU0wgbGlicmFyeSBpdG8gcGVyZm9ybSBhIHZhcmlldHkgb2Yg Y29tbW9uIGNyeXB0b2dyYXBoaWMKLSsgKiBmdW5jdGlvbnMuICBBIHBvd2VyLXVwIHNlbGYgdGVz dCBpcyBkZW1vbnN0cmF0ZWQgYnkgZGVsaWJlcmF0ZWx5Ci0rICogcG9pbnRpbmcgdG8gYW4gaW52 YWxpZCBleGVjdXRhYmxlIGhhc2gKLSsgKgotKyAqIENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIE1hcnF1 ZXNzLgotKyAqCi0rICovCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5o PgotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8 c3RkbGliLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wv ZGVzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZHNh Lmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZGguaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4K LSsjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+Ci0r Ci0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQotKyAgICB7Ci0rICAgIHByaW50ZigiTm8gRklQUyBzdXBwb3J0XG4iKTsKLSsgICAgcmV0 dXJuKDApOwotKyAgICB9Ci0rI2Vsc2UKLSsKLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0r I2luY2x1ZGUgImZpcHNfdXRsLmgiCi0rCi0rLyogQUVTOiBlbmNyeXB0IGFuZCBkZWNyeXB0IGtu b3duIHBsYWludGV4dCwgdmVyaWZ5IHJlc3VsdCBtYXRjaGVzIG9yaWdpbmFsIHBsYWludGV4dAot KyovCi0rc3RhdGljIGludCBGSVBTX2Flc190ZXN0KHZvaWQpCi0rCXsKLSsJaW50IHJldCA9IDA7 Ci0rCXVuc2lnbmVkIGNoYXIgcGx0bXBbMTZdOwotKwl1bnNpZ25lZCBjaGFyIGNpdG1wWzE2XTsK LSsJdW5zaWduZWQgY2hhciBrZXlbMTZdID0geyAxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwx MywxNCwxNSwxNn07Ci0rCXVuc2lnbmVkIGNoYXIgcGxhaW50ZXh0WzE2XSA9ICJldGFvbnJpc2hk bGN1IjsKLSsJRVZQX0NJUEhFUl9DVFggY3R4OwotKwlFVlBfQ0lQSEVSX0NUWF9pbml0KCZjdHgp OwotKwlpZiAoRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgRVZQX2Flc18xMjhfZWNiKCksTlVMTCwg a2V5LCBOVUxMLCAxKSA8PSAwKQotKwkJZ290byBlcnI7Ci0rCUVWUF9DaXBoZXIoJmN0eCwgY2l0 bXAsIHBsYWludGV4dCwgMTYpOwotKwlpZiAoRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgRVZQX2Fl c18xMjhfZWNiKCksTlVMTCwga2V5LCBOVUxMLCAwKSA8PSAwKQotKwkJZ290byBlcnI7Ci0rCUVW UF9DaXBoZXIoJmN0eCwgcGx0bXAsIGNpdG1wLCAxNik7Ci0rCWlmIChtZW1jbXAocGx0bXAsIHBs YWludGV4dCwgMTYpKQotKwkJZ290byBlcnI7Ci0rCXJldCA9IDE7Ci0rCWVycjoKLSsJRVZQX0NJ UEhFUl9DVFhfY2xlYW51cCgmY3R4KTsKLSsJcmV0dXJuIHJldDsKLSsJfQotKwotK3N0YXRpYyBp bnQgRklQU19kZXMzX3Rlc3Qodm9pZCkKLSsJewotKwlpbnQgcmV0ID0gMDsKLSsJdW5zaWduZWQg Y2hhciBwbHRtcFs4XTsKLSsJdW5zaWduZWQgY2hhciBjaXRtcFs4XTsKLSsgICAgCXVuc2lnbmVk IGNoYXIga2V5W10gPSB7IDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3 LDE4LAotKwkJICAgICAgICAgICAgICAxOSwyMCwyMSwyMiwyMywyNH07Ci0rICAgIAl1bnNpZ25l ZCBjaGFyIHBsYWludGV4dFtdID0geyAnZScsICd0JywgJ2EnLCAnbycsICduJywgJ3InLCAnaScs ICdzJyB9OwotKwlFVlBfQ0lQSEVSX0NUWCBjdHg7Ci0rCUVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0 eCk7Ci0rCWlmIChFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfZGVzX2VkZTNfZWNiKCksTlVM TCwga2V5LCBOVUxMLCAxKSA8PSAwKQotKwkJZ290byBlcnI7Ci0rCUVWUF9DaXBoZXIoJmN0eCwg Y2l0bXAsIHBsYWludGV4dCwgOCk7Ci0rCWlmIChFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBf ZGVzX2VkZTNfZWNiKCksTlVMTCwga2V5LCBOVUxMLCAwKSA8PSAwKQotKwkJZ290byBlcnI7Ci0r CUVWUF9DaXBoZXIoJmN0eCwgcGx0bXAsIGNpdG1wLCA4KTsKLSsJaWYgKG1lbWNtcChwbHRtcCwg cGxhaW50ZXh0LCA4KSkKLSsJCWdvdG8gZXJyOwotKwlyZXQgPSAxOwotKwllcnI6Ci0rCUVWUF9D SVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7Ci0rCXJldHVybiByZXQ7Ci0rCX0KLSsKLSsvKgotKyAq IERTQTogZ2VuZXJhdGUga2V5cyBhbmQgc2lnbiwgdmVyaWZ5IGlucHV0IHBsYWludGV4dC4KLSsg Ki8KLStzdGF0aWMgaW50IEZJUFNfZHNhX3Rlc3QoaW50IGJhZCkKLSsgICAgewotKyAgICBEU0Eg KmRzYSA9IE5VTEw7Ci0rICAgIEVWUF9QS0VZIHBrOwotKyAgICB1bnNpZ25lZCBjaGFyIGRnc3Rb XSA9ICJldGFvbnJpc2hkbGMiOwotKyAgICB1bnNpZ25lZCBjaGFyIGJ1Zls2MF07Ci0rICAgIHVu c2lnbmVkIGludCBzbGVuOwotKyAgICBpbnQgciA9IDA7Ci0rICAgIEVWUF9NRF9DVFggbWN0eDsK LSsKLSsgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0rICAgIEVWUF9NRF9DVFhfaW5pdCgmbWN0eCk7 Ci0rICAgIGRzYSA9IERTQV9uZXcoKTsKLSsgICAgaWYgKCFkc2EpCi0rCWdvdG8gZW5kOwotKyAg ICBpZiAoIURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KGRzYSwgMTAyNCxOVUxMLDAsTlVMTCxO VUxMLE5VTEwpKQotKwlnb3RvIGVuZDsKLSsgICAgaWYgKCFEU0FfZ2VuZXJhdGVfa2V5KGRzYSkp Ci0rCWdvdG8gZW5kOwotKyAgICBpZiAoYmFkKQotKwkgICAgQk5fYWRkX3dvcmQoZHNhLT5wdWJf a2V5LCAxKTsKLSsKLSsgICAgcGsudHlwZSA9IEVWUF9QS0VZX0RTQTsKLSsgICAgcGsucGtleS5k c2EgPSBkc2E7Ci0rCi0rICAgIGlmICghRVZQX1NpZ25Jbml0X2V4KCZtY3R4LCBFVlBfZHNzMSgp LCBOVUxMKSkKLSsJZ290byBlbmQ7Ci0rICAgIGlmICghRVZQX1NpZ25VcGRhdGUoJm1jdHgsIGRn c3QsIHNpemVvZihkZ3N0KSAtIDEpKQotKwlnb3RvIGVuZDsKLSsgICAgaWYgKCFFVlBfU2lnbkZp bmFsKCZtY3R4LCBidWYsICZzbGVuLCAmcGspKQotKwlnb3RvIGVuZDsKLSsKLSsgICAgaWYgKCFF VlBfVmVyaWZ5SW5pdF9leCgmbWN0eCwgRVZQX2RzczEoKSwgTlVMTCkpCi0rCWdvdG8gZW5kOwot KyAgICBpZiAoIUVWUF9WZXJpZnlVcGRhdGUoJm1jdHgsIGRnc3QsIHNpemVvZihkZ3N0KSAtIDEp KQotKwlnb3RvIGVuZDsKLSsgICAgciA9IEVWUF9WZXJpZnlGaW5hbCgmbWN0eCwgYnVmLCBzbGVu LCAmcGspOwotKyAgICBlbmQ6Ci0rICAgIEVWUF9NRF9DVFhfY2xlYW51cCgmbWN0eCk7Ci0rICAg IGlmIChkc2EpCi0rICAJICBEU0FfZnJlZShkc2EpOwotKyAgICBpZiAociAhPSAxKQotKwlyZXR1 cm4gMDsKLSsgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsvKgotKyAqIFJTQTogZ2VuZXJhdGUg a2V5cyBhbmQgc2lnbiwgdmVyaWZ5IGlucHV0IHBsYWludGV4dC4KLSsgKi8KLStzdGF0aWMgaW50 IEZJUFNfcnNhX3Rlc3QoaW50IGJhZCkKLSsgICAgewotKyAgICBSU0EgKmtleTsKLSsgICAgdW5z aWduZWQgY2hhciBpbnB1dF9wdGV4dFtdID0gImV0YW9ucmlzaGRsYyI7Ci0rICAgIHVuc2lnbmVk IGNoYXIgYnVmWzI1Nl07Ci0rICAgIHVuc2lnbmVkIGludCBzbGVuOwotKyAgICBCSUdOVU0gKmJu OwotKyAgICBFVlBfTURfQ1RYIG1jdHg7Ci0rICAgIEVWUF9QS0VZIHBrOwotKyAgICBpbnQgciA9 IDA7Ci0rCi0rICAgIEVSUl9jbGVhcl9lcnJvcigpOwotKyAgICBFVlBfTURfQ1RYX2luaXQoJm1j dHgpOwotKyAgICBrZXkgPSBSU0FfbmV3KCk7Ci0rICAgIGJuID0gQk5fbmV3KCk7Ci0rICAgIGlm ICgha2V5IHx8ICFibikKLSsJcmV0dXJuIDA7Ci0rICAgIEJOX3NldF93b3JkKGJuLCA2NTUzNyk7 Ci0rICAgIGlmICghUlNBX2dlbmVyYXRlX2tleV9leChrZXksIDEwMjQsYm4sTlVMTCkpCi0rCXJl dHVybiAwOwotKyAgICBCTl9mcmVlKGJuKTsKLSsgICAgaWYgKGJhZCkKLSsJICAgIEJOX2FkZF93 b3JkKGtleS0+biwgMSk7Ci0rCi0rICAgIHBrLnR5cGUgPSBFVlBfUEtFWV9SU0E7Ci0rICAgIHBr LnBrZXkucnNhID0ga2V5OwotKwotKyAgICBpZiAoIUVWUF9TaWduSW5pdF9leCgmbWN0eCwgRVZQ X3NoYTEoKSwgTlVMTCkpCi0rCWdvdG8gZW5kOwotKyAgICBpZiAoIUVWUF9TaWduVXBkYXRlKCZt Y3R4LCBpbnB1dF9wdGV4dCwgc2l6ZW9mKGlucHV0X3B0ZXh0KSAtIDEpKQotKwlnb3RvIGVuZDsK LSsgICAgaWYgKCFFVlBfU2lnbkZpbmFsKCZtY3R4LCBidWYsICZzbGVuLCAmcGspKQotKwlnb3Rv IGVuZDsKLSsKLSsgICAgaWYgKCFFVlBfVmVyaWZ5SW5pdF9leCgmbWN0eCwgRVZQX3NoYTEoKSwg TlVMTCkpCi0rCWdvdG8gZW5kOwotKyAgICBpZiAoIUVWUF9WZXJpZnlVcGRhdGUoJm1jdHgsIGlu cHV0X3B0ZXh0LCBzaXplb2YoaW5wdXRfcHRleHQpIC0gMSkpCi0rCWdvdG8gZW5kOwotKyAgICBy ID0gRVZQX1ZlcmlmeUZpbmFsKCZtY3R4LCBidWYsIHNsZW4sICZwayk7Ci0rICAgIGVuZDoKLSsg ICAgRVZQX01EX0NUWF9jbGVhbnVwKCZtY3R4KTsKLSsgICAgaWYgKGtleSkKLSsgIAkgICAgUlNB X2ZyZWUoa2V5KTsKLSsgICAgaWYgKHIgIT0gMSkKLSsJcmV0dXJuIDA7Ci0rICAgIHJldHVybiAx OwotKyAgICB9Ci0rCi0rLyogU0hBMTogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFs dWUgYW5kIGNvbXBhcmUgdG8ga25vd24KLSsgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKLSsq LwotK3N0YXRpYyBpbnQgRklQU19zaGExX3Rlc3QoKQotKyAgICB7Ci0rICAgIHVuc2lnbmVkIGNo YXIgZGlnZXN0W1NIQV9ESUdFU1RfTEVOR1RIXSA9Ci0rICAgICAgICB7IDB4MTEsIDB4ZjEsIDB4 OWEsIDB4M2EsIDB4ZWMsIDB4MWEsIDB4MWUsIDB4OGUsIDB4NjUsIDB4ZDQsIDB4OWEsIDB4Mzgs IDB4MGMsIDB4OGIsIDB4MWUsIDB4MmMsIDB4ZTgsIDB4YjMsIDB4YzUsIDB4MTggfTsKLSsgICAg dW5zaWduZWQgY2hhciBzdHJbXSA9ICJldGFvbnJpc2hkIjsKLSsKLSsgICAgdW5zaWduZWQgY2hh ciBtZFtTSEFfRElHRVNUX0xFTkdUSF07Ci0rCi0rICAgIEVSUl9jbGVhcl9lcnJvcigpOwotKyAg ICBpZiAoIUVWUF9EaWdlc3Qoc3RyLHNpemVvZihzdHIpIC0gMSxtZCwgTlVMTCwgRVZQX3NoYTEo KSwgTlVMTCkpIHJldHVybiAwOwotKyAgICBpZiAobWVtY21wKG1kLGRpZ2VzdCxzaXplb2YobWQp KSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKy8qIFNI QTI1NjogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8g a25vd24KLSsgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKLSsqLwotK3N0YXRpYyBpbnQgRklQ U19zaGEyNTZfdGVzdCgpCi0rICAgIHsKLSsgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBMjU2 X0RJR0VTVF9MRU5HVEhdID0KLSsJezB4ZjUsIDB4NTMsIDB4Y2QsIDB4YjgsIDB4Y2YsIDB4MSwg MHhlZSwgMHgxNywgMHg5YiwgMHg5MywgMHhjOSwgMHg2OCwgMHhjMCwgMHhlYSwgMHg0MCwgMHg5 MSwKLSsJIDB4NiwgMHhlYywgMHg4ZSwgMHgxMSwgMHg5NiwgMHhjOCwgMHg1ZCwgMHgxYywgMHhh ZiwgMHg2NCwgMHgyMiwgMHhlNiwgMHg1MCwgMHg0ZiwgMHg0NywgMHg1N307Ci0rICAgIHVuc2ln bmVkIGNoYXIgc3RyW10gPSAiZXRhb25yaXNoZCI7Ci0rCi0rICAgIHVuc2lnbmVkIGNoYXIgbWRb U0hBMjU2X0RJR0VTVF9MRU5HVEhdOwotKwotKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSsgICAg aWYgKCFFVlBfRGlnZXN0KHN0cixzaXplb2Yoc3RyKSAtIDEsbWQsIE5VTEwsIEVWUF9zaGEyNTYo KSwgTlVMTCkpIHJldHVybiAwOwotKyAgICBpZiAobWVtY21wKG1kLGRpZ2VzdCxzaXplb2YobWQp KSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKy8qIFNI QTUxMjogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8g a25vd24KLSsgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKLSsqLwotK3N0YXRpYyBpbnQgRklQ U19zaGE1MTJfdGVzdCgpCi0rICAgIHsKLSsgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBNTEy X0RJR0VTVF9MRU5HVEhdID0KLSsJezB4OTksIDB4YzksIDB4ZTksIDB4NWIsIDB4ODgsIDB4ZDQs IDB4NzgsIDB4ODgsIDB4ZGYsIDB4ODgsIDB4NWYsIDB4OTQsIDB4NzEsIDB4NjQsIDB4MjgsIDB4 Y2EsCi0rCSAweDE2LCAweDFmLCAweDNkLCAweGY0LCAweDFmLCAweGYzLCAweDBmLCAweGM1LCAw eDAzLCAweDk5LCAweGIyLCAweGQwLCAweGU3LCAweDBiLCAweDk0LCAweDRhLAotKwkgMHg0NSwg MHhkMiwgMHg2YywgMHg0ZiwgMHgyMCwgMHgwNiwgMHhlZiwgMHg3MSwgMHhhOSwgMHgyNSwgMHg3 ZiwgMHgyNCwgMHhiMSwgMHhkOSwgMHg0MCwgMHgyMiwKLSsJIDB4NDksIDB4NTQsIDB4MTAsIDB4 YzIsIDB4MjIsIDB4OWQsIDB4MjcsIDB4ZmUsIDB4YmQsIDB4ZDYsIDB4ZDYsIDB4ZWIsIDB4MmQs IDB4NDIsIDB4MWQsIDB4YTN9OwotKyAgICB1bnNpZ25lZCBjaGFyIHN0cltdID0gImV0YW9ucmlz aGQiOwotKwotKyAgICB1bnNpZ25lZCBjaGFyIG1kW1NIQTUxMl9ESUdFU1RfTEVOR1RIXTsKLSsK LSsgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0rICAgIGlmICghRVZQX0RpZ2VzdChzdHIsc2l6ZW9m KHN0cikgLSAxLG1kLCBOVUxMLCBFVlBfc2hhNTEyKCksIE5VTEwpKSByZXR1cm4gMDsKLSsgICAg aWYgKG1lbWNtcChtZCxkaWdlc3Qsc2l6ZW9mKG1kKSkpCi0rICAgICAgICByZXR1cm4gMDsKLSsg ICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsvKiBITUFDLVNIQTE6IGdlbmVyYXRlIGhhc2ggb2Yg a25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJlIHRvIGtub3duCi0rICAgcHJlY29tcHV0ZWQg Y29ycmVjdCBoYXNoCi0rKi8KLStzdGF0aWMgaW50IEZJUFNfaG1hY19zaGExX3Rlc3QoKQotKyAg ICB7Ci0rICAgIHVuc2lnbmVkIGNoYXIga2V5W10gPSAiZXRhb25yaXNoZCI7Ci0rICAgIHVuc2ln bmVkIGNoYXIgaXZbXSA9ICJTYW1wbGUgdGV4dCI7Ci0rICAgIHVuc2lnbmVkIGNoYXIga2F2YWxb RVZQX01BWF9NRF9TSVpFXSA9Ci0rCXsweDczLCAweGY3LCAweGEwLCAweDQ4LCAweGY4LCAweDk0 LCAweGVkLCAweGRkLCAweDBhLCAweGVhLCAweGVhLCAweDU2LCAweDFiLCAweDYxLCAweDJlLCAw eDcwLAotKwkgMHhiMiwgMHhmYiwgMHhlYywgMHhjNn07Ci0rCi0rICAgIHVuc2lnbmVkIGNoYXIg b3V0W0VWUF9NQVhfTURfU0laRV07Ci0rICAgIHVuc2lnbmVkIGludCBvdXRsZW47Ci0rCi0rICAg IEVSUl9jbGVhcl9lcnJvcigpOwotKyAgICBpZiAoIUhNQUMoRVZQX3NoYTEoKSxrZXksc2l6ZW9m KGtleSktMSxpdixzaXplb2YoaXYpLTEsb3V0LCZvdXRsZW4pKSByZXR1cm4gMDsKLSsgICAgaWYg KG1lbWNtcChvdXQsa2F2YWwsb3V0bGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICByZXR1 cm4gMTsKLSsgICAgfQotKwotKy8qIEhNQUMtU0hBMjI0OiBnZW5lcmF0ZSBoYXNoIG9mIGtub3du IGRpZ2VzdCB2YWx1ZSBhbmQgY29tcGFyZSB0byBrbm93bgotKyAgIHByZWNvbXB1dGVkIGNvcnJl Y3QgaGFzaAotKyovCi0rc3RhdGljIGludCBGSVBTX2htYWNfc2hhMjI0X3Rlc3QoKQotKyAgICB7 Ci0rICAgIHVuc2lnbmVkIGNoYXIga2V5W10gPSAiZXRhb25yaXNoZCI7Ci0rICAgIHVuc2lnbmVk IGNoYXIgaXZbXSA9ICJTYW1wbGUgdGV4dCI7Ci0rICAgIHVuc2lnbmVkIGNoYXIga2F2YWxbRVZQ X01BWF9NRF9TSVpFXSA9Ci0rCXsweDc1LCAweDU4LCAweGQ1LCAweGJkLCAweDU1LCAweDZkLCAw eDg3LCAweDBmLCAweDc1LCAweGZmLCAweGJlLCAweDFjLCAweGIyLCAweGYwLCAweDIwLCAweDM1 LAotKwkgMHhlNSwgMHg2MiwgMHg0OSwgMHhiNiwgMHg5NCwgMHhiOSwgMHhmYywgMHg2NSwgMHgz NCwgMHgzMywgMHgzYSwgMHgxOX07Ci0rCi0rICAgIHVuc2lnbmVkIGNoYXIgb3V0W0VWUF9NQVhf TURfU0laRV07Ci0rICAgIHVuc2lnbmVkIGludCBvdXRsZW47Ci0rCi0rICAgIEVSUl9jbGVhcl9l cnJvcigpOwotKyAgICBpZiAoIUhNQUMoRVZQX3NoYTIyNCgpLGtleSxzaXplb2Yoa2V5KS0xLGl2 LHNpemVvZihpdiktMSxvdXQsJm91dGxlbikpIHJldHVybiAwOwotKyAgICBpZiAobWVtY21wKG91 dCxrYXZhbCxvdXRsZW4pKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiAxOwotKyAg ICB9Ci0rCi0rLyogSE1BQy1TSEEyNTY6IGdlbmVyYXRlIGhhc2ggb2Yga25vd24gZGlnZXN0IHZh bHVlIGFuZCBjb21wYXJlIHRvIGtub3duCi0rICAgcHJlY29tcHV0ZWQgY29ycmVjdCBoYXNoCi0r Ki8KLStzdGF0aWMgaW50IEZJUFNfaG1hY19zaGEyNTZfdGVzdCgpCi0rICAgIHsKLSsgICAgdW5z aWduZWQgY2hhciBrZXlbXSA9ICJldGFvbnJpc2hkIjsKLSsgICAgdW5zaWduZWQgY2hhciBpdltd ID0gIlNhbXBsZSB0ZXh0IjsKLSsgICAgdW5zaWduZWQgY2hhciBrYXZhbFtFVlBfTUFYX01EX1NJ WkVdID0KLSsJezB4ZTksIDB4MTcsIDB4YzEsIDB4N2IsIDB4NGMsIDB4NmIsIDB4NzcsIDB4ZGEs IDB4ZDIsIDB4MzAsIDB4MzYsIDB4MDIsIDB4ZjUsIDB4NzIsIDB4MzMsIDB4ODcsCi0rCSAweDlm LCAweGM2LCAweDZlLCAweDdiLCAweDdlLCAweGE4LCAweGVhLCAweGFhLCAweDlmLCAweGJhLCAw eGVlLCAweDUxLCAweGZmLCAweGRhLCAweDI0LCAweGY0fTsKLSsKLSsgICAgdW5zaWduZWQgY2hh ciBvdXRbRVZQX01BWF9NRF9TSVpFXTsKLSsgICAgdW5zaWduZWQgaW50IG91dGxlbjsKLSsKLSsg ICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0rICAgIGlmICghSE1BQyhFVlBfc2hhMjU2KCksa2V5LHNp emVvZihrZXkpLTEsaXYsc2l6ZW9mKGl2KS0xLG91dCwmb3V0bGVuKSkgcmV0dXJuIDA7Ci0rICAg IGlmIChtZW1jbXAob3V0LGthdmFsLG91dGxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAg cmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsvKiBITUFDLVNIQTM4NDogZ2VuZXJhdGUgaGFzaCBvZiBr bm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24KLSsgICBwcmVjb21wdXRlZCBj b3JyZWN0IGhhc2gKLSsqLwotK3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTM4NF90ZXN0KCkKLSsg ICAgewotKyAgICB1bnNpZ25lZCBjaGFyIGtleVtdID0gImV0YW9ucmlzaGQiOwotKyAgICB1bnNp Z25lZCBjaGFyIGl2W10gPSAiU2FtcGxlIHRleHQiOwotKyAgICB1bnNpZ25lZCBjaGFyIGthdmFs W0VWUF9NQVhfTURfU0laRV0gPQotKwl7MHhiMiwgMHg5ZCwgMHg0MCwgMHg1OCwgMHgzMiwgMHhj NCwgMHhlMywgMHgzMSwgMHhiNiwgMHg2MywgMHgwOCwgMHgyNiwgMHg5OSwgMHhlZiwgMHgzYiwg MHgxMCwKLSsJIDB4ZTIsIDB4ZGYsIDB4ZjgsIDB4ZmYsIDB4YzYsIDB4ZTEsIDB4MDMsIDB4Mjks IDB4ODEsIDB4MmEsIDB4MWIsIDB4YWMsIDB4YjAsIDB4MDcsIDB4MzksIDB4MDgsCi0rCSAweGYz LCAweDkxLCAweDM1LCAweDExLCAweDc2LCAweGQ2LCAweDRjLCAweDIwLCAweGZiLCAweDRkLCAw eGMzLCAweGYzLCAweGI4LCAweDliLCAweDg4LCAweDFjfTsKLSsKLSsgICAgdW5zaWduZWQgY2hh ciBvdXRbRVZQX01BWF9NRF9TSVpFXTsKLSsgICAgdW5zaWduZWQgaW50IG91dGxlbjsKLSsKLSsg ICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0rICAgIGlmICghSE1BQyhFVlBfc2hhMzg0KCksa2V5LHNp emVvZihrZXkpLTEsaXYsc2l6ZW9mKGl2KS0xLG91dCwmb3V0bGVuKSkgcmV0dXJuIDA7Ci0rICAg IGlmIChtZW1jbXAob3V0LGthdmFsLG91dGxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAg cmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsvKiBITUFDLVNIQTUxMjogZ2VuZXJhdGUgaGFzaCBvZiBr bm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24KLSsgICBwcmVjb21wdXRlZCBj b3JyZWN0IGhhc2gKLSsqLwotK3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTUxMl90ZXN0KCkKLSsg ICAgewotKyAgICB1bnNpZ25lZCBjaGFyIGtleVtdID0gImV0YW9ucmlzaGQiOwotKyAgICB1bnNp Z25lZCBjaGFyIGl2W10gPSAiU2FtcGxlIHRleHQiOwotKyAgICB1bnNpZ25lZCBjaGFyIGthdmFs W0VWUF9NQVhfTURfU0laRV0gPQotKwl7MHhjZCwgMHgzZSwgMHhiOSwgMHg1MSwgMHhiOCwgMHhi YywgMHg3ZiwgMHg5YSwgMHgyMywgMHhhZiwgMHhmMywgMHg3NywgMHg1OSwgMHg4NSwgMHhhOSwg MHhlNiwKLSsJIDB4ZjcsIDB4ZDEsIDB4NTEsIDB4OTYsIDB4MTcsIDB4ZTAsIDB4OTIsIDB4ZDgs IDB4YTYsIDB4M2IsIDB4YzEsIDB4YWQsIDB4N2UsIDB4MjQsIDB4Y2EsIDB4YjEsCi0rCSAweGQ3 LCAweDc5LCAweDBhLCAweGE1LCAweGVhLCAweDJjLCAweDAyLCAweDU4LCAweDBiLCAweGE2LCAw eDUyLCAweDZiLCAweDYxLCAweDdmLCAweGViLCAweDljLAotKwkgMHg0NywgMHg4NiwgMHg1ZCwg MHg3NCwgMHgyYiwgMHg4OCwgMHhkZiwgMHhlZSwgMHg0NiwgMHg2OSwgMHg5NiwgMHgzZCwgMHhh NiwgMHhkOSwgMHgyYSwgMHg1M307Ci0rCi0rICAgIHVuc2lnbmVkIGNoYXIgb3V0W0VWUF9NQVhf TURfU0laRV07Ci0rICAgIHVuc2lnbmVkIGludCBvdXRsZW47Ci0rCi0rICAgIEVSUl9jbGVhcl9l cnJvcigpOwotKyAgICBpZiAoIUhNQUMoRVZQX3NoYTUxMigpLGtleSxzaXplb2Yoa2V5KS0xLGl2 LHNpemVvZihpdiktMSxvdXQsJm91dGxlbikpIHJldHVybiAwOwotKyAgICBpZiAobWVtY21wKG91 dCxrYXZhbCxvdXRsZW4pKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiAxOwotKyAg ICB9Ci0rCi0rCi0rLyogREg6IGdlbmVyYXRlIHNoYXJlZCBwYXJhbWV0ZXJzCi0rKi8KLStzdGF0 aWMgaW50IGRoX3Rlc3QoKQotKyAgICB7Ci0rICAgIERIICpkaDsKLSsgICAgRVJSX2NsZWFyX2Vy cm9yKCk7Ci0rICAgIGRoID0gRklQU19kaF9uZXcoKTsKLSsgICAgaWYgKCFkaCkKLSsJcmV0dXJu IDA7Ci0rICAgIGlmICghREhfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChkaCwgMTAyNCwgMiwgTlVM TCkpCi0rCXJldHVybiAwOwotKyAgICBGSVBTX2RoX2ZyZWUoZGgpOwotKyAgICByZXR1cm4gMTsK LSsgICAgfQotKwotKy8qIFplcm9pemUKLSsqLwotK3N0YXRpYyBpbnQgWmVyb2l6ZSgpCi0rICAg IHsKLSsgICAgUlNBICprZXk7Ci0rICAgIEJJR05VTSAqYm47Ci0rICAgIHVuc2lnbmVkIGNoYXIg dXNlcmtleVsxNl0gPSAKLSsJeyAweDQ4LCAweDUwLCAweGYwLCAweGEzLCAweDNhLCAweGVkLCAw eGQzLCAweGFmLCAweDZlLCAweDQ3LCAweDdmLCAweDgzLCAweDAyLCAweGIxLCAweDA5LCAweDY4 IH07Ci0rICAgIGludCBpLCBuOwotKwotKyAgICBrZXkgPSBGSVBTX3JzYV9uZXcoKTsKLSsgICAg Ym4gPSBCTl9uZXcoKTsKLSsgICAgaWYgKCFrZXkgfHwgIWJuKQotKwlyZXR1cm4gMDsKLSsgICAg Qk5fc2V0X3dvcmQoYm4sIDY1NTM3KTsKLSsgICAgaWYgKCFSU0FfZ2VuZXJhdGVfa2V5X2V4KGtl eSwgMTAyNCxibixOVUxMKSkKLSsJcmV0dXJuIDA7Ci0rICAgIEJOX2ZyZWUoYm4pOwotKyAgICAK LSsgICAgbiA9IEJOX251bV9ieXRlcyhrZXktPmQpOwotKyAgICBwcmludGYoIiBHZW5lcmF0ZWQg JWQgYnl0ZSBSU0EgcHJpdmF0ZSBrZXlcbiIsIG4pOwotKyAgICBwcmludGYoIlx0Qk4ga2V5IGJl Zm9yZSBvdmVyd3JpdGluZzpcbiIpOwotKyAgICBkb19ibl9wcmludChzdGRvdXQsIGtleS0+ZCk7 Ci0rICAgIEJOX3JhbmQoa2V5LT5kLG4qOCwtMSwwKTsKLSsgICAgcHJpbnRmKCJcdEJOIGtleSBh ZnRlciBvdmVyd3JpdGluZzpcbiIpOwotKyAgICBkb19ibl9wcmludChzdGRvdXQsIGtleS0+ZCk7 Ci0rCi0rICAgIHByaW50ZigiXHRjaGFyIGJ1ZmZlciBrZXkgYmVmb3JlIG92ZXJ3cml0aW5nOiBc blx0XHQiKTsKLSsgICAgZm9yKGkgPSAwOyBpIDwgc2l6ZW9mKHVzZXJrZXkpOyBpKyspIHByaW50 ZigiJTAyeCIsIHVzZXJrZXlbaV0pOwotKyAgICAgICAgcHJpbnRmKCJcbiIpOwotKyAgICBSQU5E X2J5dGVzKHVzZXJrZXksIHNpemVvZiB1c2Vya2V5KTsKLSsgICAgcHJpbnRmKCJcdGNoYXIgYnVm ZmVyIGtleSBhZnRlciBvdmVyd3JpdGluZzogXG5cdFx0Iik7Ci0rICAgIGZvcihpID0gMDsgaSA8 IHNpemVvZih1c2Vya2V5KTsgaSsrKSBwcmludGYoIiUwMngiLCB1c2Vya2V5W2ldKTsKLSsgICAg ICAgIHByaW50ZigiXG4iKTsKLSsKLSsgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLStzdGF0aWMg aW50IEVycm9yOwotK2NvbnN0IGNoYXIgKiBGYWlsKGNvbnN0IGNoYXIgKm1zZykKLSsgICAgewot KyAgICBkb19wcmludF9lcnJvcnMoKTsKLSsgICAgRXJyb3IrKzsKLSsgICAgcmV0dXJuIG1zZzsg Ci0rICAgIH0KLSsKLStpbnQgbWFpbihpbnQgYXJnYyxjaGFyICoqYXJndikKLSsgICAgewotKwot KyAgICBpbnQgZG9fY29ycnVwdF9yc2Ffa2V5Z2VuID0gMCwgZG9fY29ycnVwdF9kc2Ffa2V5Z2Vu ID0gMDsKLSsgICAgaW50IGJhZF9yc2EgPSAwLCBiYWRfZHNhID0gMDsKLSsgICAgaW50IGRvX3Ju Z19zdGljayA9IDA7Ci0rICAgIGludCBub19leGl0ID0gMDsKLSsKLSsgICAgcHJpbnRmKCJcdEZJ UFMtbW9kZSB0ZXN0IGFwcGxpY2F0aW9uXG5cbiIpOwotKwotKyAgICAvKiBMb2FkIGVudHJvcHkg ZnJvbSBleHRlcm5hbCBmaWxlLCBpZiBhbnkgKi8KLSsgICAgUkFORF9sb2FkX2ZpbGUoIi5ybmQi LCAxMDI0KTsKLSsKLSsgICAgaWYgKGFyZ3ZbMV0pIHsKLSsgICAgICAgIC8qIENvcnJ1cHRlZCBL QVQgdGVzdHMgKi8KLSsgICAgICAgIGlmICghc3RyY21wKGFyZ3ZbMV0sICJhZXMiKSkgewotKyAg ICAgICAgICAgIEZJUFNfY29ycnVwdF9hZXMoKTsKLSsgICAgICAgICAgICBwcmludGYoIkFFUyBl bmNyeXB0aW9uL2RlY3J5cHRpb24gd2l0aCBjb3JydXB0ZWQgS0FULi4uXG4iKTsKLSsgICAgICAg IH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAiZGVzIikpIHsKLSsgICAgICAgICAgICBGSVBT X2NvcnJ1cHRfZGVzKCk7Ci0rICAgICAgICAgICAgcHJpbnRmKCJERVMzLUVDQiBlbmNyeXB0aW9u L2RlY3J5cHRpb24gd2l0aCBjb3JydXB0ZWQgS0FULi4uXG4iKTsKLSsgICAgICAgIH0gZWxzZSBp ZiAoIXN0cmNtcChhcmd2WzFdLCAiZHNhIikpIHsKLSsgICAgICAgICAgICBGSVBTX2NvcnJ1cHRf ZHNhKCk7Ci0rICAgICAgICAgICAgcHJpbnRmKCJEU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25h dHVyZSB2YWxpZGF0aW9uIHdpdGggY29ycnVwdGVkIEtBVC4uLlxuIik7Ci0rICAgICAgICB9IGVs c2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgInJzYSIpKSB7Ci0rICAgICAgICAgICAgRklQU19jb3Jy dXB0X3JzYSgpOwotKyAgICAgICAgICAgIHByaW50ZigiUlNBIGtleSBnZW5lcmF0aW9uIGFuZCBz aWduYXR1cmUgdmFsaWRhdGlvbiB3aXRoIGNvcnJ1cHRlZCBLQVQuLi5cbiIpOwotKyAgICAgICAg fSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJyc2FrZXkiKSkgewotKyAgICAgICAgICAgIHBy aW50ZigiUlNBIGtleSBnZW5lcmF0aW9uIGFuZCBzaWduYXR1cmUgdmFsaWRhdGlvbiB3aXRoIGNv cnJ1cHRlZCBrZXkuLi5cbiIpOwotKwkgICAgYmFkX3JzYSA9IDE7Ci0rCSAgICBub19leGl0ID0g MTsKLSsgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAicnNha2V5Z2VuIikpIHsK LSsJICAgIGRvX2NvcnJ1cHRfcnNhX2tleWdlbiA9IDE7Ci0rCSAgICBub19leGl0ID0gMTsKLSsg ICAgICAgICAgICBwcmludGYoIlJTQSBrZXkgZ2VuZXJhdGlvbiBhbmQgc2lnbmF0dXJlIHZhbGlk YXRpb24gd2l0aCBjb3JydXB0ZWQga2V5Z2VuLi4uXG4iKTsKLSsgICAgICAgIH0gZWxzZSBpZiAo IXN0cmNtcChhcmd2WzFdLCAiZHNha2V5IikpIHsKLSsgICAgICAgICAgICBwcmludGYoIkRTQSBr ZXkgZ2VuZXJhdGlvbiBhbmQgc2lnbmF0dXJlIHZhbGlkYXRpb24gd2l0aCBjb3JydXB0ZWQga2V5 Li4uXG4iKTsKLSsJICAgIGJhZF9kc2EgPSAxOwotKwkgICAgbm9fZXhpdCA9IDE7Ci0rICAgICAg ICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgImRzYWtleWdlbiIpKSB7Ci0rCSAgICBkb19j b3JydXB0X2RzYV9rZXlnZW4gPSAxOwotKwkgICAgbm9fZXhpdCA9IDE7Ci0rICAgICAgICAgICAg cHJpbnRmKCJEU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0aW9uIHdpdGgg Y29ycnVwdGVkIGtleWdlbi4uLlxuIik7Ci0rICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJn dlsxXSwgInNoYTEiKSkgewotKyAgICAgICAgICAgIEZJUFNfY29ycnVwdF9zaGExKCk7Ci0rICAg ICAgICAgICAgcHJpbnRmKCJTSEEtMSBoYXNoIHdpdGggY29ycnVwdGVkIEtBVC4uLlxuIik7Ci0r CX0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAicm5nIikpIHsKLSsJICAgIEZJUFNfY29ycnVw dF9ybmcoKTsKLSsJfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJybmdzdGljayIpKSB7Ci0r CSAgICBkb19ybmdfc3RpY2sgPSAxOwotKwkgICAgbm9fZXhpdCA9IDE7Ci0rCSAgICBwcmludGYo IlJORyB0ZXN0IHdpdGggc3R1Y2sgY29udGludW91cyB0ZXN0Li4uXG4iKTsKLSsgICAgICAgIH0g ZWxzZSB7Ci0rICAgICAgICAgICAgcHJpbnRmKCJCYWQgYXJndW1lbnQgXCIlc1wiXG4iLCBhcmd2 WzFdKTsKLSsgICAgICAgICAgICBleGl0KDEpOwotKyAgICAgICAgfQotKwlpZiAoIW5vX2V4aXQp IHsKLSsgICAgICAgIAlpZiAoIUZJUFNfbW9kZV9zZXQoMSkpIHsKLSsgCQkgICAgZG9fcHJpbnRf ZXJyb3JzKCk7Ci0rICAgICAgICAJICAgIHByaW50ZigiUG93ZXItdXAgc2VsZiB0ZXN0IGZhaWxl ZFxuIik7Ci0rCQkgICAgZXhpdCgxKTsKLSsJCX0KLSsgICAgICAgIAlwcmludGYoIlBvd2VyLXVw IHNlbGYgdGVzdCBzdWNjZXNzZnVsXG4iKTsKLSsgICAgICAgIAlleGl0KDApOwotKwl9Ci0rICAg IH0KLSsKLSsgICAgLyogTm9uLUFwcHJvdmVkIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uCi0rICAg ICovCi0rICAgIHByaW50ZigiMS4gTm9uLUFwcHJvdmVkIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9u IHRlc3QuLi5cbiIpOwotKyAgICBwcmludGYoIlx0YS4gSW5jbHVkZWQgYWxnb3JpdGhtIChELUgp Li4uIik7Ci0rICAgIHByaW50ZiggZGhfdGVzdCgpID8gInN1Y2Nlc3NmdWxcbiIgOiAgRmFpbCgi RkFJTEVEIVxuIikgKTsKLSsKLSsgICAgLyogUG93ZXItdXAgc2VsZiB0ZXN0Ci0rICAgICovCi0r ICAgIEVSUl9jbGVhcl9lcnJvcigpOwotKyAgICBwcmludGYoIjIuIEF1dG9tYXRpYyBwb3dlci11 cCBzZWxmIHRlc3QuLi4iKTsKLSsgICAgaWYgKCFGSVBTX21vZGVfc2V0KDEpKQotKwl7Ci0rCWRv X3ByaW50X2Vycm9ycygpOwotKyAgICAgICAgcHJpbnRmKEZhaWwoIkZBSUxFRCFcbiIpKTsKLSsJ ZXhpdCgxKTsKLSsJfQotKyAgICBwcmludGYoInN1Y2Nlc3NmdWxcbiIpOwotKyAgICBpZiAoZG9f Y29ycnVwdF9kc2Ffa2V5Z2VuKQotKyAgICAgICAgICAgIEZJUFNfY29ycnVwdF9kc2Ffa2V5Z2Vu KCk7Ci0rICAgIGlmIChkb19jb3JydXB0X3JzYV9rZXlnZW4pCi0rICAgICAgICAgICAgRklQU19j b3JydXB0X3JzYV9rZXlnZW4oKTsKLSsgICAgaWYgKGRvX3JuZ19zdGljaykKLSsgICAgICAgICAg ICBGSVBTX3JuZ19zdGljaygpOwotKwotKyAgICAvKiBBRVMgZW5jcnlwdGlvbi9kZWNyeXB0aW9u Ci0rICAgICovCi0rICAgIHByaW50ZigiMy4gQUVTIGVuY3J5cHRpb24vZGVjcnlwdGlvbi4uLiIp OwotKyAgICBwcmludGYoIEZJUFNfYWVzX3Rlc3QoKSA/ICJzdWNjZXNzZnVsXG4iIDogIEZhaWwo IkZBSUxFRCFcbiIpICk7Ci0rCi0rICAgIC8qIFJTQSBrZXkgZ2VuZXJhdGlvbiBhbmQgZW5jcnlw dGlvbi9kZWNyeXB0aW9uCi0rICAgICovCi0rICAgIHByaW50ZigiNC4gUlNBIGtleSBnZW5lcmF0 aW9uIGFuZCBlbmNyeXB0aW9uL2RlY3J5cHRpb24uLi4iKTsKLSsgICAgcHJpbnRmKCBGSVBTX3Jz YV90ZXN0KGJhZF9yc2EpID8gInN1Y2Nlc3NmdWxcbiIgOiAgRmFpbCgiRkFJTEVEIVxuIikgKTsK LSsKLSsgICAgLyogREVTLUNCQyBlbmNyeXB0aW9uL2RlY3J5cHRpb24KLSsgICAgKi8KLSsgICAg cHJpbnRmKCI1LiBERVMtRUNCIGVuY3J5cHRpb24vZGVjcnlwdGlvbi4uLiIpOwotKyAgICBwcmlu dGYoIEZJUFNfZGVzM190ZXN0KCkgPyAic3VjY2Vzc2Z1bFxuIiA6ICBGYWlsKCJGQUlMRUQhXG4i KSApOwotKwotKyAgICAvKiBEU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0 aW9uCi0rICAgICovCi0rICAgIHByaW50ZigiNi4gRFNBIGtleSBnZW5lcmF0aW9uIGFuZCBzaWdu YXR1cmUgdmFsaWRhdGlvbi4uLiIpOwotKyAgICBwcmludGYoIEZJUFNfZHNhX3Rlc3QoYmFkX2Rz YSkgPyAic3VjY2Vzc2Z1bFxuIiA6ICBGYWlsKCJGQUlMRUQhXG4iKSApOwotKwotKyAgICAvKiBT SEEtMSBoYXNoCi0rICAgICovCi0rICAgIHByaW50ZigiN2EuIFNIQS0xIGhhc2guLi4iKTsKLSsg ICAgcHJpbnRmKCBGSVBTX3NoYTFfdGVzdCgpID8gInN1Y2Nlc3NmdWxcbiIgOiAgRmFpbCgiRkFJ TEVEIVxuIikgKTsKLSsKLSsgICAgLyogU0hBLTI1NiBoYXNoCi0rICAgICovCi0rICAgIHByaW50 ZigiN2IuIFNIQS0yNTYgaGFzaC4uLiIpOwotKyAgICBwcmludGYoIEZJUFNfc2hhMjU2X3Rlc3Qo KSA/ICJzdWNjZXNzZnVsXG4iIDogIEZhaWwoIkZBSUxFRCFcbiIpICk7Ci0rCi0rICAgIC8qIFNI QS01MTIgaGFzaAotKyAgICAqLwotKyAgICBwcmludGYoIjdjLiBTSEEtNTEyIGhhc2guLi4iKTsK LSsgICAgcHJpbnRmKCBGSVBTX3NoYTUxMl90ZXN0KCkgPyAic3VjY2Vzc2Z1bFxuIiA6ICBGYWls KCJGQUlMRUQhXG4iKSApOwotKwotKyAgICAvKiBITUFDLVNIQS0xIGhhc2gKLSsgICAgKi8KLSsg ICAgcHJpbnRmKCI3ZC4gSE1BQy1TSEEtMSBoYXNoLi4uIik7Ci0rICAgIHByaW50ZiggRklQU19o bWFjX3NoYTFfdGVzdCgpID8gInN1Y2Nlc3NmdWxcbiIgOiAgRmFpbCgiRkFJTEVEIVxuIikgKTsK LSsKLSsgICAgLyogSE1BQy1TSEEtMjI0IGhhc2gKLSsgICAgKi8KLSsgICAgcHJpbnRmKCI3ZS4g SE1BQy1TSEEtMjI0IGhhc2guLi4iKTsKLSsgICAgcHJpbnRmKCBGSVBTX2htYWNfc2hhMjI0X3Rl c3QoKSA/ICJzdWNjZXNzZnVsXG4iIDogIEZhaWwoIkZBSUxFRCFcbiIpICk7Ci0rCi0rICAgIC8q IEhNQUMtU0hBLTI1NiBoYXNoCi0rICAgICovCi0rICAgIHByaW50ZigiN2YuIEhNQUMtU0hBLTI1 NiBoYXNoLi4uIik7Ci0rICAgIHByaW50ZiggRklQU19obWFjX3NoYTI1Nl90ZXN0KCkgPyAic3Vj Y2Vzc2Z1bFxuIiA6ICBGYWlsKCJGQUlMRUQhXG4iKSApOwotKwotKyAgICAvKiBITUFDLVNIQS0z ODQgaGFzaAotKyAgICAqLwotKyAgICBwcmludGYoIjdnLiBITUFDLVNIQS0zODQgaGFzaC4uLiIp OwotKyAgICBwcmludGYoIEZJUFNfaG1hY19zaGEzODRfdGVzdCgpID8gInN1Y2Nlc3NmdWxcbiIg OiAgRmFpbCgiRkFJTEVEIVxuIikgKTsKLSsKLSsgICAgLyogSE1BQy1TSEEtNTEyIGhhc2gKLSsg ICAgKi8KLSsgICAgcHJpbnRmKCI3aC4gSE1BQy1TSEEtNTEyIGhhc2guLi4iKTsKLSsgICAgcHJp bnRmKCBGSVBTX2htYWNfc2hhNTEyX3Rlc3QoKSA/ICJzdWNjZXNzZnVsXG4iIDogIEZhaWwoIkZB SUxFRCFcbiIpICk7Ci0rCi0rICAgIC8qIE5vbi1BcHByb3ZlZCBjcnlwdG9ncmFwaGljIG9wZXJh dGlvbgotKyAgICAqLwotKyAgICBwcmludGYoIjguIE5vbi1BcHByb3ZlZCBjcnlwdG9ncmFwaGlj IG9wZXJhdGlvbiB0ZXN0Li4uXG4iKTsKLSsgICAgcHJpbnRmKCJcdGEuIEluY2x1ZGVkIGFsZ29y aXRobSAoRC1IKS4uLiIpOwotKyAgICBwcmludGYoIGRoX3Rlc3QoKSA/ICJzdWNjZXNzZnVsIGFz IGV4cGVjdGVkXG4iCi0rCSAgICA6IEZhaWwoImZhaWxlZCBJTkNPUlJFQ1RMWSFcbiIpICk7Ci0r Ci0rICAgIC8qIFplcm9pemF0aW9uCi0rICAgICovCi0rICAgIHByaW50ZigiOS4gWmVyby1pemF0 aW9uLi4uXG4iKTsKLSsgICAgcHJpbnRmKCBaZXJvaXplKCkgPyAiXHRzdWNjZXNzZnVsIGFzIGV4 cGVjdGVkXG4iCi0rCSAgICA6IEZhaWwoIlx0ZmFpbGVkIElOQ09SUkVDVExZIVxuIikgKTsKLSsK LSsgICAgcHJpbnRmKCJcbkFsbCB0ZXN0cyBjb21wbGV0ZWQgd2l0aCAlZCBlcnJvcnNcbiIsIEVy cm9yKTsKLSsgICAgcmV0dXJuIEVycm9yID8gMSA6IDA7Ci0rICAgIH0KLSsKLSsjZW5kaWYKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9maXBzL01ha2VmaWxlLmZpcHMgb3BlbnNzbC0x LjAuMWsvY3J5cHRvL2ZpcHMvTWFrZWZpbGUKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vZmlw cy9NYWtlZmlsZS5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTY4OTIyNjc1ICswMTAwCi0rKysg b3BlbnNzbC0xLjAuMWsvY3J5cHRvL2ZpcHMvTWFrZWZpbGUJMjAxNS0wMS0wOSAwOTo1MTo1MS41 Njg5MjI2NzUgKzAxMDAKLUBAIC0wLDAgKzEsMzQxIEBACi0rIwotKyMgT3BlblNTTC9jcnlwdG8v Zmlwcy9NYWtlZmlsZQotKyMKLSsKLStESVI9CWZpcHMKLStUT1A9CS4uLy4uCi0rQ0M9CWNjCi0r SU5DTFVERVM9Ci0rQ0ZMQUc9LWcKLStNQUtFRklMRT0JTWFrZWZpbGUKLStBUj0JCWFyIHIKLSsK LStDRkxBR1M9ICQoSU5DTFVERVMpICQoQ0ZMQUcpCi0rCi0rR0VORVJBTD1NYWtlZmlsZQotK1RF U1Q9Zmlwc190ZXN0X3N1aXRlLmMgZmlwc19yYW5kdGVzdC5jCi0rQVBQUz0KLSsKLStQUk9HUkFN PSBmaXBzX3N0YW5kYWxvbmVfaG1hYwotK0VYRT0gJChQUk9HUkFNKSQoRVhFX0VYVCkKLSsKLStM SUI9JChUT1ApL2xpYmNyeXB0by5hCi0rTElCU1JDPWZpcHNfYWVzX3NlbGZ0ZXN0LmMgZmlwc19k ZXNfc2VsZnRlc3QuYyBmaXBzX2htYWNfc2VsZnRlc3QuYyBmaXBzX3JhbmRfc2VsZnRlc3QuYyBc Ci0rICAgIGZpcHNfcnNhX3NlbGZ0ZXN0LmMgZmlwc19zaGFfc2VsZnRlc3QuYyBmaXBzLmMgZmlw c19kc2Ffc2VsZnRlc3QuYyAgZmlwc19yYW5kLmMgXAotKyAgICBmaXBzX3JzYV94OTMxZy5jIGZp cHNfcG9zdC5jIGZpcHNfZHJiZ19jdHIuYyBmaXBzX2RyYmdfaGFzaC5jIGZpcHNfZHJiZ19obWFj LmMgXAotKyAgICBmaXBzX2RyYmdfbGliLmMgZmlwc19kcmJnX3JhbmQuYyBmaXBzX2RyYmdfc2Vs ZnRlc3QuYyBmaXBzX3JhbmRfbGliLmMgXAotKyAgICBmaXBzX2NtYWNfc2VsZnRlc3QuYyBmaXBz X2VuYy5jIGZpcHNfbWQuYwotKwotK0xJQk9CSj1maXBzX2Flc19zZWxmdGVzdC5vIGZpcHNfZGVz X3NlbGZ0ZXN0Lm8gZmlwc19obWFjX3NlbGZ0ZXN0Lm8gZmlwc19yYW5kX3NlbGZ0ZXN0Lm8gXAot KyAgICBmaXBzX3JzYV9zZWxmdGVzdC5vIGZpcHNfc2hhX3NlbGZ0ZXN0Lm8gZmlwcy5vIGZpcHNf ZHNhX3NlbGZ0ZXN0Lm8gIGZpcHNfcmFuZC5vIFwKLSsgICAgZmlwc19yc2FfeDkzMWcubyBmaXBz X3Bvc3QubyBmaXBzX2RyYmdfY3RyLm8gZmlwc19kcmJnX2hhc2gubyBmaXBzX2RyYmdfaG1hYy5v IFwKLSsgICAgZmlwc19kcmJnX2xpYi5vIGZpcHNfZHJiZ19yYW5kLm8gZmlwc19kcmJnX3NlbGZ0 ZXN0Lm8gZmlwc19yYW5kX2xpYi5vIFwKLSsgICAgZmlwc19jbWFjX3NlbGZ0ZXN0Lm8gZmlwc19l bmMubyBmaXBzX21kLm8KLSsKLStMSUJDUllQVE89LUwuLiAtbGNyeXB0bwotKwotK1NSQz0gJChM SUJTUkMpIGZpcHNfc3RhbmRhbG9uZV9obWFjLmMKLSsKLStFWEhFQURFUj0gZmlwcy5oIGZpcHNf cmFuZC5oCi0rSEVBREVSPQkkKEVYSEVBREVSKQotKwotK0FMTD0gICAgJChHRU5FUkFMKSAkKFNS QykgJChIRUFERVIpCi0rCi0rdG9wOgotKwkoY2QgLi4vLi47ICQoTUFLRSkgRElSUz1jcnlwdG8g U0RJUlM9JChESVIpIHN1Yl9hbGwpCi0rCi0rYWxsOglsaWIgZXhlCi0rCi0rbGliOgkkKExJQk9C SikKLSsJJChBUikgJChMSUIpICQoTElCT0JKKQotKwkkKFJBTkxJQikgJChMSUIpIHx8IGVjaG8g TmV2ZXIgbWluZC4KLSsJQHRvdWNoIGxpYgotKwotK2V4ZToJJChFWEUpCi0rCi0rZmlsZXM6Ci0r CSQoUEVSTCkgJChUT1ApL3V0aWwvZmlsZXMucGwgTWFrZWZpbGUgPj4gJChUT1ApL01JTkZPCi0r Ci0rbGlua3M6Ci0rCUAkKFBFUkwpICQoVE9QKS91dGlsL21rbGluay5wbCAuLi8uLi9pbmNsdWRl L29wZW5zc2wgJChFWEhFQURFUikKLSsJQCQoUEVSTCkgJChUT1ApL3V0aWwvbWtsaW5rLnBsIC4u Ly4uL3Rlc3QgJChURVNUKQotKwlAJChQRVJMKSAkKFRPUCkvdXRpbC9ta2xpbmsucGwgLi4vLi4v YXBwcyAkKEFQUFMpCi0rCi0raW5zdGFsbDoKLSsJQFsgLW4gIiQoSU5TVEFMTFRPUCkiIF0gIyBz aG91bGQgYmUgc2V0IGJ5IHRvcCBNYWtlZmlsZS4uLgotKwlAaGVhZGVybGlzdD0iJChFWEhFQURF UikiOyBmb3IgaSBpbiAkJGhlYWRlcmxpc3QgOyBcCi0rCWRvICBcCi0rCShjcCAkJGkgJChJTlNU QUxMX1BSRUZJWCkkKElOU1RBTExUT1ApL2luY2x1ZGUvb3BlbnNzbC8kJGk7IFwKLSsJY2htb2Qg NjQ0ICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS9pbmNsdWRlL29wZW5zc2wvJCRpICk7 IFwKLSsJZG9uZTsKLSsKLSt0YWdzOgotKwljdGFncyAkKFNSQykKLSsKLSt0ZXN0czoKLSsKLSts aW50OgotKwlsaW50IC1ETElOVCAkKElOQ0xVREVTKSAkKFNSQyk+Zmx1ZmYKLSsKLStkZXBlbmQ6 Ci0rCUBbIC1uICIkKE1BS0VERVBFTkQpIiBdICMgc2hvdWxkIGJlIHNldCBieSB1cHBlciBNYWtl ZmlsZS4uLgotKwkkKE1BS0VERVBFTkQpIC0tICQoQ0ZMQUcpICQoSU5DTFVERVMpICQoREVQRkxB RykgLS0gJChQUk9HUykgJChMSUJTUkMpCi0rCi0rZGNsZWFuOgotKwkkKFBFUkwpIC1wZSAnaWYg KC9eIyBETyBOT1QgREVMRVRFIFRISVMgTElORS8pIHtwcmludDsgZXhpdCgwKTt9JyAkKE1BS0VG SUxFKSA+TWFrZWZpbGUubmV3Ci0rCW12IC1mIE1ha2VmaWxlLm5ldyAkKE1BS0VGSUxFKQotKwot K2NsZWFuOgotKwlybSAtZiAqLm8gKi5vYmogbGliIHRhZ3MgY29yZSAucHVyZSAubmZzKiAqLm9s ZCAqLmJhayBmbHVmZgotKwotKyQoRVhFKTogJChQUk9HUkFNKS5vCi0rCUZJUFNfU0hBX0FTTT0i IjsgZm9yIGkgaW4gJChTSEExX0FTTV9PQkopIHNoYTI1Ni5vOyBkbyBGSVBTX1NIQV9BU009IiQk RklQU19TSEFfQVNNIC4uL3NoYS8kJGkiIDsgZG9uZTsgXAotKwlmb3IgaSBpbiAkKENQVUlEX09C Sik7IGRvIEZJUFNfU0hBX0FTTT0iJCRGSVBTX1NIQV9BU00gLi4vJCRpIiA7IGRvbmU7IFwKLSsJ JChDQykgLW8gJEAgJChDRkxBR1MpICQoUFJPR1JBTSkubyAkJEZJUFNfU0hBX0FTTQotKwotKyMg RE8gTk9UIERFTEVURSBUSElTIExJTkUgLS0gbWFrZSBkZXBlbmQgZGVwZW5kcyBvbiBpdC4KLSsK LStmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvYXNuMS5oCi0rZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9v czIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLStmaXBzLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwcy5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2htYWMu aAotK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29ial9tYWMuaAotK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMu aCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAotK2ZpcHMubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29wZW5zc2x2LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgK LStmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3JzYS5oCi0rZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zeW1oYWNrcy5oIGZpcHMuYyBmaXBzX2xvY2wuaAotK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0r Zmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlw c19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Vyci5oCi0rZmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX2Flc19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfYWVzX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2Flc19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19hZXNfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX2Flc19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCi0rZmlwc19hZXNfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19hZXNfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2Flc19zZWxmdGVzdC5jCi0rZmlwc19k ZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvYmlvLmgKLStmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvY3J5cHRvLmgKLStmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv ZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLStmaXBzX2Rlc19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMu aAotK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCi0r Zmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAotK2Zp cHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStmaXBz X2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAotK2Zp cHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0rZmlw c19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKLStmaXBz X2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBz X2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNfZGVz X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfZGVzX3Nl bGZ0ZXN0LmMKLStmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCi0rZmlwc19kcmJnX2N0ci5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYmlvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlwc19k cmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZXZwLmgKLStmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBz LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHNfcmFuZC5oCi0rZmlwc19kcmJnX2N0ci5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFj LmgKLStmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStm aXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlw c19kcmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfZHJi Z19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL3JhbmQuaAotK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3Nh ZmVzdGFjay5oCi0rZmlwc19kcmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2su aCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaAotK2ZpcHNfZHJiZ19jdHIubzogZmlw c19kcmJnX2N0ci5jIGZpcHNfcmFuZF9sY2wuaAotK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCi0rZmlwc19k cmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oIC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9jcnlwdG8uaAotK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9l X29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaAotK2ZpcHNfZHJiZ19oYXNoLm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZmlwc19yYW5kLmgKLStmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2Ry YmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19kcmJnX2hh c2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX2RyYmdfaGFz aC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfZHJiZ19oYXNoLm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9y YW5kLmgKLStmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNr LmgKLStmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2Zp cHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfZHJi Z19oYXNoLmMKLStmaXBzX2RyYmdfaGFzaC5vOiBmaXBzX3JhbmRfbGNsLmgKLStmaXBzX2RyYmdf aG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2FzbjEuaAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmgKLStmaXBz X2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19kcmJnX2ht YWMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHNfcmFuZC5oCi0rZmlwc19kcmJnX2htYWMu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2htYWMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2Jq X21hYy5oCi0rZmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMu aAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5o Ci0rZmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKLStm aXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvcmFuZC5oCi0rZmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3N0YWNrLmgKLStmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3lt aGFja3MuaCBmaXBzX2RyYmdfaG1hYy5jCi0rZmlwc19kcmJnX2htYWMubzogZmlwc19yYW5kX2xj bC5oCi0rZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2FzbjEuaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2Jpby5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNfZHJiZ19s aWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2Vyci5oCi0rZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2ZpcHNfcmFuZC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmgKLStmaXBz X2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vYmplY3RzLmgKLStmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVu c3NsY29uZi5oCi0rZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNz bHYuaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvc3RhY2suaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaAotK2ZpcHNf ZHJiZ19saWIubzogZmlwc19kcmJnX2xpYi5jIGZpcHNfbG9jbC5oIGZpcHNfcmFuZF9sY2wuaAot K2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYXNuMS5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2Jpby5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNfZHJiZ19yYW5k Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9l cnIuaAotK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2ZpcHNfcmFuZC5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2htYWMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfZHJiZ19y YW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2RyYmdfcmFuZC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX2RyYmdfcmFuZC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmgKLStm aXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBz X2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNfZHJiZ19y YW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfZHJiZ19yYW5kLmMK LStmaXBzX2RyYmdfcmFuZC5vOiBmaXBzX3JhbmRfbGNsLmgKLStmaXBzX2RyYmdfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24x LmgKLStmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0r Zmlwc19kcmJnX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2Zp cHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZXJyLmgKLStmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX2RyYmdf c2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHNfcmFuZC5oCi0rZmlwc19kcmJn X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmgKLStmaXBzX2RyYmdfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX2RyYmdfc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAotK2ZpcHNfZHJiZ19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19kcmJnX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19kcmJnX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0rZmlwc19kcmJnX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCi0rZmlwc19kcmJnX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmgKLStmaXBzX2RyYmdfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19kcmJnX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0rZmlwc19kcmJnX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfZHJiZ19zZWxmdGVzdC5jCi0r Zmlwc19kcmJnX3NlbGZ0ZXN0Lm86IGZpcHNfZHJiZ19zZWxmdGVzdC5oIGZpcHNfbG9jbC5oIGZp cHNfcmFuZF9sY2wuaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0rZmlwc19kc2Ffc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2JuLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0 by5oCi0rZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2RzYS5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oCi0rZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaAotK2ZpcHNf ZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb2JqX21hYy5oCi0rZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29iamVjdHMuaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vcGVuc3NsY29uZi5oCi0rZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29wZW5zc2x2LmgKLStmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb3NzbF90eXAuaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zYWZlc3RhY2suaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zdGFjay5oCi0rZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5 bWhhY2tzLmggZmlwc19kc2Ffc2VsZnRlc3QuYwotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IGZpcHNf bG9jbC5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24x LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLStm aXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2htYWMuaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvbGhhc2guaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb2JqX21hYy5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vYmplY3RzLmgKLStmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L29wZW5zc2xjb25mLmgKLStmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29wZW5zc2x2LmgKLStmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29zc2xfdHlwLmgKLStmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3NhZmVzdGFjay5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zdGFjay5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zeW1oYWNrcy5oIGZpcHNfaG1hY19zZWxmdGVzdC5jCi0rZmlwc19wb3N0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCi0rZmlwc19w b3N0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wv Y3J5cHRvLmgKLStmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2RzYS5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oCi0rZmlwc19wb3N0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9lcnIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmgKLStmaXBzX3Bvc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5k LmgKLStmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2htYWMuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv b2JqX21hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStmaXBzX3Bvc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX3Bvc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlw LmgKLStmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvcnNhLmgKLStmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3Nh ZmVzdGFjay5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0rZmlwc19wb3N0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfbG9jbC5oIGZpcHNfcG9zdC5jCi0r Zmlwc19yYW5kLm86IC4uLy4uL2Vfb3MuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmgKLStm aXBzX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvYmlvLmgKLStmaXBzX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5o IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oCi0rZmlwc19yYW5kLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9lcnIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmgKLStmaXBzX3JhbmQu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlw c19yYW5kLmgKLStmaXBzX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2htYWMuaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb2JqX21hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStmaXBzX3Jh bmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX3JhbmQubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29z c2xfdHlwLmgKLStmaXBzX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBzX3JhbmQubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL3N0YWNrLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmgKLStmaXBz X3JhbmQubzogZmlwc19sb2NsLmggZmlwc19yYW5kLmMKLStmaXBzX3JhbmRfbGliLm86IC4uLy4u L2Vfb3MuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmgKLStmaXBzX3JhbmRfbGliLm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0r Zmlwc19yYW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Vfb3MyLmgKLStmaXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9lcnIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmgKLStmaXBzX3JhbmRfbGliLm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHNf cmFuZC5oCi0rZmlwc19yYW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCi0rZmlwc19yYW5kX2xpYi5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb2JqX21hYy5oCi0rZmlwc19yYW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19yYW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv b3BlbnNzbGNvbmYuaAotK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29w ZW5zc2x2LmgKLStmaXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5 cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmgKLStmaXBzX3JhbmRfbGliLm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3N0YWNrLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmgKLStm aXBzX3JhbmRfbGliLm86IGZpcHNfcmFuZF9saWIuYwotK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaAot K2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKLStmaXBz X3JhbmRfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlwc19y YW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9lcnIuaAotK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAotK2ZpcHNfcmFuZF9zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgKLStmaXBzX3JhbmRfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2htYWMuaAotK2ZpcHNfcmFuZF9zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfcmFuZF9zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStmaXBzX3JhbmRfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX3JhbmRfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKLStmaXBzX3JhbmRfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKLStmaXBzX3JhbmRfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAotK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBzX3JhbmRfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzX3JhbmRfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19sb2NsLmgKLStmaXBzX3JhbmRfc2Vs ZnRlc3QubzogZmlwc19yYW5kX3NlbGZ0ZXN0LmMKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotK2Zp cHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ibi5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAotK2ZpcHNfcnNhX3Nl bGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvZmlwcy5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xo YXNoLmgKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21h Yy5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMu aAotK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29u Zi5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2 LmgKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAu aAotK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yc2EuaAotK2Zp cHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2Zp cHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0rZmlwc19y c2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19yc2Ff c2VsZnRlc3QuYwotK2ZpcHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24x LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0rZmlwc19yc2FfeDkzMWcubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2JuLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlw c19yc2FfeDkzMWcubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2Vyci5oCi0rZmlwc19yc2FfeDkzMWcubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfcnNhX3g5MzFnLm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19yc2FfeDkzMWcubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKLStmaXBzX3JzYV94OTMxZy5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcnNhLmgK LStmaXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStm aXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNfcnNh X3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfcnNhX3g5MzFn LmMKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAotK2ZpcHNfc2hh X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZmlwcy5oCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2xoYXNoLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2Jq X21hYy5oCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVj dHMuaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Ns Y29uZi5oCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5z c2x2LmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90 eXAuaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3Rh Y2suaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zaGEuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfc2hhX3NlbGZ0ZXN0LmMKLWRpZmYgLXVw IG9wZW5zc2wtMS4wLjFrL2NyeXB0by9obWFjL2htYWMuYy5maXBzIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9obWFjL2htYWMuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9obWFjL2htYWMuYy5m aXBzCTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAu MWsvY3J5cHRvL2htYWMvaG1hYy5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTY4OTIyNjc1ICswMTAw Ci1AQCAtODEsMTEgKzgxLDYgQEAgaW50IEhNQUNfSW5pdF9leChITUFDX0NUWCAqY3R4LCBjb25z dCB2bwotIAkJCUVWUGVycihFVlBfRl9ITUFDX0lOSVRfRVgsIEVWUF9SX0RJU0FCTEVEX0ZPUl9G SVBTKTsKLSAJCQlyZXR1cm4gMDsKLSAJCQl9Ci0tCQkvKiBPdGhlciBhbGdvcml0aG0gYmxvY2tp bmcgd2lsbCBiZSBkb25lIGluIEZJUFNfY21hY19pbml0LAotLQkJICogdmlhIEZJUFNfaG1hY19p bml0X2V4KCkuCi0tCQkgKi8KLS0JCWlmICghaW1wbCAmJiAhY3R4LT5pX2N0eC5lbmdpbmUpCi0t CQkJcmV0dXJuIEZJUFNfaG1hY19pbml0X2V4KGN0eCwga2V5LCBsZW4sIG1kLCBOVUxMKTsKLSAJ CX0KLSAjZW5kaWYKLSAKLUBAIC05OSw2ICs5NCwxMyBAQCBpbnQgSE1BQ19Jbml0X2V4KEhNQUNf Q1RYICpjdHgsIGNvbnN0IHZvCi0gCi0gCWlmIChrZXkgIT0gTlVMTCkKLSAJCXsKLSsjaWZkZWYg T1BFTlNTTF9GSVBTCi0rCQlpZiAoRklQU19tb2RlKCkgJiYgIShtZC0+ZmxhZ3MgJiBFVlBfTURf RkxBR19GSVBTKQotKwkJJiYgKCEoY3R4LT5tZF9jdHguZmxhZ3MgJiBFVlBfTURfQ1RYX0ZMQUdf Tk9OX0ZJUFNfQUxMT1cpCi0rCQkgfHwgIShjdHgtPmlfY3R4LmZsYWdzICYgRVZQX01EX0NUWF9G TEFHX05PTl9GSVBTX0FMTE9XKQotKwkJIHx8ICEoY3R4LT5vX2N0eC5mbGFncyAmIEVWUF9NRF9D VFhfRkxBR19OT05fRklQU19BTExPVykpKQotKwkJCWdvdG8gZXJyOwotKyNlbmRpZgotIAkJcmVz ZXQ9MTsKLSAJCWo9RVZQX01EX2Jsb2NrX3NpemUobWQpOwotIAkJT1BFTlNTTF9hc3NlcnQoaiA8 PSAoaW50KXNpemVvZihjdHgtPmtleSkpOwotQEAgLTE1NSwxMCArMTU3LDYgQEAgaW50IEhNQUNf SW5pdChITUFDX0NUWCAqY3R4LCBjb25zdCB2b2lkCi0gCi0gaW50IEhNQUNfVXBkYXRlKEhNQUNf Q1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pCi0gCXsKLS0j aWZkZWYgT1BFTlNTTF9GSVBTCi0tCWlmIChGSVBTX21vZGUoKSAmJiAhY3R4LT5pX2N0eC5lbmdp bmUpCi0tCQlyZXR1cm4gRklQU19obWFjX3VwZGF0ZShjdHgsIGRhdGEsIGxlbik7Ci0tI2VuZGlm Ci0gCXJldHVybiBFVlBfRGlnZXN0VXBkYXRlKCZjdHgtPm1kX2N0eCxkYXRhLGxlbik7Ci0gCX0K LSAKLUBAIC0xNjYsMTAgKzE2NCw2IEBAIGludCBITUFDX0ZpbmFsKEhNQUNfQ1RYICpjdHgsIHVu c2lnbmVkIGMKLSAJewotIAl1bnNpZ25lZCBpbnQgaTsKLSAJdW5zaWduZWQgY2hhciBidWZbRVZQ X01BWF9NRF9TSVpFXTsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tCWlmIChGSVBTX21vZGUoKSAm JiAhY3R4LT5pX2N0eC5lbmdpbmUpCi0tCQlyZXR1cm4gRklQU19obWFjX2ZpbmFsKGN0eCwgbWQs IGxlbik7Ci0tI2VuZGlmCi0gCi0gCWlmICghRVZQX0RpZ2VzdEZpbmFsX2V4KCZjdHgtPm1kX2N0 eCxidWYsJmkpKQotIAkJZ290byBlcnI7Ci1AQCAtMjA5LDEzICsyMDMsNiBAQCBpbnQgSE1BQ19D VFhfY29weShITUFDX0NUWCAqZGN0eCwgSE1BQ19DCi0gCi0gdm9pZCBITUFDX0NUWF9jbGVhbnVw KEhNQUNfQ1RYICpjdHgpCi0gCXsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tCWlmIChGSVBTX21v ZGUoKSAmJiAhY3R4LT5pX2N0eC5lbmdpbmUpCi0tCQl7Ci0tCQlGSVBTX2htYWNfY3R4X2NsZWFu dXAoY3R4KTsKLS0JCXJldHVybjsKLS0JCX0KLS0jZW5kaWYKLSAJRVZQX01EX0NUWF9jbGVhbnVw KCZjdHgtPmlfY3R4KTsKLSAJRVZQX01EX0NUWF9jbGVhbnVwKCZjdHgtPm9fY3R4KTsKLSAJRVZQ X01EX0NUWF9jbGVhbnVwKCZjdHgtPm1kX2N0eCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9j cnlwdG8vbWRjMi9tZGMyZGdzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL21kYzIvbWRj MmRnc3QuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9tZGMyL21kYzJkZ3N0LmMuZmlwcwky MDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9tZGMyL21kYzJkZ3N0LmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41Njg5MjI2NzUgKzAxMDAK LUBAIC03Niw3ICs3Niw3IEBACi0gCQkJKigoYykrKyk9KHVuc2lnbmVkIGNoYXIpKCgobCk+PjI0 TCkmMHhmZikpCi0gCi0gc3RhdGljIHZvaWQgbWRjMl9ib2R5KE1EQzJfQ1RYICpjLCBjb25zdCB1 bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGxlbik7Ci0tZmlwc19tZF9pbml0KE1EQzIpCi0rbm9u Zmlwc19tZF9pbml0KE1EQzIpCi0gCXsKLSAJYy0+bnVtPTA7Ci0gCWMtPnBhZF90eXBlPTE7Ci1k aWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vbWQyL21kMl9kZ3N0LmMuZmlwcyBvcGVuc3Ns LTEuMC4xay9jcnlwdG8vbWQyL21kMl9kZ3N0LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8v bWQyL21kMl9kZ3N0LmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAot KysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9tZDIvbWQyX2Rnc3QuYwkyMDE1LTAxLTA5IDA5OjUx OjUxLjU2ODkyMjY3NSArMDEwMAotQEAgLTYyLDYgKzYyLDExIEBACi0gI2luY2x1ZGUgPG9wZW5z c2wvbWQyLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbHYuaD4KLSAjaW5jbHVkZSA8b3Bl bnNzbC9jcnlwdG8uaD4KLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rI2luY2x1ZGUgPG9wZW5zc2wv Zmlwcy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotIAotIGNvbnN0 IGNoYXIgTUQyX3ZlcnNpb25bXT0iTUQyIiBPUEVOU1NMX1ZFUlNJT05fUFRFWFQ7Ci0gCi1AQCAt MTE2LDcgKzEyMSw3IEBAIGNvbnN0IGNoYXIgKk1EMl9vcHRpb25zKHZvaWQpCi0gCQlyZXR1cm4o Im1kMihpbnQpIik7Ci0gCX0KLSAKLS1maXBzX21kX2luaXQoTUQyKQotK25vbmZpcHNfbWRfaW5p dChNRDIpCi0gCXsKLSAJYy0+bnVtPTA7Ci0gCW1lbXNldChjLT5zdGF0ZSwwLHNpemVvZiBjLT5z dGF0ZSk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vbWQ0L21kNF9kZ3N0LmMuZmlw cyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vbWQ0L21kNF9kZ3N0LmMKLS0tLSBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vbWQ0L21kNF9kZ3N0LmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAw MCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9tZDQvbWQ0X2Rnc3QuYwkyMDE1LTAx LTA5IDA5OjUxOjUxLjU2OTkyMjY5OCArMDEwMAotQEAgLTcxLDcgKzcxLDcgQEAgY29uc3QgY2hh ciBNRDRfdmVyc2lvbltdPSJNRDQiIE9QRU5TU0xfVgotICNkZWZpbmUgSU5JVF9EQVRBX0MgKHVu c2lnbmVkIGxvbmcpMHg5OGJhZGNmZUwKLSAjZGVmaW5lIElOSVRfREFUQV9EICh1bnNpZ25lZCBs b25nKTB4MTAzMjU0NzZMCi0gCi0tZmlwc19tZF9pbml0KE1ENCkKLStub25maXBzX21kX2luaXQo TUQ0KQotIAl7Ci0gCW1lbXNldCAoYywwLHNpemVvZigqYykpOwotIAljLT5BPUlOSVRfREFUQV9B OwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL21kNS9tZDVfZGdzdC5jLmZpcHMgb3Bl bnNzbC0xLjAuMWsvY3J5cHRvL21kNS9tZDVfZGdzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5 cHRvL21kNS9tZDVfZGdzdC5jLmZpcHMJMjAxNS0wMS0wOCAxNTowMDozNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMJMjAxNS0wMS0wOSAw OTo1MTo1MS41Njk5MjI2OTggKzAxMDAKLUBAIC03MSw3ICs3MSw3IEBAIGNvbnN0IGNoYXIgTUQ1 X3ZlcnNpb25bXT0iTUQ1IiBPUEVOU1NMX1YKLSAjZGVmaW5lIElOSVRfREFUQV9DICh1bnNpZ25l ZCBsb25nKTB4OThiYWRjZmVMCi0gI2RlZmluZSBJTklUX0RBVEFfRCAodW5zaWduZWQgbG9uZykw eDEwMzI1NDc2TAotIAotLWZpcHNfbWRfaW5pdChNRDUpCi0rbm9uZmlwc19tZF9pbml0KE1ENSkK LSAJewotIAltZW1zZXQgKGMsMCxzaXplb2YoKmMpKTsKLSAJYy0+QT1JTklUX0RBVEFfQTsKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9vX2ZpcHMuYy5maXBzIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9vX2ZpcHMuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9vX2ZpcHMuYy5maXBz CTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsv Y3J5cHRvL29fZmlwcy5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTY5OTIyNjk4ICswMTAwCi1AQCAt NzksNiArNzksOCBAQCBpbnQgRklQU19tb2RlX3NldChpbnQgcikKLSAjaWZuZGVmIEZJUFNfQVVU SF9VU0VSX1BBU1MKLSAjZGVmaW5lIEZJUFNfQVVUSF9VU0VSX1BBU1MJIkRlZmF1bHQgRklQUyBD cnlwdG8gVXNlciBQYXNzd29yZCIKLSAjZW5kaWYKLSsJaWYgKHIgJiYgRklQU19tb2R1bGVfbW9k ZSgpKSAvKiBjYW4gYmUgaW1wbGljaXRseSBpbml0aWFsaXplZCBieSBPUEVOU1NMX2luaXQoKSAq LwotKwkJcmV0dXJuIDE7Ci0gCWlmICghRklQU19tb2R1bGVfbW9kZV9zZXQociwgRklQU19BVVRI X1VTRVJfUEFTUykpCi0gCQlyZXR1cm4gMDsKLSAJaWYgKHIpCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4xay9jcnlwdG8vb19pbml0LmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vb19pbml0LmMK LS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vb19pbml0LmMuZmlwcwkyMDE0LTEwLTE1IDE1OjQ5 OjE1LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9vX2luaXQuYwky MDE1LTAxLTA5IDA5OjUxOjUxLjU2OTkyMjY5OCArMDEwMAotQEAgLTU1LDI4ICs1NSw2OCBAQAot ICNpbmNsdWRlIDxlX29zLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0gI2lmZGVmIE9Q RU5TU0xfRklQUwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3lzL3N0YXQu aD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUg PGVycm5vLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMu aD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0rCi0rI2RlZmluZSBGSVBTX01PREVfU1dJ VENIX0ZJTEUgIi9wcm9jL3N5cy9jcnlwdG8vZmlwc19lbmFibGVkIgotKwotK3N0YXRpYyB2b2lk IGluaXRfZmlwc19tb2RlKHZvaWQpCi0rCXsKLSsJY2hhciBidWZbMl0gPSAiMCI7Ci0rCWludCBm ZDsKLSsJCi0rCWlmIChnZXRlbnYoIk9QRU5TU0xfRk9SQ0VfRklQU19NT0RFIikgIT0gTlVMTCkK LSsJCXsKLSsJCWJ1ZlswXSA9ICcxJzsKLSsJCX0KLSsJZWxzZSBpZiAoKGZkID0gb3BlbihGSVBT X01PREVfU1dJVENIX0ZJTEUsIE9fUkRPTkxZKSkgPj0gMCkKLSsJCXsKLSsJCXdoaWxlIChyZWFk KGZkLCBidWYsIHNpemVvZihidWYpKSA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOwotKwkJY2xvc2Uo ZmQpOwotKwkJfQotKwkvKiBGYWlsdXJlIHJlYWRpbmcgdGhlIGZpcHMgbW9kZSBzd2l0Y2ggZmls ZSBtZWFucyBqdXN0IG5vdAotKwkgKiBzd2l0Y2hpbmcgaW50byBGSVBTIG1vZGUuIFdlIHdvdWxk IGJyZWFrIHRvbyBtYW55IHRoaW5ncwotKwkgKiBvdGhlcndpc2UuIAotKwkgKi8KLSsJCi0rCWlm IChidWZbMF0gPT0gJzEnKQotKwkJewotKwkJRklQU19tb2RlX3NldCgxKTsKLSsJCX0KLSsJfQot ICNlbmRpZgotIAotIC8qIFBlcmZvcm0gYW55IGVzc2VudGlhbCBPcGVuU1NMIGluaXRpYWxpemF0 aW9uIG9wZXJhdGlvbnMuCi0gICogQ3VycmVudGx5IG9ubHkgc2V0cyBGSVBTIGNhbGxiYWNrcwot ICAqLwotIAotLXZvaWQgT1BFTlNTTF9pbml0KHZvaWQpCi0rdm9pZCBPUEVOU1NMX2luaXRfbGli cmFyeSh2b2lkKQotIAl7Ci0gCXN0YXRpYyBpbnQgZG9uZSA9IDA7Ci0gCWlmIChkb25lKQotIAkJ cmV0dXJuOwotIAlkb25lID0gMTsKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0tCUZJUFNfc2V0X2xv Y2tpbmdfY2FsbGJhY2tzKENSWVBUT19sb2NrLCBDUllQVE9fYWRkX2xvY2spOwotLQlGSVBTX3Nl dF9lcnJvcl9jYWxsYmFja3MoRVJSX3B1dF9lcnJvciwgRVJSX2FkZF9lcnJvcl92ZGF0YSk7Ci0t CUZJUFNfc2V0X21hbGxvY19jYWxsYmFja3MoQ1JZUFRPX21hbGxvYywgQ1JZUFRPX2ZyZWUpOwot IAlSQU5EX2luaXRfZmlwcygpOwotKwlpbml0X2ZpcHNfbW9kZSgpOwotKwlpZiAoIUZJUFNfbW9k ZSgpKQotKwkJewotKwkJLyogQ2xlYW4gdXAgcHJlbWF0dXJlbHkgc2V0IGRlZmF1bHQgcmFuZCBt ZXRob2QgKi8KLSsJCVJBTkRfc2V0X3JhbmRfbWV0aG9kKE5VTEwpOwotKwkJfQotICNlbmRpZgot ICNpZiAwCi0gCWZwcmludGYoc3RkZXJyLCAiQ2FsbGVkIE9QRU5TU0xfaW5pdFxuIik7Ci0gI2Vu ZGlmCi0gCX0KLSAKLSt2b2lkIE9QRU5TU0xfaW5pdCh2b2lkKQotKwl7Ci0rCU9QRU5TU0xfaW5p dF9saWJyYXJ5KCk7Ci0rCX0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9vcGVuc3Ns Y29uZi5oLmluLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL29wZW5zc2xjb25mLmguaW4KLS0t LSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vb3BlbnNzbGNvbmYuaC5pbi5maXBzCTIwMTUtMDEtMDgg MTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL29wZW5z c2xjb25mLmguaW4JMjAxNS0wMS0wOSAwOTo1MTo1MS41Njk5MjI2OTggKzAxMDAKLUBAIC0xLDUg KzEsMjAgQEAKLSAvKiBjcnlwdG8vb3BlbnNzbGNvbmYuaC5pbiAqLwotIAotKyNpZmRlZiBPUEVO U1NMX0RPSU5HX01BS0VERVBFTkQKLSsKLSsvKiBJbmNsdWRlIGFueSBzeW1ib2xzIGhlcmUgdGhh dCBoYXZlIHRvIGJlIGV4cGxpY2l0bHkgc2V0IHRvIGVuYWJsZSBhIGZlYXR1cmUKLSsgKiB0aGF0 IHNob3VsZCBiZSB2aXNpYmxlIHRvIG1ha2VkZXBlbmQuCi0rICoKLSsgKiBbT3VyICJtYWtlIGRl cGVuZCIgZG9lc24ndCBhY3R1YWxseSBsb29rIGF0IHRoaXMsIHdlIHVzZSBhY3R1YWwgYnVpbGQg c2V0dGluZ3MKLSsgKiBpbnN0ZWFkOyB3ZSB3YW50IHRvIG1ha2UgaXQgZWFzeSB0byByZW1vdmUg c3ViZGlyZWN0b3JpZXMgd2l0aCBkaXNhYmxlZCBhbGdvcml0aG1zLl0KLSsgKi8KLSsKLSsjaWZu ZGVmIE9QRU5TU0xfRklQUwotKyNkZWZpbmUgT1BFTlNTTF9GSVBTCi0rI2VuZGlmCi0rCi0rI2Vu ZGlmCi0rCi0gLyogR2VuZXJhdGUgODAzODYgY29kZT8gKi8KLSAjdW5kZWYgSTM4Nl9PTkxZCi0g Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcmFuZC9tZF9yYW5kLmMuZmlwcyBvcGVu c3NsLTEuMC4xay9jcnlwdG8vcmFuZC9tZF9yYW5kLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlw dG8vcmFuZC9tZF9yYW5kLmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEw MAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9yYW5kL21kX3JhbmQuYwkyMDE1LTAxLTA5IDA5 OjUxOjUxLjU3MDkyMjcyMSArMDEwMAotQEAgLTM5MSw3ICszOTEsMTAgQEAgaW50IHNzbGVheV9y YW5kX2J5dGVzKHVuc2lnbmVkIGNoYXIgKmJ1ZgotIAlDUllQVE9fd191bmxvY2soQ1JZUFRPX0xP Q0tfUkFORDIpOwotIAljcnlwdG9fbG9ja19yYW5kID0gMTsKLSAKLS0JaWYgKCFpbml0aWFsaXpl ZCkKLSsJLyogYWx3YXlzIHBvbGwgZm9yIGV4dGVybmFsIGVudHJvcHkgaW4gRklQUyBtb2RlLCBk cmJnIHByb3ZpZGVzIHRoZSAKLSsJICogZXhwYW5zaW9uCi0rCSAqLwotKwlpZiAoIWluaXRpYWxp emVkIHx8IEZJUFNfbW9kdWxlX21vZGUoKSkgCi0gCQl7Ci0gCQlSQU5EX3BvbGwoKTsKLSAJCWlu aXRpYWxpemVkID0gMTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9yYW5kL3JhbmQu aC5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9yYW5kL3JhbmQuaAotLS0tIG9wZW5zc2wtMS4w LjFrL2NyeXB0by9yYW5kL3JhbmQuaC5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuMDIwOTEwMjgy ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3JhbmQvcmFuZC5oCTIwMTUtMDEtMDkg MDk6NTE6NTEuNTcwOTIyNzIxICswMTAwCi1AQCAtMTMzLDE2ICsxMzMsMzQgQEAgdm9pZCBFUlJf bG9hZF9SQU5EX3N0cmluZ3Modm9pZCk7Ci0gLyogRXJyb3IgY29kZXMgZm9yIHRoZSBSQU5EIGZ1 bmN0aW9ucy4gKi8KLSAKLSAvKiBGdW5jdGlvbiBjb2Rlcy4gKi8KLSsjZGVmaW5lIFJBTkRfRl9F TkdfUkFORF9HRVRfUkFORF9NRVRIT0QJCQkgMTA4Ci0rI2RlZmluZSBSQU5EX0ZfRklQU19SQU5E CQkJCSAxMDMKLSsjZGVmaW5lIFJBTkRfRl9GSVBTX1JBTkRfQllURVMJCQkJIDEwMgotKyNkZWZp bmUgUkFORF9GX0ZJUFNfUkFORF9TRVRfRFQJCQkJIDEwNgotKyNkZWZpbmUgUkFORF9GX0ZJUFNf WDkzMV9TRVRfRFQJCQkJIDEwNgotKyNkZWZpbmUgUkFORF9GX0ZJUFNfU0VUX0RUCQkJCSAxMDQK LSsjZGVmaW5lIFJBTkRfRl9GSVBTX1NFVF9QUk5HX1NFRUQJCQkgMTA3Ci0rI2RlZmluZSBSQU5E X0ZfRklQU19TRVRfVEVTVF9NT0RFCQkJIDEwNQotICNkZWZpbmUgUkFORF9GX1JBTkRfR0VUX1JB TkRfTUVUSE9ECQkJIDEwMQotLSNkZWZpbmUgUkFORF9GX1JBTkRfSU5JVF9GSVBTCQkJCSAxMDIK LSsjZGVmaW5lIFJBTkRfRl9SQU5EX0lOSVRfRklQUwkJCQkgMTA5Ci0gI2RlZmluZSBSQU5EX0Zf U1NMRUFZX1JBTkRfQllURVMJCQkgMTAwCi0gCi0gLyogUmVhc29uIGNvZGVzLiAqLwotLSNkZWZp bmUgUkFORF9SX0RVQUxfRUNfRFJCR19ESVNBQkxFRAkJCSAxMDQKLS0jZGVmaW5lIFJBTkRfUl9F UlJPUl9JTklUSUFMSVNJTkdfRFJCRwkJCSAxMDIKLS0jZGVmaW5lIFJBTkRfUl9FUlJPUl9JTlNU QU5USUFUSU5HX0RSQkcJCQkgMTAzCi0tI2RlZmluZSBSQU5EX1JfTk9fRklQU19SQU5ET01fTUVU SE9EX1NFVAkJIDEwMQotKyNkZWZpbmUgUkFORF9SX0RVQUxfRUNfRFJCR19ESVNBQkxFRAkJCSAx MTQKLSsjZGVmaW5lIFJBTkRfUl9FUlJPUl9JTklUSUFMSVNJTkdfRFJCRwkJCSAxMTIKLSsjZGVm aW5lIFJBTkRfUl9FUlJPUl9JTlNUQU5USUFUSU5HX0RSQkcJCQkgMTEzCi0rI2RlZmluZSBSQU5E X1JfTk9OX0ZJUFNfTUVUSE9ECQkJCSAxMDUKLSsjZGVmaW5lIFJBTkRfUl9OT1RfSU5fVEVTVF9N T0RFCQkJCSAxMDYKLSsjZGVmaW5lIFJBTkRfUl9OT19GSVBTX1JBTkRPTV9NRVRIT0RfU0VUCQkg MTExCi0rI2RlZmluZSBSQU5EX1JfTk9fS0VZX1NFVAkJCQkgMTA3Ci0rI2RlZmluZSBSQU5EX1Jf UFJOR19BU0tJTkdfRk9SX1RPT19NVUNICQkJIDEwMQotKyNkZWZpbmUgUkFORF9SX1BSTkdfRVJS T1IJCQkJIDEwOAotKyNkZWZpbmUgUkFORF9SX1BSTkdfS0VZRUQJCQkJIDEwOQotKyNkZWZpbmUg UkFORF9SX1BSTkdfTk9UX1JFS0VZRUQJCQkJIDEwMgotKyNkZWZpbmUgUkFORF9SX1BSTkdfTk9U X1JFU0VFREVECQkJIDEwMwotICNkZWZpbmUgUkFORF9SX1BSTkdfTk9UX1NFRURFRAkJCQkgMTAw Ci0rI2RlZmluZSBSQU5EX1JfUFJOR19TRUVEX01VU1RfTk9UX01BVENIX0tFWQkJIDExMAotKyNk ZWZpbmUgUkFORF9SX1BSTkdfU1RVQ0sJCQkJIDEwNAotIAotICNpZmRlZiAgX19jcGx1c3BsdXMK LSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcmlwZW1kL3JtZF9kZ3N0LmMuZmlw cyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcmlwZW1kL3JtZF9kZ3N0LmMKLS0tLSBvcGVuc3NsLTEu MC4xay9jcnlwdG8vcmlwZW1kL3JtZF9kZ3N0LmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAw MDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9yaXBlbWQvcm1kX2Rnc3Qu YwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU3MDkyMjcyMSArMDEwMAotQEAgLTcwLDcgKzcwLDcgQEAg Y29uc3QgY2hhciBSTUQxNjBfdmVyc2lvbltdPSJSSVBFLU1EMTYwIgotICAgICAgdm9pZCByaXBl bWQxNjBfYmxvY2soUklQRU1EMTYwX0NUWCAqYywgdW5zaWduZWQgbG9uZyAqcCxzaXplX3QgbnVt KTsKLSAjICBlbmRpZgotIAotLWZpcHNfbWRfaW5pdChSSVBFTUQxNjApCi0rbm9uZmlwc19tZF9p bml0KFJJUEVNRDE2MCkKLSAJewotIAltZW1zZXQgKGMsMCxzaXplb2YoKmMpKTsKLSAJYy0+QT1S SVBFTUQxNjBfQTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9yc2EvcnNhX2NycHQu Yy5maXBzIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9yc2EvcnNhX2NycHQuYwotLS0tIG9wZW5zc2wt MS4wLjFrL2NyeXB0by9yc2EvcnNhX2NycHQuYy5maXBzCTIwMTUtMDEtMDggMTU6MDA6MzYuMDAw MDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3JzYS9yc2FfY3JwdC5jCTIw MTUtMDEtMDkgMDk6NTE6NTEuNTcwOTIyNzIxICswMTAwCi1AQCAtOTAsMTAgKzkwLDkgQEAgaW50 IFJTQV9wcml2YXRlX2VuY3J5cHQoaW50IGZsZW4sIGNvbnN0Ci0gCSAgICAgUlNBICpyc2EsIGlu dCBwYWRkaW5nKQotIAl7Ci0gI2lmZGVmIE9QRU5TU0xfRklQUwotLQlpZiAoRklQU19tb2RlKCkg JiYgIShyc2EtPm1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRIT0QpCi0tCQkJJiYgIShy c2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKQotKwlpZihGSVBTX21vZGUoKSAm JiAhKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykpCi0gCQl7Ci0tCQlSU0Fl cnIoUlNBX0ZfUlNBX1BSSVZBVEVfRU5DUllQVCwgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCk7 Ci0rCQlSU0FlcnIoUlNBX0ZfUlNBX1BSSVZBVEVfRU5DUllQVCwgUlNBX1JfT1BFUkFUSU9OX05P VF9BTExPV0VEX0lOX0ZJUFNfTU9ERSk7Ci0gCQlyZXR1cm4gLTE7Ci0gCQl9Ci0gI2VuZGlmCi1A QCAtMTE4LDEwICsxMTcsOSBAQCBpbnQgUlNBX3B1YmxpY19kZWNyeXB0KGludCBmbGVuLCBjb25z dCB1Ci0gCSAgICAgUlNBICpyc2EsIGludCBwYWRkaW5nKQotIAl7Ci0gI2lmZGVmIE9QRU5TU0xf RklQUwotLQlpZiAoRklQU19tb2RlKCkgJiYgIShyc2EtPm1ldGgtPmZsYWdzICYgUlNBX0ZMQUdf RklQU19NRVRIT0QpCi0tCQkJJiYgIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxM T1cpKQotKwlpZihGSVBTX21vZGUoKSAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQ U19BTExPVykpCi0gCQl7Ci0tCQlSU0FlcnIoUlNBX0ZfUlNBX1BVQkxJQ19ERUNSWVBULCBSU0Ff Ul9OT05fRklQU19SU0FfTUVUSE9EKTsKLSsJCVJTQWVycihSU0FfRl9SU0FfUFVCTElDX0RFQ1JZ UFQsIFJTQV9SX09QRVJBVElPTl9OT1RfQUxMT1dFRF9JTl9GSVBTX01PREUpOwotIAkJcmV0dXJu IC0xOwotIAkJfQotICNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3JzYS9y c2FfZWF5LmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNhL3JzYV9lYXkuYwotLS0tIG9w ZW5zc2wtMS4wLjFrL2NyeXB0by9yc2EvcnNhX2VheS5jLmZpcHMJMjAxNS0wMS0wOCAxNTowMDoz Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNhL3JzYV9lYXku YwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU3MTkyMjc0MyArMDEwMAotQEAgLTExNCw2ICsxMTQsMTAg QEAKLSAjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotICNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgot ICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsj aWZkZWYgT1BFTlNTTF9GSVBTCi0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNlbmRpZgot IAotICNpZm5kZWYgUlNBX05VTEwKLSAKLUBAIC0xMzgsNyArMTQyLDcgQEAgc3RhdGljIFJTQV9N RVRIT0QgcnNhX3BrY3MxX2VheV9tZXRoPXsKLSAJQk5fbW9kX2V4cF9tb250LCAvKiBYWFggcHJv YmFibHkgd2Ugc2hvdWxkIG5vdCB1c2UgTW9udGdvbWVyeSBpZiAgZSA9PSAzICovCi0gCVJTQV9l YXlfaW5pdCwKLSAJUlNBX2VheV9maW5pc2gsCi0tCTAsIC8qIGZsYWdzICovCi0rCVJTQV9GTEFH X0ZJUFNfTUVUSE9ELCAvKiBmbGFncyAqLwotIAlOVUxMLAotIAkwLCAvKiByc2Ffc2lnbiAqLwot IAkwLCAvKiByc2FfdmVyaWZ5ICovCi1AQCAtMTU4LDYgKzE2MiwyNCBAQCBzdGF0aWMgaW50IFJT QV9lYXlfcHVibGljX2VuY3J5cHQoaW50IGZsCi0gCXVuc2lnbmVkIGNoYXIgKmJ1Zj1OVUxMOwot IAlCTl9DVFggKmN0eD1OVUxMOwotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJaWYoRklQU19t b2RlKCkpCi0rCQl7Ci0rCQlpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkKLSsJCQl7Ci0rCQkJ RklQU2VycihGSVBTX0ZfUlNBX0VBWV9QVUJMSUNfRU5DUllQVCxGSVBTX1JfRklQU19TRUxGVEVT VF9GQUlMRUQpOwotKwkJCWdvdG8gZXJyOwotKwkJCX0KLSsKLSsJCWlmICghKHJzYS0+ZmxhZ3Mg JiBSU0FfRkxBR19OT05fRklQU19BTExPVykKLSsJCQkmJiAoQk5fbnVtX2JpdHMocnNhLT5uKSA8 IE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpCi0rCQkJewotKwkJCVJTQWVycihS U0FfRl9SU0FfRUFZX1BVQkxJQ19FTkNSWVBULCBSU0FfUl9LRVlfU0laRV9UT09fU01BTEwpOwot KwkJCXJldHVybiAtMTsKLSsJCQl9Ci0rCQl9Ci0rI2VuZGlmCi0rCi0gCWlmIChCTl9udW1fYml0 cyhyc2EtPm4pID4gT1BFTlNTTF9SU0FfTUFYX01PRFVMVVNfQklUUykKLSAJCXsKLSAJCVJTQWVy cihSU0FfRl9SU0FfRUFZX1BVQkxJQ19FTkNSWVBULCBSU0FfUl9NT0RVTFVTX1RPT19MQVJHRSk7 Ci1AQCAtMzYxLDYgKzM4MywyNCBAQCBzdGF0aWMgaW50IFJTQV9lYXlfcHJpdmF0ZV9lbmNyeXB0 KGludCBmCi0gCUJJR05VTSAqdW5ibGluZCA9IE5VTEw7Ci0gCUJOX0JMSU5ESU5HICpibGluZGlu ZyA9IE5VTEw7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlpZiAoRklQU19tb2RlKCkpCi0r CQl7Ci0rCQlpZihGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKQotKwkJCXsKLSsJCQlGSVBTZXJyKEZJ UFNfRl9SU0FfRUFZX1BSSVZBVEVfRU5DUllQVCxGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQp OwotKwkJCXJldHVybiAtMTsKLSsJCQl9Ci0rCi0rCQlpZiAoIShyc2EtPmZsYWdzICYgUlNBX0ZM QUdfTk9OX0ZJUFNfQUxMT1cpCi0rCQkJJiYgKEJOX251bV9iaXRzKHJzYS0+bikgPCBPUEVOU1NM X1JTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMpKQotKwkJCXsKLSsJCQlSU0FlcnIoUlNBX0ZfUlNB X0VBWV9QUklWQVRFX0VOQ1JZUFQsIFJTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rCQkJcmV0 dXJuIC0xOwotKwkJCX0KLSsJCX0KLSsjZW5kaWYKLSsKLSAJaWYgKChjdHg9Qk5fQ1RYX25ldygp KSA9PSBOVUxMKSBnb3RvIGVycjsKLSAJQk5fQ1RYX3N0YXJ0KGN0eCk7Ci0gCWYgICA9IEJOX0NU WF9nZXQoY3R4KTsKLUBAIC01MDQsNiArNTQ0LDI0IEBAIHN0YXRpYyBpbnQgUlNBX2VheV9wcml2 YXRlX2RlY3J5cHQoaW50IGYKLSAJQklHTlVNICp1bmJsaW5kID0gTlVMTDsKLSAJQk5fQkxJTkRJ TkcgKmJsaW5kaW5nID0gTlVMTDsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCWlmIChGSVBT X21vZGUoKSkKLSsJCXsKLSsJCWlmKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpCi0rCQkJewotKwkJ CUZJUFNlcnIoRklQU19GX1JTQV9FQVlfUFJJVkFURV9ERUNSWVBULEZJUFNfUl9GSVBTX1NFTEZU RVNUX0ZBSUxFRCk7Ci0rCQkJcmV0dXJuIC0xOwotKwkJCX0KLSsKLSsJCWlmICghKHJzYS0+Zmxh Z3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykKLSsJCQkmJiAoQk5fbnVtX2JpdHMocnNhLT5u KSA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpCi0rCQkJewotKwkJCVJTQWVy cihSU0FfRl9SU0FfRUFZX1BSSVZBVEVfREVDUllQVCwgUlNBX1JfS0VZX1NJWkVfVE9PX1NNQUxM KTsKLSsJCQlyZXR1cm4gLTE7Ci0rCQkJfQotKwkJfQotKyNlbmRpZgotKwotIAlpZigoY3R4ID0g Qk5fQ1RYX25ldygpKSA9PSBOVUxMKSBnb3RvIGVycjsKLSAJQk5fQ1RYX3N0YXJ0KGN0eCk7Ci0g CWYgICA9IEJOX0NUWF9nZXQoY3R4KTsKLUBAIC02MzksNiArNjk3LDI0IEBAIHN0YXRpYyBpbnQg UlNBX2VheV9wdWJsaWNfZGVjcnlwdChpbnQgZmwKLSAJdW5zaWduZWQgY2hhciAqYnVmPU5VTEw7 Ci0gCUJOX0NUWCAqY3R4PU5VTEw7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlpZiAoRklQ U19tb2RlKCkpCi0rCQl7Ci0rCQlpZihGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKQotKwkJCXsKLSsJ CQlGSVBTZXJyKEZJUFNfRl9SU0FfRUFZX1BVQkxJQ19ERUNSWVBULEZJUFNfUl9GSVBTX1NFTEZU RVNUX0ZBSUxFRCk7Ci0rCQkJZ290byBlcnI7Ci0rCQkJfQotKwotKwkJaWYgKCEocnNhLT5mbGFn cyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQotKwkJCSYmIChCTl9udW1fYml0cyhyc2EtPm4p IDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkKLSsJCQl7Ci0rCQkJUlNBZXJy KFJTQV9GX1JTQV9FQVlfUFVCTElDX0RFQ1JZUFQsIFJTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7 Ci0rCQkJcmV0dXJuIC0xOwotKwkJCX0KLSsJCX0KLSsjZW5kaWYKLSsKLSAJaWYgKEJOX251bV9i aXRzKHJzYS0+bikgPiBPUEVOU1NMX1JTQV9NQVhfTU9EVUxVU19CSVRTKQotIAkJewotIAkJUlNB ZXJyKFJTQV9GX1JTQV9FQVlfUFVCTElDX0RFQ1JZUFQsIFJTQV9SX01PRFVMVVNfVE9PX0xBUkdF KTsKLUBAIC04OTcsNiArOTczLDkgQEAgZXJyOgotIAotIHN0YXRpYyBpbnQgUlNBX2VheV9pbml0 KFJTQSAqcnNhKQotIAl7Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlGSVBTX3NlbGZ0ZXN0X2No ZWNrKCk7Ci0rI2VuZGlmCi0gCXJzYS0+ZmxhZ3N8PVJTQV9GTEFHX0NBQ0hFX1BVQkxJQ3xSU0Ff RkxBR19DQUNIRV9QUklWQVRFOwotIAlyZXR1cm4oMSk7Ci0gCX0KLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjFrL2NyeXB0by9yc2EvcnNhX2Vyci5jLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3Jz YS9yc2FfZXJyLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNhL3JzYV9lcnIuYy5maXBz CTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsv Y3J5cHRvL3JzYS9yc2FfZXJyLmMJMjAxNS0wMS0wOSAwOTo1MTo1MS41NzE5MjI3NDMgKzAxMDAK LUBAIC0xMjEsNiArMTIxLDggQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBSU0Ffc3RyX2Z1bmN0 c1tdPQotIHtFUlJfRlVOQyhSU0FfRl9SU0FfUFVCTElDX0VOQ1JZUFQpLAkiUlNBX3B1YmxpY19l bmNyeXB0In0sCi0ge0VSUl9GVU5DKFJTQV9GX1JTQV9QVUJfREVDT0RFKSwJIlJTQV9QVUJfREVD T0RFIn0sCi0ge0VSUl9GVU5DKFJTQV9GX1JTQV9TRVRVUF9CTElORElORyksCSJSU0Ffc2V0dXBf YmxpbmRpbmcifSwKLSt7RVJSX0ZVTkMoUlNBX0ZfUlNBX1NFVF9ERUZBVUxUX01FVEhPRCksCSJS U0Ffc2V0X2RlZmF1bHRfbWV0aG9kIn0sCi0re0VSUl9GVU5DKFJTQV9GX1JTQV9TRVRfTUVUSE9E KSwJIlJTQV9zZXRfbWV0aG9kIn0sCi0ge0VSUl9GVU5DKFJTQV9GX1JTQV9TSUdOKSwJIlJTQV9z aWduIn0sCi0ge0VSUl9GVU5DKFJTQV9GX1JTQV9TSUdOX0FTTjFfT0NURVRfU1RSSU5HKSwJIlJT QV9zaWduX0FTTjFfT0NURVRfU1RSSU5HIn0sCi0ge0VSUl9GVU5DKFJTQV9GX1JTQV9WRVJJRlkp LAkiUlNBX3ZlcmlmeSJ9LAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3JzYS9yc2Ff Z2VuLmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNhL3JzYV9nZW4uYwotLS0tIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9yc2EvcnNhX2dlbi5jLmZpcHMJMjAxNS0wMS0wOCAxNTowMDozNi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNhL3JzYV9nZW4uYwky MDE1LTAxLTA5IDA5OjUxOjUxLjU3MTkyMjc0MyArMDEwMAotQEAgLTY5LDYgKzY5LDc4IEBACi0g I2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+Ci0gI2lmZGVmIE9QRU5TU0xfRklQUwotICNpbmNsdWRl IDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9ldnAuaD4KLSsKLStzdGF0aWMgaW50IGZpcHNfcnNhX3BhaXJ3aXNlX2ZhaWwgPSAw OwotKwotK3ZvaWQgRklQU19jb3JydXB0X3JzYV9rZXlnZW4odm9pZCkKLSsJewotKwlmaXBzX3Jz YV9wYWlyd2lzZV9mYWlsID0gMTsKLSsJfQotKwotK2ludCBmaXBzX2NoZWNrX3JzYShSU0EgKnJz YSkKLSsJewotKwljb25zdCB1bnNpZ25lZCBjaGFyIHRic1tdID0gIlJTQSBQYWlyd2lzZSBDaGVj ayBEYXRhIjsKLSsJdW5zaWduZWQgY2hhciAqY3RidWYgPSBOVUxMLCAqcHRidWYgPSBOVUxMOwot KwlpbnQgbGVuLCByZXQgPSAwOwotKwlFVlBfUEtFWSAqcGs7Ci0rCi0rCWlmICgocGs9RVZQX1BL RVlfbmV3KCkpID09IE5VTEwpCi0rCQlnb3RvIGVycjsKLSsKLSsJRVZQX1BLRVlfc2V0MV9SU0Eo cGssIHJzYSk7Ci0rCi0rCS8qIFBlcmZvcm0gcGFpcndpc2UgY29uc2lzdGVuY3kgc2lnbmF0dXJl IHRlc3QgKi8KLSsJaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIHRicywgLTEsCi0r CQkJTlVMTCwgMCwgRVZQX3NoYTEoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9QS0NTMSwgTlVMTCkK LSsJCXx8ICFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIHRicywgLTEsCi0rCQkJTlVMTCwg MCwgRVZQX3NoYTEoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9YOTMxLCBOVUxMKQotKwkJfHwgIWZp cHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywgdGJzLCAtMSwKLSsJCQlOVUxMLCAwLCBFVlBfc2hh MSgpLCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywgTlVMTCkpCi0rCQlnb3RvIGVycjsKLSsJLyog Tm93IHBlcmZvcm0gcGFpcndpc2UgY29uc2lzdGVuY3kgZW5jcnlwdC9kZWNyeXB0IHRlc3QgKi8K LSsJY3RidWYgPSBPUEVOU1NMX21hbGxvYyhSU0Ffc2l6ZShyc2EpKTsKLSsJaWYgKCFjdGJ1ZikK LSsJCWdvdG8gZXJyOwotKwotKwlsZW4gPSBSU0FfcHVibGljX2VuY3J5cHQoc2l6ZW9mKHRicykg LSAxLCB0YnMsIGN0YnVmLCByc2EsIFJTQV9QS0NTMV9QQURESU5HKTsKLSsJaWYgKGxlbiA8PSAw KQotKwkJZ290byBlcnI7Ci0rCS8qIENoZWNrIGNpcGhlcnRleHQgZG9lc24ndCBtYXRjaCBwbGFp bnRleHQgKi8KLSsJaWYgKChsZW4gPT0gKHNpemVvZih0YnMpIC0gMSkpICYmICFtZW1jbXAodGJz LCBjdGJ1ZiwgbGVuKSkKLSsJCWdvdG8gZXJyOwotKwlwdGJ1ZiA9IE9QRU5TU0xfbWFsbG9jKFJT QV9zaXplKHJzYSkpOwotKwotKwlpZiAoIXB0YnVmKQotKwkJZ290byBlcnI7Ci0rCWxlbiA9IFJT QV9wcml2YXRlX2RlY3J5cHQobGVuLCBjdGJ1ZiwgcHRidWYsIHJzYSwgUlNBX1BLQ1MxX1BBRERJ TkcpOwotKwlpZiAobGVuICE9IChzaXplb2YodGJzKSAtIDEpKQotKwkJZ290byBlcnI7Ci0rCWlm IChtZW1jbXAocHRidWYsIHRicywgbGVuKSkKLSsJCWdvdG8gZXJyOwotKwotKwlyZXQgPSAxOwot KwotKwlpZiAoIXB0YnVmKQotKwkJZ290byBlcnI7Ci0rCQotKwllcnI6Ci0rCWlmIChyZXQgPT0g MCkKLSsJCXsKLSsJCWZpcHNfc2V0X3NlbGZ0ZXN0X2ZhaWwoKTsKLSsJCUZJUFNlcnIoRklQU19G X0ZJUFNfQ0hFQ0tfUlNBLEZJUFNfUl9QQUlSV0lTRV9URVNUX0ZBSUxFRCk7Ci0rCQl9Ci0rCi0r CWlmIChjdGJ1ZikKLSsJCU9QRU5TU0xfZnJlZShjdGJ1Zik7Ci0rCWlmIChwdGJ1ZikKLSsJCU9Q RU5TU0xfZnJlZShwdGJ1Zik7Ci0rCWlmIChwaykKLSsJCUVWUF9QS0VZX2ZyZWUocGspOwotKwot KwlyZXR1cm4gcmV0OwotKwl9Ci0gI2VuZGlmCi0gCi0gc3RhdGljIGludCByc2FfYnVpbHRpbl9r ZXlnZW4oUlNBICpyc2EsIGludCBiaXRzLCBCSUdOVU0gKmVfdmFsdWUsIEJOX0dFTkNCICpjYik7 Ci1AQCAtODEsNyArMTUzLDcgQEAgc3RhdGljIGludCByc2FfYnVpbHRpbl9rZXlnZW4oUlNBICpy c2EsCi0gaW50IFJTQV9nZW5lcmF0ZV9rZXlfZXgoUlNBICpyc2EsIGludCBiaXRzLCBCSUdOVU0g KmVfdmFsdWUsIEJOX0dFTkNCICpjYikKLSAJewotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0JaWYg KEZJUFNfbW9kZSgpICYmICEocnNhLT5tZXRoLT5mbGFncyAmIFJTQV9GTEFHX0ZJUFNfTUVUSE9E KQotKwlpZiAoRklQU19tb2R1bGVfbW9kZSgpICYmICEocnNhLT5tZXRoLT5mbGFncyAmIFJTQV9G TEFHX0ZJUFNfTUVUSE9EKQotIAkJCSYmICEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PTl9GSVBT X0FMTE9XKSkKLSAJCXsKLSAJCVJTQWVycihSU0FfRl9SU0FfR0VORVJBVEVfS0VZX0VYLCBSU0Ff Ul9OT05fRklQU19SU0FfTUVUSE9EKTsKLUBAIC05MCwxMCArMTYyLDYgQEAgaW50IFJTQV9nZW5l cmF0ZV9rZXlfZXgoUlNBICpyc2EsIGludCBiaQotICNlbmRpZgotIAlpZihyc2EtPm1ldGgtPnJz YV9rZXlnZW4pCi0gCQlyZXR1cm4gcnNhLT5tZXRoLT5yc2Ffa2V5Z2VuKHJzYSwgYml0cywgZV92 YWx1ZSwgY2IpOwotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0JaWYgKEZJUFNfbW9kZSgpKQotLQkJ cmV0dXJuIEZJUFNfcnNhX2dlbmVyYXRlX2tleV9leChyc2EsIGJpdHMsIGVfdmFsdWUsIGNiKTsK LS0jZW5kaWYKLSAJcmV0dXJuIHJzYV9idWlsdGluX2tleWdlbihyc2EsIGJpdHMsIGVfdmFsdWUs IGNiKTsKLSAJfQotIAotQEAgLTEwNSw2ICsxNzMsMjMgQEAgc3RhdGljIGludCByc2FfYnVpbHRp bl9rZXlnZW4oUlNBICpyc2EsCi0gCWludCBiaXRzcCxiaXRzcSxvaz0gLTEsbj0wOwotIAlCTl9D VFggKmN0eD1OVUxMOwotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJaWYgKEZJUFNfbW9kdWxl X21vZGUoKSkKLSsJCXsKLSsJCWlmKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpCi0rCSAgICAJewot KwkJICAgIEZJUFNlcnIoRklQU19GX1JTQV9CVUlMVElOX0tFWUdFTixGSVBTX1JfRklQU19TRUxG VEVTVF9GQUlMRUQpOwotKwkgICAgCXJldHVybiAwOwotKwkgICAgCX0KLSsKLSsJCWlmIChiaXRz IDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKQotKwkJICAgIHsKLSsJCSAgICBG SVBTZXJyKEZJUFNfRl9SU0FfQlVJTFRJTl9LRVlHRU4sRklQU19SX0tFWV9UT09fU0hPUlQpOwot KwkJICAgIHJldHVybiAwOwotKwkJICAgIH0KLSsJCX0KLSsjZW5kaWYKLSsKLSAJY3R4PUJOX0NU WF9uZXcoKTsKLSAJaWYgKGN0eCA9PSBOVUxMKSBnb3RvIGVycjsKLSAJQk5fQ1RYX3N0YXJ0KGN0 eCk7Ci1AQCAtMjE2LDYgKzMwMSwxNyBAQCBzdGF0aWMgaW50IHJzYV9idWlsdGluX2tleWdlbihS U0EgKnJzYSwKLSAJCXAgPSByc2EtPnA7Ci0gCWlmICghQk5fbW9kX2ludmVyc2UocnNhLT5pcW1w LHJzYS0+cSxwLGN0eCkpIGdvdG8gZXJyOwotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJaWYg KEZJUFNfbW9kdWxlX21vZGUoKSkKLSsJCXsKLSsJCWlmIChmaXBzX3JzYV9wYWlyd2lzZV9mYWls KQotKwkJCUJOX2FkZF93b3JkKHJzYS0+biwgMSk7Ci0rCi0rCQlpZighZmlwc19jaGVja19yc2Eo cnNhKSkKLSsJCSAgICBnb3RvIGVycjsKLSsJCX0KLSsjZW5kaWYKLSsKLSAJb2s9MTsKLSBlcnI6 Ci0gCWlmIChvayA9PSAtMSkKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9yc2EvcnNh LmguZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNhL3JzYS5oCi0tLS0gb3BlbnNzbC0xLjAu MWsvY3J5cHRvL3JzYS9yc2EuaC5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTEuMTU1OTEzMzM1ICsw MTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3JzYS9yc2EuaAkyMDE1LTAxLTA5IDA5OjUx OjUxLjU3MjkyMjc2NiArMDEwMAotQEAgLTE2NCw2ICsxNjQsOCBAQCBzdHJ1Y3QgcnNhX3N0Ci0g IyBkZWZpbmUgT1BFTlNTTF9SU0FfTUFYX01PRFVMVVNfQklUUwkxNjM4NAotICNlbmRpZgotIAot KyNkZWZpbmUgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTIDEwMjQKLSsKLSAjaWZu ZGVmIE9QRU5TU0xfUlNBX1NNQUxMX01PRFVMVVNfQklUUwotICMgZGVmaW5lIE9QRU5TU0xfUlNB X1NNQUxMX01PRFVMVVNfQklUUwkzMDcyCi0gI2VuZGlmCi1AQCAtMjkwLDYgKzI5MiwxMSBAQCBS U0EgKglSU0FfZ2VuZXJhdGVfa2V5KGludCBiaXRzLCB1bnNpZ25lCi0gCi0gLyogTmV3IHZlcnNp b24gKi8KLSBpbnQJUlNBX2dlbmVyYXRlX2tleV9leChSU0EgKnJzYSwgaW50IGJpdHMsIEJJR05V TSAqZSwgQk5fR0VOQ0IgKmNiKTsKLStpbnQgUlNBX1g5MzFfZGVyaXZlX2V4KFJTQSAqcnNhLCBC SUdOVU0gKnAxLCBCSUdOVU0gKnAyLCBCSUdOVU0gKnExLCBCSUdOVU0gKnEyLAotKwkJCWNvbnN0 IEJJR05VTSAqWHAxLCBjb25zdCBCSUdOVU0gKlhwMiwgY29uc3QgQklHTlVNICpYcCwKLSsJCQlj b25zdCBCSUdOVU0gKlhxMSwgY29uc3QgQklHTlVNICpYcTIsIGNvbnN0IEJJR05VTSAqWHEsCi0r CQkJY29uc3QgQklHTlVNICplLCBCTl9HRU5DQiAqY2IpOwotK2ludCBSU0FfWDkzMV9nZW5lcmF0 ZV9rZXlfZXgoUlNBICpyc2EsIGludCBiaXRzLCBjb25zdCBCSUdOVU0gKmUsIEJOX0dFTkNCICpj Yik7Ci0gCi0gaW50CVJTQV9jaGVja19rZXkoY29uc3QgUlNBICopOwotIAkvKiBuZXh0IDQgcmV0 dXJuIC0xIG9uIGVycm9yICovCi1AQCAtNDg3LDcgKzQ5NCw3IEBAIHZvaWQgRVJSX2xvYWRfUlNB X3N0cmluZ3Modm9pZCk7Ci0gI2RlZmluZSBSU0FfRl9SU0FfUEFERElOR19BRERfTk9ORQkJCSAx MDcKLSAjZGVmaW5lIFJTQV9GX1JTQV9QQURESU5HX0FERF9QS0NTMV9PQUVQCQkgMTIxCi0gI2Rl ZmluZSBSU0FfRl9SU0FfUEFERElOR19BRERfUEtDUzFfUFNTCQkJIDEyNQotLSNkZWZpbmUgUlNB X0ZfUlNBX1BBRERJTkdfQUREX1BLQ1MxX1BTU19NR0YxCQkgMTQ4Ci0rI2RlZmluZSBSU0FfRl9S U0FfUEFERElOR19BRERfUEtDUzFfUFNTX01HRjEJCSAxNTgKLSAjZGVmaW5lIFJTQV9GX1JTQV9Q QURESU5HX0FERF9QS0NTMV9UWVBFXzEJCSAxMDgKLSAjZGVmaW5lIFJTQV9GX1JTQV9QQURESU5H X0FERF9QS0NTMV9UWVBFXzIJCSAxMDkKLSAjZGVmaW5lIFJTQV9GX1JTQV9QQURESU5HX0FERF9T U0xWMjMJCQkgMTEwCi1AQCAtNTAwLDIwICs1MDcsMjIgQEAgdm9pZCBFUlJfbG9hZF9SU0Ffc3Ry aW5ncyh2b2lkKTsKLSAjZGVmaW5lIFJTQV9GX1JTQV9QQURESU5HX0NIRUNLX1g5MzEJCQkgMTI4 Ci0gI2RlZmluZSBSU0FfRl9SU0FfUFJJTlQJCQkJCSAxMTUKLSAjZGVmaW5lIFJTQV9GX1JTQV9Q UklOVF9GUAkJCQkgMTE2Ci0tI2RlZmluZSBSU0FfRl9SU0FfUFJJVkFURV9ERUNSWVBUCQkJIDE1 MAotLSNkZWZpbmUgUlNBX0ZfUlNBX1BSSVZBVEVfRU5DUllQVAkJCSAxNTEKLSsjZGVmaW5lIFJT QV9GX1JTQV9QUklWQVRFX0RFQ1JZUFQJCQkgMTU3Ci0rI2RlZmluZSBSU0FfRl9SU0FfUFJJVkFU RV9FTkNSWVBUCQkJIDE0OAotICNkZWZpbmUgUlNBX0ZfUlNBX1BSSVZfREVDT0RFCQkJCSAxMzcK LSAjZGVmaW5lIFJTQV9GX1JTQV9QUklWX0VOQ09ERQkJCQkgMTM4Ci0tI2RlZmluZSBSU0FfRl9S U0FfUFVCTElDX0RFQ1JZUFQJCQkgMTUyCi0rI2RlZmluZSBSU0FfRl9SU0FfUFVCTElDX0RFQ1JZ UFQJCQkgMTQ5Ci0gI2RlZmluZSBSU0FfRl9SU0FfUFVCTElDX0VOQ1JZUFQJCQkgMTUzCi0gI2Rl ZmluZSBSU0FfRl9SU0FfUFVCX0RFQ09ERQkJCQkgMTM5Ci0gI2RlZmluZSBSU0FfRl9SU0FfU0VU VVBfQkxJTkRJTkcJCQkgMTM2Ci0rI2RlZmluZSBSU0FfRl9SU0FfU0VUX0RFRkFVTFRfTUVUSE9E CQkJIDE1MAotKyNkZWZpbmUgUlNBX0ZfUlNBX1NFVF9NRVRIT0QJCQkJIDE1MQotICNkZWZpbmUg UlNBX0ZfUlNBX1NJR04JCQkJCSAxMTcKLSAjZGVmaW5lIFJTQV9GX1JTQV9TSUdOX0FTTjFfT0NU RVRfU1RSSU5HCQkgMTE4Ci0gI2RlZmluZSBSU0FfRl9SU0FfVkVSSUZZCQkJCSAxMTkKLSAjZGVm aW5lIFJTQV9GX1JTQV9WRVJJRllfQVNOMV9PQ1RFVF9TVFJJTkcJCSAxMjAKLSAjZGVmaW5lIFJT QV9GX1JTQV9WRVJJRllfUEtDUzFfUFNTCQkJIDEyNgotLSNkZWZpbmUgUlNBX0ZfUlNBX1ZFUklG WV9QS0NTMV9QU1NfTUdGMQkJCSAxNDkKLSsjZGVmaW5lIFJTQV9GX1JTQV9WRVJJRllfUEtDUzFf UFNTX01HRjEJCQkgMTUyCi0gCi0gLyogUmVhc29uIGNvZGVzLiAqLwotICNkZWZpbmUgUlNBX1Jf QUxHT1JJVEhNX01JU01BVENICQkJIDEwMAotQEAgLTU0MiwyMSArNTUxLDIyIEBAIHZvaWQgRVJS X2xvYWRfUlNBX3N0cmluZ3Modm9pZCk7Ci0gI2RlZmluZSBSU0FfUl9JTlZBTElEX01HRjFfTUQJ CQkJIDE1NgotICNkZWZpbmUgUlNBX1JfSU5WQUxJRF9QQURESU5HCQkJCSAxMzgKLSAjZGVmaW5l IFJTQV9SX0lOVkFMSURfUEFERElOR19NT0RFCQkJIDE0MQotLSNkZWZpbmUgUlNBX1JfSU5WQUxJ RF9QU1NfUEFSQU1FVEVSUwkJCSAxNDkKLSsjZGVmaW5lIFJTQV9SX0lOVkFMSURfUFNTX1BBUkFN RVRFUlMJCQkgMTU3Ci0gI2RlZmluZSBSU0FfUl9JTlZBTElEX1BTU19TQUxUTEVOCQkJIDE0Ngot LSNkZWZpbmUgUlNBX1JfSU5WQUxJRF9TQUxUX0xFTkdUSAkJCSAxNTAKLSsjZGVmaW5lIFJTQV9S X0lOVkFMSURfU0FMVF9MRU5HVEgJCQkgMTU4Ci0gI2RlZmluZSBSU0FfUl9JTlZBTElEX1RSQUlM RVIJCQkJIDEzOQotICNkZWZpbmUgUlNBX1JfSU5WQUxJRF9YOTMxX0RJR0VTVAkJCSAxNDIKLSAj ZGVmaW5lIFJTQV9SX0lRTVBfTk9UX0lOVkVSU0VfT0ZfUQkJCSAxMjYKLSAjZGVmaW5lIFJTQV9S X0tFWV9TSVpFX1RPT19TTUFMTAkJCSAxMjAKLSAjZGVmaW5lIFJTQV9SX0xBU1RfT0NURVRfSU5W QUxJRAkJCSAxMzQKLSAjZGVmaW5lIFJTQV9SX01PRFVMVVNfVE9PX0xBUkdFCQkJCSAxMDUKLS0j ZGVmaW5lIFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QJCQkgMTU3Ci0rI2RlZmluZSBSU0FfUl9O T05fRklQU19SU0FfTUVUSE9ECQkJIDE0OQotKyNkZWZpbmUgUlNBX1JfTk9OX0ZJUFNfTUVUSE9E CQkJCSAxNDkKLSAjZGVmaW5lIFJTQV9SX05PX1BVQkxJQ19FWFBPTkVOVAkJCSAxNDAKLSAjZGVm aW5lIFJTQV9SX05VTExfQkVGT1JFX0JMT0NLX01JU1NJTkcJCQkgMTEzCi0gI2RlZmluZSBSU0Ff Ul9OX0RPRVNfTk9UX0VRVUFMX1BfUQkJCSAxMjcKLSAjZGVmaW5lIFJTQV9SX09BRVBfREVDT0RJ TkdfRVJST1IJCQkgMTIxCi0tI2RlZmluZSBSU0FfUl9PUEVSQVRJT05fTk9UX0FMTE9XRURfSU5f RklQU19NT0RFCSAxNTgKLSsjZGVmaW5lIFJTQV9SX09QRVJBVElPTl9OT1RfQUxMT1dFRF9JTl9G SVBTX01PREUJIDE1MAotICNkZWZpbmUgUlNBX1JfT1BFUkFUSU9OX05PVF9TVVBQT1JURURfRk9S X1RISVNfS0VZVFlQRQkgMTQ4Ci0gI2RlZmluZSBSU0FfUl9QQURESU5HX0NIRUNLX0ZBSUxFRAkJ CSAxMTQKLSAjZGVmaW5lIFJTQV9SX1BLQ1NfREVDT0RJTkdfRVJST1IJCQkgMTU5Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNhL3JzYV9saWIuYy5maXBzIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9yc2EvcnNhX2xpYi5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3JzYS9yc2Ff bGliLmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4wLjFrL2NyeXB0by9yc2EvcnNhX2xpYi5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTcyOTIy NzY2ICswMTAwCi1AQCAtODQsNiArODQsMTMgQEAgUlNBICpSU0FfbmV3KHZvaWQpCi0gCi0gdm9p ZCBSU0Ffc2V0X2RlZmF1bHRfbWV0aG9kKGNvbnN0IFJTQV9NRVRIT0QgKm1ldGgpCi0gCXsKLSsj aWZkZWYgT1BFTlNTTF9GSVBTCi0rCWlmIChGSVBTX21vZGUoKSAmJiAhKG1ldGgtPmZsYWdzICYg UlNBX0ZMQUdfRklQU19NRVRIT0QpKQotKwkJewotKwkJUlNBZXJyKFJTQV9GX1JTQV9TRVRfREVG QVVMVF9NRVRIT0QsIFJTQV9SX05PTl9GSVBTX01FVEhPRCk7Ci0rCQlyZXR1cm47Ci0rCQl9Ci0r I2VuZGlmCi0gCWRlZmF1bHRfUlNBX21ldGggPSBtZXRoOwotIAl9Ci0gCi1AQCAtOTEsMTggKzk4 LDExIEBAIGNvbnN0IFJTQV9NRVRIT0QgKlJTQV9nZXRfZGVmYXVsdF9tZXRob2QKLSAJewotIAlp ZiAoZGVmYXVsdF9SU0FfbWV0aCA9PSBOVUxMKQotIAkJewotLSNpZmRlZiBPUEVOU1NMX0ZJUFMK LS0JCWlmIChGSVBTX21vZGUoKSkKLS0JCQlyZXR1cm4gRklQU19yc2FfcGtjczFfc3NsZWF5KCk7 Ci0tCQllbHNlCi0tCQkJcmV0dXJuIFJTQV9QS0NTMV9TU0xlYXkoKTsKLS0jZWxzZQotICNpZmRl ZiBSU0FfTlVMTAotIAkJZGVmYXVsdF9SU0FfbWV0aD1SU0FfbnVsbF9tZXRob2QoKTsKLSAjZWxz ZQotIAkJZGVmYXVsdF9SU0FfbWV0aD1SU0FfUEtDUzFfU1NMZWF5KCk7Ci0gI2VuZGlmCi0tI2Vu ZGlmCi0gCQl9Ci0gCi0gCXJldHVybiBkZWZhdWx0X1JTQV9tZXRoOwotQEAgLTExOCw2ICsxMTgs MTMgQEAgaW50IFJTQV9zZXRfbWV0aG9kKFJTQSAqcnNhLCBjb25zdCBSU0FfTQotIAkvKiBOQjog VGhlIGNhbGxlciBpcyBzcGVjaWZpY2FsbHkgc2V0dGluZyBhIG1ldGhvZCwgc28gaXQncyBub3Qg dXAgdG8gdXMKLSAJICogdG8gZGVhbCB3aXRoIHdoaWNoIEVOR0lORSBpdCBjb21lcyBmcm9tLiAq LwotIAljb25zdCBSU0FfTUVUSE9EICptdG1wOwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJaWYg KEZJUFNfbW9kZSgpICYmICEobWV0aC0+ZmxhZ3MgJiBSU0FfRkxBR19GSVBTX01FVEhPRCkpCi0r CQl7Ci0rCQlSU0FlcnIoUlNBX0ZfUlNBX1NFVF9NRVRIT0QsIFJTQV9SX05PTl9GSVBTX01FVEhP RCk7Ci0rCQlyZXR1cm4gMDsKLSsJCX0KLSsjZW5kaWYKLSAJbXRtcCA9IHJzYS0+bWV0aDsKLSAJ aWYgKG10bXAtPmZpbmlzaCkgbXRtcC0+ZmluaXNoKHJzYSk7Ci0gI2lmbmRlZiBPUEVOU1NMX05P X0VOR0lORQotQEAgLTE3MCw2ICsxNzcsMTggQEAgUlNBICpSU0FfbmV3X21ldGhvZChFTkdJTkUg KmVuZ2luZSkKLSAJCQl9Ci0gCQl9Ci0gI2VuZGlmCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlp ZiAoRklQU19tb2RlKCkgJiYgIShyZXQtPm1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRI T0QpKQotKwkJewotKwkJUlNBZXJyKFJTQV9GX1JTQV9ORVdfTUVUSE9ELCBSU0FfUl9OT05fRklQ U19NRVRIT0QpOwotKyNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKLSsJCWlmIChyZXQtPmVuZ2lu ZSkKLSsJCQlFTkdJTkVfZmluaXNoKHJldC0+ZW5naW5lKTsKLSsjZW5kaWYKLSsJCU9QRU5TU0xf ZnJlZShyZXQpOwotKwkJcmV0dXJuIE5VTEw7Ci0rCQl9Ci0rI2VuZGlmCi0gCi0gCXJldC0+cGFk PTA7Ci0gCXJldC0+dmVyc2lvbj0wOwotQEAgLTE4OCw3ICsyMDcsNyBAQCBSU0EgKlJTQV9uZXdf bWV0aG9kKEVOR0lORSAqZW5naW5lKQotIAlyZXQtPmJsaW5kaW5nPU5VTEw7Ci0gCXJldC0+bXRf YmxpbmRpbmc9TlVMTDsKLSAJcmV0LT5iaWdudW1fZGF0YT1OVUxMOwotLQlyZXQtPmZsYWdzPXJl dC0+bWV0aC0+ZmxhZ3MgJiB+UlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1c7Ci0rCXJldC0+ZmxhZ3M9 cmV0LT5tZXRoLT5mbGFnczsKLSAJaWYgKCFDUllQVE9fbmV3X2V4X2RhdGEoQ1JZUFRPX0VYX0lO REVYX1JTQSwgcmV0LCAmcmV0LT5leF9kYXRhKSkKLSAJCXsKLSAjaWZuZGVmIE9QRU5TU0xfTk9f RU5HSU5FCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNhL3JzYV9wbWV0aC5jLmZp cHMgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3JzYS9yc2FfcG1ldGguYwotLS0tIG9wZW5zc2wtMS4w LjFrL2NyeXB0by9yc2EvcnNhX3BtZXRoLmMuZmlwcwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAw MDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9yc2EvcnNhX3BtZXRoLmMJMjAx NS0wMS0wOSAwOTo1MTo1MS41NzI5MjI3NjYgKzAxMDAKLUBAIC0yMDYsMjIgKzIwNiw2IEBAIHN0 YXRpYyBpbnQgcGtleV9yc2Ffc2lnbihFVlBfUEtFWV9DVFggKmMKLSAJCQkJCVJTQV9SX0lOVkFM SURfRElHRVNUX0xFTkdUSCk7Ci0gCQkJcmV0dXJuIC0xOwotIAkJCX0KLS0jaWZkZWYgT1BFTlNT TF9GSVBTCi0tCQlpZiAocmV0ID4gMCkKLS0JCQl7Ci0tCQkJdW5zaWduZWQgaW50IHNsZW47Ci0t CQkJcmV0ID0gRklQU19yc2Ffc2lnbl9kaWdlc3QocnNhLCB0YnMsIHRic2xlbiwgcmN0eC0+bWQs Ci0tCQkJCQkJCXJjdHgtPnBhZF9tb2RlLAotLQkJCQkJCQlyY3R4LT5zYWx0bGVuLAotLQkJCQkJ CQlyY3R4LT5tZ2YxbWQsCi0tCQkJCQkJCXNpZywgJnNsZW4pOwotLQkJCWlmIChyZXQgPiAwKQot LQkJCQkqc2lnbGVuID0gc2xlbjsKLS0JCQllbHNlCi0tCQkJCSpzaWdsZW4gPSAwOwotLQkJCXJl dHVybiByZXQ7Ci0tCQkJfQotLSNlbmRpZgotIAotIAkJaWYgKEVWUF9NRF90eXBlKHJjdHgtPm1k KSA9PSBOSURfbWRjMikKLSAJCQl7Ci1AQCAtMzU0LDE5ICszMzgsNiBAQCBzdGF0aWMgaW50IHBr ZXlfcnNhX3ZlcmlmeShFVlBfUEtFWV9DVFgKLSAjZW5kaWYKLSAJaWYgKHJjdHgtPm1kKQotIAkJ ewotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0JCWlmIChydiA+IDApCi0tCQkJewotLQkJCXJldHVy biBGSVBTX3JzYV92ZXJpZnlfZGlnZXN0KHJzYSwKLS0JCQkJCQkJdGJzLCB0YnNsZW4sCi0tCQkJ CQkJCXJjdHgtPm1kLAotLQkJCQkJCQlyY3R4LT5wYWRfbW9kZSwKLS0JCQkJCQkJcmN0eC0+c2Fs dGxlbiwKLS0JCQkJCQkJcmN0eC0+bWdmMW1kLAotLQkJCQkJCQlzaWcsIHNpZ2xlbik7Ci0tCQkJ CQkJCQotLQkJCX0KLS0jZW5kaWYKLSAJCWlmIChyY3R4LT5wYWRfbW9kZSA9PSBSU0FfUEtDUzFf UEFERElORykKLSAJCQlyZXR1cm4gUlNBX3ZlcmlmeShFVlBfTURfdHlwZShyY3R4LT5tZCksIHRi cywgdGJzbGVuLAotIAkJCQkJc2lnLCBzaWdsZW4sIHJzYSk7Ci1kaWZmIC11cCBvcGVuc3NsLTEu MC4xay9jcnlwdG8vcnNhL3JzYV9zaWduLmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNh L3JzYV9zaWduLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vcnNhL3JzYV9zaWduLmMuZmlw cwkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9yc2EvcnNhX3NpZ24uYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU3MjkyMjc2NiArMDEw MAotQEAgLTEzOCw3ICsxMzgsOCBAQCBpbnQgUlNBX3NpZ24oaW50IHR5cGUsIGNvbnN0IHVuc2ln bmVkIGNoCi0gCQlpMmRfWDUwOV9TSUcoJnNpZywmcCk7Ci0gCQlzPXRtcHM7Ci0gCX0KLS0JaT1S U0FfcHJpdmF0ZV9lbmNyeXB0KGkscyxzaWdyZXQscnNhLFJTQV9QS0NTMV9QQURESU5HKTsKLSsJ LyogTkI6IGNhbGwgdW5kZXJseWluZyBtZXRob2QgZGlyZWN0bHkgdG8gYXZvaWQgRklQUyBibG9j a2luZyAqLwotKwlpID0gcnNhLT5tZXRoLT5yc2FfcHJpdl9lbmMgPyByc2EtPm1ldGgtPnJzYV9w cml2X2VuYyhpLHMsc2lncmV0LHJzYSxSU0FfUEtDUzFfUEFERElORykgOiAwOwotIAlpZiAoaSA8 PSAwKQotIAkJcmV0PTA7Ci0gCWVsc2UKLUBAIC0xOTcsOCArMTk4LDggQEAgaW50IGludF9yc2Ff dmVyaWZ5KGludCBkdHlwZSwgY29uc3QgdW5zaQotIAotIAlpZigoZHR5cGUgPT0gTklEX21kNV9z aGExKSAmJiBybSkKLSAJCXsKLS0JCWkgPSBSU0FfcHVibGljX2RlY3J5cHQoKGludClzaWdsZW4s Ci0tCQkJCQlzaWdidWYscm0scnNhLFJTQV9QS0NTMV9QQURESU5HKTsKLSsJCWkgPSByc2EtPm1l dGgtPnJzYV9wdWJfZGVjID8gcnNhLT5tZXRoLT5yc2FfcHViX2RlYygoaW50KXNpZ2xlbiwKLSsJ CQkJCXNpZ2J1ZixybSxyc2EsUlNBX1BLQ1MxX1BBRERJTkcpIDogMDsKLSAJCWlmIChpIDw9IDAp Ci0gCQkJcmV0dXJuIDA7Ci0gCQkqcHJtX2xlbiA9IGk7Ci1AQCAtMjE1LDcgKzIxNiw4IEBAIGlu dCBpbnRfcnNhX3ZlcmlmeShpbnQgZHR5cGUsIGNvbnN0IHVuc2kKLSAJCQlSU0FlcnIoUlNBX0Zf SU5UX1JTQV9WRVJJRlksUlNBX1JfSU5WQUxJRF9NRVNTQUdFX0xFTkdUSCk7Ci0gCQkJZ290byBl cnI7Ci0gCX0KLS0JaT1SU0FfcHVibGljX2RlY3J5cHQoKGludClzaWdsZW4sc2lnYnVmLHMscnNh LFJTQV9QS0NTMV9QQURESU5HKTsKLSsJLyogTkI6IGNhbGwgdW5kZXJseWluZyBtZXRob2QgZGly ZWN0bHkgdG8gYXZvaWQgRklQUyBibG9ja2luZyAqLwotKwlpID0gcnNhLT5tZXRoLT5yc2FfcHVi X2RlYyA/IHJzYS0+bWV0aC0+cnNhX3B1Yl9kZWMoKGludClzaWdsZW4sc2lnYnVmLHMscnNhLFJT QV9QS0NTMV9QQURESU5HKSA6IDA7Ci0gCi0gCWlmIChpIDw9IDApIGdvdG8gZXJyOwotIAkvKiBP ZGRiYWxsIE1EQzIgY2FzZTogc2lnbmF0dXJlIGNhbiBiZSBPQ1RFVCBTVFJJTkcuCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4xay9jcnlwdG8vc2hhL3NoYS5oLmZpcHMgb3BlbnNzbC0xLjAuMWsvY3J5 cHRvL3NoYS9zaGEuaAotLS0tIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9zaGEvc2hhLmguZmlwcwky MDE1LTAxLTA5IDA5OjUxOjUwLjkzOTkwODQ1MCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2Ny eXB0by9zaGEvc2hhLmgJMjAxNS0wMS0wOSAwOTo1MTo1MS41NzM5MjI3ODkgKzAxMDAKLUBAIC0x MTYsOSArMTE2LDYgQEAgdW5zaWduZWQgY2hhciAqU0hBKGNvbnN0IHVuc2lnbmVkIGNoYXIgKgot IHZvaWQgU0hBX1RyYW5zZm9ybShTSEFfQ1RYICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRh KTsKLSAjZW5kaWYKLSAjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMQotLSNpZmRlZiBPUEVOU1NMX0ZJ UFMKLS1pbnQgcHJpdmF0ZV9TSEExX0luaXQoU0hBX0NUWCAqYyk7Ci0tI2VuZGlmCi0gaW50IFNI QTFfSW5pdChTSEFfQ1RYICpjKTsKLSBpbnQgU0hBMV9VcGRhdGUoU0hBX0NUWCAqYywgY29uc3Qg dm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7Ci0gaW50IFNIQTFfRmluYWwodW5zaWduZWQgY2hhciAq bWQsIFNIQV9DVFggKmMpOwotQEAgLTE0MSwxMCArMTM4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU0hB MjU2c3RhdGVfc3QKLSAJfSBTSEEyNTZfQ1RYOwotIAotICNpZm5kZWYgT1BFTlNTTF9OT19TSEEy NTYKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0taW50IHByaXZhdGVfU0hBMjI0X0luaXQoU0hBMjU2 X0NUWCAqYyk7Ci0taW50IHByaXZhdGVfU0hBMjU2X0luaXQoU0hBMjU2X0NUWCAqYyk7Ci0tI2Vu ZGlmCi0gaW50IFNIQTIyNF9Jbml0KFNIQTI1Nl9DVFggKmMpOwotIGludCBTSEEyMjRfVXBkYXRl KFNIQTI1Nl9DVFggKmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwotIGludCBTSEEy MjRfRmluYWwodW5zaWduZWQgY2hhciAqbWQsIFNIQTI1Nl9DVFggKmMpOwotQEAgLTE5MiwxMCAr MTg1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU0hBNTEyc3RhdGVfc3QKLSAjZW5kaWYKLSAKLSAjaWZu ZGVmIE9QRU5TU0xfTk9fU0hBNTEyCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLWludCBwcml2YXRl X1NIQTM4NF9Jbml0KFNIQTUxMl9DVFggKmMpOwotLWludCBwcml2YXRlX1NIQTUxMl9Jbml0KFNI QTUxMl9DVFggKmMpOwotLSNlbmRpZgotIGludCBTSEEzODRfSW5pdChTSEE1MTJfQ1RYICpjKTsK LSBpbnQgU0hBMzg0X1VwZGF0ZShTSEE1MTJfQ1RYICpjLCBjb25zdCB2b2lkICpkYXRhLCBzaXpl X3QgbGVuKTsKLSBpbnQgU0hBMzg0X0ZpbmFsKHVuc2lnbmVkIGNoYXIgKm1kLCBTSEE1MTJfQ1RY ICpjKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9zaGEvc2hhX2xvY2wuaC5maXBz IG9wZW5zc2wtMS4wLjFrL2NyeXB0by9zaGEvc2hhX2xvY2wuaAotLS0tIG9wZW5zc2wtMS4wLjFr L2NyeXB0by9zaGEvc2hhX2xvY2wuaC5maXBzCTIwMTUtMDEtMDkgMDk6NTE6NTAuOTQyOTA4NTE4 ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3NoYS9zaGFfbG9jbC5oCTIwMTUtMDEt MDkgMDk6NTE6NTEuNTczOTIyNzg5ICswMTAwCi1AQCAtMTIzLDExICsxMjMsMTQgQEAgdm9pZCBz aGExX2Jsb2NrX2RhdGFfb3JkZXIgKFNIQV9DVFggKmMsCi0gI2RlZmluZSBJTklUX0RBVEFfaDQg MHhjM2QyZTFmMFVMCi0gCi0gI2lmZGVmIFNIQV8wCi0tZmlwc19tZF9pbml0KFNIQSkKLStub25m aXBzX21kX2luaXQoU0hBKQotICNlbHNlCi0gZmlwc19tZF9pbml0X2N0eChTSEExLCBTSEEpCi0g I2VuZGlmCi0gCXsKLSsjaWYgZGVmaW5lZChTSEFfMSkgJiYgZGVmaW5lZChPUEVOU1NMX0ZJUFMp Ci0rCUZJUFNfc2VsZnRlc3RfY2hlY2soKTsKLSsjZW5kaWYKLSAJbWVtc2V0IChjLDAsc2l6ZW9m KCpjKSk7Ci0gCWMtPmgwPUlOSVRfREFUQV9oMDsKLSAJYy0+aDE9SU5JVF9EQVRBX2gxOwotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3NoYS9zaGEyNTYuYy5maXBzIG9wZW5zc2wtMS4w LjFrL2NyeXB0by9zaGEvc2hhMjU2LmMKLS0tLSBvcGVuc3NsLTEuMC4xay9jcnlwdG8vc2hhL3No YTI1Ni5jLmZpcHMJMjAxNS0wMS0wOCAxNTowMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVu c3NsLTEuMC4xay9jcnlwdG8vc2hhL3NoYTI1Ni5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTczOTIy Nzg5ICswMTAwCi1AQCAtMTIsMTIgKzEyLDE5IEBACi0gCi0gI2luY2x1ZGUgPG9wZW5zc2wvY3J5 cHRvLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwot KyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8b3BlbnNz bC9vcGVuc3Nsdi5oPgotIAotIGNvbnN0IGNoYXIgU0hBMjU2X3ZlcnNpb25bXT0iU0hBLTI1NiIg T1BFTlNTTF9WRVJTSU9OX1BURVhUOwotIAotIGZpcHNfbWRfaW5pdF9jdHgoU0hBMjI0LCBTSEEy NTYpCi0gCXsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCUZJUFNfc2VsZnRlc3RfY2hlY2soKTsK LSsjZW5kaWYKLSAJbWVtc2V0IChjLDAsc2l6ZW9mKCpjKSk7Ci0gCWMtPmhbMF09MHhjMTA1OWVk OFVMOwljLT5oWzFdPTB4MzY3Y2Q1MDdVTDsKLSAJYy0+aFsyXT0weDMwNzBkZDE3VUw7CWMtPmhb M109MHhmNzBlNTkzOVVMOwotQEAgLTI5LDYgKzM2LDkgQEAgZmlwc19tZF9pbml0X2N0eChTSEEy MjQsIFNIQTI1NikKLSAKLSBmaXBzX21kX2luaXQoU0hBMjU2KQotIAl7Ci0rI2lmZGVmIE9QRU5T U0xfRklQUwotKwlGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0rI2VuZGlmCi0gCW1lbXNldCAoYyww LHNpemVvZigqYykpOwotIAljLT5oWzBdPTB4NmEwOWU2NjdVTDsJYy0+aFsxXT0weGJiNjdhZTg1 VUw7Ci0gCWMtPmhbMl09MHgzYzZlZjM3MlVMOwljLT5oWzNdPTB4YTU0ZmY1M2FVTDsKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by9zaGEvc2hhNTEyLmMuZmlwcyBvcGVuc3NsLTEuMC4x ay9jcnlwdG8vc2hhL3NoYTUxMi5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3NoYS9zaGE1 MTIuYy5maXBzCTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNz bC0xLjAuMWsvY3J5cHRvL3NoYS9zaGE1MTIuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU3MzkyMjc4 OSArMDEwMAotQEAgLTUsNiArNSwxMCBAQAotICAqID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICovCi0gI2luY2x1 ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rI2luY2x1 ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNlbmRpZgotKwotICNpZiAhZGVmaW5lZChPUEVOU1NMX05P X1NIQSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEE1MTIpCi0gLyoKLSAgKiBJTVBMRU1FTlRB VElPTiBOT1RFUy4KLUBAIC02MSw2ICs2NSw5IEBAIGNvbnN0IGNoYXIgU0hBNTEyX3ZlcnNpb25b XT0iU0hBLTUxMiIgT1AKLSAKLSBmaXBzX21kX2luaXRfY3R4KFNIQTM4NCwgU0hBNTEyKQotIAl7 Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwlGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0rI2VuZGlm Ci0gCWMtPmhbMF09VTY0KDB4Y2JiYjlkNWRjMTA1OWVkOCk7Ci0gCWMtPmhbMV09VTY0KDB4NjI5 YTI5MmEzNjdjZDUwNyk7Ci0gCWMtPmhbMl09VTY0KDB4OTE1OTAxNWEzMDcwZGQxNyk7Ci1AQCAt NzcsNiArODQsOSBAQCBmaXBzX21kX2luaXRfY3R4KFNIQTM4NCwgU0hBNTEyKQotIAotIGZpcHNf bWRfaW5pdChTSEE1MTIpCi0gCXsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCUZJUFNfc2VsZnRl c3RfY2hlY2soKTsKLSsjZW5kaWYKLSAJYy0+aFswXT1VNjQoMHg2YTA5ZTY2N2YzYmNjOTA4KTsK LSAJYy0+aFsxXT1VNjQoMHhiYjY3YWU4NTg0Y2FhNzNiKTsKLSAJYy0+aFsyXT1VNjQoMHgzYzZl ZjM3MmZlOTRmODJiKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0by93aHJscG9vbC93 cF9kZ3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4xay9jcnlwdG8vd2hybHBvb2wvd3BfZGdzdC5jCi0t LS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3docmxwb29sL3dwX2Rnc3QuYy5maXBzCTIwMTUtMDEt MDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3do cmxwb29sL3dwX2Rnc3QuYwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU3NDkyMjgxMSArMDEwMAotQEAg LTU1LDcgKzU1LDcgQEAKLSAjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSAjaW5jbHVkZSA8 c3RyaW5nLmg+Ci0gCi0tZmlwc19tZF9pbml0KFdISVJMUE9PTCkKLStub25maXBzX21kX2luaXQo V0hJUkxQT09MKQotIAl7Ci0gCW1lbXNldCAoYywwLHNpemVvZigqYykpOwotIAlyZXR1cm4oMSk7 Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9NYWtlZmlsZS5vcmcuZmlwcyBvcGVuc3NsLTEuMC4x ay9NYWtlZmlsZS5vcmcKLS0tLSBvcGVuc3NsLTEuMC4xay9NYWtlZmlsZS5vcmcuZmlwcwkyMDE1 LTAxLTA5IDA5OjUxOjUxLjI3MjkxNTk4MSArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL01ha2Vm aWxlLm9yZwkyMDE1LTAxLTA5IDA5OjUxOjUxLjU3NDkyMjgxMSArMDEwMAotQEAgLTEzNiw2ICsx MzYsOSBAQCBGSVBTQ0FOTElCPQotIAotIEJBU0VBRERSPQotIAotKyMgTm9uLWVtcHR5IGlmIEZJ UFMgZW5hYmxlZAotK0ZJUFM9Ci0rCi0gRElSUz0gICBjcnlwdG8gc3NsIGVuZ2luZXMgYXBwcyB0 ZXN0IHRvb2xzCi0gRU5HRElSUz0gY2Nnb3N0Ci0gU0hMSUJESVJTPSBjcnlwdG8gc3NsCi1AQCAt MTQ4LDcgKzE1MSw3IEBAIFNESVJTPSAgXAotIAlibiBlYyByc2EgZHNhIGVjZHNhIGRoIGVjZGgg ZHNvIGVuZ2luZSBcCi0gCWJ1ZmZlciBiaW8gc3RhY2sgbGhhc2ggcmFuZCBlcnIgXAotIAlldnAg YXNuMSBwZW0geDUwOSB4NTA5djMgY29uZiB0eHRfZGIgcGtjczcgcGtjczEyIGNvbXAgb2NzcCB1 aSBrcmI1IFwKLS0JY21zIHBxdWV1ZSB0cyBqcGFrZSBzcnAgc3RvcmUgY21hYwotKwljbXMgcHF1 ZXVlIHRzIGpwYWtlIHNycCBzdG9yZSBjbWFjIGZpcHMKLSAjIGtlZXAgaW4gbWluZCB0aGF0IHRo ZSBhYm92ZSBsaXN0IGlzIGFkanVzdGVkIGJ5IC4vQ29uZmlndXJlCi0gIyBhY2NvcmRpbmcgdG8g bm8teHh4IGFyZ3VtZW50cy4uLgotIAotQEAgLTIzNyw2ICsyNDAsNyBAQCBCVUlMREVOVj0JUExB VEZPUk09JyQoUExBVEZPUk0pJyBQUk9DRVNTCi0gCQlGSVBTTElCRElSPScke0ZJUFNMSUJESVJ9 JwkJCVwKLSAJCUZJUFNESVI9JyR7RklQU0RJUn0nCQkJCVwKLSAJCUZJUFNDQU5MSUI9IiQke0ZJ UFNDQU5MSUI6LSQoRklQU0NBTkxJQil9IglcCi0rCQlGSVBTPSIkJHtGSVBTOi0kKEZJUFMpfSIJ XAotIAkJVEhJUz0kJHtUSElTOi0kQH0gTUFLRUZJTEU9TWFrZWZpbGUgTUFLRU9WRVJSSURFUz0K LSAjIE1BS0VPVkVSUklERVM9IGVmZmVjdGl2ZWx5ICJlcXVhbGl6ZXMiIEdOVS1pc2ggYW5kIFN5 c1YtaXNoIG1ha2UgZmxhdm9ycywKLSAjIHdoaWNoIGluIHR1cm4gZWxpbWluYXRlcyBhbWJpZ3Vp dGllcyBpbiB2YXJpYWJsZSB0cmVhdG1lbnQgd2l0aCAtZS4KLWRpZmYgLXVwIG9wZW5zc2wtMS4w LjFrL3NzbC9kMV9zcnZyLmMuZmlwcyBvcGVuc3NsLTEuMC4xay9zc2wvZDFfc3J2ci5jCi0tLS0g b3BlbnNzbC0xLjAuMWsvc3NsL2QxX3NydnIuYy5maXBzCTIwMTUtMDEtMDggMTU6MDA6NTYuMDAw MDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvc3NsL2QxX3NydnIuYwkyMDE1LTAxLTA5 IDA5OjUxOjUxLjU3NDkyMjgxMSArMDEwMAotQEAgLTE0MDIsNiArMTQwMiw4IEBAIGludCBkdGxz MV9zZW5kX3NlcnZlcl9rZXlfZXhjaGFuZ2UoU1NMICoKLSAJCQkJaj0wOwotIAkJCQlmb3IgKG51 bT0yOyBudW0gPiAwOyBudW0tLSkKLSAJCQkJCXsKLSsJCQkJCUVWUF9NRF9DVFhfc2V0X2ZsYWdz KCZtZF9jdHgsCi0rCQkJCQkJCQlFVlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpOwotIAkJ CQkJRVZQX0RpZ2VzdEluaXRfZXgoJm1kX2N0eCwobnVtID09IDIpCi0gCQkJCQkJP3MtPmN0eC0+ bWQ1OnMtPmN0eC0+c2hhMSwgTlVMTCk7Ci0gCQkJCQlFVlBfRGlnZXN0VXBkYXRlKCZtZF9jdHgs JihzLT5zMy0+Y2xpZW50X3JhbmRvbVswXSksU1NMM19SQU5ET01fU0laRSk7Ci1kaWZmIC11cCBv cGVuc3NsLTEuMC4xay9zc2wvc3NsX2FsZ3MuYy5maXBzIG9wZW5zc2wtMS4wLjFrL3NzbC9zc2xf YWxncy5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvc3NsL3NzbF9hbGdzLmMuZmlwcwkyMDE1LTAxLTA4 IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL3NzbC9zc2xfYWxn cy5jCTIwMTUtMDEtMDkgMDk6NTE6NTEuNTc1OTIyODM0ICswMTAwCi1AQCAtNjQsNiArNjQsMTIg QEAKLSBpbnQgU1NMX2xpYnJhcnlfaW5pdCh2b2lkKQotIAl7Ci0gCi0rI2lmZGVmIE9QRU5TU0xf RklQUwotKwlPUEVOU1NMX2luaXRfbGlicmFyeSgpOwotKwlpZiAoIUZJUFNfbW9kZSgpKQotKwkJ ewotKyNlbmRpZgotKwotICNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJRVZQX2FkZF9jaXBoZXIo RVZQX2Rlc19jYmMoKSk7Ci0gCUVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlM19jYmMoKSk7Ci1A QCAtMTM3LDYgKzE0Myw1MCBAQCBpbnQgU1NMX2xpYnJhcnlfaW5pdCh2b2lkKQotIAlFVlBfYWRk X2RpZ2VzdChFVlBfc2hhKCkpOwotIAlFVlBfYWRkX2RpZ2VzdChFVlBfZHNzKCkpOwotICNlbmRp ZgotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsJCX0KLSsJZWxzZQotKwkJewotKyNpZm5kZWYgT1BF TlNTTF9OT19ERVMKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUzX2NiYygpKTsKLSsjZW5k aWYKLSsjaWZuZGVmIE9QRU5TU0xfTk9fQUVTCi0rCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4 X2NiYygpKTsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY2JjKCkpOwotKwlFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzI1Nl9jYmMoKSk7Ci0rCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4 X2djbSgpKTsKLSsJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZ2NtKCkpOwotKyNlbmRpZgot KyNpZm5kZWYgT1BFTlNTTF9OT19NRDUKLSsJLyogbmVlZGVkIGV2ZW4gaW4gdGhlIEZJUFMgbW9k ZSBmb3IgVExTIE1BQyAqLwotKwlFVlBfYWRkX2RpZ2VzdChFVlBfbWQ1KCkpOwotKwlFVlBfYWRk X2RpZ2VzdF9hbGlhcyhTTl9tZDUsInNzbDItbWQ1Iik7Ci0rCUVWUF9hZGRfZGlnZXN0X2FsaWFz KFNOX21kNSwic3NsMy1tZDUiKTsKLSsjZW5kaWYKLSsjaWZuZGVmIE9QRU5TU0xfTk9fU0hBCi0r CUVWUF9hZGRfZGlnZXN0KEVWUF9zaGExKCkpOyAvKiBSU0Egd2l0aCBzaGExICovCi0rCUVWUF9h ZGRfZGlnZXN0X2FsaWFzKFNOX3NoYTEsInNzbDMtc2hhMSIpOwotKwlFVlBfYWRkX2RpZ2VzdF9h bGlhcyhTTl9zaGExV2l0aFJTQUVuY3J5cHRpb24sU05fc2hhMVdpdGhSU0EpOwotKyNlbmRpZgot KyNpZm5kZWYgT1BFTlNTTF9OT19TSEEyNTYKLSsJRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTIyNCgp KTsKLSsJRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTI1NigpKTsKLSsjZW5kaWYKLSsjaWZuZGVmIE9Q RU5TU0xfTk9fU0hBNTEyCi0rCUVWUF9hZGRfZGlnZXN0KEVWUF9zaGEzODQoKSk7Ci0rCUVWUF9h ZGRfZGlnZXN0KEVWUF9zaGE1MTIoKSk7Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkKE9QRU5TU0xf Tk9fU0hBKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0RTQSkKLSsJRVZQX2FkZF9kaWdlc3QoRVZQ X2RzczEoKSk7IC8qIERTQSB3aXRoIHNoYTEgKi8KLSsJRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05f ZHNhV2l0aFNIQTEsU05fZHNhV2l0aFNIQTFfMik7Ci0rCUVWUF9hZGRfZGlnZXN0X2FsaWFzKFNO X2RzYVdpdGhTSEExLCJEU1MxIik7Ci0rCUVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhT SEExLCJkc3MxIik7Ci0rI2VuZGlmCi0rI2lmbmRlZiBPUEVOU1NMX05PX0VDRFNBCi0rCUVWUF9h ZGRfZGlnZXN0KEVWUF9lY2RzYSgpKTsKLSsjZW5kaWYKLSsJCX0KLSsjZW5kaWYKLSAjaWZuZGVm IE9QRU5TU0xfTk9fQ09NUAotIAkvKiBUaGlzIHdpbGwgaW5pdGlhbGlzZSB0aGUgYnVpbHQtaW4g Y29tcHJlc3Npb24gYWxnb3JpdGhtcy4KLSAJICAgVGhlIHZhbHVlIHJldHVybmVkIGlzIGEgU1RB Q0tfT0YoU1NMX0NPTVApLCBidXQgdGhhdCBjYW4KCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4x ay1wYWRsb2NrNjQucGF0Y2ggYi9vcGVuc3NsLTEuMC4xay1wYWRsb2NrNjQucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MGMwYmYuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0x LjAuMWstcGFkbG9jazY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTk3ICswLDAgQEAKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2VuZ2luZXMvZV9wYWRsb2NrLmMucGFkbG9jazY0IG9wZW5z c2wtMS4wLjFrL2VuZ2luZXMvZV9wYWRsb2NrLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9lbmdpbmVz L2VfcGFkbG9jay5jLnBhZGxvY2s2NAkyMDE1LTAxLTA4IDE1OjAwOjU2LjAwMDAwMDAwMCArMDEw MAotKysrIG9wZW5zc2wtMS4wLjFrL2VuZ2luZXMvZV9wYWRsb2NrLmMJMjAxNS0wMS0wOSAxMDox ODo1NS41Nzk2NTA5OTIgKzAxMDAKLUBAIC0xMDEsNyArMTAxLDEwIEBACi0gICAgY29tcGlsZXIg Y2hvaWNlIGlzIGxpbWl0ZWQgdG8gR0NDIGFuZCBNaWNyb3NvZnQgQy4gKi8KLSAjdW5kZWYgQ09N UElMRV9IV19QQURMT0NLCi0gI2lmICFkZWZpbmVkKEkzODZfT05MWSkgJiYgIWRlZmluZWQoT1BF TlNTTF9OT19JTkxJTkVfQVNNKQotLSMgaWYgKGRlZmluZWQoX19HTlVDX18pICYmIChkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9faTM4NikpKSB8fCBcCi0rIyBpZiAoZGVmaW5lZChfX0dO VUNfXykgJiYgX19HTlVDX18+PTIgJiYgXAotKwkoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX2kzODYpIHx8IFwKLSsJIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3g4Nl82 NCkpIFwKLSsgICAgICkgfHwgXAotICAgICAgKGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQo X01fSVg4NikpCi0gIyAgZGVmaW5lIENPTVBJTEVfSFdfUEFETE9DSwotICMgZW5kaWYKLUBAIC0x MzcsNyArMTQwLDcgQEAgdm9pZCBFTkdJTkVfbG9hZF9wYWRsb2NrICh2b2lkKQotICMgZW5kaWYK LSAjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotICMgaWZuZGVmIGFsbG9jYQotLSMgIGRlZmluZSBh bGxvY2EocykgX19idWlsdGluX2FsbG9jYShzKQotKyMgIGRlZmluZSBhbGxvY2EocykgX19idWls dGluX2FsbG9jYSgocykpCi0gIyBlbmRpZgotICNlbmRpZgotIAotQEAgLTMwNCw2ICszMDcsNyBA QCBzdGF0aWMgdm9sYXRpbGUgc3RydWN0IHBhZGxvY2tfY2lwaGVyX2RhCi0gICogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAqLwotICNp ZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXz49MgotKyNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9faTM4NikKLSAvKgotICAqIEFzIGZvciBleGNlc3NpdmUgInB1c2ggJWVi eCIvInBvcCAlZWJ4IiBmb3VuZCBhbGwgb3Zlci4KLSAgKiBXaGVuIGdlbmVyYXRpbmcgcG9zaXRp b24taW5kZXBlbmRlbnQgY29kZSBHQ0Mgd29uJ3QgbGV0Ci1AQCAtMzgzLDIzICszODcsNiBAQCBw YWRsb2NrX2F2YWlsYWJsZSh2b2lkKQotIAlyZXR1cm4gcGFkbG9ja191c2VfYWNlICsgcGFkbG9j a191c2Vfcm5nOwotIH0KLSAKLS0jaWZuZGVmIE9QRU5TU0xfTk9fQUVTCi0tI2lmbmRlZiBBRVNf QVNNCi0tLyogT3VyIG93biBodG9ubCgpL250b2hsKCkgKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQK LS1wYWRsb2NrX2Jzd2FwbChBRVNfS0VZICprcykKLS17Ci0tCXNpemVfdCBpID0gc2l6ZW9mKGtz LT5yZF9rZXkpL3NpemVvZihrcy0+cmRfa2V5WzBdKTsKLS0JdW5zaWduZWQgaW50ICprZXkgPSBr cy0+cmRfa2V5OwotLQotLQl3aGlsZSAoaS0tKSB7Ci0tCQlhc20gdm9sYXRpbGUgKCJic3dhcGwg JTAiIDogIityIigqa2V5KSk7Ci0tCQlrZXkrKzsKLS0JfQotLX0KLS0jZW5kaWYKLS0jZW5kaWYK LS0KLSAvKiBGb3JjZSBrZXkgcmVsb2FkIGZyb20gbWVtb3J5IHRvIHRoZSBDUFUgbWljcm9jb2Rl LgotICAgIExvYWRpbmcgRUZMQUdTIGZyb20gdGhlIHN0YWNrIGNsZWFycyBFRkxBR1NbMzBdIAot ICAgIHdoaWNoIGRvZXMgdGhlIHRyaWNrLiAqLwotQEAgLTQ1NywxMiArNDQ0LDEyOSBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgKm5hbWUoc2l6ZV90IGNudCwJCVwKLSAJCTogImVkeCIsICJjYyIsICJt ZW1vcnkiKTsJXAotIAlyZXR1cm4gaXY7CQkJCVwKLSB9Ci0rI2VuZGlmCi0rCi0rI2VsaWYgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feDg2XzY0KQotKwotKy8qIExvYWQgc3VwcG9y dGVkIGZlYXR1cmVzIG9mIHRoZSBDUFUgdG8gc2VlIGlmCi0rICAgdGhlIFBhZExvY2sgaXMgYXZh aWxhYmxlLiAqLwotK3N0YXRpYyBpbnQKLStwYWRsb2NrX2F2YWlsYWJsZSh2b2lkKQotK3sKLSsJ Y2hhciB2ZW5kb3Jfc3RyaW5nWzE2XTsKLSsJdW5zaWduZWQgaW50IGVheCwgZWR4OwotIAotKwkv KiBBcmUgd2UgcnVubmluZyBvbiB0aGUgQ2VudGF1ciAoVklBKSBDUFU/ICovCi0rCWVheCA9IDB4 MDAwMDAwMDA7Ci0rCXZlbmRvcl9zdHJpbmdbMTJdID0gMDsKLSsJYXNtIHZvbGF0aWxlICgKLSsJ CSJjcHVpZFxuIgotKwkJIm1vdmwJJSVlYngsKCUxKVxuIgotKwkJIm1vdmwJJSVlZHgsNCglMSlc biIKLSsJCSJtb3ZsCSUlZWN4LDgoJTEpXG4iCi0rCQk6ICIrYSIoZWF4KSA6ICJyIih2ZW5kb3Jf c3RyaW5nKSA6ICJyYngiLCAicmN4IiwgInJkeCIpOwotKwlpZiAoc3RyY21wKHZlbmRvcl9zdHJp bmcsICJDZW50YXVySGF1bHMiKSAhPSAwKQotKwkJcmV0dXJuIDA7Ci0rCi0rCS8qIENoZWNrIGZv ciBDZW50YXVyIEV4dGVuZGVkIEZlYXR1cmUgRmxhZ3MgcHJlc2VuY2UgKi8KLSsJZWF4ID0gMHhD MDAwMDAwMDsKLSsJYXNtIHZvbGF0aWxlICgiY3B1aWQiCi0rCQk6ICIrYSIoZWF4KSA6IDogInJi eCIsICJyY3giLCAicmR4Iik7Ci0rCWlmIChlYXggPCAweEMwMDAwMDAxKQotKwkJcmV0dXJuIDA7 Ci0rCi0rCS8qIFJlYWQgdGhlIENlbnRhdXIgRXh0ZW5kZWQgRmVhdHVyZSBGbGFncyAqLwotKwll YXggPSAweEMwMDAwMDAxOwotKwlhc20gdm9sYXRpbGUgKCJjcHVpZCIKLSsJCTogIithIihlYXgp LCAiPWQiKGVkeCkgOiA6ICJyYngiLCAicmN4Iik7Ci0rCi0rCS8qIEZpbGwgdXAgc29tZSBmbGFn cyAqLwotKwlwYWRsb2NrX3VzZV9hY2UgPSAoKGVkeCAmICgweDM8PDYpKSA9PSAoMHgzPDw2KSk7 Ci0rCXBhZGxvY2tfdXNlX3JuZyA9ICgoZWR4ICYgKDB4Mzw8MikpID09ICgweDM8PDIpKTsKLSsK LSsJcmV0dXJuIHBhZGxvY2tfdXNlX2FjZSArIHBhZGxvY2tfdXNlX3JuZzsKLSt9Ci0rCi0rLyog Rm9yY2Uga2V5IHJlbG9hZCBmcm9tIG1lbW9yeSB0byB0aGUgQ1BVIG1pY3JvY29kZS4KLSsgICBM b2FkaW5nIEVGTEFHUyBmcm9tIHRoZSBzdGFjayBjbGVhcnMgRUZMQUdTWzMwXSAKLSsgICB3aGlj aCBkb2VzIHRoZSB0cmljay4gKi8KLStzdGF0aWMgaW5saW5lIHZvaWQKLStwYWRsb2NrX3JlbG9h ZF9rZXkodm9pZCkKLSt7Ci0rCWFzbSB2b2xhdGlsZSAoInB1c2hmcTsgcG9wZnEiKTsKLSt9Ci0r Ci0rI2lmbmRlZiBPUEVOU1NMX05PX0FFUwotKy8qCi0rICogVGhpcyBpcyBoZXVyaXN0aWMga2V5 IGNvbnRleHQgdHJhY2luZy4gQXQgZmlyc3Qgb25lCi0rICogYmVsaWV2ZXMgdGhhdCBvbmUgc2hv dWxkIHVzZSBhdG9taWMgc3dhcCBpbnN0cnVjdGlvbnMsCi0rICogYnV0IGl0J3Mgbm90IGFjdHVh bGx5IG5lY2Vzc2FyeS4gUG9pbnQgaXMgdGhhdCBpZgotKyAqIHBhZGxvY2tfc2F2ZWRfY29udGV4 dCB3YXMgY2hhbmdlZCBieSBhbm90aGVyIHRocmVhZAotKyAqIGFmdGVyIHdlJ3ZlIHJlYWQgaXQg YW5kIGJlZm9yZSB3ZSBjb21wYXJlIGl0IHdpdGggY2RhdGEsCi0rICogb3VyIGtleSAqc2hhbGwq IGJlIHJlbG9hZGVkIHVwb24gdGhyZWFkIGNvbnRleHQgc3dpdGNoCi0rICogYW5kIHdlIGFyZSB0 aGVyZWZvcmUgc2V0IGluIGVpdGhlciBjYXNlLi4uCi0rICovCi0rc3RhdGljIGlubGluZSB2b2lk Ci0rcGFkbG9ja192ZXJpZnlfY29udGV4dChzdHJ1Y3QgcGFkbG9ja19jaXBoZXJfZGF0YSAqY2Rh dGEpCi0rewotKwlhc20gdm9sYXRpbGUgKAotKwkicHVzaGZxXG4iCi0rIglidGwJJDMwLCglJXJz cClcbiIKLSsiCWpuYwkxZlxuIgotKyIJY21wcQklMiwlMVxuIgotKyIJamUJMWZcbiIKLSsiCXBv cGZxXG4iCi0rIglzdWJxCSQ4LCUlcnNwXG4iCi0rIjE6CWFkZHEJJDgsJSVyc3BcbiIKLSsiCW1v dnEJJTIsJTAiCi0rCToiK20iKHBhZGxvY2tfc2F2ZWRfY29udGV4dCkKLSsJOiAiciIocGFkbG9j a19zYXZlZF9jb250ZXh0KSwgInIiKGNkYXRhKSA6ICJjYyIpOwotK30KLSsKLSsvKiBUZW1wbGF0 ZSBmb3IgcGFkbG9ja194Y3J5cHRfKiBtb2RlcyAqLwotKy8qIEJJRyBGQVQgV0FSTklORzogCi0r ICogCVRoZSBvZmZzZXRzIHVzZWQgd2l0aCAnbGVhbCcgaW5zdHJ1Y3Rpb25zCi0rICogCWRlc2Ny aWJlIGl0ZW1zIG9mIHRoZSAncGFkbG9ja19jaXBoZXJfZGF0YScKLSsgKiAJc3RydWN0dXJlLgot KyAqLwotKyNkZWZpbmUgUEFETE9DS19YQ1JZUFRfQVNNKG5hbWUscmVwX3hjcnlwdCkJXAotK3N0 YXRpYyBpbmxpbmUgdm9pZCAqbmFtZShzaXplX3QgY250LAkJXAotKwlzdHJ1Y3QgcGFkbG9ja19j aXBoZXJfZGF0YSAqY2RhdGEsCVwKLSsJdm9pZCAqb3V0LCBjb25zdCB2b2lkICppbnApIAkJXAot K3sJdm9pZCAqaXY7IAkJCQlcCi0rCWFzbSB2b2xhdGlsZSAoICJsZWFxCTE2KCUwKSwlJXJkeFxu IglcCi0rCQkiCWxlYXEJMzIoJTApLCUlcmJ4XG4iCVwKLSsJCQlyZXBfeGNyeXB0ICJcbiIJCVwK LSsJCTogIj1hIihpdiksICI9YyIoY250KSwgIj1EIihvdXQpLCAiPVMiKGlucCkgXAotKwkJOiAi MCIoY2RhdGEpLCAiMSIoY250KSwgIjIiKG91dCksICIzIihpbnApICBcCi0rCQk6ICJyYngiLCAi cmR4IiwgImNjIiwgIm1lbW9yeSIpOwlcCi0rCXJldHVybiBpdjsJCQkJXAotK30KLSsjZW5kaWYK LSsKLSsjZW5kaWYJLyogY3B1ICovCi0rCi0rI2lmbmRlZiBPUEVOU1NMX05PX0FFUwotIC8qIEdl bmVyYXRlIGFsbCBmdW5jdGlvbnMgd2l0aCBhcHByb3ByaWF0ZSBvcGNvZGVzICovCi0gUEFETE9D S19YQ1JZUFRfQVNNKHBhZGxvY2tfeGNyeXB0X2VjYiwgIi5ieXRlIDB4ZjMsMHgwZiwweGE3LDB4 YzgiKQkvKiByZXAgeGNyeXB0ZWNiICovCi0gUEFETE9DS19YQ1JZUFRfQVNNKHBhZGxvY2tfeGNy eXB0X2NiYywgIi5ieXRlIDB4ZjMsMHgwZiwweGE3LDB4ZDAiKQkvKiByZXAgeGNyeXB0Y2JjICov Ci0gUEFETE9DS19YQ1JZUFRfQVNNKHBhZGxvY2tfeGNyeXB0X2NmYiwgIi5ieXRlIDB4ZjMsMHgw ZiwweGE3LDB4ZTAiKQkvKiByZXAgeGNyeXB0Y2ZiICovCi0gUEFETE9DS19YQ1JZUFRfQVNNKHBh ZGxvY2tfeGNyeXB0X29mYiwgIi5ieXRlIDB4ZjMsMHgwZiwweGE3LDB4ZTgiKQkvKiByZXAgeGNy eXB0b2ZiICovCi0rCi0rI2lmbmRlZiBBRVNfQVNNCi0rLyogT3VyIG93biBodG9ubCgpL250b2hs KCkgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQKLStwYWRsb2NrX2Jzd2FwbChBRVNfS0VZICprcykK LSt7Ci0rCXNpemVfdCBpID0gc2l6ZW9mKGtzLT5yZF9rZXkpL3NpemVvZihrcy0+cmRfa2V5WzBd KTsKLSsJdW5zaWduZWQgaW50ICprZXkgPSBrcy0+cmRfa2V5OwotKwotKwl3aGlsZSAoaS0tKSB7 Ci0rCQlhc20gdm9sYXRpbGUgKCJic3dhcGwgJTAiIDogIityIigqa2V5KSk7Ci0rCQlrZXkrKzsK LSsJfQotK30KLSsjZW5kaWYKLSAjZW5kaWYKLSAKLSAvKiBUaGUgUk5HIGNhbGwgaXRzZWxmICov Ci1AQCAtNDkzLDggKzU5Nyw4IEBAIHBhZGxvY2tfeHN0b3JlKHZvaWQgKmFkZHIsIHVuc2lnbmVk IGludAotIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqCi0gcGFkbG9ja19tZW1jcHkodm9p ZCAqZHN0LGNvbnN0IHZvaWQgKnNyYyxzaXplX3QgbikKLSB7Ci0tCWxvbmcgICAgICAgKmQ9ZHN0 OwotLQljb25zdCBsb25nICpzPXNyYzsKLSsJc2l6ZV90ICAgICAgICpkPWRzdDsKLSsJY29uc3Qg c2l6ZV90ICpzPXNyYzsKLSAKLSAJbiAvPSBzaXplb2YoKmQpOwotIAlkbyB7ICpkKysgPSAqcysr OyB9IHdoaWxlICgtLW4pOwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjFrLXRydXN0ZWQtZmly c3QucGF0Y2ggYi9vcGVuc3NsLTEuMC4xay10cnVzdGVkLWZpcnN0LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA4ZDNmMjNhLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjFr LXRydXN0ZWQtZmlyc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMzAgKzAsMCBAQAotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMWsvYXBwcy9hcHBzLmMudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEu MC4xay9hcHBzL2FwcHMuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2FwcHMvYXBwcy5jLnRydXN0ZWQt Zmlyc3QJMjAxNS0wMS0wOCAxNTowMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEu MC4xay9hcHBzL2FwcHMuYwkyMDE1LTAxLTA5IDEwOjE5OjQ1LjQ3Njc3OTQ1NiArMDEwMAotQEAg LTIzNjUsNiArMjM2NSw4IEBAIGludCBhcmdzX3ZlcmlmeShjaGFyICoqKnBhcmdzLCBpbnQgKnBh cmcKLSAJCWZsYWdzIHw9IFg1MDlfVl9GTEFHX05PVElGWV9QT0xJQ1k7Ci0gCWVsc2UgaWYgKCFz dHJjbXAoYXJnLCAiLWNoZWNrX3NzX3NpZyIpKQotIAkJZmxhZ3MgfD0gWDUwOV9WX0ZMQUdfQ0hF Q0tfU1NfU0lHTkFUVVJFOwotKwllbHNlIGlmICghc3RyY21wKGFyZywgIi10cnVzdGVkX2ZpcnN0 IikpCi0rCQlmbGFncyB8PSBYNTA5X1ZfRkxBR19UUlVTVEVEX0ZJUlNUOwotIAllbHNlCi0gCQly ZXR1cm4gMDsKLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2FwcHMvY21zLmMudHJ1c3RlZC1m aXJzdCBvcGVuc3NsLTEuMC4xay9hcHBzL2Ntcy5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvYXBwcy9j bXMuYy50cnVzdGVkLWZpcnN0CTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMWsvYXBwcy9jbXMuYwkyMDE1LTAxLTA5IDEwOjE5OjQ1LjQ3Njc3OTQ1 NiArMDEwMAotQEAgLTY0Miw2ICs2NDIsNyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCi0gCQlCSU9fcHJpbnRmIChiaW9fZXJyLCAiLXRleHQgICAgICAgICAgaW5jbHVkZSBvciBk ZWxldGUgdGV4dCBNSU1FIGhlYWRlcnNcbiIpOwotIAkJQklPX3ByaW50ZiAoYmlvX2VyciwgIi1D QXBhdGggZGlyICAgIHRydXN0ZWQgY2VydGlmaWNhdGVzIGRpcmVjdG9yeVxuIik7Ci0gCQlCSU9f cHJpbnRmIChiaW9fZXJyLCAiLUNBZmlsZSBmaWxlICAgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZmls ZVxuIik7Ci0rCQlCSU9fcHJpbnRmIChiaW9fZXJyLCAiLXRydXN0ZWRfZmlyc3QgdXNlIHRydXN0 ZWQgY2VydGlmaWNhdGVzIGZpcnN0IHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluXG4iKTsK LSAJCUJJT19wcmludGYgKGJpb19lcnIsICItY3JsX2NoZWNrICAgICBjaGVjayByZXZvY2F0aW9u IHN0YXR1cyBvZiBzaWduZXIncyBjZXJ0aWZpY2F0ZSB1c2luZyBDUkxzXG4iKTsKLSAJCUJJT19w cmludGYgKGJpb19lcnIsICItY3JsX2NoZWNrX2FsbCBjaGVjayByZXZvY2F0aW9uIHN0YXR1cyBv ZiBzaWduZXIncyBjZXJ0aWZpY2F0ZSBjaGFpbiB1c2luZyBDUkxzXG4iKTsKLSAjaWZuZGVmIE9Q RU5TU0xfTk9fRU5HSU5FCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9hcHBzL29jc3AuYy50cnVz dGVkLWZpcnN0IG9wZW5zc2wtMS4wLjFrL2FwcHMvb2NzcC5jCi0tLS0gb3BlbnNzbC0xLjAuMWsv YXBwcy9vY3NwLmMudHJ1c3RlZC1maXJzdAkyMDE1LTAxLTA5IDEwOjE5OjQ1LjQ3Nzc3OTQ3OCAr MDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2FwcHMvb2NzcC5jCTIwMTUtMDEtMDkgMTA6MjA6NTcu NzI2NDEzNDQwICswMTAwCi1AQCAtNjA1LDYgKzYwNSw3IEBAIGludCBNQUlOKGludCBhcmdjLCBj aGFyICoqYXJndikKLSAJCUJJT19wcmludGYgKGJpb19lcnIsICItcGF0aCAgICAgICAgICAgICAg ICBwYXRoIHRvIHVzZSBpbiBPQ1NQIHJlcXVlc3RcbiIpOwotIAkJQklPX3ByaW50ZiAoYmlvX2Vy ciwgIi1DQXBhdGggZGlyICAgICAgICAgIHRydXN0ZWQgY2VydGlmaWNhdGVzIGRpcmVjdG9yeVxu Iik7Ci0gCQlCSU9fcHJpbnRmIChiaW9fZXJyLCAiLUNBZmlsZSBmaWxlICAgICAgICAgdHJ1c3Rl ZCBjZXJ0aWZpY2F0ZXMgZmlsZVxuIik7Ci0rCQlCSU9fcHJpbnRmIChiaW9fZXJyLCAiLXRydXN0 ZWRfZmlyc3QgICAgICAgdXNlIHRydXN0ZWQgY2VydGlmaWNhdGVzIGZpcnN0IHdoZW4gYnVpbGRp bmcgdGhlIHRydXN0IGNoYWluXG4iKTsKLSAJCUJJT19wcmludGYgKGJpb19lcnIsICItVkFmaWxl IGZpbGUgICAgICAgICB2YWxpZGF0b3IgY2VydGlmaWNhdGVzIGZpbGVcbiIpOwotIAkJQklPX3By aW50ZiAoYmlvX2VyciwgIi12YWxpZGl0eV9wZXJpb2QgbiAgIG1heGltdW0gdmFsaWRpdHkgZGlz Y3JlcGFuY3kgaW4gc2Vjb25kc1xuIik7Ci0gCQlCSU9fcHJpbnRmIChiaW9fZXJyLCAiLXN0YXR1 c19hZ2UgbiAgICAgICAgbWF4aW11bSBzdGF0dXMgYWdlIGluIHNlY29uZHNcbiIpOwotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMWsvYXBwcy9zX2NsaWVudC5jLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0x LjAuMWsvYXBwcy9zX2NsaWVudC5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvYXBwcy9zX2NsaWVudC5j LnRydXN0ZWQtZmlyc3QJMjAxNS0wMS0wOSAxMDoxOTo0NS40Mzg3Nzg1OTYgKzAxMDAKLSsrKyBv cGVuc3NsLTEuMC4xay9hcHBzL3NfY2xpZW50LmMJMjAxNS0wMS0wOSAxMDoxOTo0NS40Nzc3Nzk0 NzggKzAxMDAKLUBAIC0yOTksNiArMjk5LDcgQEAgc3RhdGljIHZvaWQgc2NfdXNhZ2Uodm9pZCkK LSAJQklPX3ByaW50ZihiaW9fZXJyLCIgLXBhc3MgYXJnICAgICAtIHByaXZhdGUga2V5IGZpbGUg cGFzcyBwaHJhc2Ugc291cmNlXG4iKTsKLSAJQklPX3ByaW50ZihiaW9fZXJyLCIgLUNBcGF0aCBh cmcgICAtIFBFTSBmb3JtYXQgZGlyZWN0b3J5IG9mIENBJ3NcbiIpOwotIAlCSU9fcHJpbnRmKGJp b19lcnIsIiAtQ0FmaWxlIGFyZyAgIC0gUEVNIGZvcm1hdCBmaWxlIG9mIENBJ3NcbiIpOwotKwlC SU9fcHJpbnRmKGJpb19lcnIsIiAtdHJ1c3RlZF9maXJzdCAtIFVzZSB0cnVzdGVkIENBJ3MgZmly c3Qgd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW5cbiIpOwotIAlCSU9fcHJpbnRmKGJpb19l cnIsIiAtcmVjb25uZWN0ICAgIC0gRHJvcCBhbmQgcmUtbWFrZSB0aGUgY29ubmVjdGlvbiB3aXRo IHRoZSBzYW1lIFNlc3Npb24tSURcbiIpOwotIAlCSU9fcHJpbnRmKGJpb19lcnIsIiAtcGF1c2Ug ICAgICAgIC0gc2xlZXAoMSkgYWZ0ZXIgZWFjaCByZWFkKDIpIGFuZCB3cml0ZSgyKSBzeXN0ZW0g Y2FsbFxuIik7Ci0gCUJJT19wcmludGYoYmlvX2VyciwiIC1wcmV4aXQgICAgICAgLSBwcmludCBz ZXNzaW9uIGluZm9ybWF0aW9uIGV2ZW4gb24gY29ubmVjdGlvbiBmYWlsdXJlXG4iKTsKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjFrL2FwcHMvc21pbWUuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4w LjFrL2FwcHMvc21pbWUuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2FwcHMvc21pbWUuYy50cnVzdGVk LWZpcnN0CTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0x LjAuMWsvYXBwcy9zbWltZS5jCTIwMTUtMDEtMDkgMTA6MTk6NDUuNDc3Nzc5NDc4ICswMTAwCi1A QCAtNDc5LDYgKzQ3OSw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCUJJ T19wcmludGYgKGJpb19lcnIsICItdGV4dCAgICAgICAgICBpbmNsdWRlIG9yIGRlbGV0ZSB0ZXh0 IE1JTUUgaGVhZGVyc1xuIik7Ci0gCQlCSU9fcHJpbnRmIChiaW9fZXJyLCAiLUNBcGF0aCBkaXIg ICAgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZGlyZWN0b3J5XG4iKTsKLSAJCUJJT19wcmludGYgKGJp b19lcnIsICItQ0FmaWxlIGZpbGUgICB0cnVzdGVkIGNlcnRpZmljYXRlcyBmaWxlXG4iKTsKLSsJ CUJJT19wcmludGYgKGJpb19lcnIsICItdHJ1c3RlZF9maXJzdCB1c2UgdHJ1c3RlZCBjZXJ0aWZp Y2F0ZXMgZmlyc3Qgd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW5cbiIpOwotIAkJQklPX3By aW50ZiAoYmlvX2VyciwgIi1jcmxfY2hlY2sgICAgIGNoZWNrIHJldm9jYXRpb24gc3RhdHVzIG9m IHNpZ25lcidzIGNlcnRpZmljYXRlIHVzaW5nIENSTHNcbiIpOwotIAkJQklPX3ByaW50ZiAoYmlv X2VyciwgIi1jcmxfY2hlY2tfYWxsIGNoZWNrIHJldm9jYXRpb24gc3RhdHVzIG9mIHNpZ25lcidz IGNlcnRpZmljYXRlIGNoYWluIHVzaW5nIENSTHNcbiIpOwotICNpZm5kZWYgT1BFTlNTTF9OT19F TkdJTkUKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2FwcHMvc19zZXJ2ZXIuYy50cnVzdGVkLWZp cnN0IG9wZW5zc2wtMS4wLjFrL2FwcHMvc19zZXJ2ZXIuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2Fw cHMvc19zZXJ2ZXIuYy50cnVzdGVkLWZpcnN0CTIwMTUtMDEtMDkgMTA6MTk6NDUuNDQ1Nzc4NzU1 ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvYXBwcy9zX3NlcnZlci5jCTIwMTUtMDEtMDkgMTA6 MTk6NDUuNDc4Nzc5NTAxICswMTAwCi1AQCAtNTAyLDYgKzUwMiw3IEBAIHN0YXRpYyB2b2lkIHN2 X3VzYWdlKHZvaWQpCi0gCUJJT19wcmludGYoYmlvX2VyciwiIC1zdGF0ZSAgICAgICAgLSBQcmlu dCB0aGUgU1NMIHN0YXRlc1xuIik7Ci0gCUJJT19wcmludGYoYmlvX2VyciwiIC1DQXBhdGggYXJn ICAgLSBQRU0gZm9ybWF0IGRpcmVjdG9yeSBvZiBDQSdzXG4iKTsKLSAJQklPX3ByaW50ZihiaW9f ZXJyLCIgLUNBZmlsZSBhcmcgICAtIFBFTSBmb3JtYXQgZmlsZSBvZiBDQSdzXG4iKTsKLSsJQklP X3ByaW50ZihiaW9fZXJyLCIgLXRydXN0ZWRfZmlyc3QgLSBVc2UgdHJ1c3RlZCBDQSdzIGZpcnN0 IHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluXG4iKTsKLSAJQklPX3ByaW50ZihiaW9fZXJy LCIgLW5vY2VydCAgICAgICAtIERvbid0IHVzZSBhbnkgY2VydGlmaWNhdGVzIChBbm9uLURIKVxu Iik7Ci0gCUJJT19wcmludGYoYmlvX2VyciwiIC1jaXBoZXIgYXJnICAgLSBwbGF5IHdpdGggJ29w ZW5zc2wgY2lwaGVycycgdG8gc2VlIHdoYXQgZ29lcyBoZXJlXG4iKTsKLSAJQklPX3ByaW50Zihi aW9fZXJyLCIgLXNlcnZlcnByZWYgICAtIFVzZSBzZXJ2ZXIncyBjaXBoZXIgcHJlZmVyZW5jZXNc biIpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvYXBwcy9zX3RpbWUuYy50cnVzdGVkLWZpcnN0 IG9wZW5zc2wtMS4wLjFrL2FwcHMvc190aW1lLmMKLS0tLSBvcGVuc3NsLTEuMC4xay9hcHBzL3Nf dGltZS5jLnRydXN0ZWQtZmlyc3QJMjAxNS0wMS0wOSAxMDoxOTo0NS4zOTE3Nzc1MzQgKzAxMDAK LSsrKyBvcGVuc3NsLTEuMC4xay9hcHBzL3NfdGltZS5jCTIwMTUtMDEtMDkgMTA6MTk6NDUuNDc4 Nzc5NTAxICswMTAwCi1AQCAtMTc5LDYgKzE3OSw3IEBAIHN0YXRpYyB2b2lkIHNfdGltZV91c2Fn ZSh2b2lkKQotICAgICAgICAgICAgICAgICBmaWxlIGlmIG5vdCBzcGVjaWZpZWQgYnkgdGhpcyBv cHRpb25cblwKLSAtQ0FwYXRoIGFyZyAgIC0gUEVNIGZvcm1hdCBkaXJlY3Rvcnkgb2YgQ0Enc1xu XAotIC1DQWZpbGUgYXJnICAgLSBQRU0gZm9ybWF0IGZpbGUgb2YgQ0Enc1xuXAotKy10cnVzdGVk X2ZpcnN0IC0gVXNlIHRydXN0ZWQgQ0EncyBmaXJzdCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBj aGFpblxuXAotIC1jaXBoZXIgICAgICAgLSBwcmVmZXJyZWQgY2lwaGVyIHRvIHVzZSwgcGxheSB3 aXRoICdvcGVuc3NsIGNpcGhlcnMnXG5cbiI7Ci0gCi0gCXByaW50ZiggInVzYWdlOiBzX3RpbWUg PGFyZ3M+XG5cbiIgKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2FwcHMvdHMuYy50cnVzdGVk LWZpcnN0IG9wZW5zc2wtMS4wLjFrL2FwcHMvdHMuYwotLS0tIG9wZW5zc2wtMS4wLjFrL2FwcHMv dHMuYy50cnVzdGVkLWZpcnN0CTIwMTUtMDEtMDkgMTA6MTk6NDUuNDM1Nzc4NTI5ICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMWsvYXBwcy90cy5jCTIwMTUtMDEtMDkgMTA6MTk6NDUuNDc4Nzc5NTAx ICswMTAwCi1AQCAtMzgzLDcgKzM4Myw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJn dikKLSAJCSAgICJ0cyAtdmVyaWZ5IFstZGF0YSBmaWxlX3RvX2hhc2hdIFstZGlnZXN0IGRpZ2Vz dF9ieXRlc10gIgotIAkJICAgIlstcXVlcnlmaWxlIHJlcXVlc3QudHNxXSAiCi0gCQkgICAiLWlu IHJlc3BvbnNlLnRzciBbLXRva2VuX2luXSAiCi0tCQkgICAiLUNBcGF0aCBjYV9wYXRoIC1DQWZp bGUgY2FfZmlsZS5wZW0gIgotKwkJICAgIi1DQXBhdGggY2FfcGF0aCAtQ0FmaWxlIGNhX2ZpbGUu cGVtIC10cnVzdGVkX2ZpcnN0IgotIAkJICAgIi11bnRydXN0ZWQgY2VydF9maWxlLnBlbVxuIik7 Ci0gIGNsZWFudXA6Ci0gCS8qIENsZWFuIHVwLiAqLwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsv YXBwcy92ZXJpZnkuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjFrL2FwcHMvdmVyaWZ5LmMK LS0tLSBvcGVuc3NsLTEuMC4xay9hcHBzL3ZlcmlmeS5jLnRydXN0ZWQtZmlyc3QJMjAxNS0wMS0w OCAxNTowMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9hcHBzL3Zlcmlm eS5jCTIwMTUtMDEtMDkgMTA6MTk6NDUuNDc4Nzc5NTAxICswMTAwCi1AQCAtMjM3LDcgKzIzNyw3 IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAKLSBlbmQ6Ci0gCWlmIChyZXQg PT0gMSkgewotLQkJQklPX3ByaW50ZihiaW9fZXJyLCJ1c2FnZTogdmVyaWZ5IFstdmVyYm9zZV0g Wy1DQXBhdGggcGF0aF0gWy1DQWZpbGUgZmlsZV0gWy1wdXJwb3NlIHB1cnBvc2VdIFstY3JsX2No ZWNrXSIpOwotKwkJQklPX3ByaW50ZihiaW9fZXJyLCJ1c2FnZTogdmVyaWZ5IFstdmVyYm9zZV0g Wy1DQXBhdGggcGF0aF0gWy1DQWZpbGUgZmlsZV0gWy10cnVzdGVkX2ZpcnN0XSBbLXB1cnBvc2Ug cHVycG9zZV0gWy1jcmxfY2hlY2tdIik7Ci0gCQlCSU9fcHJpbnRmKGJpb19lcnIsIiBbLWF0dGlt ZSB0aW1lc3RhbXBdIik7Ci0gI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQotIAkJQklPX3ByaW50 ZihiaW9fZXJyLCIgWy1lbmdpbmUgZV0iKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFrL2NyeXB0 by94NTA5L3g1MDlfdmZ5LmMudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4xay9jcnlwdG8veDUw OS94NTA5X3ZmeS5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3g1MDkveDUwOV92ZnkuYy50 cnVzdGVkLWZpcnN0CTIwMTUtMDEtMDkgMTA6MTk6NDUuNDQzNzc4NzEwICswMTAwCi0rKysgb3Bl bnNzbC0xLjAuMWsvY3J5cHRvL3g1MDkveDUwOV92ZnkuYwkyMDE1LTAxLTA5IDEwOjE5OjQ1LjQ3 OTc3OTUyNCArMDEwMAotQEAgLTIwNyw2ICsyMDcsMjEgQEAgaW50IFg1MDlfdmVyaWZ5X2NlcnQo WDUwOV9TVE9SRV9DVFggKmN0eAotIAotIAkJLyogSWYgd2UgYXJlIHNlbGYgc2lnbmVkLCB3ZSBi cmVhayAqLwotIAkJaWYgKGN0eC0+Y2hlY2tfaXNzdWVkKGN0eCwgeCx4KSkgYnJlYWs7Ci0rCQkv KiBJZiBhc2tlZCBzZWUgaWYgd2UgY2FuIGZpbmQgaXNzdWVyIGluIHRydXN0ZWQgc3RvcmUgZmly c3QgKi8KLSsJCWlmIChjdHgtPnBhcmFtLT5mbGFncyAmIFg1MDlfVl9GTEFHX1RSVVNURURfRklS U1QpCi0rCQkJewotKwkJCW9rID0gY3R4LT5nZXRfaXNzdWVyKCZ4dG1wLCBjdHgsIHgpOwotKwkJ CWlmIChvayA8IDApCi0rCQkJCXJldHVybiBvazsKLSsJCQkvKiBJZiBzdWNjZXNzZnVsIGZvciBu b3cgZnJlZSB1cCBjZXJ0IHNvIGl0Ci0rCQkJICogd2lsbCBiZSBwaWNrZWQgdXAgYWdhaW4gbGF0 ZXIuCi0rCQkJICovCi0rCQkJaWYgKG9rID4gMCkKLSsJCQkJewotKwkJCQlYNTA5X2ZyZWUoeHRt cCk7Ci0rCQkJCWJyZWFrOwotKwkJCQl9Ci0rCQkJfQotIAotIAkJLyogSWYgd2Ugd2VyZSBwYXNz ZWQgYSBjZXJ0IGNoYWluLCB1c2UgaXQgZmlyc3QgKi8KLSAJCWlmIChjdHgtPnVudHJ1c3RlZCAh PSBOVUxMKQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3g1MDkveDUwOV92ZnkuaC50 cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjFrL2NyeXB0by94NTA5L3g1MDlfdmZ5LmgKLS0tLSBv cGVuc3NsLTEuMC4xay9jcnlwdG8veDUwOS94NTA5X3ZmeS5oLnRydXN0ZWQtZmlyc3QJMjAxNS0w MS0wOSAxMDoxOTo0NS4yNjY3NzQ3MDYgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9jcnlwdG8v eDUwOS94NTA5X3ZmeS5oCTIwMTUtMDEtMDkgMTA6MTk6NDUuNDc5Nzc5NTI0ICswMTAwCi1AQCAt Mzg5LDYgKzM4OSw4IEBAIHZvaWQgWDUwOV9TVE9SRV9DVFhfc2V0X2RlcHRoKFg1MDlfU1RPUkUK LSAjZGVmaW5lIFg1MDlfVl9GTEFHX1VTRV9ERUxUQVMJCQkweDIwMDAKLSAvKiBDaGVjayBzZWxm c2lnbmVkIENBIHNpZ25hdHVyZSAqLwotICNkZWZpbmUgWDUwOV9WX0ZMQUdfQ0hFQ0tfU1NfU0lH TkFUVVJFCQkweDQwMDAKLSsvKiBVc2UgdHJ1c3RlZCBzdG9yZSBmaXJzdCAqLwotKyNkZWZpbmUg WDUwOV9WX0ZMQUdfVFJVU1RFRF9GSVJTVAkJMHg4MDAwCi0gCi0gCi0gI2RlZmluZSBYNTA5X1ZQ X0ZMQUdfREVGQVVMVAkJCTB4MQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvZG9jL2FwcHMvY21z LnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjFrL2RvYy9hcHBzL2Ntcy5wb2QKLS0tLSBv cGVuc3NsLTEuMC4xay9kb2MvYXBwcy9jbXMucG9kLnRydXN0ZWQtZmlyc3QJMjAxNS0wMS0wOCAx NTowMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4xay9kb2MvYXBwcy9jbXMu cG9kCTIwMTUtMDEtMDkgMTA6MTk6NDUuNDc5Nzc5NTI0ICswMTAwCi1AQCAtMzUsNiArMzUsNyBA QCBCPG9wZW5zc2w+IEI8Y21zPgotIFtCPC1wcmludD5dCi0gW0I8LUNBZmlsZSBmaWxlPl0KLSBb QjwtQ0FwYXRoIGRpcj5dCi0rW0I8LXRydXN0ZWRfZmlyc3Q+XQotIFtCPC1tZCBkaWdlc3Q+XQot IFtCPC1bY2lwaGVyXT5dCi0gW0I8LW5vaW50ZXJuPl0KLUBAIC0yNDMsNiArMjQ0LDEyIEBAIEI8 LXZlcmlmeT4uIFRoaXMgZGlyZWN0b3J5IG11c3QgYmUgYSBzdGEKLSBpcyBhIGhhc2ggb2YgZWFj aCBzdWJqZWN0IG5hbWUgKHVzaW5nIEI8eDUwOSAtaGFzaD4pIHNob3VsZCBiZSBsaW5rZWQKLSB0 byBlYWNoIGNlcnRpZmljYXRlLgotIAotKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+Ci0rCi0rVXNl IGNlcnRpZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBiZWZvcmUgdW50cnVzdGVk IGNlcnRpZmljYXRlcwotK2Zyb20gdGhlIG1lc3NhZ2Ugd2hlbiBidWlsZGluZyB0aGUgdHJ1c3Qg Y2hhaW4gdG8gdmVyaWZ5IGNlcnRpZmljYXRlcy4KLStUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4g ZW52aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCi0rCi0g PWl0ZW0gQjwtbWQgZGlnZXN0PgotIAotIGRpZ2VzdCBhbGdvcml0aG0gdG8gdXNlIHdoZW4gc2ln bmluZyBvciByZXNpZ25pbmcuIElmIG5vdCBwcmVzZW50IHRoZW4gdGhlCi1kaWZmIC11cCBvcGVu c3NsLTEuMC4xay9kb2MvYXBwcy9vY3NwLnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjFr L2RvYy9hcHBzL29jc3AucG9kCi0tLS0gb3BlbnNzbC0xLjAuMWsvZG9jL2FwcHMvb2NzcC5wb2Qu dHJ1c3RlZC1maXJzdAkyMDE1LTAxLTA5IDEwOjE5OjQ1LjQzNjc3ODU1MSArMDEwMAotKysrIG9w ZW5zc2wtMS4wLjFrL2RvYy9hcHBzL29jc3AucG9kCTIwMTUtMDEtMDkgMTA6MTk6NDUuNDc5Nzc5 NTI0ICswMTAwCi1AQCAtMjksNiArMjksNyBAQCBCPG9wZW5zc2w+IEI8b2NzcD4KLSBbQjwtcGF0 aD5dCi0gW0I8LUNBcGF0aCBkaXI+XQotIFtCPC1DQWZpbGUgZmlsZT5dCi0rW0I8LXRydXN0ZWRf Zmlyc3Q+XQotIFtCPC1WQWZpbGUgZmlsZT5dCi0gW0I8LXZhbGlkaXR5X3BlcmlvZCBuPl0KLSBb Qjwtc3RhdHVzX2FnZSBuPl0KLUBAIC0xNDIsNiArMTQzLDEzIEBAIGNvbm5lY3Rpb24gdGltZW91 dCB0byB0aGUgT0NTUCByZXNwb25kZXIKLSBmaWxlIG9yIHBhdGhuYW1lIGNvbnRhaW5pbmcgdHJ1 c3RlZCBDQSBjZXJ0aWZpY2F0ZXMuIFRoZXNlIGFyZSB1c2VkIHRvIHZlcmlmeQotIHRoZSBzaWdu YXR1cmUgb24gdGhlIE9DU1AgcmVzcG9uc2UuCi0gCi0rPWl0ZW0gQjwtdHJ1c3RlZF9maXJzdD4K LSsKLStVc2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3IgQ0EgZGlyZWN0b3J5IG92ZXIgY2Vy dGlmaWNhdGVzIHByb3ZpZGVkCi0raW4gdGhlIHJlc3BvbnNlIG9yIHJlc2lkaW5nIGluIG90aGVy IGNlcnRpZmljYXRlcyBmaWxlIHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0Ci0rY2hhaW4gdG8gdmVy aWZ5IHJlc3BvbmRlciBjZXJ0aWZpY2F0ZS4KLStUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52 aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCi0rCi0gPWl0 ZW0gQjwtdmVyaWZ5X290aGVyIGZpbGU+Ci0gCi0gZmlsZSBjb250YWluaW5nIGFkZGl0aW9uYWwg Y2VydGlmaWNhdGVzIHRvIHNlYXJjaCB3aGVuIGF0dGVtcHRpbmcgdG8gbG9jYXRlCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4xay9kb2MvYXBwcy9zX2NsaWVudC5wb2QudHJ1c3RlZC1maXJzdCBvcGVu c3NsLTEuMC4xay9kb2MvYXBwcy9zX2NsaWVudC5wb2QKLS0tLSBvcGVuc3NsLTEuMC4xay9kb2Mv YXBwcy9zX2NsaWVudC5wb2QudHJ1c3RlZC1maXJzdAkyMDE1LTAxLTA5IDEwOjE5OjQ1LjQ1MTc3 ODg5MCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2RvYy9hcHBzL3NfY2xpZW50LnBvZAkyMDE1 LTAxLTA5IDEwOjE5OjQ1LjQ3OTc3OTUyNCArMDEwMAotQEAgLTE5LDYgKzE5LDcgQEAgQjxvcGVu c3NsPiBCPHNfY2xpZW50PgotIFtCPC1wYXNzIGFyZz5dCi0gW0I8LUNBcGF0aCBkaXJlY3Rvcnk+ XQotIFtCPC1DQWZpbGUgZmlsZW5hbWU+XQotK1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwtcmVj b25uZWN0Pl0KLSBbQjwtcGF1c2U+XQotIFtCPC1zaG93Y2VydHM+XQotQEAgLTEyMSw3ICsxMjIs NyBAQCBhbHNvIHVzZWQgd2hlbiBidWlsZGluZyB0aGUgY2xpZW50IGNlcnRpCi0gQSBmaWxlIGNv bnRhaW5pbmcgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgdG8gdXNlIGR1cmluZyBzZXJ2ZXIgYXV0aGVu dGljYXRpb24KLSBhbmQgdG8gdXNlIHdoZW4gYXR0ZW1wdGluZyB0byBidWlsZCB0aGUgY2xpZW50 IGNlcnRpZmljYXRlIGNoYWluLgotIAotLT1pdGVtIEI8LXB1cnBvc2UsIC1pZ25vcmVfY3JpdGlj YWwsIC1pc3N1ZXJfY2hlY2tzLCAtY3JsX2NoZWNrLCAtY3JsX2NoZWNrX2FsbCwgLXBvbGljeV9j aGVjaywgLWV4dGVuZGVkX2NybCwgLXg1MDlfc3RyaWN0LCAtcG9saWN5IC1jaGVja19zc19zaWc+ Ci0rPWl0ZW0gQjwtcHVycG9zZSwgLWlnbm9yZV9jcml0aWNhbCwgLWlzc3Vlcl9jaGVja3MsIC1j cmxfY2hlY2ssIC1jcmxfY2hlY2tfYWxsLCAtcG9saWN5X2NoZWNrLCAtZXh0ZW5kZWRfY3JsLCAt eDUwOV9zdHJpY3QsIC1wb2xpY3kgLWNoZWNrX3NzX3NpZywgLXRydXN0ZWRfZmlyc3Q+Ci0gCi0g U2V0IHZhcmlvdXMgY2VydGlmaWNhdGUgY2hhaW4gdmFsaWFkaXRpb24gb3B0aW9uLiBTZWUgdGhl Ci0gTDxCPHZlcmlmeT58dmVyaWZ5KDEpPiBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjFrL2RvYy9hcHBzL3NtaW1lLnBvZC50cnVzdGVkLWZpcnN0IG9wZW5z c2wtMS4wLjFrL2RvYy9hcHBzL3NtaW1lLnBvZAotLS0tIG9wZW5zc2wtMS4wLjFrL2RvYy9hcHBz L3NtaW1lLnBvZC50cnVzdGVkLWZpcnN0CTIwMTUtMDEtMDggMTU6MDA6MzYuMDAwMDAwMDAwICsw MTAwCi0rKysgb3BlbnNzbC0xLjAuMWsvZG9jL2FwcHMvc21pbWUucG9kCTIwMTUtMDEtMDkgMTA6 MTk6NDUuNDc5Nzc5NTI0ICswMTAwCi1AQCAtMTUsNiArMTUsOSBAQCBCPG9wZW5zc2w+IEI8c21p bWU+Ci0gW0I8LXBrN291dD5dCi0gW0I8LVtjaXBoZXJdPl0KLSBbQjwtaW4gZmlsZT5dCi0rW0I8 LUNBZmlsZSBmaWxlPl0KLStbQjwtQ0FwYXRoIGRpcj5dCi0rW0I8LXRydXN0ZWRfZmlyc3Q+XQot IFtCPC1jZXJ0ZmlsZSBmaWxlPl0KLSBbQjwtc2lnbmVyIGZpbGU+XQotIFtCPC1yZWNpcCAgZmls ZT5dCi1AQCAtMTQ2LDYgKzE0OSwxMiBAQCBCPC12ZXJpZnk+LiBUaGlzIGRpcmVjdG9yeSBtdXN0 IGJlIGEgc3RhCi0gaXMgYSBoYXNoIG9mIGVhY2ggc3ViamVjdCBuYW1lICh1c2luZyBCPHg1MDkg LWhhc2g+KSBzaG91bGQgYmUgbGlua2VkCi0gdG8gZWFjaCBjZXJ0aWZpY2F0ZS4KLSAKLSs9aXRl bSBCPC10cnVzdGVkX2ZpcnN0PgotKwotK1VzZSBjZXJ0aWZpY2F0ZXMgaW4gQ0EgZmlsZSBvciBD QSBkaXJlY3Rvcnkgb3ZlciBjZXJ0aWZpY2F0ZXMgcHJvdmlkZWQKLStpbiB0aGUgbWVzc2FnZSB3 aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpbiB0byB2ZXJpZnkgYSBjZXJ0aWZpY2F0ZS4KLStU aGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENy b3NzLUNlcnRpZmllZCBDQXMuCi0rCi0gPWl0ZW0gQjwtbWQgZGlnZXN0PgotIAotIGRpZ2VzdCBh bGdvcml0aG0gdG8gdXNlIHdoZW4gc2lnbmluZyBvciByZXNpZ25pbmcuIElmIG5vdCBwcmVzZW50 IHRoZW4gdGhlCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9kb2MvYXBwcy9zX3NlcnZlci5wb2Qu dHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4xay9kb2MvYXBwcy9zX3NlcnZlci5wb2QKLS0tLSBv cGVuc3NsLTEuMC4xay9kb2MvYXBwcy9zX3NlcnZlci5wb2QudHJ1c3RlZC1maXJzdAkyMDE1LTAx LTA5IDEwOjE5OjQ1LjQ1MTc3ODg5MCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2RvYy9hcHBz L3Nfc2VydmVyLnBvZAkyMDE1LTAxLTA5IDEwOjE5OjQ1LjQ3OTc3OTUyNCArMDEwMAotQEAgLTMz LDYgKzMzLDcgQEAgQjxvcGVuc3NsPiBCPHNfc2VydmVyPgotIFtCPC1zdGF0ZT5dCi0gW0I8LUNB cGF0aCBkaXJlY3Rvcnk+XQotIFtCPC1DQWZpbGUgZmlsZW5hbWU+XQotK1tCPC10cnVzdGVkX2Zp cnN0Pl0KLSBbQjwtbm9jZXJ0Pl0KLSBbQjwtY2lwaGVyIGNpcGhlcmxpc3Q+XQotIFtCPC1zZXJ2 ZXJwcmVmPl0KLUBAIC0xNzgsNiArMTc5LDEyIEBAIGFuZCB0byB1c2Ugd2hlbiBhdHRlbXB0aW5n IHRvIGJ1aWxkIHRoZQotIGlzIGFsc28gdXNlZCBpbiB0aGUgbGlzdCBvZiBhY2NlcHRhYmxlIGNs aWVudCBDQXMgcGFzc2VkIHRvIHRoZSBjbGllbnQgd2hlbgotIGEgY2VydGlmaWNhdGUgaXMgcmVx dWVzdGVkLgotIAotKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+Ci0rCi0rVXNlIGNlcnRpZmljYXRl cyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBiZWZvcmUgb3RoZXIgY2VydGlmaWNhdGVzIAot K3doZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluIHRvIHZlcmlmeSBjbGllbnQgY2VydGlmaWNh dGVzLgotK1RoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbiBlbnZpcm9ubWVudHMgd2l0aCBCcmlkZ2Ug Q0Egb3IgQ3Jvc3MtQ2VydGlmaWVkIENBcy4KLSsKLSA9aXRlbSBCPC1zdGF0ZT4KLSAKLSBwcmlu dHMgb3V0IHRoZSBTU0wgc2Vzc2lvbiBzdGF0ZXMuCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9k b2MvYXBwcy9zX3RpbWUucG9kLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMWsvZG9jL2FwcHMv c190aW1lLnBvZAotLS0tIG9wZW5zc2wtMS4wLjFrL2RvYy9hcHBzL3NfdGltZS5wb2QudHJ1c3Rl ZC1maXJzdAkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wt MS4wLjFrL2RvYy9hcHBzL3NfdGltZS5wb2QJMjAxNS0wMS0wOSAxMDoxOTo0NS40ODA3Nzk1NDYg KzAxMDAKLUBAIC0xNCw2ICsxNCw3IEBAIEI8b3BlbnNzbD4gQjxzX3RpbWU+Ci0gW0I8LWtleSBm aWxlbmFtZT5dCi0gW0I8LUNBcGF0aCBkaXJlY3Rvcnk+XQotIFtCPC1DQWZpbGUgZmlsZW5hbWU+ XQotK1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwtcmV1c2U+XQotIFtCPC1uZXc+XQotIFtCPC12 ZXJpZnkgZGVwdGg+XQotQEAgLTc2LDYgKzc3LDEyIEBAIGFsc28gdXNlZCB3aGVuIGJ1aWxkaW5n IHRoZSBjbGllbnQgY2VydGkKLSBBIGZpbGUgY29udGFpbmluZyB0cnVzdGVkIGNlcnRpZmljYXRl cyB0byB1c2UgZHVyaW5nIHNlcnZlciBhdXRoZW50aWNhdGlvbgotIGFuZCB0byB1c2Ugd2hlbiBh dHRlbXB0aW5nIHRvIGJ1aWxkIHRoZSBjbGllbnQgY2VydGlmaWNhdGUgY2hhaW4uCi0gCi0rPWl0 ZW0gQjwtdHJ1c3RlZF9maXJzdD4KLSsKLStVc2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3Ig Q0EgZGlyZWN0b3J5IG92ZXIgdGhlIGNlcnRpZmljYXRlcyBwcm92aWRlZAotK2J5IHRoZSBzZXJ2 ZXIgd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW4gdG8gdmVyaWZ5IHNlcnZlciBjZXJ0aWZp Y2F0ZS4KLStUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1lbnRzIHdpdGggQnJpZGdl IENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCi0rCi0gPWl0ZW0gQjwtbmV3PgotIAotIHBlcmZv cm1zIHRoZSB0aW1pbmcgdGVzdCB1c2luZyBhIG5ldyBzZXNzaW9uIElEIGZvciBlYWNoIGNvbm5l Y3Rpb24uCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xay9kb2MvYXBwcy90cy5wb2QudHJ1c3RlZC1m aXJzdCBvcGVuc3NsLTEuMC4xay9kb2MvYXBwcy90cy5wb2QKLS0tLSBvcGVuc3NsLTEuMC4xay9k b2MvYXBwcy90cy5wb2QudHJ1c3RlZC1maXJzdAkyMDE0LTEwLTE1IDE1OjQ5OjE1LjAwMDAwMDAw MCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFrL2RvYy9hcHBzL3RzLnBvZAkyMDE1LTAxLTA5IDEw OjE5OjQ1LjQ4MDc3OTU0NiArMDEwMAotQEAgLTQ2LDYgKzQ2LDcgQEAgQjwtdmVyaWZ5PgotIFtC PC10b2tlbl9pbj5dCi0gW0I8LUNBcGF0aD4gdHJ1c3RlZF9jZXJ0X3BhdGhdCi0gW0I8LUNBZmls ZT4gdHJ1c3RlZF9jZXJ0cy5wZW1dCi0rW0I8LXRydXN0ZWRfZmlyc3Q+XQotIFtCPC11bnRydXN0 ZWQ+IGNlcnRfZmlsZS5wZW1dCi0gCi0gPWhlYWQxIERFU0NSSVBUSU9OCi1AQCAtMzI0LDYgKzMy NSwxMiBAQCBMPHZlcmlmeSgxKXx2ZXJpZnkoMSk+IGZvciBhZGRpdGlvbmFsIGRlCi0gb3IgQjwt Q0FwYXRoPiBtdXN0IGJlIHNwZWNpZmllZC4KLSAoT3B0aW9uYWwpCi0gCi0rPWl0ZW0gQjwtdHJ1 c3RlZF9maXJzdD4KLSsKLStVc2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3IgQ0EgZGlyZWN0 b3J5IGJlZm9yZSBvdGhlciBjZXJ0aWZpY2F0ZXMKLSt3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBj aGFpbiB0byB2ZXJpZnkgY2VydGlmaWNhdGVzLgotK1RoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbiBl bnZpcm9ubWVudHMgd2l0aCBCcmlkZ2UgQ0Egb3IgQ3Jvc3MtQ2VydGlmaWVkIENBcy4KLSsKLSA9 aXRlbSBCPC11bnRydXN0ZWQ+IGNlcnRfZmlsZS5wZW0KLSAKLSBTZXQgb2YgYWRkaXRpb25hbCB1 bnRydXN0ZWQgY2VydGlmaWNhdGVzIGluIFBFTSBmb3JtYXQgd2hpY2ggbWF5IGJlCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4xay9kb2MvYXBwcy92ZXJpZnkucG9kLnRydXN0ZWQtZmlyc3Qgb3BlbnNz bC0xLjAuMWsvZG9jL2FwcHMvdmVyaWZ5LnBvZAotLS0tIG9wZW5zc2wtMS4wLjFrL2RvYy9hcHBz L3ZlcmlmeS5wb2QudHJ1c3RlZC1maXJzdAkyMDE1LTAxLTA4IDE1OjAwOjM2LjAwMDAwMDAwMCAr MDEwMAotKysrIG9wZW5zc2wtMS4wLjFrL2RvYy9hcHBzL3ZlcmlmeS5wb2QJMjAxNS0wMS0wOSAx MDoxOTo0NS40ODA3Nzk1NDYgKzAxMDAKLUBAIC05LDYgKzksNyBAQCB2ZXJpZnkgLSBVdGlsaXR5 IHRvIHZlcmlmeSBjZXJ0aWZpY2F0ZXMuCi0gQjxvcGVuc3NsPiBCPHZlcmlmeT4KLSBbQjwtQ0Fw YXRoIGRpcmVjdG9yeT5dCi0gW0I8LUNBZmlsZSBmaWxlPl0KLStbQjwtdHJ1c3RlZF9maXJzdD5d Ci0gW0I8LXB1cnBvc2UgcHVycG9zZT5dCi0gW0I8LXBvbGljeSBhcmc+XQotIFtCPC1pZ25vcmVf Y3JpdGljYWw+XQotQEAgLTU2LDYgKzU3LDEyIEBAIGluIFBFTSBmb3JtYXQgY29uY2F0ZW5hdGVk IHRvZ2V0aGVyLgotIEEgZmlsZSBvZiB1bnRydXN0ZWQgY2VydGlmaWNhdGVzLiBUaGUgZmlsZSBz aG91bGQgY29udGFpbiBtdWx0aXBsZSBjZXJ0aWZpY2F0ZXMKLSBpbiBQRU0gZm9ybWF0IGNvbmNh dGVuYXRlZCB0b2dldGhlci4KLSAKLSs9aXRlbSBCPC10cnVzdGVkX2ZpcnN0PgotKwotK1VzZSBj ZXJ0aWZpY2F0ZXMgaW4gQ0EgZmlsZSBvciBDQSBkaXJlY3RvcnkgYmVmb3JlIHRoZSBjZXJ0aWZp Y2F0ZXMgaW4gdGhlIHVudHJ1c3RlZAotK2ZpbGUgd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hh aW4gdG8gdmVyaWZ5IGNlcnRpZmljYXRlcy4KLStUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52 aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCi0rCi0gPWl0 ZW0gQjwtcHVycG9zZSBwdXJwb3NlPgotIAotIFRoZSBpbnRlbmRlZCB1c2UgZm9yIHRoZSBjZXJ0 aWZpY2F0ZS4gSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwKCmRpZmYgLS1naXQgYS9v cGVuc3NsLTEuMC4yYS1hcHBzLWRnc3QucGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS1hcHBzLWRnc3Qu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJiODMyNwotLS0gL2Rl di9udWxsCisrKyBiL29wZW5zc2wtMS4wLjJhLWFwcHMtZGdzdC5wYXRjaApAQCAtMCwwICsxLDEx MCBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBwcy9jYS5jLmRnc3Qgb3BlbnNzbC0xLjAu MmEvYXBwcy9jYS5jCistLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9jYS5jLmRnc3QJMjAxNS0wMy0x OSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL2NhLmMJ MjAxNS0wNC0yMSAxNzowMTozOC44NDE1NTE2MTYgKzAyMDAKK0BAIC0xNTcsNyArMTU3LDcgQEAg c3RhdGljIGNvbnN0IGNoYXIgKmNhX3VzYWdlW10gPSB7CisgICAgICIgLXN0YXJ0ZGF0ZSBZWU1N RERISE1NU1NaICAtIGNlcnRpZmljYXRlIHZhbGlkaXR5IG5vdEJlZm9yZVxuIiwKKyAgICAgIiAt ZW5kZGF0ZSBZWU1NRERISE1NU1NaICAgIC0gY2VydGlmaWNhdGUgdmFsaWRpdHkgbm90QWZ0ZXIg KG92ZXJyaWRlcyAtZGF5cylcbiIsCisgICAgICIgLWRheXMgYXJnICAgICAgIC0gbnVtYmVyIG9m IGRheXMgdG8gY2VydGlmeSB0aGUgY2VydGlmaWNhdGUgZm9yXG4iLAorLSAgICAiIC1tZCBhcmcg ICAgICAgICAtIG1kIHRvIHVzZSwgb25lIG9mIG1kMiwgbWQ1LCBzaGEgb3Igc2hhMVxuIiwKKysg ICAgIiAtbWQgYXJnICAgICAgICAgLSBtZCB0byB1c2UsIHNlZSBvcGVuc3NsIGRnc3QgLWggZm9y IGxpc3RcbiIsCisgICAgICIgLXBvbGljeSBhcmcgICAgIC0gVGhlIENBICdwb2xpY3knIHRvIHN1 cHBvcnRcbiIsCisgICAgICIgLWtleWZpbGUgYXJnICAgIC0gcHJpdmF0ZSBrZXkgZmlsZVxuIiwK KyAgICAgIiAta2V5Zm9ybSBhcmcgICAgLSBwcml2YXRlIGtleSBmaWxlIGZvcm1hdCAoUEVNIG9y IEVOR0lORSlcbiIsCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL2VuYy5jLmRnc3Qgb3Bl bnNzbC0xLjAuMmEvYXBwcy9lbmMuYworLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvZW5jLmMuZGdz dAkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJh L2FwcHMvZW5jLmMJMjAxNS0wNC0yMSAxNzowMTozOC44NDE1NTE2MTYgKzAyMDAKK0BAIC0yOTQs NyArMjk0LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAg ICAgICAgICAgICAgIiUtMTRzIHRoZSBuZXh0IGFyZ3VtZW50IGlzIHRoZSBtZCB0byB1c2UgdG8g Y3JlYXRlIGEga2V5XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIi1tZCIpOworICAgICAg ICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKKy0gICAgICAgICAgICAgICAgICAgICAgICIlLTE0 cyAgIGZyb20gYSBwYXNzcGhyYXNlLiAgT25lIG9mIG1kMiwgbWQ1LCBzaGEgb3Igc2hhMVxuIiwK KysgICAgICAgICAgICAgICAgICAgICAgICIlLTE0cyAgIGZyb20gYSBwYXNzcGhyYXNlLiBTZWUg b3BlbnNzbCBkZ3N0IC1oIGZvciBsaXN0LlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIi KTsKKyAgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICIlLTE0cyBzYWx0IGluIGhleCBp cyB0aGUgbmV4dCBhcmd1bWVudFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICItUyIpOwor ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBwcy9yZXEuYy5kZ3N0IG9wZW5zc2wtMS4wLjJhL2Fw cHMvcmVxLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3JlcS5jLmRnc3QJMjAxNS0wMy0xOSAx NDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3JlcS5jCTIw MTUtMDQtMjEgMTc6MDE6MzguODQyNTUxNjQwICswMjAwCitAQCAtNDE0LDcgKzQxNCw3IEBAIGlu dCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICAgICAgICAgIiAtbmV3 a2V5IGVjOmZpbGUgZ2VuZXJhdGUgYSBuZXcgRUMga2V5LCBwYXJhbWV0ZXJzIHRha2VuIGZyb20g Q0EgaW4gJ2ZpbGUnXG4iKTsKKyAjZW5kaWYKKyAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwK Ky0gICAgICAgICAgICAgICAgICAgIiAtW2RpZ2VzdF0gICAgICBEaWdlc3QgdG8gc2lnbiB3aXRo IChtZDUsIHNoYTEsIG1kMiwgbWRjMiwgbWQ0KVxuIik7CisrICAgICAgICAgICAgICAgICAgICIg LVtkaWdlc3RdICAgICAgRGlnZXN0IHRvIHNpZ24gd2l0aCAoc2VlIG9wZW5zc2wgZGdzdCAtaCBm b3IgbGlzdClcbiIpOworICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiIC1jb25maWcgZmls ZSAgIHJlcXVlc3QgdGVtcGxhdGUgZmlsZS5cbiIpOworICAgICAgICAgQklPX3ByaW50ZihiaW9f ZXJyLAorICAgICAgICAgICAgICAgICAgICAiIC1zdWJqIGFyZyAgICAgIHNldCBvciBtb2RpZnkg cmVxdWVzdCBzdWJqZWN0XG4iKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvdHMuYy5k Z3N0IG9wZW5zc2wtMS4wLjJhL2FwcHMvdHMuYworLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvdHMu Yy5kZ3N0CTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0x LjAuMmEvYXBwcy90cy5jCTIwMTUtMDQtMjEgMTc6MDE6MzguODQyNTUxNjQwICswMjAwCitAQCAt MzM3LDcgKzMzNyw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgQklP X3ByaW50ZihiaW9fZXJyLCAidXNhZ2U6XG4iCisgICAgICAgICAgICAgICAgInRzIC1xdWVyeSBb LXJhbmQgZmlsZSVjZmlsZSVjLi4uXSBbLWNvbmZpZyBjb25maWdmaWxlXSAiCisgICAgICAgICAg ICAgICAgIlstZGF0YSBmaWxlX3RvX2hhc2hdIFstZGlnZXN0IGRpZ2VzdF9ieXRlc10iCistICAg ICAgICAgICAgICAgIlstbWQyfC1tZDR8LW1kNXwtc2hhfC1zaGExfC1tZGMyfC1yaXBlbWQxNjBd ICIKKysgICAgICAgICAgICAgICAiWy08aGFzaGFsZz5dICIKKyAgICAgICAgICAgICAgICAiWy1w b2xpY3kgb2JqZWN0X2lkXSBbLW5vX25vbmNlXSBbLWNlcnRdICIKKyAgICAgICAgICAgICAgICAi Wy1pbiByZXF1ZXN0LnRzcV0gWy1vdXQgcmVxdWVzdC50c3FdIFstdGV4dF1cbiIsCisgICAgICAg ICAgICAgICAgTElTVF9TRVBBUkFUT1JfQ0hBUiwgTElTVF9TRVBBUkFUT1JfQ0hBUik7CitkaWZm IC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3g1MDkuYy5kZ3N0IG9wZW5zc2wtMS4wLjJhL2FwcHMv eDUwOS5jCistLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy94NTA5LmMuZGdzdAkyMDE1LTAzLTE5IDE0 OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMveDUwOS5jCTIw MTUtMDQtMjEgMTc6MDE6MzguODQyNTUxNjQwICswMjAwCitAQCAtMTQxLDcgKzE0MSw3IEBAIHN0 YXRpYyBjb25zdCBjaGFyICp4NTA5X3VzYWdlW10gPSB7CisgICAgICIgLXNldF9zZXJpYWwgICAg IC0gc2VyaWFsIG51bWJlciB0byB1c2VcbiIsCisgICAgICIgLXRleHQgICAgICAgICAgIC0gcHJp bnQgdGhlIGNlcnRpZmljYXRlIGluIHRleHQgZm9ybVxuIiwKKyAgICAgIiAtQyAgICAgICAgICAg ICAgLSBwcmludCBvdXQgQyBjb2RlIGZvcm1zXG4iLAorLSAgICAiIC1tZDIvLW1kNS8tc2hhMS8t bWRjMiAtIGRpZ2VzdCB0byB1c2VcbiIsCisrICAgICIgLTxkZ3N0PiAgICAgICAgIC0gZGlnZXN0 IHRvIHVzZSwgc2VlIG9wZW5zc2wgZGdzdCAtaCBvdXRwdXQgZm9yIGxpc3RcbiIsCisgICAgICIg LWV4dGZpbGUgICAgICAgIC0gY29uZmlndXJhdGlvbiBmaWxlIHdpdGggWDUwOVYzIGV4dGVuc2lv bnMgdG8gYWRkXG4iLAorICAgICAiIC1leHRlbnNpb25zICAgICAtIHNlY3Rpb24gZnJvbSBjb25m aWcgZmlsZSB3aXRoIFg1MDlWMyBleHRlbnNpb25zIHRvIGFkZFxuIiwKKyAgICAgIiAtY2xyZXh0 ICAgICAgICAgLSBkZWxldGUgZXh0ZW5zaW9ucyBiZWZvcmUgc2lnbmluZyBhbmQgaW5wdXQgY2Vy dGlmaWNhdGVcbiIsCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9jYS5wb2QuZGdz dCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9jYS5wb2QKKy0tLSBvcGVuc3NsLTEuMC4yYS9kb2Mv YXBwcy9jYS5wb2QuZGdzdAkyMDE1LTAxLTIwIDEzOjMzOjM2LjAwMDAwMDAwMCArMDEwMAorKysr IG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL2NhLnBvZAkyMDE1LTA0LTIxIDE3OjAxOjM4Ljg0MjU1 MTY0MCArMDIwMAorQEAgLTE2OCw3ICsxNjgsOCBAQCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gY2Vy dGlmeSB0aGUgY2VydGlmCisgPWl0ZW0gQjwtbWQgYWxnPgorIAorIHRoZSBtZXNzYWdlIGRpZ2Vz dCB0byB1c2UuIFBvc3NpYmxlIHZhbHVlcyBpbmNsdWRlIG1kNSwgc2hhMSBhbmQgbWRjMi4KKy1U aGlzIG9wdGlvbiBhbHNvIGFwcGxpZXMgdG8gQ1JMcy4KKytGb3IgZnVsbCBsaXN0IG9mIGRpZ2Vz dHMgc2VlIG9wZW5zc2wgZGdzdCAtaCBvdXRwdXQuIFRoaXMgb3B0aW9uIGFsc28KKythcHBsaWVz IHRvIENSTHMuCisgCisgPWl0ZW0gQjwtcG9saWN5IGFyZz4KKyAKK2RpZmYgLXVwIG9wZW5zc2wt MS4wLjJhL2RvYy9hcHBzL29jc3AucG9kLmRnc3Qgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvb2Nz cC5wb2QKKy0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9vY3NwLnBvZC5kZ3N0CTIwMTUtMDMt MTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMv b2NzcC5wb2QJMjAxNS0wNC0yMSAxNzowMTozOC44NDI1NTE2NDAgKzAyMDAKK0BAIC0yMTksNyAr MjE5LDggQEAgY2hlY2sgaXMgbm90IHBlcmZvcm1lZC4KKyA9aXRlbSBCPC1tZDV8LXNoYTF8LXNo YTI1NnwtcmlwZW1vZDE2MHwuLi4+CisgCisgdGhpcyBvcHRpb24gc2V0cyBkaWdlc3QgYWxnb3Jp dGhtIHRvIHVzZSBmb3IgY2VydGlmaWNhdGUgaWRlbnRpZmljYXRpb24KKy1pbiB0aGUgT0NTUCBy ZXF1ZXN0LiBCeSBkZWZhdWx0IFNIQS0xIGlzIHVzZWQuIAorK2luIHRoZSBPQ1NQIHJlcXVlc3Qu IEJ5IGRlZmF1bHQgU0hBLTEgaXMgdXNlZC4gU2VlIG9wZW5zc2wgZGdzdCAtaCBvdXRwdXQgZm9y CisrdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGFsZ29yaXRobXMuCisgCisgPWJhY2sKKyAKK2RpZmYg LXVwIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3JlcS5wb2QuZGdzdCBvcGVuc3NsLTEuMC4yYS9k b2MvYXBwcy9yZXEucG9kCistLS0gb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvcmVxLnBvZC5kZ3N0 CTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEv ZG9jL2FwcHMvcmVxLnBvZAkyMDE1LTA0LTIxIDE3OjAxOjM4Ljg0MzU1MTY2NCArMDIwMAorQEAg LTIwMSw3ICsyMDEsOCBAQCB3aWxsIG5vdCBiZSBlbmNyeXB0ZWQuCisgCisgdGhpcyBzcGVjaWZp ZXMgdGhlIG1lc3NhZ2UgZGlnZXN0IHRvIHNpZ24gdGhlIHJlcXVlc3Qgd2l0aCAoc3VjaCBhcwor IEI8LW1kNT4sIEI8LXNoYTE+KS4gVGhpcyBvdmVycmlkZXMgdGhlIGRpZ2VzdCBhbGdvcml0aG0g c3BlY2lmaWVkIGluCistdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyt0aGUgY29uZmlndXJhdGlv biBmaWxlLiBGb3IgZnVsbCBsaXN0IG9mIHBvc3NpYmxlIGRpZ2VzdHMgc2VlIG9wZW5zc2wKKytk Z3N0IC1oIG91dHB1dC4KKyAKKyBTb21lIHB1YmxpYyBrZXkgYWxnb3JpdGhtcyBtYXkgb3ZlcnJp ZGUgdGhpcyBjaG9pY2UuIEZvciBpbnN0YW5jZSwgRFNBCisgc2lnbmF0dXJlcyBhbHdheXMgdXNl IFNIQTEsIEdPU1QgUiAzNC4xMCBzaWduYXR1cmVzIGFsd2F5cyB1c2UKK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJhL2RvYy9hcHBzL3g1MDkucG9kLmRnc3Qgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMv eDUwOS5wb2QKKy0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy94NTA5LnBvZC5kZ3N0CTIwMTUt MDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvZG9jL2Fw cHMveDUwOS5wb2QJMjAxNS0wNC0yMSAxNzowMTozOC44NDM1NTE2NjQgKzAyMDAKK0BAIC0xMDcs NiArMTA3LDcgQEAgdGhlIGRpZ2VzdCB0byB1c2UuIFRoaXMgYWZmZWN0cyBhbnkgc2lnbgorIGRp Z2VzdCwgc3VjaCBhcyB0aGUgQjwtZmluZ2VycHJpbnQ+LCBCPC1zaWdua2V5PiBhbmQgQjwtQ0E+ IG9wdGlvbnMuIElmIG5vdAorIHNwZWNpZmllZCB0aGVuIFNIQTEgaXMgdXNlZC4gSWYgdGhlIGtl eSBiZWluZyB1c2VkIHRvIHNpZ24gd2l0aCBpcyBhIERTQSBrZXkKKyB0aGVuIHRoaXMgb3B0aW9u IGhhcyBubyBlZmZlY3Q6IFNIQTEgaXMgYWx3YXlzIHVzZWQgd2l0aCBEU0Ega2V5cy4KKytGb3Ig ZnVsbCBsaXN0IG9mIGRpZ2VzdHMgc2VlIG9wZW5zc2wgZGdzdCAtaCBvdXRwdXQuCisgCisgPWl0 ZW0gQjwtZW5naW5lIGlkPgorIAoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLWNjLXJlcXMu cGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS1jYy1yZXFzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmYyNjhkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4y YS1jYy1yZXFzLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9yc2EvcnNhX2dlbi5jLmNjLXJlcXMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9y c2FfZ2VuLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9nZW4uYy5jYy1yZXFz CTIwMTUtMDQtMDkgMTg6MjI6NTguNjM4NDQ4NDMyICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL3JzYS9yc2FfZ2VuLmMJMjAxNS0wNC0wOSAxODoyMjo1Ny4yNjQ0MTY2OTIgKzAyMDAK K0BAIC00NzQsNiArNDc0LDEyIEBAIHN0YXRpYyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAq cnNhLAorICAgICBpZiAoIXJzYS0+aXFtcCAmJiAoKHJzYS0+aXFtcCA9IEJOX25ldygpKSA9PSBO VUxMKSkKKyAgICAgICAgIGdvdG8gZXJyOworIAorKyAgICAvKiBwcmVwYXJlIG1pbmltdW0gcCBh bmQgcSBkaWZmZXJlbmNlICovCisrICAgIGlmICghQk5fb25lKHIzKSkKKysgICAgICAgIGdvdG8g ZXJyOworKyAgICBpZiAoYml0c3AgPiAxMDAgJiYgIUJOX2xzaGlmdChyMywgcjMsIGJpdHNwIC0g MTAwKSkKKysgICAgICAgIGdvdG8gZXJyOworKworICAgICBCTl9jb3B5KHJzYS0+ZSwgZV92YWx1 ZSk7CisgCisgICAgIC8qIGdlbmVyYXRlIHAgYW5kIHEgKi8KK0BAIC01MDEsNyArNTA3LDkgQEAg c3RhdGljIGludCByc2FfYnVpbHRpbl9rZXlnZW4oUlNBICpyc2EsCisgICAgICAgICBkbyB7Cisg ICAgICAgICAgICAgaWYgKCFCTl9nZW5lcmF0ZV9wcmltZV9leChyc2EtPnEsIGJpdHNxLCAwLCBO VUxMLCBOVUxMLCBjYikpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworLSAgICAgICAgfSB3 aGlsZSAoKEJOX2NtcChyc2EtPnAsIHJzYS0+cSkgPT0gMCkgJiYgKCsrZGVnZW5lcmF0ZSA8IDMp KTsKKysgICAgICAgICAgICBpZiAoIUJOX3N1YihyMiwgcnNhLT5xLCByc2EtPnApKQorKyAgICAg ICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0gd2hpbGUgKChCTl91Y21wKHIyLCByMykg PD0gMCkgJiYgKCsrZGVnZW5lcmF0ZSA8IDMpKTsKKyAgICAgICAgIGlmIChkZWdlbmVyYXRlID09 IDMpIHsKKyAgICAgICAgICAgICBvayA9IDA7ICAgICAgICAgICAgIC8qIHdlIHNldCBvdXIgb3du IGVyciAqLworICAgICAgICAgICAgIFJTQWVycihSU0FfRl9SU0FfQlVJTFRJTl9LRVlHRU4sIFJT QV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtY2hp bC1maXhlcy5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWNoaWwtZml4ZXMucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJkMjQyOQotLS0gL2Rldi9udWxsCisrKyBiL29w ZW5zc2wtMS4wLjJhLWNoaWwtZml4ZXMucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmEvZW5naW5lcy9lX2NoaWwuYy5jaGlsIG9wZW5zc2wtMS4wLjJhL2VuZ2lu ZXMvZV9jaGlsLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9lbmdpbmVzL2VfY2hpbC5jLmNoaWwJMjAx NS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9lbmdp bmVzL2VfY2hpbC5jCTIwMTUtMDQtMjEgMTc6MDY6MjUuNDgwMjkzNDQzICswMjAwCitAQCAtMTI0 Nyw2ICsxMjQ3LDExIEBAIHN0YXRpYyBpbnQgaHdjcmhrX2luc2VydF9jYXJkKGNvbnN0IGNoYXIK KyAgICAgVUkgKnVpOworICAgICB2b2lkICpjYWxsYmFja19kYXRhID0gTlVMTDsKKyAgICAgVUlf TUVUSE9EICp1aV9tZXRob2QgPSBOVUxMOworKyAgICAvKiBEZXNwaXRlIHdoYXQgdGhlIGRvY3Vt ZW50YXRpb24gc2F5cyBwcm9tcHRfaW5mbyBjYW4gYmUKKysgICAgICogYW4gZW1wdHkgc3RyaW5n LgorKyAgICAgKi8KKysgICAgaWYgKHByb21wdF9pbmZvICYmICEqcHJvbXB0X2luZm8pCisrICAg ICAgICBwcm9tcHRfaW5mbyA9IE5VTEw7CisgCisgICAgIGlmIChjYWN0eCkgeworICAgICAgICAg aWYgKGNhY3R4LT51aV9tZXRob2QpCitAQCAtMTI2OCw3ICsxMjczLDcgQEAgc3RhdGljIGludCBo d2NyaGtfaW5zZXJ0X2NhcmQoY29uc3QgY2hhcgorICAgICB1aSA9IFVJX25ld19tZXRob2QodWlf bWV0aG9kKTsKKyAKKyAgICAgaWYgKHVpKSB7CistICAgICAgICBjaGFyIGFuc3dlcjsKKysgICAg ICAgIGNoYXIgYW5zd2VyID0gJ1wwJzsKKyAgICAgICAgIGNoYXIgYnVmW0JVRlNJWl07CisgICAg ICAgICAvKgorICAgICAgICAgICogRGVzcGl0ZSB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMg d3JvbmdfaW5mbyBjYW4gYmUgYW4gZW1wdHkKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1j b21wYXQtc3ltYm9scy5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWNvbXBhdC1zeW1ib2xzLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMDk5M2UKLS0tIC9kZXYvbnVs bAorKysgYi9vcGVuc3NsLTEuMC4yYS1jb21wYXQtc3ltYm9scy5wYXRjaApAQCAtMCwwICsxLDQ2 IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9rZXkuYy5jb21wYXQg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2Ffa2V5LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZHNhL2RzYV9rZXkuYy5jb21wYXQJMjAxNS0wNC0wOSAxODoyMToxMS42ODc5Nzc4NTgg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9rZXkuYwkyMDE1LTA0LTA5 IDE4OjIxOjA3Ljg2OTg4OTY1OSArMDIwMAorQEAgLTY4LDYgKzY4LDExIEBACisgIyAgaW5jbHVk ZSA8b3BlbnNzbC9maXBzLmg+CisgIyAgaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKyAKKysvKiBq dXN0IGEgY29tcGF0aWJpbGl0eSBzeW1ib2wgLSBuby1vcCAqLworK3ZvaWQgRklQU19jb3JydXB0 X2RzYV9rZXlnZW4odm9pZCkKKyt7CisrfQorKworIHN0YXRpYyBpbnQgZmlwc19jaGVja19kc2Eo RFNBICpkc2EpCisgeworICAgICBFVlBfUEtFWSAqcGs7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYy5jb21wYXQgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Vu Z2luZS9lbmdfYWxsLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZW5naW5lL2VuZ19hbGwu Yy5jb21wYXQJMjAxNS0wNC0wOSAxODoyMToxMS42ODg5Nzc4ODEgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYwkyMDE1LTA0LTA5IDE4OjIxOjA5LjE1OTkx OTQ1OSArMDIwMAorQEAgLTYzLDYgKzYzLDExIEBACisgIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMu aD4KKyAjZW5kaWYKKyAKKysvKiBqdXN0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHN5bWJvbCAt IG5vLW9wICovCisrdm9pZCBFTkdJTkVfbG9hZF9hZXNuaSh2b2lkKQorK3sKKyt9CisrCisgdm9p ZCBFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXModm9pZCkKKyB7CisgICAgIC8qIFNvbWUgRU5H SU5FcyBuZWVkIHRoaXMgKi8KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2Zp cHMuYy5jb21wYXQgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5jCistLS0gb3BlbnNz bC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5jLmNvbXBhdAkyMDE1LTA0LTA5IDE4OjIxOjExLjY4 OTk3NzkwNCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuYwkyMDE1 LTA0LTA5IDE4OjIxOjA5LjkyNTkzNzE1NCArMDIwMAorQEAgLTExMyw2ICsxMTMsMTIgQEAgaW50 IEZJUFNfbW9kdWxlX21vZGUodm9pZCkKKyAgICAgcmV0dXJuIHJldDsKKyB9CisgCisrLyoganVz dCBhIGNvbXBhdCBzeW1ib2wgLSByZXR1cm4gTlVMTCAqLworK2NvbnN0IHZvaWQgKkZJUFNfcmFu ZF9jaGVjayh2b2lkKQorK3sKKysgICAgcmV0dXJuIE5VTEw7CisrfQorKworIGludCBGSVBTX3Nl bGZ0ZXN0X2ZhaWxlZCh2b2lkKQorIHsKKyAgICAgaW50IHJldCA9IDA7CgpkaWZmIC0tZ2l0IGEv b3BlbnNzbC0xLjAuMmEtZGVmYXVsdC1wYXRocy5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWRlZmF1 bHQtcGF0aHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUwMmM2 ZAotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjJhLWRlZmF1bHQtcGF0aHMucGF0Y2gK QEAgLTAsMCArMSw5NCBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5j LmRlZmF1bHQtcGF0aHMgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5jCistLS0gb3BlbnNz bC0xLjAuMmEvYXBwcy9zX2NsaWVudC5jLmRlZmF1bHQtcGF0aHMJMjAxNS0wNC0yMCAxNDo0ODoz MS40NjIxNjY5NzEgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfY2xpZW50LmMJMjAx NS0wNC0yMCAxNDo1Mjo1NS4xMjUzMTYxNzAgKzAyMDAKK0BAIC0xMzM2LDE5ICsxMzM2LDE2IEBA IGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAKKyAgICAgU1NMX0NUWF9zZXRfdmVy aWZ5KGN0eCwgdmVyaWZ5LCB2ZXJpZnlfY2FsbGJhY2spOworIAorLSAgICBpZiAoKCFTU0xfQ1RY X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgsIENBZmlsZSwgQ0FwYXRoKSkgfHwKKy0gICAgICAg ICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkpIHsKKy0gICAgICAgIC8q CistICAgICAgICAgKiBCSU9fcHJpbnRmKGJpb19lcnIsImVycm9yIHNldHRpbmcgZGVmYXVsdCB2 ZXJpZnkgbG9jYXRpb25zXG4iKTsKKy0gICAgICAgICAqLworLSAgICAgICAgRVJSX3ByaW50X2Vy cm9ycyhiaW9fZXJyKTsKKy0gICAgICAgIC8qIGdvdG8gZW5kOyAqLworKyAgICBpZiAoQ0FmaWxl ID09IE5VTEwgJiYgQ0FwYXRoID09IE5VTEwpIHsKKysgICAgICAgIGlmICghU1NMX0NUWF9zZXRf ZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkgeworKyAgICAgICAgICAgIEVSUl9wcmludF9lcnJv cnMoYmlvX2Vycik7CisrICAgICAgICB9CisrICAgIH0gZWxzZSB7CisrICAgICAgICBpZiAoIVNT TF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKGN0eCwgQ0FmaWxlLCBDQXBhdGgpKSB7CisrICAg ICAgICAgICAgRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKysgICAgICAgIH0KKyAgICAgfQor IAorLSAgICBzc2xfY3R4X2FkZF9jcmxzKGN0eCwgY3JscywgY3JsX2Rvd25sb2FkKTsKKy0gICAg aWYgKCFzZXRfY2VydF9rZXlfc3R1ZmYoY3R4LCBjZXJ0LCBrZXksIGNoYWluLCBidWlsZF9jaGFp bikpCistICAgICAgICBnb3RvIGVuZDsKKy0KKyAjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisg ICAgIGlmIChzZXJ2ZXJuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgIHRsc2V4dGNicC5iaW9kZWJ1 ZyA9IGJpb19lcnI7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nfc2VydmVyLmMuZGVm YXVsdC1wYXRocyBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nfc2VydmVyLmMKKy0tLSBvcGVuc3NsLTEu MC4yYS9hcHBzL3Nfc2VydmVyLmMuZGVmYXVsdC1wYXRocwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAw MDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zZXJ2ZXIuYwkyMDE1LTA0 LTIwIDE0OjQ4OjMxLjQ2MjE2Njk3MSArMDIwMAorQEAgLTE3NjgsMTIgKzE3NjgsMTYgQEAgaW50 IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgICAgfQorICNlbmRpZgorIAorLSAgICBp ZiAoKCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgsIENBZmlsZSwgQ0FwYXRoKSkg fHwKKy0gICAgICAgICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkpIHsK Ky0gICAgICAgIC8qIEJJT19wcmludGYoYmlvX2VyciwiWDUwOV9sb2FkX3ZlcmlmeV9sb2NhdGlv bnNcbiIpOyAqLworLSAgICAgICAgRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKy0gICAgICAg IC8qIGdvdG8gZW5kOyAqLworKyAgICBpZiAoQ0FmaWxlID09IE5VTEwgJiYgQ0FwYXRoID09IE5V TEwpIHsKKysgICAgICAgIGlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4 KSkgeworKyAgICAgICAgICAgIEVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7CisrICAgICAgICB9 CisrICAgIH0gZWxzZSB7CisrICAgICAgICBpZiAoIVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRp b25zKGN0eCwgQ0FmaWxlLCBDQXBhdGgpKSB7CisrICAgICAgICAgICAgRVJSX3ByaW50X2Vycm9y cyhiaW9fZXJyKTsKKysgICAgICAgIH0KKyAgICAgfQorKworICAgICBpZiAodnBtKQorICAgICAg ICAgU1NMX0NUWF9zZXQxX3BhcmFtKGN0eCwgdnBtKTsKKyAKK0BAIC0xODMwLDggKzE4MzQsMTAg QEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgICAgICAgIGVsc2UKKyAgICAg ICAgICAgICBTU0xfQ1RYX3Nlc3Nfc2V0X2NhY2hlX3NpemUoY3R4MiwgMTI4KTsKKyAKKy0gICAg ICAgIGlmICgoIVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKGN0eDIsIENBZmlsZSwgQ0Fw YXRoKSkgfHwKKy0gICAgICAgICAgICAoIVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhz KGN0eDIpKSkgeworKyAgICAgICAgaWYgKCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhj dHgyLCBDQWZpbGUsIENBcGF0aCkpIHsKKysgICAgICAgICAgICBFUlJfcHJpbnRfZXJyb3JzKGJp b19lcnIpOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFTU0xfQ1RYX3NldF9kZWZhdWx0X3Zl cmlmeV9wYXRocyhjdHgyKSkgeworICAgICAgICAgICAgIEVSUl9wcmludF9lcnJvcnMoYmlvX2Vy cik7CisgICAgICAgICB9CisgICAgICAgICBpZiAodnBtKQorZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmEvYXBwcy9zX3RpbWUuYy5kZWZhdWx0LXBhdGhzIG9wZW5zc2wtMS4wLjJhL2FwcHMvc190aW1l LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfdGltZS5jLmRlZmF1bHQtcGF0aHMJMjAxNS0w NC0yMCAxNDo0ODozMS40NjIxNjY5NzEgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nf dGltZS5jCTIwMTUtMDQtMjAgMTQ6NTU6MTQuMjMyNTQyNzM4ICswMjAwCitAQCAtMzgxLDEzICsz ODEsMTQgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAorICAgICBTU0xfbG9h ZF9lcnJvcl9zdHJpbmdzKCk7CisgCistICAgIGlmICgoIVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9j YXRpb25zKHRtX2N0eCwgQ0FmaWxlLCBDQXBhdGgpKSB8fAorLSAgICAgICAgKCFTU0xfQ1RYX3Nl dF9kZWZhdWx0X3ZlcmlmeV9wYXRocyh0bV9jdHgpKSkgeworLSAgICAgICAgLyoKKy0gICAgICAg ICAqIEJJT19wcmludGYoYmlvX2VyciwiZXJyb3Igc2V0dGluZyBkZWZhdWx0IHZlcmlmeSBsb2Nh dGlvbnNcbiIpOworLSAgICAgICAgICovCistICAgICAgICBFUlJfcHJpbnRfZXJyb3JzKGJpb19l cnIpOworLSAgICAgICAgLyogZ290byBlbmQ7ICovCisrICAgIGlmIChDQWZpbGUgPT0gTlVMTCAm JiBDQXBhdGggPT0gTlVMTCkgeworKyAgICAgICAgaWYgKCFTU0xfQ1RYX3NldF9kZWZhdWx0X3Zl cmlmeV9wYXRocyh0bV9jdHgpKSB7CisrICAgICAgICAgICAgRVJSX3ByaW50X2Vycm9ycyhiaW9f ZXJyKTsKKysgICAgICAgIH0KKysgICAgfSBlbHNlIHsKKysgICAgICAgIGlmICghU1NMX0NUWF9s b2FkX3ZlcmlmeV9sb2NhdGlvbnModG1fY3R4LCBDQWZpbGUsIENBcGF0aCkpIHsKKysgICAgICAg ICAgICBFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOworKyAgICAgICAgfQorICAgICB9CisgCisg ICAgIGlmICh0bV9jaXBoZXIgPT0gTlVMTCkKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1k ZWZhdWx0cy5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWRlZmF1bHRzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNWE5YjAKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVu c3NsLTEuMC4yYS1kZWZhdWx0cy5wYXRjaApAQCAtMCwwICsxLDYwIEBACitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9hcHBzL29wZW5zc2wuY25mLmRlZmF1bHRzIG9wZW5zc2wtMS4wLjJhL2FwcHMv b3BlbnNzbC5jbmYKKy0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL29wZW5zc2wuY25mLmRlZmF1bHRz CTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEv YXBwcy9vcGVuc3NsLmNuZgkyMDE1LTA0LTIwIDE0OjM3OjEwLjExMjI3MTg1MCArMDIwMAorQEAg LTcyLDcgKzcyLDcgQEAgY2VydF9vcHQgCT0gY2FfZGVmYXVsdAkJIyBDZXJ0aWZpY2F0ZSBmaQor IAorIGRlZmF1bHRfZGF5cwk9IDM2NQkJCSMgaG93IGxvbmcgdG8gY2VydGlmeSBmb3IKKyBkZWZh dWx0X2NybF9kYXlzPSAzMAkJCSMgaG93IGxvbmcgYmVmb3JlIG5leHQgQ1JMCistZGVmYXVsdF9t ZAk9IGRlZmF1bHQJCSMgdXNlIHB1YmxpYyBrZXkgZGVmYXVsdCBNRAorK2RlZmF1bHRfbWQJPSBz aGEyNTYJCSMgdXNlIFNIQS0yNTYgYnkgZGVmYXVsdAorIHByZXNlcnZlCT0gbm8JCQkjIGtlZXAg cGFzc2VkIEROIG9yZGVyaW5nCisgCisgIyBBIGZldyBkaWZmZXJlbmNlIHdheSBvZiBzcGVjaWZ5 aW5nIGhvdyBzaW1pbGFyIHRoZSByZXF1ZXN0IHNob3VsZCBsb29rCitAQCAtMTA0LDYgKzEwNCw3 IEBAIGVtYWlsQWRkcmVzcwkJPSBvcHRpb25hbAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgWyByZXEgXQorIGRl ZmF1bHRfYml0cwkJPSAyMDQ4CisrZGVmYXVsdF9tZAkJPSBzaGEyNTYKKyBkZWZhdWx0X2tleWZp bGUgCT0gcHJpdmtleS5wZW0KKyBkaXN0aW5ndWlzaGVkX25hbWUJPSByZXFfZGlzdGluZ3Vpc2hl ZF9uYW1lCisgYXR0cmlidXRlcwkJPSByZXFfYXR0cmlidXRlcworQEAgLTEyNiwxNyArMTI3LDE4 IEBAIHN0cmluZ19tYXNrID0gdXRmOG9ubHkKKyAKKyBbIHJlcV9kaXN0aW5ndWlzaGVkX25hbWUg XQorIGNvdW50cnlOYW1lCQkJPSBDb3VudHJ5IE5hbWUgKDIgbGV0dGVyIGNvZGUpCistY291bnRy eU5hbWVfZGVmYXVsdAkJPSBBVQorK2NvdW50cnlOYW1lX2RlZmF1bHQJCT0gWFgKKyBjb3VudHJ5 TmFtZV9taW4JCQk9IDIKKyBjb3VudHJ5TmFtZV9tYXgJCQk9IDIKKyAKKyBzdGF0ZU9yUHJvdmlu Y2VOYW1lCQk9IFN0YXRlIG9yIFByb3ZpbmNlIE5hbWUgKGZ1bGwgbmFtZSkKKy1zdGF0ZU9yUHJv dmluY2VOYW1lX2RlZmF1bHQJPSBTb21lLVN0YXRlCisrI3N0YXRlT3JQcm92aW5jZU5hbWVfZGVm YXVsdAk9IERlZmF1bHQgUHJvdmluY2UKKyAKKyBsb2NhbGl0eU5hbWUJCQk9IExvY2FsaXR5IE5h bWUgKGVnLCBjaXR5KQorK2xvY2FsaXR5TmFtZV9kZWZhdWx0CQk9IERlZmF1bHQgQ2l0eQorIAor IDAub3JnYW5pemF0aW9uTmFtZQkJPSBPcmdhbml6YXRpb24gTmFtZSAoZWcsIGNvbXBhbnkpCist MC5vcmdhbml6YXRpb25OYW1lX2RlZmF1bHQJPSBJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQKKysw Lm9yZ2FuaXphdGlvbk5hbWVfZGVmYXVsdAk9IERlZmF1bHQgQ29tcGFueSBMdGQKKyAKKyAjIHdl IGNhbiBkbyB0aGlzIGJ1dCBpdCBpcyBub3QgbmVlZGVkIG5vcm1hbGx5IDotKQorICMxLm9yZ2Fu aXphdGlvbk5hbWUJCT0gU2Vjb25kIE9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkKK0BA IC0xNDUsNyArMTQ3LDcgQEAgbG9jYWxpdHlOYW1lCQkJPSBMb2NhbGl0eSBOYW1lIChlZywgY2l0 eQorIG9yZ2FuaXphdGlvbmFsVW5pdE5hbWUJCT0gT3JnYW5pemF0aW9uYWwgVW5pdCBOYW1lIChl Zywgc2VjdGlvbikKKyAjb3JnYW5pemF0aW9uYWxVbml0TmFtZV9kZWZhdWx0CT0KKyAKKy1jb21t b25OYW1lCQkJPSBDb21tb24gTmFtZSAoZS5nLiBzZXJ2ZXIgRlFETiBvciBZT1VSIG5hbWUpCisr Y29tbW9uTmFtZQkJCT0gQ29tbW9uIE5hbWUgKGVnLCB5b3VyIG5hbWUgb3IgeW91ciBzZXJ2ZXJc J3MgaG9zdG5hbWUpCisgY29tbW9uTmFtZV9tYXgJCQk9IDY0CisgCisgZW1haWxBZGRyZXNzCQkJ PSBFbWFpbCBBZGRyZXNzCitAQCAtMzM5LDcgKzM0MSw3IEBAIHNpZ25lcl9rZXkJPSAkZGlyL3By aXZhdGUvdHNha2V5LnBlbSAjIFQKKyBkZWZhdWx0X3BvbGljeQk9IHRzYV9wb2xpY3kxCQkjIFBv bGljeSBpZiByZXF1ZXN0IGRpZCBub3Qgc3BlY2lmeSBpdAorIAkJCQkJIyAob3B0aW9uYWwpCisg b3RoZXJfcG9saWNpZXMJPSB0c2FfcG9saWN5MiwgdHNhX3BvbGljeTMJIyBhY2NlcHRhYmxlIHBv bGljaWVzIChvcHRpb25hbCkKKy1kaWdlc3RzCQk9IG1kNSwgc2hhMQkJIyBBY2NlcHRhYmxlIG1l c3NhZ2UgZGlnZXN0cyAobWFuZGF0b3J5KQorK2RpZ2VzdHMJCT0gc2hhMSwgc2hhMjU2LCBzaGEz ODQsIHNoYTUxMgkjIEFjY2VwdGFibGUgbWVzc2FnZSBkaWdlc3RzIChtYW5kYXRvcnkpCisgYWNj dXJhY3kJPSBzZWNzOjEsIG1pbGxpc2Vjczo1MDAsIG1pY3Jvc2VjczoxMDAJIyAob3B0aW9uYWwp CisgY2xvY2tfcHJlY2lzaW9uX2RpZ2l0cyAgPSAwCSMgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBk b3QuIChvcHRpb25hbCkKKyBvcmRlcmluZwkJPSB5ZXMJIyBJcyBvcmRlcmluZyBkZWZpbmVkIGZv ciB0aW1lc3RhbXBzPwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLWRoLTEwMjQucGF0Y2gg Yi9vcGVuc3NsLTEuMC4yYS1kaC0xMDI0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjY3ZDMxNzEKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4yYS1kaC0x MDI0LnBhdGNoCkBAIC0wLDAgKzEsNzUgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMv c19zZXJ2ZXIuYy5kaDEwMjQgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NlcnZlci5jCistLS0gb3Bl bnNzbC0xLjAuMmEvYXBwcy9zX3NlcnZlci5jLmRoMTAyNAkyMDE1LTA0LTA5IDE4OjE5OjU1Ljk3 ODIyODk0OSArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zZXJ2ZXIuYwkyMDE1LTA0 LTA5IDE4OjE5OjUwLjg0MjExMDMwNCArMDIwMAorQEAgLTIzMCwyOSArMjMwLDQ0IEBAIHN0YXRp YyB2b2lkIHNfc2VydmVyX2luaXQodm9pZCk7CisgI2VuZGlmCisgCisgI2lmbmRlZiBPUEVOU1NM X05PX0RICistc3RhdGljIHVuc2lnbmVkIGNoYXIgZGg1MTJfcFtdID0geworLSAgICAweERBLCAw eDU4LCAweDNDLCAweDE2LCAweEQ5LCAweDg1LCAweDIyLCAweDg5LCAweEQwLCAweEU0LCAweEFG LCAweDc1LAorLSAgICAweDZGLCAweDRDLCAweENBLCAweDkyLCAweERELCAweDRCLCAweEU1LCAw eDMzLCAweEI4LCAweDA0LCAweEZCLCAweDBGLAorLSAgICAweEVELCAweDk0LCAweEVGLCAweDlD LCAweDhBLCAweDQ0LCAweDAzLCAweEVELCAweDU3LCAweDQ2LCAweDUwLCAweEQzLAorLSAgICAw eDY5LCAweDk5LCAweERCLCAweDI5LCAweEQ3LCAweDc2LCAweDI3LCAweDZCLCAweEEyLCAweEQz LCAweEQ0LCAweDEyLAorLSAgICAweEUyLCAweDE4LCAweEY0LCAweERELCAweDFFLCAweDA4LCAw eDRDLCAweEY2LCAweEQ4LCAweDAwLCAweDNFLCAweDdDLAorLSAgICAweDQ3LCAweDc0LCAweEU4 LCAweDMzLAorLX07CistCistc3RhdGljIHVuc2lnbmVkIGNoYXIgZGg1MTJfZ1tdID0geworLSAg ICAweDAyLAorLX07CistCistc3RhdGljIERIICpnZXRfZGg1MTIodm9pZCkKKytzdGF0aWMgREgg KmdldF9kaDEwMjQoKQorIHsKKy0gICAgREggKmRoID0gTlVMTDsKKysgICAgc3RhdGljIHVuc2ln bmVkIGNoYXIgZGgxMDI0X3BbXSA9IHsKKysgICAgICAgIDB4OTksIDB4NTgsIDB4RkEsIDB4OTAs IDB4NTMsIDB4MkYsIDB4RTAsIDB4NjEsIDB4ODMsIDB4OUQsIDB4NTQsCisrICAgICAgICAgICAg MHg2MywKKysgICAgICAgIDB4QkQsIDB4MzUsIDB4NUEsIDB4MzEsIDB4RjMsIDB4QzYsIDB4Nzks IDB4RTUsIDB4QTAsIDB4MEYsIDB4NjYsCisrICAgICAgICAgICAgMHg3OSwKKysgICAgICAgIDB4 M0MsIDB4QTAsIDB4N0YsIDB4RTgsIDB4QTIsIDB4NUYsIDB4REYsIDB4MTEsIDB4MDgsIDB4QTMs IDB4RjAsCisrICAgICAgICAgICAgMHgzQywKKysgICAgICAgIDB4QzMsIDB4M0MsIDB4NUQsIDB4 NTAsIDB4MkMsIDB4RDUsIDB4RDYsIDB4NTgsIDB4MTIsIDB4REIsIDB4QzEsCisrICAgICAgICAg ICAgMHhFRiwKKysgICAgICAgIDB4QjQsIDB4NDcsIDB4NEEsIDB4NUEsIDB4MzksIDB4OEEsIDB4 NEUsIDB4RUIsIDB4NDQsIDB4RTIsIDB4MDcsCisrICAgICAgICAgICAgMHhGQiwKKysgICAgICAg IDB4M0QsIDB4QTMsIDB4QzcsIDB4NkUsIDB4NTIsIDB4RjMsIDB4MkIsIDB4N0IsIDB4MTAsIDB4 QTUsIDB4OTgsCisrICAgICAgICAgICAgMHhFMywKKysgICAgICAgIDB4MzgsIDB4MkEsIDB4RTIs IDB4N0YsIDB4QTQsIDB4OEYsIDB4MjYsIDB4ODcsIDB4OUIsIDB4NjYsIDB4N0EsCisrICAgICAg ICAgICAgMHhFRCwKKysgICAgICAgIDB4MkQsIDB4NEMsIDB4RTcsIDB4MzMsIDB4NzcsIDB4NDcs IDB4OTQsIDB4NDMsIDB4QjYsIDB4QUEsIDB4OTcsCisrICAgICAgICAgICAgMHgyMywKKysgICAg ICAgIDB4OEEsIDB4RkMsIDB4QTUsIDB4QTYsIDB4NjQsIDB4MDksIDB4QzAsIDB4MjcsIDB4QzAs IDB4RUYsIDB4Q0IsCisrICAgICAgICAgICAgMHgwNSwKKysgICAgICAgIDB4OTAsIDB4OUQsIDB4 RDUsIDB4NzUsIDB4QkEsIDB4MDAsIDB4RTAsIDB4RkIsIDB4QTgsIDB4ODEsIDB4NTIsCisrICAg ICAgICAgICAgMHhBNCwKKysgICAgICAgIDB4QjIsIDB4ODMsIDB4MjIsIDB4NUIsIDB4Q0IsIDB4 RDcsIDB4MTYsIDB4OTMsCisrICAgIH07CisrICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGRoMTAy NF9nW10gPSB7CisrICAgICAgICAweDAyLAorKyAgICB9OworKyAgICBESCAqZGg7CisgCisgICAg IGlmICgoZGggPSBESF9uZXcoKSkgPT0gTlVMTCkKKyAgICAgICAgIHJldHVybiAoTlVMTCk7Cist ICAgIGRoLT5wID0gQk5fYmluMmJuKGRoNTEyX3AsIHNpemVvZihkaDUxMl9wKSwgTlVMTCk7Cist ICAgIGRoLT5nID0gQk5fYmluMmJuKGRoNTEyX2csIHNpemVvZihkaDUxMl9nKSwgTlVMTCk7Cist ICAgIGlmICgoZGgtPnAgPT0gTlVMTCkgfHwgKGRoLT5nID09IE5VTEwpKQorKyAgICBkaC0+cCA9 IEJOX2JpbjJibihkaDEwMjRfcCwgc2l6ZW9mKGRoMTAyNF9wKSwgTlVMTCk7CisrICAgIGRoLT5n ID0gQk5fYmluMmJuKGRoMTAyNF9nLCBzaXplb2YoZGgxMDI0X2cpLCBOVUxMKTsKKysgICAgaWYg KChkaC0+cCA9PSBOVUxMKSB8fCAoZGgtPmcgPT0gTlVMTCkpIHsKKysgICAgICAgIERIX2ZyZWUo ZGgpOworICAgICAgICAgcmV0dXJuIChOVUxMKTsKKysgICAgfQorICAgICByZXR1cm4gKGRoKTsK KyB9CisgI2VuZGlmCitAQCAtMTg3Miw3ICsxOTg3LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKKyAgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19zX291dCwgIlNldHRpbmcg dGVtcCBESCBwYXJhbWV0ZXJzXG4iKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg QklPX3ByaW50ZihiaW9fc19vdXQsICJVc2luZyBkZWZhdWx0IHRlbXAgREggcGFyYW1ldGVyc1xu Iik7CistICAgICAgICAgICAgZGggPSBnZXRfZGg1MTIoKTsKKysgICAgICAgICAgICBkaCA9IGdl dF9kaDEwMjQoKTsKKyAgICAgICAgIH0KKyAgICAgICAgICh2b2lkKUJJT19mbHVzaChiaW9fc19v dXQpOworIAoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLWRpc2FibGUtc3NsdjJ2My5wYXRj aCBiL29wZW5zc2wtMS4wLjJhLWRpc2FibGUtc3NsdjJ2My5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi45Y2IwMThmCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0x LjAuMmEtZGlzYWJsZS1zc2x2MnYzLnBhdGNoCkBAIC0wLDAgKzEsMTMgQEAKK2RpZmYgLXVwIG9w ZW5zc2wtMS4wLjJhL3NzbC9zc2xfbGliLmMudjJ2MyBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsX2xp Yi5jCistLS0gb3BlbnNzbC0xLjAuMmEvc3NsL3NzbF9saWIuYy52MnYzCTIwMTUtMDQtMjIgMTU6 Mzc6MTUuOTc0MzQ1NzU3ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvc3NsL3NzbF9saWIuYwky MDE1LTA0LTIyIDE1OjM5OjM5LjExNDc4MjM2NSArMDIwMAorQEAgLTIwNDgsNiArMjA0OCw5IEBA IFNTTF9DVFggKlNTTF9DVFhfbmV3KGNvbnN0IFNTTF9NRVRIT0QgKm0KKyAgICAgICovCisgICAg IHJldC0+b3B0aW9ucyB8PSBTU0xfT1BfTEVHQUNZX1NFUlZFUl9DT05ORUNUOworIAorKyAgICAv KiBEaXNhYmxlIFNTTHYyIGFuZCBTU0x2MyBieSBkZWZhdWx0IChhZmZlY3RzIHRoZSBTU0x2MjNf bWV0aG9kKCkgb25seSkgKi8KKysgICAgcmV0LT5vcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MiB8 IFNTTF9PUF9OT19TU0x2MzsKKysKKyAgICAgcmV0dXJuIChyZXQpOworICBlcnI6CisgICAgIFNT TGVycihTU0xfRl9TU0xfQ1RYX05FVywgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOwoKZGlmZiAtLWdp dCBhL29wZW5zc2wtMS4wLjJhLWR0bHMxLWFiaS5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWR0bHMx LWFiaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmE3OWQ3Ci0t LSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmEtZHRsczEtYWJpLnBhdGNoCkBAIC0wLDAg KzEsMjMgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL3NzbC9kdGxzMS5oLmR0bHMxLWFiaSBv cGVuc3NsLTEuMC4yYS9zc2wvZHRsczEuaAorLS0tIG9wZW5zc2wtMS4wLjJhL3NzbC9kdGxzMS5o LmR0bHMxLWFiaQkyMDE1LTA0LTIxIDEwOjQ5OjU3Ljk4NDc4MTE0MyArMDIwMAorKysrIG9wZW5z c2wtMS4wLjJhL3NzbC9kdGxzMS5oCTIwMTUtMDQtMjEgMTY6NDE6MzcuODM1MTY0MjY0ICswMjAw CitAQCAtMjE0LDkgKzIxNCw2IEBAIHR5cGVkZWYgc3RydWN0IGR0bHMxX3N0YXRlX3N0IHsKKyAg ICAgICogbG9zcy4KKyAgICAgICovCisgICAgIHJlY29yZF9wcXVldWUgYnVmZmVyZWRfYXBwX2Rh dGE7CistICAgIC8qIElzIHNldCB3aGVuIGxpc3RlbmluZyBmb3IgbmV3IGNvbm5lY3Rpb25zIHdp dGggZHRsczFfbGlzdGVuKCkgKi8KKy0gICAgdW5zaWduZWQgaW50IGxpc3RlbjsKKy0gICAgdW5z aWduZWQgaW50IGxpbmtfbXR1OyAgICAgIC8qIG1heCBvbi10aGUtd2lyZSBEVExTIHBhY2tldCBz aXplICovCisgICAgIHVuc2lnbmVkIGludCBtdHU7ICAgICAgICAgICAvKiBtYXggRFRMUyBwYWNr ZXQgc2l6ZSAqLworICAgICBzdHJ1Y3QgaG1faGVhZGVyX3N0IHdfbXNnX2hkcjsKKyAgICAgc3Ry dWN0IGhtX2hlYWRlcl9zdCByX21zZ19oZHI7CitAQCAtMjQxLDYgKzIzOCw5IEBAIHR5cGVkZWYg c3RydWN0IGR0bHMxX3N0YXRlX3N0IHsKKyAgICAgICogQ2xlYXJlZCBhZnRlciB0aGUgbWVzc2Fn ZSBoYXMgYmVlbiBwcm9jZXNzZWQuCisgICAgICAqLworICAgICB1bnNpZ25lZCBpbnQgY2hhbmdl X2NpcGhlcl9zcGVjX29rOworKyAgICAvKiBJcyBzZXQgd2hlbiBsaXN0ZW5pbmcgZm9yIG5ldyBj b25uZWN0aW9ucyB3aXRoIGR0bHMxX2xpc3RlbigpICovCisrICAgIHVuc2lnbmVkIGludCBsaXN0 ZW47CisrICAgIHVuc2lnbmVkIGludCBsaW5rX210dTsgICAgICAvKiBtYXggb24tdGhlLXdpcmUg RFRMUyBwYWNrZXQgc2l6ZSAqLworICMgIGlmbmRlZiBPUEVOU1NMX05PX1NDVFAKKyAgICAgLyog dXNlZCB3aGVuIFNTTF9TVF9YWF9GTFVTSCBpcyBlbnRlcmVkICovCisgICAgIGludCBuZXh0X3N0 YXRlOwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLWVjYy1zdWl0ZWIucGF0Y2ggYi9vcGVu c3NsLTEuMC4yYS1lY2Mtc3VpdGViLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjViMjdmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4yYS1lY2Mtc3Vp dGViLnBhdGNoCkBAIC0wLDAgKzEsMTk5IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBz L3NwZWVkLmMuc3VpdGViIG9wZW5zc2wtMS4wLjJhL2FwcHMvc3BlZWQuYworLS0tIG9wZW5zc2wt MS4wLjJhL2FwcHMvc3BlZWQuYy5zdWl0ZWIJMjAxNS0wNC0yMSAxNzo0NjoxNS40NTIzMjExODMg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3NwZWVkLmMJMjAxNS0wNC0yMiAxNDo1Mjo0 NS4zNjIyNzIyOTYgKzAyMDAKK0BAIC05OTYsNzggKzk5NiwyNiBAQCBpbnQgTUFJTihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCisgICAgICAgICB9IGVsc2UKKyAjIGVuZGlmCisgIyBpZm5kZWYgT1BF TlNTTF9OT19FQ0RTQQorLSAgICAgICAgaWYgKHN0cmNtcCgqYXJndiwgImVjZHNhcDE2MCIpID09 IDApCistICAgICAgICAgICAgZWNkc2FfZG9pdFtSX0VDX1AxNjBdID0gMjsKKy0gICAgICAgIGVs c2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZHNhcDE5MiIpID09IDApCistICAgICAgICAgICAgZWNk c2FfZG9pdFtSX0VDX1AxOTJdID0gMjsKKy0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwg ImVjZHNhcDIyNCIpID09IDApCistICAgICAgICAgICAgZWNkc2FfZG9pdFtSX0VDX1AyMjRdID0g MjsKKy0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZHNhcDI1NiIpID09IDApCisr ICAgICAgICBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FwMjU2IikgPT0gMCkKKyAgICAgICAgICAg ICBlY2RzYV9kb2l0W1JfRUNfUDI1Nl0gPSAyOworICAgICAgICAgZWxzZSBpZiAoc3RyY21wKCph cmd2LCAiZWNkc2FwMzg0IikgPT0gMCkKKyAgICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfUDM4 NF0gPSAyOworICAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FwNTIxIikgPT0g MCkKKyAgICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfUDUyMV0gPSAyOworLSAgICAgICAgZWxz ZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FrMTYzIikgPT0gMCkKKy0gICAgICAgICAgICBlY2Rz YV9kb2l0W1JfRUNfSzE2M10gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAi ZWNkc2FrMjMzIikgPT0gMCkKKy0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfSzIzM10gPSAy OworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FrMjgzIikgPT0gMCkKKy0g ICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfSzI4M10gPSAyOworLSAgICAgICAgZWxzZSBpZiAo c3RyY21wKCphcmd2LCAiZWNkc2FrNDA5IikgPT0gMCkKKy0gICAgICAgICAgICBlY2RzYV9kb2l0 W1JfRUNfSzQwOV0gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2Fr NTcxIikgPT0gMCkKKy0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfSzU3MV0gPSAyOworLSAg ICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FiMTYzIikgPT0gMCkKKy0gICAgICAg ICAgICBlY2RzYV9kb2l0W1JfRUNfQjE2M10gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21w KCphcmd2LCAiZWNkc2FiMjMzIikgPT0gMCkKKy0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNf QjIzM10gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FiMjgzIikg PT0gMCkKKy0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfQjI4M10gPSAyOworLSAgICAgICAg ZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FiNDA5IikgPT0gMCkKKy0gICAgICAgICAgICBl Y2RzYV9kb2l0W1JfRUNfQjQwOV0gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2 LCAiZWNkc2FiNTcxIikgPT0gMCkKKy0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfQjU3MV0g PSAyOworICAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2EiKSA9PSAwKSB7Cist ICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVDX05VTTsgaSsrKQorKyAgICAgICAgICAgIGZv ciAoaSA9IFJfRUNfUDI1NjsgaSA8PSBSX0VDX1A1MjE7IGkrKykKKyAgICAgICAgICAgICAgICAg ZWNkc2FfZG9pdFtpXSA9IDE7CisgICAgICAgICB9IGVsc2UKKyAjIGVuZGlmCisgIyBpZm5kZWYg T1BFTlNTTF9OT19FQ0RICistICAgICAgICBpZiAoc3RyY21wKCphcmd2LCAiZWNkaHAxNjAiKSA9 PSAwKQorLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX1AxNjBdID0gMjsKKy0gICAgICAgIGVs c2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhwMTkyIikgPT0gMCkKKy0gICAgICAgICAgICBlY2Ro X2RvaXRbUl9FQ19QMTkyXSA9IDI7CistICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJl Y2RocDIyNCIpID09IDApCistICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNfUDIyNF0gPSAyOwor LSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaHAyNTYiKSA9PSAwKQorKyAgICAg ICAgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhwMjU2IikgPT0gMCkKKyAgICAgICAgICAgICBlY2Ro X2RvaXRbUl9FQ19QMjU2XSA9IDI7CisgICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJl Y2RocDM4NCIpID09IDApCisgICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNfUDM4NF0gPSAyOwor ICAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaHA1MjEiKSA9PSAwKQorICAgICAg ICAgICAgIGVjZGhfZG9pdFtSX0VDX1A1MjFdID0gMjsKKy0gICAgICAgIGVsc2UgaWYgKHN0cmNt cCgqYXJndiwgImVjZGhrMTYzIikgPT0gMCkKKy0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19L MTYzXSA9IDI7CistICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RoazIzMyIpID09 IDApCistICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNfSzIzM10gPSAyOworLSAgICAgICAgZWxz ZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaGsyODMiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZGhf ZG9pdFtSX0VDX0syODNdID0gMjsKKy0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVj ZGhrNDA5IikgPT0gMCkKKy0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19LNDA5XSA9IDI7Cist ICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RoazU3MSIpID09IDApCistICAgICAg ICAgICAgZWNkaF9kb2l0W1JfRUNfSzU3MV0gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21w KCphcmd2LCAiZWNkaGIxNjMiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX0Ix NjNdID0gMjsKKy0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhiMjMzIikgPT0g MCkKKy0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19CMjMzXSA9IDI7CistICAgICAgICBlbHNl IGlmIChzdHJjbXAoKmFyZ3YsICJlY2RoYjI4MyIpID09IDApCistICAgICAgICAgICAgZWNkaF9k b2l0W1JfRUNfQjI4M10gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNk aGI0MDkiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX0I0MDldID0gMjsKKy0g ICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhiNTcxIikgPT0gMCkKKy0gICAgICAg ICAgICBlY2RoX2RvaXRbUl9FQ19CNTcxXSA9IDI7CisgICAgICAgICBlbHNlIGlmIChzdHJjbXAo KmFyZ3YsICJlY2RoIikgPT0gMCkgeworLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFQ19O VU07IGkrKykKKysgICAgICAgICAgICBmb3IgKGkgPSBSX0VDX1AyNTY7IGkgPD0gUl9FQ19QNTIx OyBpKyspCisgICAgICAgICAgICAgICAgIGVjZGhfZG9pdFtpXSA9IDE7CisgICAgICAgICB9IGVs c2UKKyAjIGVuZGlmCitAQCAtMTE1NiwyMSArMTEwNCwxMSBAQCBpbnQgTUFJTihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZHNhNTEyICAg ZHNhMTAyNCAgZHNhMjA0OFxuIik7CisgIyBlbmRpZgorICMgaWZuZGVmIE9QRU5TU0xfTk9fRUNE U0EKKy0gICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJlY2RzYXAxNjAgZWNkc2FwMTky IGVjZHNhcDIyNCAiCistICAgICAgICAgICAgICAgICAgICAgICAiZWNkc2FwMjU2IGVjZHNhcDM4 NCBlY2RzYXA1MjFcbiIpOworLSAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKKy0gICAg ICAgICAgICAgICAgICAgICAgICJlY2RzYWsxNjMgZWNkc2FrMjMzIGVjZHNhazI4MyBlY2RzYWs0 MDkgZWNkc2FrNTcxXG4iKTsKKy0gICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCistICAg ICAgICAgICAgICAgICAgICAgICAiZWNkc2FiMTYzIGVjZHNhYjIzMyBlY2RzYWIyODMgZWNkc2Fi NDA5IGVjZHNhYjU3MVxuIik7CisrICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZWNk c2FwMjU2IGVjZHNhcDM4NCBlY2RzYXA1MjFcbiIpOworICAgICAgICAgICAgIEJJT19wcmludGYo YmlvX2VyciwgImVjZHNhXG4iKTsKKyAjIGVuZGlmCisgIyBpZm5kZWYgT1BFTlNTTF9OT19FQ0RI CistICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZWNkaHAxNjAgIGVjZGhwMTkyICBl Y2RocDIyNCAiCistICAgICAgICAgICAgICAgICAgICAgICAiZWNkaHAyNTYgIGVjZGhwMzg0ICBl Y2RocDUyMVxuIik7CistICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAorLSAgICAgICAg ICAgICAgICAgICAgICAgImVjZGhrMTYzICBlY2RoazIzMyAgZWNkaGsyODMgIGVjZGhrNDA5ICBl Y2RoazU3MVxuIik7CistICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAorLSAgICAgICAg ICAgICAgICAgICAgICAgImVjZGhiMTYzICBlY2RoYjIzMyAgZWNkaGIyODMgIGVjZGhiNDA5ICBl Y2RoYjU3MVxuIik7CisrICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZWNkaHAyNTYg IGVjZGhwMzg0ICBlY2RocDUyMVxuIik7CisgICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJy LCAiZWNkaFxuIik7CisgIyBlbmRpZgorIAorQEAgLTEyNTUsMTEgKzExOTMsMTEgQEAgaW50IE1B SU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgIGlmICghRklQU19tb2RlKCkg fHwgaSAhPSBSX0RTQV81MTIpCisgICAgICAgICAgICAgICAgIGRzYV9kb2l0W2ldID0gMTsKKyAj IGlmbmRlZiBPUEVOU1NMX05PX0VDRFNBCistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUNfTlVN OyBpKyspCisrICAgICAgICBmb3IgKGkgPSBSX0VDX1AyNTY7IGkgPD0gUl9FQ19QNTIxOyBpKysp CisgICAgICAgICAgICAgZWNkc2FfZG9pdFtpXSA9IDE7CisgIyBlbmRpZgorICMgaWZuZGVmIE9Q RU5TU0xfTk9fRUNESAorLSAgICAgICAgZm9yIChpID0gMDsgaSA8IEVDX05VTTsgaSsrKQorKyAg ICAgICAgZm9yIChpID0gUl9FQ19QMjU2OyBpIDw9IFJfRUNfUDUyMTsgaSsrKQorICAgICAgICAg ICAgIGVjZGhfZG9pdFtpXSA9IDE7CisgIyBlbmRpZgorICAgICB9CitkaWZmIC11cCBvcGVuc3Ns LTEuMC4yYS9zc2wvdDFfbGliLmMuc3VpdGViIG9wZW5zc2wtMS4wLjJhL3NzbC90MV9saWIuYwor LS0tIG9wZW5zc2wtMS4wLjJhL3NzbC90MV9saWIuYy5zdWl0ZWIJMjAxNS0wNC0yMSAxNzo0Njox NS41MDYzMjI0NTEgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9zc2wvdDFfbGliLmMJMjAxNS0w NC0yMiAxNTowMzozMi40NjQ1OTEwOTYgKzAyMDAKK0BAIC0yNjYsNDEgKzI2NiwzMCBAQCBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBlY2N1cnZlc19kZWZhCisgICAgIDAsIDEzLCAgICAgICAg ICAgICAgICAgICAgICAvKiBzZWN0NTcxazEgKDEzKSAqLworICMgZW5kaWYKKyAgICAgMCwgMjUs ICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3A1MjFyMSAoMjUpICovCistICAgIDAsIDI4LCAg ICAgICAgICAgICAgICAgICAgICAvKiBicmFpbnBvb2w1MTJyMSAoMjgpICovCisgIyBpZm5kZWYg T1BFTlNTTF9OT19FQzJNCisgICAgIDAsIDExLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0 NDA5azEgKDExKSAqLworICAgICAwLCAxMiwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDQw OXIxICgxMikgKi8KKyAjIGVuZGlmCistICAgIDAsIDI3LCAgICAgICAgICAgICAgICAgICAgICAv KiBicmFpbnBvb2xQMzg0cjEgKDI3KSAqLworICAgICAwLCAyNCwgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjcDM4NHIxICgyNCkgKi8KKyAjIGlmbmRlZiBPUEVOU1NMX05PX0VDMk0KKyAgICAg MCwgOSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyODNrMSAoOSkgKi8KKyAgICAgMCwg MTAsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyODNyMSAoMTApICovCisgIyBlbmRpZgor LSAgICAwLCAyNiwgICAgICAgICAgICAgICAgICAgICAgLyogYnJhaW5wb29sUDI1NnIxICgyNikg Ki8KKy0gICAgMCwgMjIsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AyNTZrMSAoMjIpICov CisgICAgIDAsIDIzLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMjU2cjEgKDIzKSAqLwor ICMgaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQorICAgICAwLCA4LCAgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjdDIzOWsxICg4KSAqLworICAgICAwLCA2LCAgICAgICAgICAgICAgICAgICAgICAg Lyogc2VjdDIzM2sxICg2KSAqLworICAgICAwLCA3LCAgICAgICAgICAgICAgICAgICAgICAgLyog c2VjdDIzM3IxICg3KSAqLworICMgZW5kaWYKKy0gICAgMCwgMjAsICAgICAgICAgICAgICAgICAg ICAgIC8qIHNlY3AyMjRrMSAoMjApICovCistICAgIDAsIDIxLCAgICAgICAgICAgICAgICAgICAg ICAvKiBzZWNwMjI0cjEgKDIxKSAqLworICMgaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQorICAgICAw LCA0LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE5M3IxICg0KSAqLworICAgICAwLCA1 LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE5M3IyICg1KSAqLworICMgZW5kaWYKKy0g ICAgMCwgMTgsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AxOTJrMSAoMTgpICovCistICAg IDAsIDE5LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMTkycjEgKDE5KSAqLworICMgaWZu ZGVmIE9QRU5TU0xfTk9fRUMyTQorICAgICAwLCAxLCAgICAgICAgICAgICAgICAgICAgICAgLyog c2VjdDE2M2sxICgxKSAqLworICAgICAwLCAyLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2Vj dDE2M3IxICgyKSAqLworICAgICAwLCAzLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2 M3IyICgzKSAqLworICMgZW5kaWYKKy0gICAgMCwgMTUsICAgICAgICAgICAgICAgICAgICAgIC8q IHNlY3AxNjBrMSAoMTUpICovCistICAgIDAsIDE2LCAgICAgICAgICAgICAgICAgICAgICAvKiBz ZWNwMTYwcjEgKDE2KSAqLworLSAgICAwLCAxNywgICAgICAgICAgICAgICAgICAgICAgLyogc2Vj cDE2MHIyICgxNykgKi8KKyB9OworIAorIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN1aXRl Yl9jdXJ2ZXNbXSA9IHsKK0BAIC0zMjUsMjkgKzMxNCwyMSBAQCBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBmaXBzX2N1cnZlc19kCisgICAgIDAsIDksICAgICAgICAgICAgICAgICAgICAgICAv KiBzZWN0MjgzazEgKDkpICovCisgICAgIDAsIDEwLCAgICAgICAgICAgICAgICAgICAgICAvKiBz ZWN0MjgzcjEgKDEwKSAqLworICMgIGVuZGlmCistICAgIDAsIDIyLCAgICAgICAgICAgICAgICAg ICAgICAvKiBzZWNwMjU2azEgKDIyKSAqLworICAgICAwLCAyMywgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjcDI1NnIxICgyMykgKi8KKyAjICBpZm5kZWYgT1BFTlNTTF9OT19FQzJNCisgICAg IDAsIDgsICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0MjM5azEgKDgpICovCisgICAgIDAs IDYsICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0MjMzazEgKDYpICovCisgICAgIDAsIDcs ICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0MjMzcjEgKDcpICovCisgIyAgZW5kaWYKKy0g ICAgMCwgMjAsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AyMjRrMSAoMjApICovCistICAg IDAsIDIxLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMjI0cjEgKDIxKSAqLworICMgIGlm bmRlZiBPUEVOU1NMX05PX0VDMk0KKyAgICAgMCwgNCwgICAgICAgICAgICAgICAgICAgICAgIC8q IHNlY3QxOTNyMSAoNCkgKi8KKyAgICAgMCwgNSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHNl Y3QxOTNyMiAoNSkgKi8KKyAjICBlbmRpZgorLSAgICAwLCAxOCwgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjcDE5MmsxICgxOCkgKi8KKy0gICAgMCwgMTksICAgICAgICAgICAgICAgICAgICAg IC8qIHNlY3AxOTJyMSAoMTkpICovCisgIyAgaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQorICAgICAw LCAxLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2M2sxICgxKSAqLworICAgICAwLCAy LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2M3IxICgyKSAqLworICAgICAwLCAzLCAg ICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2M3IyICgzKSAqLworICMgIGVuZGlmCistICAg IDAsIDE1LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMTYwazEgKDE1KSAqLworLSAgICAw LCAxNiwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDE2MHIxICgxNikgKi8KKy0gICAgMCwg MTcsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AxNjByMiAoMTcpICovCisgfTsKKyAjIGVu ZGlmCisgCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtZW5jLWZhaWwucGF0Y2ggYi9vcGVu c3NsLTEuMC4yYS1lbmMtZmFpbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4xZGFjNjZkCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmEtZW5jLWZhaWwu cGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2 cC9iaW9fZW5jLmMuZW5jLWZhaWwgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9iaW9fZW5jLmMK Ky0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2Jpb19lbmMuYy5lbmMtZmFpbAkyMDE1LTAz LTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9l dnAvYmlvX2VuYy5jCTIwMTUtMDQtMjIgMTg6MTA6MDYuNDkxODE5OTQ4ICswMjAwCitAQCAtMjAx LDEwICsyMDEsMTQgQEAgc3RhdGljIGludCBlbmNfcmVhZChCSU8gKmIsIGNoYXIgKm91dCwgaQor ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2Ug eworLSAgICAgICAgICAgIEVWUF9DaXBoZXJVcGRhdGUoJihjdHgtPmNpcGhlciksCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKWN0eC0+YnVmLCAmY3R4LT5i dWZfbGVuLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikm KGN0eC0+YnVmW0JVRl9PRkZTRVRdKSwgaSk7CistICAgICAgICAgICAgY3R4LT5jb250ID0gMTsK KysgICAgICAgICAgICBpZiAoIUVWUF9DaXBoZXJVcGRhdGUoJihjdHgtPmNpcGhlciksCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopY3R4LT5idWYs ICZjdHgtPmJ1Zl9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNp Z25lZCBjaGFyICopJihjdHgtPmJ1ZltCVUZfT0ZGU0VUXSksCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGkpKSB7CisrICAgICAgICAgICAgICAgIGN0eC0+b2sgPSAwOworKyAg ICAgICAgICAgICAgICBjdHgtPmNvbnQgPSAwOworKyAgICAgICAgICAgIH0gZWxzZQorKyAgICAg ICAgICAgICAgICBjdHgtPmNvbnQgPSAxOworICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAg ICogTm90ZTogaXQgaXMgcG9zc2libGUgZm9yIEVWUF9DaXBoZXJVcGRhdGUgdG8gZGVjcnlwdCB6 ZXJvCisgICAgICAgICAgICAgICogYnl0ZXMgYmVjYXVzZSB0aGlzIGlzIG9yIGxvb2tzIGxpa2Ug dGhlIGZpbmFsIGJsb2NrOiBpZiB0aGlzCitAQCAtMjYwLDkgKzI2NCwxMyBAQCBzdGF0aWMgaW50 IGVuY193cml0ZShCSU8gKmIsIGNvbnN0IGNoYXIKKyAgICAgY3R4LT5idWZfb2ZmID0gMDsKKyAg ICAgd2hpbGUgKGlubCA+IDApIHsKKyAgICAgICAgIG4gPSAoaW5sID4gRU5DX0JMT0NLX1NJWkUp ID8gRU5DX0JMT0NLX1NJWkUgOiBpbmw7CistICAgICAgICBFVlBfQ2lwaGVyVXBkYXRlKCYoY3R4 LT5jaXBoZXIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKWN0 eC0+YnVmLCAmY3R4LT5idWZfbGVuLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWdu ZWQgY2hhciAqKWluLCBuKTsKKysgICAgICAgIGlmICghRVZQX0NpcGhlclVwZGF0ZSgmKGN0eC0+ Y2lwaGVyKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAq KWN0eC0+YnVmLCAmY3R4LT5idWZfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh1bnNpZ25lZCBjaGFyICopaW4sIG4pKSB7CisrICAgICAgICAgICAgQklPX2NvcHlfbmV4dF9y ZXRyeShiKTsKKysgICAgICAgICAgICBjdHgtPm9rID0gMDsKKysgICAgICAgICAgICByZXR1cm4g cmV0IC0gaW5sOworKyAgICAgICAgfQorICAgICAgICAgaW5sIC09IG47CisgICAgICAgICBpbiAr PSBuOworIAorQEAgLTI5OCw4ICszMDYsOSBAQCBzdGF0aWMgbG9uZyBlbmNfY3RybChCSU8gKmIs IGludCBjbWQsIGxvCisgICAgIGNhc2UgQklPX0NUUkxfUkVTRVQ6CisgICAgICAgICBjdHgtPm9r ID0gMTsKKyAgICAgICAgIGN0eC0+ZmluaXNoZWQgPSAwOworLSAgICAgICAgRVZQX0NpcGhlcklu aXRfZXgoJihjdHgtPmNpcGhlciksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCistICAgICAgICAg ICAgICAgICAgICAgICAgICBjdHgtPmNpcGhlci5lbmNyeXB0KTsKKysgICAgICAgIGlmICghRVZQ X0NpcGhlckluaXRfZXgoJihjdHgtPmNpcGhlciksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+Y2lwaGVyLmVuY3J5cHQpKQorKyAg ICAgICAgICAgICBjdHgtPm9rID0gMDsKKyAgICAgICAgIHJldCA9IEJJT19jdHJsKGItPm5leHRf YmlvLCBjbWQsIG51bSwgcHRyKTsKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIEJJT19DVFJM X0VPRjogICAgICAgICAvKiBNb3JlIHRvIHJlYWQgKi8KK0BAIC00MjEsNyArNDMwLDggQEAgdm9p ZCBCSU9fc2V0X2NpcGhlcihCSU8gKmIsIGNvbnN0IEVWUF9DSQorIAorICAgICBiLT5pbml0ID0g MTsKKyAgICAgY3R4ID0gKEJJT19FTkNfQ1RYICopYi0+cHRyOworLSAgICBFVlBfQ2lwaGVySW5p dF9leCgmKGN0eC0+Y2lwaGVyKSwgYywgTlVMTCwgaywgaSwgZSk7CisrICAgIGlmICghRVZQX0Np cGhlckluaXRfZXgoJihjdHgtPmNpcGhlciksIGMsIE5VTEwsIGssIGksIGUpKQorKyAgICAgICAg Y3R4LT5vayA9IDA7CisgCisgICAgIGlmIChiLT5jYWxsYmFjayAhPSBOVUxMKQorICAgICAgICAg Yi0+Y2FsbGJhY2soYiwgQklPX0NCX0NUUkwsIChjb25zdCBjaGFyICopYywgQklPX0NUUkxfU0VU LCBlLCAxTCk7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtZW5naW5lc2Rpci5wYXRjaCBi L29wZW5zc2wtMS4wLjJhLWVuZ2luZXNkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMTBiYWY1YQotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjJhLWVu Z2luZXNkaXIucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEv Q29uZmlndXJlLmVuZ2luZXNkaXIgb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCistLS0gb3BlbnNz bC0xLjAuMmEvQ29uZmlndXJlLmVuZ2luZXNkaXIJMjAxNS0wNC0yMCAxNDozNzo1OC4xMzczOTIy MjIgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUJMjAxNS0wNC0yMCAxNDozNzo1 OC4xNDAzOTIyOTIgKzAyMDAKK0BAIC03MDIsNiArNzAyLDcgQEAgbXkgJGlkeF9tdWx0aWxpYiA9 ICRpZHgrKzsKKyBteSAkcHJlZml4PSIiOworIG15ICRsaWJkaXI9IiI7CisgbXkgJG9wZW5zc2xk aXI9IiI7CisrbXkgJGVuZ2luZXNkaXI9IiI7CisgbXkgJGV4ZV9leHQ9IiI7CisgbXkgJGluc3Rh bGxfcHJlZml4PSAiJEVOVnsnSU5TVEFMTF9QUkVGSVgnfSI7CisgbXkgJGNyb3NzX2NvbXBpbGVf cHJlZml4PSIiOworQEAgLTkyOSw2ICs5MzAsMTAgQEAgUFJPQ0VTU19BUkdTOgorIAkJCQl7Cisg CQkJCSRvcGVuc3NsZGlyPSQxOworIAkJCQl9CisrCQkJZWxzaWYgKC9eLS1lbmdpbmVzZGlyPSgu KikkLykKKysJCQkJeworKwkJCQkkZW5naW5lc2Rpcj0kMTsKKysJCQkJfQorIAkJCWVsc2lmICgv Xi0taW5zdGFsbC5wcmVmaXg9KC4qKSQvKQorIAkJCQl7CisgCQkJCSRpbnN0YWxsX3ByZWZpeD0k MTsKK0BAIC0xMTg1LDcgKzExOTAsNyBAQCBjaG9wICRwcmVmaXggaWYgJHByZWZpeCA9fiAvLlwv JC87CisgCisgJG9wZW5zc2xkaXI9JHByZWZpeCAuICIvc3NsIiBpZiAkb3BlbnNzbGRpciBlcSAi IjsKKyAkb3BlbnNzbGRpcj0kcHJlZml4IC4gIi8iIC4gJG9wZW5zc2xkaXIgaWYgJG9wZW5zc2xk aXIgIX4gLyheXC98XlthLXpBLVpdOltcXFwvXSkvOworLQorKyRlbmdpbmVzZGlyPSIkcHJlZml4 L2xpYi9lbmdpbmVzIiBpZiAkZW5naW5lc2RpciBlcSAiIjsKKyAKKyBwcmludCAiSXNNSzFNRj0k SXNNSzFNRlxuIjsKKyAKK0BAIC0xODcxLDcgKzE4NzYsNyBAQCB3aGlsZSAoPElOPikKKyAJCX0K KyAJZWxzaWYJKC9eI2RlZmluZVxzK0VOR0lORVNESVIvKQorIAkJeworLQkJbXkgJGZvbyA9ICIk cHJlZml4LyRsaWJkaXIvZW5naW5lcyI7CisrCQlteSAkZm9vID0gIiRlbmdpbmVzZGlyIjsKKyAJ CSRmb28gPX4gcy9cXC9cXFxcL2c7CisgCQlwcmludCBPVVQgIiNkZWZpbmUgRU5HSU5FU0RJUiBc IiRmb29cIlxuIjsKKyAJCX0KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2VuZ2luZXMvTWFrZWZp bGUuZW5naW5lc2RpciBvcGVuc3NsLTEuMC4yYS9lbmdpbmVzL01ha2VmaWxlCistLS0gb3BlbnNz bC0xLjAuMmEvZW5naW5lcy9NYWtlZmlsZS5lbmdpbmVzZGlyCTIwMTUtMDQtMjAgMTQ6Mzc6NTgu MTQwMzkyMjkyICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvZW5naW5lcy9NYWtlZmlsZQkyMDE1 LTA0LTIwIDE0OjQwOjE1LjU3MDU5ODM4MyArMDIwMAorQEAgLTEyNCw3ICsxMjQsNyBAQCBpbnN0 YWxsOgorIAkJCQllc2FjOyBcCisgCQkJCWNwICQkcGZ4JCRsJCRzZnggJChJTlNUQUxMX1BSRUZJ WCkkKElOU1RBTExUT1ApLyQoTElCRElSKS9lbmdpbmVzLyQkcGZ4JCRsJCRzZngubmV3OyBcCisg CQkJICBmaTsgXAorLQkJCSAgY2htb2QgNTU1ICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9Q KS8kKExJQkRJUikvZW5naW5lcy8kJHBmeCQkbCQkc2Z4Lm5ldzsgXAorKwkJCSAgY2htb2QgNzU1 ICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS8kKExJQkRJUikvZW5naW5lcy8kJHBmeCQk bCQkc2Z4Lm5ldzsgXAorIAkJCSAgbXYgLWYgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1Ap LyQoTElCRElSKS9lbmdpbmVzLyQkcGZ4JCRsJCRzZngubmV3ICQoSU5TVEFMTF9QUkVGSVgpJChJ TlNUQUxMVE9QKS8kKExJQkRJUikvZW5naW5lcy8kJHBmeCQkbCQkc2Z4ICk7IFwKKyAJCWRvbmU7 IFwKKyAJZmkKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1lbnYtemxpYi5wYXRjaCBiL29w ZW5zc2wtMS4wLjJhLWVudi16bGliLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjMyODA3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4yYS1lbnYtemxp Yi5wYXRjaApAQCAtMCwwICsxLDM5IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9kb2Mvc3Ns L1NTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2QucG9kLmVudi16bGliIG9wZW5zc2wtMS4w LjJhL2RvYy9zc2wvU1NMX0NPTVBfYWRkX2NvbXByZXNzaW9uX21ldGhvZC5wb2QKKy0tLSBvcGVu c3NsLTEuMC4yYS9kb2Mvc3NsL1NTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2QucG9kLmVu di16bGliCTIwMTUtMDQtMDkgMTg6MTc6MjAuNTA5NjM3NTk3ICswMjAwCisrKysgb3BlbnNzbC0x LjAuMmEvZG9jL3NzbC9TU0xfQ09NUF9hZGRfY29tcHJlc3Npb25fbWV0aG9kLnBvZAkyMDE1LTA0 LTA5IDE4OjE3OjE0Ljc2NzUwNDk1MyArMDIwMAorQEAgLTQ3LDYgKzQ3LDEzIEBAIE9uY2UgdGhl IGlkZW50aXRpZXMgb2YgdGhlIGNvbXByZXNzaW9uIG0KKyBiZWVuIHN0YW5kYXJkaXplZCwgdGhl IGNvbXByZXNzaW9uIEFQSSB3aWxsIG1vc3QgbGlrZWx5IGJlIGNoYW5nZWQuIFVzaW5nCisgaXQg aW4gdGhlIGN1cnJlbnQgc3RhdGUgaXMgbm90IHJlY29tbWVuZGVkLgorIAorK0l0IGlzIGFsc28g bm90IHJlY29tbWVuZGVkIHRvIHVzZSBjb21wcmVzc2lvbiBpZiBkYXRhIHRyYW5zZmVyZWQgY29u dGFpbgorK3VudHJ1c3RlZCBwYXJ0cyB0aGF0IGNhbiBiZSBtYW5pcHVsYXRlZCBieSBhbiBhdHRh Y2tlciBhcyBoZSBjb3VsZCB0aGVuCisrZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBlbmNyeXB0 ZWQgZGF0YS4gU2VlIHRoZSBDUklNRSBhdHRhY2suIEZvcgorK3RoYXQgcmVhc29uIHRoZSBkZWZh dWx0IGxvYWRpbmcgb2YgdGhlIHpsaWIgY29tcHJlc3Npb24gbWV0aG9kIGlzCisrZGlzYWJsZWQg YW5kIGVuYWJsZWQgb25seSBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQjxPUEVOU1NMX0RF RkFVTFRfWkxJQj4KKytpcyBwcmVzZW50IGR1cmluZyB0aGUgbGlicmFyeSBpbml0aWFsaXphdGlv bi4KKysKKyA9aGVhZDEgUkVUVVJOIFZBTFVFUworIAorIFNTTF9DT01QX2FkZF9jb21wcmVzc2lv bl9tZXRob2QoKSBtYXkgcmV0dXJuIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMmEvc3NsL3NzbF9jaXBoLmMuZW52LXpsaWIgb3BlbnNzbC0xLjAuMmEvc3NsL3Nz bF9jaXBoLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsX2NpcGguYy5lbnYtemxpYgkyMDE1 LTA0LTA5IDE4OjE3OjIwLjUxMDYzNzYyMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL3NzbC9z c2xfY2lwaC5jCTIwMTUtMDQtMDkgMTg6MTc6MjAuMjY0NjMxOTM3ICswMjAwCitAQCAtMTQwLDYg KzE0MCw4IEBACisgICogT1RIRVJXSVNFLgorICAqLworIAorKy8qIGZvciBzZWN1cmVfZ2V0ZW52 ICovCisrI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRl IDxvcGVuc3NsL29iamVjdHMuaD4KKyAjaWZuZGVmIE9QRU5TU0xfTk9fQ09NUAorQEAgLTQ1MCw3 ICs0NTIsOCBAQCBzdGF0aWMgdm9pZCBsb2FkX2J1aWx0aW5fY29tcHJlc3Npb25zKHZvCisgCisg ICAgICAgICAgICAgTWVtQ2hlY2tfb2ZmKCk7CisgICAgICAgICAgICAgc3NsX2NvbXBfbWV0aG9k cyA9IHNrX1NTTF9DT01QX25ldyhza19jb21wX2NtcCk7CistICAgICAgICAgICAgaWYgKHNzbF9j b21wX21ldGhvZHMgIT0gTlVMTCkgeworKyAgICAgICAgICAgIGlmIChzc2xfY29tcF9tZXRob2Rz ICE9IE5VTEwKKysgICAgICAgICAgICAgICAgJiYgc2VjdXJlX2dldGVudigiT1BFTlNTTF9ERUZB VUxUX1pMSUIiKSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgIGNvbXAgPSAoU1NMX0NPTVAg KilPUEVOU1NMX21hbGxvYyhzaXplb2YoU1NMX0NPTVApKTsKKyAgICAgICAgICAgICAgICAgaWYg KGNvbXAgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgY29tcC0+bWV0aG9kID0gQ09N UF96bGliKCk7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtZmlwcy1jdG9yLnBhdGNoIGIv b3BlbnNzbC0xLjAuMmEtZmlwcy1jdG9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjY1ZjY1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4yYS1maXBz LWN0b3IucGF0Y2gKQEAgLTAsMCArMSwxNzQgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHMuYy5maXBzLWN0b3Igb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlw cy5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5jLmZpcHMtY3RvcgkyMDE1 LTA0LTIxIDE3OjQyOjE4LjcwMjc2NTg1NiArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9maXBzL2ZpcHMuYwkyMDE1LTA0LTIxIDE3OjQyOjE4Ljc0Mjc2Njc5NCArMDIwMAorQEAgLTYw LDYgKzYwLDggQEAKKyAjaW5jbHVkZSA8ZGxmY24uaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAj aW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxlcnJu by5oPgorICNpbmNsdWRlICJmaXBzX2xvY2wuaCIKKyAKKyAjaWZkZWYgT1BFTlNTTF9GSVBTCitA QCAtMjAxLDcgKzIwMyw5IEBAIHN0YXRpYyBjaGFyICpiaW4yaGV4KHZvaWQgKmJ1Ziwgc2l6ZV90 IGwKKyB9CisgCisgIyBkZWZpbmUgSE1BQ19QUkVGSVggIi4iCistIyBkZWZpbmUgSE1BQ19TVUZG SVggIi5obWFjIgorKyMgaWZuZGVmIEhNQUNfU1VGRklYCisrIyAgZGVmaW5lIEhNQUNfU1VGRklY ICIuaG1hYyIKKysjIGVuZGlmCisgIyBkZWZpbmUgUkVBRF9CVUZGRVJfTEVOR1RIIDE2Mzg0Cisg Cisgc3RhdGljIGNoYXIgKm1ha2VfaG1hY19wYXRoKGNvbnN0IGNoYXIgKm9yaWdwYXRoKQorQEAg LTI3OSwyMCArMjgzLDE0IEBAIHN0YXRpYyBpbnQgY29tcHV0ZV9maWxlX2htYWMoY29uc3QgY2hh cgorICAgICByZXR1cm4gcnY7CisgfQorIAorLXN0YXRpYyBpbnQgRklQU0NIRUNLX3ZlcmlmeShj b25zdCBjaGFyICpsaWJuYW1lLCBjb25zdCBjaGFyICpzeW1ib2xuYW1lKQorK3N0YXRpYyBpbnQg RklQU0NIRUNLX3ZlcmlmeShjb25zdCBjaGFyICpwYXRoKQorIHsKKy0gICAgY2hhciBwYXRoW1BB VEhfTUFYICsgMV07CistICAgIGludCBydjsKKysgICAgaW50IHJ2ID0gMDsKKyAgICAgRklMRSAq aGY7CisgICAgIGNoYXIgKmhtYWNwYXRoLCAqcDsKKyAgICAgY2hhciAqaG1hYyA9IE5VTEw7Cisg ICAgIHNpemVfdCBuOworIAorLSAgICBydiA9IGdldF9saWJyYXJ5X3BhdGgobGlibmFtZSwgc3lt Ym9sbmFtZSwgcGF0aCwgc2l6ZW9mKHBhdGgpKTsKKy0KKy0gICAgaWYgKHJ2IDwgMCkKKy0gICAg ICAgIHJldHVybiAwOworLQorICAgICBobWFjcGF0aCA9IG1ha2VfaG1hY19wYXRoKHBhdGgpOwor ICAgICBpZiAoaG1hY3BhdGggPT0gTlVMTCkKKyAgICAgICAgIHJldHVybiAwOworQEAgLTM0Myw2 ICszNDEsNTEgQEAgc3RhdGljIGludCBGSVBTQ0hFQ0tfdmVyaWZ5KGNvbnN0IGNoYXIgKgorICAg ICByZXR1cm4gMTsKKyB9CisgCisrc3RhdGljIGludCB2ZXJpZnlfY2hlY2tzdW1zKHZvaWQpCisr eworKyAgICBpbnQgcnY7CisrICAgIGNoYXIgcGF0aFtQQVRIX01BWCArIDFdOworKyAgICBjaGFy ICpwOworKworKyAgICAvKiB3ZSBuZWVkIHRvIGF2b2lkIGRsb3BlbmluZyBsaWJzc2wsIGFzc3Vt ZSBib3RoIGxpYmNyeXB0byBhbmQgbGlic3NsCisrICAgICAgIGFyZSBpbiB0aGUgc2FtZSBkaXJl Y3RvcnkgKi8KKysKKysgICAgcnYgPSBnZXRfbGlicmFyeV9wYXRoKCJsaWJjcnlwdG8uc28uIiBT SExJQl9WRVJTSU9OX05VTUJFUiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICJGSVBTX21v ZGVfc2V0IiwgcGF0aCwgc2l6ZW9mKHBhdGgpKTsKKysgICAgaWYgKHJ2IDwgMCkKKysgICAgICAg IHJldHVybiAwOworKworKyAgICBydiA9IEZJUFNDSEVDS192ZXJpZnkocGF0aCk7CisrICAgIGlm ICghcnYpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgLyogcmVwbGFjZSBsaWJjcnlwdG8g d2l0aCBsaWJzc2wgKi8KKysgICAgd2hpbGUgKChwID0gc3Ryc3RyKHBhdGgsICJsaWJjcnlwdG8u c28iKSkgIT0gTlVMTCkgeworKyAgICAgICAgcCA9IHN0cGNweShwLCAibGlic3NsIik7CisrICAg ICAgICBtZW1tb3ZlKHAsIHAgKyAzLCBzdHJsZW4ocCArIDIpKTsKKysgICAgfQorKworKyAgICBy diA9IEZJUFNDSEVDS192ZXJpZnkocGF0aCk7CisrICAgIGlmICghcnYpCisrICAgICAgICByZXR1 cm4gMDsKKysgICAgcmV0dXJuIDE7CisrfQorKworKyMgaWZuZGVmIEZJUFNfTU9EVUxFX1BBVEgK KysjICBkZWZpbmUgRklQU19NT0RVTEVfUEFUSCAiL2V0Yy9zeXN0ZW0tZmlwcyIKKysjIGVuZGlm CisrCisraW50IEZJUFNfbW9kdWxlX2luc3RhbGxlZCh2b2lkKQorK3sKKysgICAgaW50IHJ2Owor KyAgICBydiA9IGFjY2VzcyhGSVBTX01PRFVMRV9QQVRILCBGX09LKTsKKysgICAgaWYgKHJ2IDwg MCAmJiBlcnJubyAhPSBFTk9FTlQpCisrICAgICAgICBydiA9IDA7CisrCisrICAgIC8qIEluc3Rh bGxlZCA9PSB0cnVlICovCisrICAgIHJldHVybiAhcnY7CisrfQorKworIGludCBGSVBTX21vZHVs ZV9tb2RlX3NldChpbnQgb25vZmYsIGNvbnN0IGNoYXIgKmF1dGgpCisgeworICAgICBpbnQgcmV0 ID0gMDsKK0BAIC0zODAsMTcgKzQyMyw3IEBAIGludCBGSVBTX21vZHVsZV9tb2RlX3NldChpbnQg b25vZmYsIGNvbnMKKyAgICAgICAgIH0KKyAjIGVuZGlmCisgCistICAgICAgICBpZiAoIUZJUFND SEVDS192ZXJpZnkKKy0gICAgICAgICAgICAoImxpYmNyeXB0by5zby4iIFNITElCX1ZFUlNJT05f TlVNQkVSLCAiRklQU19tb2RlX3NldCIpKSB7CistICAgICAgICAgICAgRklQU2VycihGSVBTX0Zf RklQU19NT0RVTEVfTU9ERV9TRVQsCistICAgICAgICAgICAgICAgICAgICBGSVBTX1JfRklOR0VS UFJJTlRfRE9FU19OT1RfTUFUQ0gpOworLSAgICAgICAgICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9 IDE7CistICAgICAgICAgICAgcmV0ID0gMDsKKy0gICAgICAgICAgICBnb3RvIGVuZDsKKy0gICAg ICAgIH0KKy0KKy0gICAgICAgIGlmICghRklQU0NIRUNLX3ZlcmlmeQorLSAgICAgICAgICAgICgi bGlic3NsLnNvLiIgU0hMSUJfVkVSU0lPTl9OVU1CRVIsICJTU0xfQ1RYX25ldyIpKSB7CisrICAg ICAgICBpZiAoIXZlcmlmeV9jaGVja3N1bXMoKSkgeworICAgICAgICAgICAgIEZJUFNlcnIoRklQ U19GX0ZJUFNfTU9EVUxFX01PREVfU0VULAorICAgICAgICAgICAgICAgICAgICAgRklQU19SX0ZJ TkdFUlBSSU5UX0RPRVNfTk9UX01BVENIKTsKKyAgICAgICAgICAgICBmaXBzX3NlbGZ0ZXN0X2Zh aWwgPSAxOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5oLmZpcHMt Y3RvciBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmgKKy0tLSBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZmlwcy9maXBzLmguZmlwcy1jdG9yCTIwMTUtMDQtMjEgMTc6NDI6MTguNzM5NzY2 NzI0ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5oCTIwMTUtMDQt MjEgMTc6NDI6MTguNzQzNzY2ODE4ICswMjAwCitAQCAtNzQsNiArNzQsNyBAQCBleHRlcm4gIkMi IHsKKyAKKyAgICAgaW50IEZJUFNfbW9kdWxlX21vZGVfc2V0KGludCBvbm9mZiwgY29uc3QgY2hh ciAqYXV0aCk7CisgICAgIGludCBGSVBTX21vZHVsZV9tb2RlKHZvaWQpOworKyAgICBpbnQgRklQ U19tb2R1bGVfaW5zdGFsbGVkKHZvaWQpOworICAgICBjb25zdCB2b2lkICpGSVBTX3JhbmRfY2hl Y2sodm9pZCk7CisgICAgIGludCBGSVBTX3NlbGZ0ZXN0KHZvaWQpOworICAgICBpbnQgRklQU19z ZWxmdGVzdF9mYWlsZWQodm9pZCk7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb19p bml0LmMuZmlwcy1jdG9yIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9vX2luaXQuYworLS0tIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9vX2luaXQuYy5maXBzLWN0b3IJMjAxNS0wNC0yMSAxNzo0MjoxOC43 MzI3NjY1NTkgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb19pbml0LmMJMjAxNS0w NC0yMSAxNzo0NTowMi42NjI2MTMxNzMgKzAyMDAKK0BAIC03NCw2ICs3NCw5IEBAIHN0YXRpYyB2 b2lkIGluaXRfZmlwc19tb2RlKHZvaWQpCisgICAgIGNoYXIgYnVmWzJdID0gIjAiOworICAgICBp bnQgZmQ7CisgCisrICAgIC8qIEVuc3VyZSB0aGUgc2VsZnRlc3RzIGFsd2F5cyBydW4gKi8KKysg ICAgRklQU19tb2RlX3NldCgxKTsKKysKKyAgICAgaWYgKHNlY3VyZV9nZXRlbnYoIk9QRU5TU0xf Rk9SQ0VfRklQU19NT0RFIikgIT0gTlVMTCkgeworICAgICAgICAgYnVmWzBdID0gJzEnOworICAg ICB9IGVsc2UgaWYgKChmZCA9IG9wZW4oRklQU19NT0RFX1NXSVRDSF9GSUxFLCBPX1JET05MWSkp ID49IDApIHsKK0BAIC04NSw4ICs4OCwxMiBAQCBzdGF0aWMgdm9pZCBpbml0X2ZpcHNfbW9kZSh2 b2lkKQorICAgICAgKiBvdGhlcndpc2UuLgorICAgICAgKi8KKyAKKy0gICAgaWYgKGJ1ZlswXSA9 PSAnMScpIHsKKy0gICAgICAgIEZJUFNfbW9kZV9zZXQoMSk7CisrICAgIGlmIChidWZbMF0gIT0g JzEnKSB7CisrICAgICAgICAvKiBkcm9wIGRvd24gdG8gbm9uLUZJUFMgbW9kZSBpZiBpdCBpcyBu b3QgcmVxdWVzdGVkICovCisrICAgICAgICBGSVBTX21vZGVfc2V0KDApOworKyAgICB9IGVsc2Ug eworKyAgICAgICAgLyogYWJvcnQgaWYgc2VsZnRlc3QgZmFpbGVkICovCisrICAgICAgICBGSVBT X3NlbGZ0ZXN0X2NoZWNrKCk7CisgICAgIH0KKyB9CisgI2VuZGlmCitAQCAtOTYsMTMgKzEwMywx NiBAQCBzdGF0aWMgdm9pZCBpbml0X2ZpcHNfbW9kZSh2b2lkKQorICAqIHNldHMgRklQUyBjYWxs YmFja3MKKyAgKi8KKyAKKy12b2lkIE9QRU5TU0xfaW5pdF9saWJyYXJ5KHZvaWQpCisrdm9pZCBf X2F0dHJpYnV0ZV9fICgoY29uc3RydWN0b3IpKSBPUEVOU1NMX2luaXRfbGlicmFyeSh2b2lkKQor IHsKKyAgICAgc3RhdGljIGludCBkb25lID0gMDsKKyAgICAgaWYgKGRvbmUpCisgICAgICAgICBy ZXR1cm47CisgICAgIGRvbmUgPSAxOworICNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKCFG SVBTX21vZHVsZV9pbnN0YWxsZWQoKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisgICAg IFJBTkRfaW5pdF9maXBzKCk7CisgICAgIGluaXRfZmlwc19tb2RlKCk7CisgICAgIGlmICghRklQ U19tb2RlKCkpIHsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1maXBzLWVjLnBhdGNoIGIv b3BlbnNzbC0xLjAuMmEtZmlwcy1lYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lNDJmNGExCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmEtZmlwcy1l Yy5wYXRjaApAQCAtMCwwICsxLDE5MjkgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9lY2RoL2VjZGh0ZXN0LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkaC9lY2Ro dGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZGgvZWNkaHRlc3QuYy5maXBzLWVj CTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2VjZGgvZWNkaHRlc3QuYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyMTg4NDUxMiArMDIw MAorQEAgLTUwMSwxMSArNTAxLDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CisgICAgICAgICBnb3RvIGVycjsKKyAKKyAgICAgLyogTklTVCBQUklNRSBDVVJWRVMgVEVTVFMg Ki8KKysjIGlmIDAKKyAgICAgaWYgKCF0ZXN0X2VjZGhfY3VydmUKKyAgICAgICAgIChOSURfWDlf NjJfcHJpbWUxOTJ2MSwgIk5JU1QgUHJpbWUtQ3VydmUgUC0xOTIiLCBjdHgsIG91dCkpCisgICAg ICAgICBnb3RvIGVycjsKKyAgICAgaWYgKCF0ZXN0X2VjZGhfY3VydmUoTklEX3NlY3AyMjRyMSwg Ik5JU1QgUHJpbWUtQ3VydmUgUC0yMjQiLCBjdHgsIG91dCkpCisgICAgICAgICBnb3RvIGVycjsK KysjIGVuZGlmCisgICAgIGlmICghdGVzdF9lY2RoX2N1cnZlCisgICAgICAgICAoTklEX1g5XzYy X3ByaW1lMjU2djEsICJOSVNUIFByaW1lLUN1cnZlIFAtMjU2IiwgY3R4LCBvdXQpKQorICAgICAg ICAgZ290byBlcnI7CitAQCAtNTM2LDEzICs1MzgsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKKyAgICAgaWYgKCF0ZXN0X2VjZGhfY3VydmUoTklEX3NlY3Q1NzFyMSwgIk5J U1QgQmluYXJ5LUN1cnZlIEItNTcxIiwgY3R4LCBvdXQpKQorICAgICAgICAgZ290byBlcnI7Cisg IyBlbmRpZgorKyMgaWYgMAorICAgICBpZiAoIXRlc3RfZWNkaF9rYXQob3V0LCAiQnJhaW5wb29s IFByaW1lLUN1cnZlIGJyYWlucG9vbFAyNTZyMSIsIDI1NikpCisgICAgICAgICBnb3RvIGVycjsK KyAgICAgaWYgKCF0ZXN0X2VjZGhfa2F0KG91dCwgIkJyYWlucG9vbCBQcmltZS1DdXJ2ZSBicmFp bnBvb2xQMzg0cjEiLCAzODQpKQorICAgICAgICAgZ290byBlcnI7CisgICAgIGlmICghdGVzdF9l Y2RoX2thdChvdXQsICJCcmFpbnBvb2wgUHJpbWUtQ3VydmUgYnJhaW5wb29sUDUxMnIxIiwgNTEy KSkKKyAgICAgICAgIGdvdG8gZXJyOworLQorKyMgZW5kaWYKKyAgICAgcmV0ID0gMDsKKyAKKyAg ZXJyOgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZGgvZWNoX2xpYi5jLmZpcHMt ZWMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZGgvZWNoX2xpYi5jCistLS0gb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2VjZGgvZWNoX2xpYi5jLmZpcHMtZWMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAw MDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkaC9lY2hfbGliLmMJMjAx NS0wNC0yMiAxOTowMDoxOS43MjE4ODQ1MTIgKzAyMDAKK0BAIC05MywxNCArOTMsNyBAQCB2b2lk IEVDREhfc2V0X2RlZmF1bHRfbWV0aG9kKGNvbnN0IEVDREhfCisgY29uc3QgRUNESF9NRVRIT0Qg KkVDREhfZ2V0X2RlZmF1bHRfbWV0aG9kKHZvaWQpCisgeworICAgICBpZiAoIWRlZmF1bHRfRUNE SF9tZXRob2QpIHsKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgICAgICBpZiAoRklQU19tb2Rl KCkpCistICAgICAgICAgICAgcmV0dXJuIEZJUFNfZWNkaF9vcGVuc3NsKCk7CistICAgICAgICBl bHNlCistICAgICAgICAgICAgcmV0dXJuIEVDREhfT3BlblNTTCgpOworLSNlbHNlCisgICAgICAg ICBkZWZhdWx0X0VDREhfbWV0aG9kID0gRUNESF9PcGVuU1NMKCk7CistI2VuZGlmCisgICAgIH0K KyAgICAgcmV0dXJuIGRlZmF1bHRfRUNESF9tZXRob2Q7CisgfQorZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2VjZGgvZWNoX29zc2wuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9lY2RoL2VjaF9vc3NsLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkaC9lY2hfb3Nz bC5jLmZpcHMtZWMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZWNkaC9lY2hfb3NzbC5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIy ODg0NTM2ICswMjAwCitAQCAtNzgsNiArNzgsMTAgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9vYmpf bWFjLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KKyAKKysjaWZkZWYgT1BFTlNTTF9GSVBT CisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjZW5kaWYKKysKKyBzdGF0aWMgaW50IGVj ZGhfY29tcHV0ZV9rZXkodm9pZCAqb3V0LCBzaXplX3QgbGVuLCBjb25zdCBFQ19QT0lOVCAqcHVi X2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNfS0VZICplY2RoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICooKktERikgKGNvbnN0IHZvaWQgKmluLCBzaXpl X3QgaW5sZW4sCitAQCAtOTAsNyArOTQsNyBAQCBzdGF0aWMgRUNESF9NRVRIT0Qgb3BlbnNzbF9l Y2RoX21ldGggPSB7CisgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0ICov CisgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBmaW5pc2ggKi8KKyAjZW5kaWYK Ky0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZsYWdzICovCisrICAgIEVDREhf RkxBR19GSVBTX01FVEhPRCwgICAgICAvKiBmbGFncyAqLworICAgICBOVUxMICAgICAgICAgICAg ICAgICAgICAgICAgLyogYXBwX2RhdGEgKi8KKyB9OworIAorQEAgLTExOSw2ICsxMjMsMTMgQEAg c3RhdGljIGludCBlY2RoX2NvbXB1dGVfa2V5KHZvaWQgKm91dCwgcworICAgICBzaXplX3QgYnVm bGVuLCBsZW47CisgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiA9IE5VTEw7CisgCisrI2lmZGVmIE9Q RU5TU0xfRklQUworKyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgeworKyAgICAgICAg RklQU2VycihGSVBTX0ZfRUNESF9DT01QVVRFX0tFWSwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJ TEVEKTsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorKyNlbmRpZgorKworICAgICBpZiAo b3V0bGVuID4gSU5UX01BWCkgeworICAgICAgICAgRUNESGVycihFQ0RIX0ZfRUNESF9DT01QVVRF X0tFWSwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOyAvKiBzb3J0IG9mLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbnl3 YXkgKi8KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lY2RzYS9lY2RzYXRlc3QuYy5m aXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lY2RzYS9lY2RzYXRlc3QuYworLS0tIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9lY2RzYS9lY2RzYXRlc3QuYy5maXBzLWVjCTIwMTUtMDMtMTkgMTQ6 MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZHNhL2Vj ZHNhdGVzdC5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIyODg0NTM2ICswMjAwCitAQCAtMTM4LDEx ICsxMzgsMTQgQEAgaW50IHJlc3RvcmVfcmFuZCh2b2lkKQorIH0KKyAKKyBzdGF0aWMgaW50IGZi eXRlc19jb3VudGVyID0gMDsKKy1zdGF0aWMgY29uc3QgY2hhciAqbnVtYmVyc1s4XSA9IHsKKytz dGF0aWMgY29uc3QgY2hhciAqbnVtYmVyc1sxMF0gPSB7CisrICAgICI2NTEwNTY3NzA5MDYwMTUw NzYwNTY4MTA3NjM0NTYzNTg1NjcxOTAxMDAxNTY2OTU2MTU2NjU2NTkiLAorICAgICAiNjUxMDU2 NzcwOTA2MDE1MDc2MDU2ODEwNzYzNDU2MzU4NTY3MTkwMTAwMTU2Njk1NjE1NjY1NjU5IiwKKyAg ICAgIjYxNDA1MDcwNjcwNjUwMDEwNjMwNjUwNjU1NjU2Njc0MDU1NjAwMDYxNjE1NTY1NjU2NjU2 NTY2NTQiLAorICAgICAiODc2MzAwMTAxNTA3MTA3NTY3NTAxMDY2MTMwNzYxNjcxMDc4MzU3MDEw NjcxMDY3NzgxNzc2NzE2NiIKKyAgICAgICAgICI3MTY3NjE3ODcyNjcxNyIsCisrICAgICI4NzYz MDAxMDE1MDcxMDc1Njc1MDEwNjYxMzA3NjE2NzEwNzgzNTcwMTA2NzEwNjc3ODE3NzY3MTY2Igor KyAgICAgICAgIjcxNjc2MTc4NzI2NzE3IiwKKyAgICAgIjcwMDAwMDAxNzU2OTA1NjY0NjY1NTUw NTc4MTc1NzE1NzEwNzU3MDUwMTU3NTc3NTcwNTc3OTU3NTUiCisgICAgICAgICAiNTU2NTcxNTY3 NTY2NTUiLAorICAgICAiMTI3NTU1MjE5MTExMzIxMjMwMDAxMjAzMDQzOTE4NzE0NjE2NDY0NjE0 NjY0NjQ2Njc0OTQ5NDc5OSIsCitAQCAtMTU4LDcgKzE2MSw3IEBAIGludCBmYnl0ZXModW5zaWdu ZWQgY2hhciAqYnVmLCBpbnQgbnVtKQorICAgICBpbnQgcmV0OworICAgICBCSUdOVU0gKnRtcCA9 IE5VTEw7CisgCistICAgIGlmIChmYnl0ZXNfY291bnRlciA+PSA4KQorKyAgICBpZiAoZmJ5dGVz X2NvdW50ZXIgPj0gMTApCisgICAgICAgICByZXR1cm4gMDsKKyAgICAgdG1wID0gQk5fbmV3KCk7 CisgICAgIGlmICghdG1wKQorQEAgLTUzMiw4ICs1MzUsMTAgQEAgaW50IG1haW4odm9pZCkKKyAg ICAgUkFORF9zZWVkKHJuZF9zZWVkLCBzaXplb2Yocm5kX3NlZWQpKTsKKyAKKyAgICAgLyogdGhl IHRlc3RzICovCisrIyBpZiAwCisgICAgIGlmICgheDlfNjJfdGVzdHMob3V0KSkKKyAgICAgICAg IGdvdG8gZXJyOworKyMgZW5kaWYKKyAgICAgaWYgKCF0ZXN0X2J1aWx0aW4ob3V0KSkKKyAgICAg ICAgIGdvdG8gZXJyOworIAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZHNhL2Vj c19saWIuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lY2RzYS9lY3NfbGliLmMKKy0t LSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkc2EvZWNzX2xpYi5jLmZpcHMtZWMJMjAxNS0wMy0x OSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNk c2EvZWNzX2xpYi5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIyODg0NTM2ICswMjAwCitAQCAtODAs MTQgKzgwLDcgQEAgdm9pZCBFQ0RTQV9zZXRfZGVmYXVsdF9tZXRob2QoY29uc3QgRUNEUworIGNv bnN0IEVDRFNBX01FVEhPRCAqRUNEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kKHZvaWQpCisgeworICAg ICBpZiAoIWRlZmF1bHRfRUNEU0FfbWV0aG9kKSB7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAg ICAgICAgaWYgKEZJUFNfbW9kZSgpKQorLSAgICAgICAgICAgIHJldHVybiBGSVBTX2VjZHNhX29w ZW5zc2woKTsKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICByZXR1cm4gRUNEU0FfT3BlblNT TCgpOworLSNlbHNlCisgICAgICAgICBkZWZhdWx0X0VDRFNBX21ldGhvZCA9IEVDRFNBX09wZW5T U0woKTsKKy0jZW5kaWYKKyAgICAgfQorICAgICByZXR1cm4gZGVmYXVsdF9FQ0RTQV9tZXRob2Q7 CisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZHNhL2Vjc19vc3NsLmMuZmlw cy1lYyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkc2EvZWNzX29zc2wuYworLS0tIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9lY2RzYS9lY3Nfb3NzbC5jLmZpcHMtZWMJMjAxNS0wMy0xOSAxNDozMDoz Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkc2EvZWNzX29z c2wuYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyMjg4NDUzNiArMDIwMAorQEAgLTYwLDYgKzYwLDkg QEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9vYmpfbWFj Lmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrIyBp bmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjZW5kaWYKKyAKKyBzdGF0aWMgRUNEU0FfU0lHICpl Y2RzYV9kb19zaWduKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICosIGNvbnN0IEJJR05VTSAq LAorQEAgLTc4LDcgKzgxLDcgQEAgc3RhdGljIEVDRFNBX01FVEhPRCBvcGVuc3NsX2VjZHNhX21l dGggPQorICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdCAqLworICAgICBO VUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogZmluaXNoICovCisgI2VuZGlmCistICAgIDAs ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmbGFncyAqLworKyAgICBFQ0RTQV9GTEFHX0ZJ UFNfTUVUSE9ELCAgICAgLyogZmxhZ3MgKi8KKyAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAg ICAgIC8qIGFwcF9kYXRhICovCisgfTsKKyAKK0BAIC0yNDUsNiArMjQ4LDEzIEBAIHN0YXRpYyBF Q0RTQV9TSUcgKmVjZHNhX2RvX3NpZ24oY29uc3QgdW4KKyAgICAgRUNEU0FfREFUQSAqZWNkc2E7 CisgICAgIGNvbnN0IEJJR05VTSAqcHJpdl9rZXk7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUwor KyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgeworKyAgICAgICAgRklQU2VycihGSVBT X0ZfRUNEU0FfRE9fU0lHTiwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAg IHJldHVybiBOVUxMOworKyAgICB9CisrI2VuZGlmCisrCisgICAgIGVjZHNhID0gZWNkc2FfY2hl Y2soZWNrZXkpOworICAgICBncm91cCA9IEVDX0tFWV9nZXQwX2dyb3VwKGVja2V5KTsKKyAgICAg cHJpdl9rZXkgPSBFQ19LRVlfZ2V0MF9wcml2YXRlX2tleShlY2tleSk7CitAQCAtMzU4LDYgKzM2 OCwxMyBAQCBzdGF0aWMgaW50IGVjZHNhX2RvX3ZlcmlmeShjb25zdCB1bnNpZ25lCisgICAgIGNv bnN0IEVDX0dST1VQICpncm91cDsKKyAgICAgY29uc3QgRUNfUE9JTlQgKnB1Yl9rZXk7CisgCisr I2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgewor KyAgICAgICAgRklQU2VycihGSVBTX0ZfRUNEU0FfRE9fVkVSSUZZLCBGSVBTX1JfRklQU19TRUxG VEVTVF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIC0xOworKyAgICB9CisrI2VuZGlmCisrCisg ICAgIC8qIGNoZWNrIGlucHV0IHZhbHVlcyAqLworICAgICBpZiAoZWNrZXkgPT0gTlVMTCB8fCAo Z3JvdXAgPSBFQ19LRVlfZ2V0MF9ncm91cChlY2tleSkpID09IE5VTEwgfHwKKyAgICAgICAgIChw dWJfa2V5ID0gRUNfS0VZX2dldDBfcHVibGljX2tleShlY2tleSkpID09IE5VTEwgfHwgc2lnID09 IE5VTEwpIHsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lYy9lY19jdnQuYy5maXBz LWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lYy9lY19jdnQuYworLS0tIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9lYy9lY19jdnQuYy5maXBzLWVjCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAw ICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjX2N2dC5jCTIwMTUtMDQtMjIg MTk6MDE6MDguNzAzMDQwNzU2ICswMjAwCitAQCAtODIsMTAgKzgyLDYgQEAgRUNfR1JPVVAgKkVD X0dST1VQX25ld19jdXJ2ZV9HRnAoY29uc3QgQgorICAgICBjb25zdCBFQ19NRVRIT0QgKm1ldGg7 CisgICAgIEVDX0dST1VQICpyZXQ7CisgCistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAo RklQU19tb2RlKCkpCistICAgICAgICByZXR1cm4gRklQU19lY19ncm91cF9uZXdfY3VydmVfZ2Zw KHAsIGEsIGIsIGN0eCk7CistI2VuZGlmCisgI2lmIGRlZmluZWQoT1BFTlNTTF9CTl9BU01fTU9O VCkKKyAgICAgLyoKKyAgICAgICogVGhpcyBtaWdodCBhcHBlYXIgY29udHJvdmVyc2lhbCwgYnV0 IHRoZSBmYWN0IGlzIHRoYXQgZ2VuZXJpYworQEAgLTE2MCwxMCArMTU2LDYgQEAgRUNfR1JPVVAg KkVDX0dST1VQX25ld19jdXJ2ZV9HRjJtKGNvbnN0CisgICAgIGNvbnN0IEVDX01FVEhPRCAqbWV0 aDsKKyAgICAgRUNfR1JPVVAgKnJldDsKKyAKKy0jIGlmZGVmIE9QRU5TU0xfRklQUworLSAgICBp ZiAoRklQU19tb2RlKCkpCistICAgICAgICByZXR1cm4gRklQU19lY19ncm91cF9uZXdfY3VydmVf Z2YybShwLCBhLCBiLCBjdHgpOworLSMgZW5kaWYKKyAgICAgbWV0aCA9IEVDX0dGMm1fc2ltcGxl X21ldGhvZCgpOworIAorICAgICByZXQgPSBFQ19HUk9VUF9uZXcobWV0aCk7CitkaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZWMvZWNfa2V5LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZWMvZWNfa2V5LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWMvZWNfa2V5LmMu Zmlwcy1lYwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9lYy9lY19rZXkuYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyMjg4NDUzNiAr MDIwMAorQEAgLTY0LDkgKzY0LDYgQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUg ImVjX2xjbC5oIgorICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorLSNpZmRlZiBPUEVOU1NMX0ZJ UFMKKy0jIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorLSNlbmRpZgorIAorIEVDX0tFWSAqRUNf S0VZX25ldyh2b2lkKQorIHsKK0BAIC0yMjcsNiArMjI0LDM4IEBAIGludCBFQ19LRVlfdXBfcmVm KEVDX0tFWSAqcikKKyAgICAgcmV0dXJuICgoaSA+IDEpID8gMSA6IDApOworIH0KKyAKKysjaWZk ZWYgT1BFTlNTTF9GSVBTCisrCisrIyBpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyMgaW5jbHVk ZSA8b3BlbnNzbC9maXBzLmg+CisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgorKwor K3N0YXRpYyBpbnQgZmlwc19jaGVja19lYyhFQ19LRVkgKmtleSkKKyt7CisrICAgIEVWUF9QS0VZ ICpwazsKKysgICAgdW5zaWduZWQgY2hhciB0YnNbXSA9ICJFQ0RTQSBQYWlyd2lzZSBDaGVjayBE YXRhIjsKKysgICAgaW50IHJldCA9IDA7CisrCisrICAgIGlmICgocGsgPSBFVlBfUEtFWV9uZXco KSkgPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBFVlBfUEtFWV9zZXQxX0VD X0tFWShwaywga2V5KTsKKysKKysgICAgaWYgKGZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywg dGJzLCAtMSwgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCkpCisrICAgICAgICByZXQgPSAxOworKwor KyBlcnI6CisrICAgIGlmIChyZXQgPT0gMCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQ U19DSEVDS19FQywgRklQU19SX1BBSVJXSVNFX1RFU1RfRkFJTEVEKTsKKysgICAgICAgIGZpcHNf c2V0X3NlbGZ0ZXN0X2ZhaWwoKTsKKysgICAgfQorKyAgICBpZiAocGspCisrICAgICAgICBFVlBf UEtFWV9mcmVlKHBrKTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrI2VuZGlmCisrCisgaW50 IEVDX0tFWV9nZW5lcmF0ZV9rZXkoRUNfS0VZICplY2tleSkKKyB7CisgICAgIGludCBvayA9IDA7 CitAQCAtMjM1LDggKzI2NCwxMCBAQCBpbnQgRUNfS0VZX2dlbmVyYXRlX2tleShFQ19LRVkgKmVj a2V5KQorICAgICBFQ19QT0lOVCAqcHViX2tleSA9IE5VTEw7CisgCisgI2lmZGVmIE9QRU5TU0xf RklQUworLSAgICBpZiAoRklQU19tb2RlKCkpCistICAgICAgICByZXR1cm4gRklQU19lY19rZXlf Z2VuZXJhdGVfa2V5KGVja2V5KTsKKysgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsK KysgICAgICAgIEZJUFNlcnIoRklQU19GX0VDX0tFWV9HRU5FUkFURV9LRVksIEZJUFNfUl9GSVBT X1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorICNlbmRpZgor IAorICAgICBpZiAoIWVja2V5IHx8ICFlY2tleS0+Z3JvdXApIHsKK0BAIC0yNzcsNiArMzA4LDE0 IEBAIGludCBFQ19LRVlfZ2VuZXJhdGVfa2V5KEVDX0tFWSAqZWNrZXkpCisgICAgIGVja2V5LT5w cml2X2tleSA9IHByaXZfa2V5OworICAgICBlY2tleS0+cHViX2tleSA9IHB1Yl9rZXk7CisgCisr I2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoIWZpcHNfY2hlY2tfZWMoZWNrZXkpKSB7Cisr ICAgICAgICBlY2tleS0+cHJpdl9rZXkgPSBOVUxMOworKyAgICAgICAgZWNrZXktPnB1Yl9rZXkg PSBOVUxMOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysjZW5kaWYKKysKKyAgICAgb2sg PSAxOworIAorICBlcnI6CitAQCAtNDA4LDEwICs0NDcsMTIgQEAgaW50IEVDX0tFWV9zZXRfcHVi bGljX2tleV9hZmZpbmVfY29vcmRpbgorICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICB9Cisg ICAgIC8qCistICAgICAqIENoZWNrIGlmIHJldHJpZXZlZCBjb29yZGluYXRlcyBtYXRjaCBvcmln aW5hbHM6IGlmIG5vdCB2YWx1ZXMgYXJlIG91dAorLSAgICAgKiBvZiByYW5nZS4KKysgICAgICog Q2hlY2sgaWYgcmV0cmlldmVkIGNvb3JkaW5hdGVzIG1hdGNoIG9yaWdpbmFscyBhbmQgYXJlIGxl c3MKKysgICAgICogdGhhbiBmaWVsZCBvcmRlcjogaWYgbm90IHZhbHVlcyBhcmUgb3V0IG9mIHJh bmdlLgorICAgICAgKi8KKy0gICAgaWYgKEJOX2NtcCh4LCB0eCkgfHwgQk5fY21wKHksIHR5KSkg eworKyAgICBpZiAoQk5fY21wKHgsIHR4KSB8fCBCTl9jbXAoeSwgdHkpCisrICAgICAgICB8fCAo Qk5fY21wKHgsICZrZXktPmdyb3VwLT5maWVsZCkgPj0gMCkKKysgICAgICAgIHx8IChCTl9jbXAo eSwgJmtleS0+Z3JvdXAtPmZpZWxkKSA+PSAwKSkgeworICAgICAgICAgRUNlcnIoRUNfRl9FQ19L RVlfU0VUX1BVQkxJQ19LRVlfQUZGSU5FX0NPT1JESU5BVEVTLAorICAgICAgICAgICAgICAgRUNf Ul9DT09SRElOQVRFU19PVVRfT0ZfUkFOR0UpOworICAgICAgICAgZ290byBlcnI7CitkaWZmIC11 cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWMvZWNwX21vbnQuYy5maXBzLWVjIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9lYy9lY3BfbW9udC5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2Vj cF9tb250LmMuZmlwcy1lYwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysr IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lYy9lY3BfbW9udC5jCTIwMTUtMDQtMjIgMTk6MDA6MTku NzIyODg0NTM2ICswMjAwCitAQCAtNjMsMTAgKzYzLDYgQEAKKyAKKyAjaW5jbHVkZSA8b3BlbnNz bC9lcnIuaD4KKyAKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistIyBpbmNsdWRlIDxvcGVuc3NsL2Zp cHMuaD4KKy0jZW5kaWYKKy0KKyAjaW5jbHVkZSAiZWNfbGNsLmgiCisgCisgY29uc3QgRUNfTUVU SE9EICpFQ19HRnBfbW9udF9tZXRob2Qodm9pZCkKK0BAIC0xMTEsMTEgKzEwNyw2IEBAIGNvbnN0 IEVDX01FVEhPRCAqRUNfR0ZwX21vbnRfbWV0aG9kKHZvaWQKKyAgICAgICAgIGVjX0dGcF9tb250 X2ZpZWxkX3NldF90b19vbmUKKyAgICAgfTsKKyAKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAg IGlmIChGSVBTX21vZGUoKSkKKy0gICAgICAgIHJldHVybiBmaXBzX2VjX2dmcF9tb250X21ldGhv ZCgpOworLSNlbmRpZgorLQorICAgICByZXR1cm4gJnJldDsKKyB9CisgCitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZWMvZWNwX25pc3QuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9lYy9lY3BfbmlzdC5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjcF9uaXN0 LmMuZmlwcy1lYwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9lYy9lY3BfbmlzdC5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIzODg0 NTYwICswMjAwCitAQCAtNjcsMTAgKzY3LDYgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9vYmpfbWFj Lmg+CisgI2luY2x1ZGUgImVjX2xjbC5oIgorIAorLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0jIGlu Y2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorLSNlbmRpZgorLQorIGNvbnN0IEVDX01FVEhPRCAqRUNf R0ZwX25pc3RfbWV0aG9kKHZvaWQpCisgeworICAgICBzdGF0aWMgY29uc3QgRUNfTUVUSE9EIHJl dCA9IHsKK0BAIC0xMTMsMTEgKzEwOSw2IEBAIGNvbnN0IEVDX01FVEhPRCAqRUNfR0ZwX25pc3Rf bWV0aG9kKHZvaWQKKyAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpZWxkX3Nl dF90b19vbmUgKi8KKyAgICAgfTsKKyAKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgIGlmIChG SVBTX21vZGUoKSkKKy0gICAgICAgIHJldHVybiBmaXBzX2VjX2dmcF9uaXN0X21ldGhvZCgpOwor LSNlbmRpZgorLQorICAgICByZXR1cm4gJnJldDsKKyB9CisgCitkaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZWMvZWNwX3NtcGwuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9l Yy9lY3Bfc21wbC5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjcF9zbXBsLmMuZmlw cy1lYwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9lYy9lY3Bfc21wbC5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIzODg0NTYwICsw MjAwCitAQCAtNjYsMTAgKzY2LDYgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKyAjaW5j bHVkZSA8b3BlbnNzbC9zeW1oYWNrcy5oPgorIAorLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0jIGlu Y2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorLSNlbmRpZgorLQorICNpbmNsdWRlICJlY19sY2wuaCIK KyAKKyBjb25zdCBFQ19NRVRIT0QgKkVDX0dGcF9zaW1wbGVfbWV0aG9kKHZvaWQpCitAQCAtMTE0 LDExICsxMTAsNiBAQCBjb25zdCBFQ19NRVRIT0QgKkVDX0dGcF9zaW1wbGVfbWV0aG9kKHZvCisg ICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAvKiBmaWVsZF9zZXRfdG9fb25lICovCisg ICAgIH07CisgCistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAoRklQU19tb2RlKCkpCist ICAgICAgICByZXR1cm4gZmlwc19lY19nZnBfc2ltcGxlX21ldGhvZCgpOworLSNlbmRpZgorLQor ICAgICByZXR1cm4gJnJldDsKKyB9CisgCitAQCAtMTg3LDYgKzE3OCwxMSBAQCBpbnQgZWNfR0Zw X3NpbXBsZV9ncm91cF9zZXRfY3VydmUoRUNfR1JPCisgICAgICAgICByZXR1cm4gMDsKKyAgICAg fQorIAorKyAgICBpZiAoQk5fbnVtX2JpdHMocCkgPCAyNTYpIHsKKysgICAgICAgIEVDZXJyKEVD X0ZfRUNfR0ZQX1NJTVBMRV9HUk9VUF9TRVRfQ1VSVkUsIEVDX1JfVU5TVVBQT1JURURfRklFTEQp OworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKyAgICAgaWYgKGN0eCA9PSBOVUxMKSB7 CisgICAgICAgICBjdHggPSBuZXdfY3R4ID0gQk5fQ1RYX25ldygpOworICAgICAgICAgaWYgKGN0 eCA9PSBOVUxMKQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9tX2VjZHNhLmMu Zmlwcy1lYyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL21fZWNkc2EuYworLS0tIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9ldnAvbV9lY2RzYS5jLmZpcHMtZWMJMjAxNS0wMy0xOSAxNDozMDozNi4w MDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL21fZWNkc2EuYwky MDE1LTA0LTIyIDE5OjAwOjE5LjcyMzg4NDU2MCArMDIwMAorQEAgLTEzNiw3ICsxMzYsNyBAQCBz dGF0aWMgY29uc3QgRVZQX01EIGVjZHNhX21kID0geworICAgICBOSURfZWNkc2Ffd2l0aF9TSEEx LAorICAgICBOSURfZWNkc2Ffd2l0aF9TSEExLAorICAgICBTSEFfRElHRVNUX0xFTkdUSCwKKy0g ICAgRVZQX01EX0ZMQUdfUEtFWV9ESUdFU1QsCisrICAgIEVWUF9NRF9GTEFHX1BLRVlfRElHRVNU IHwgRVZQX01EX0ZMQUdfRklQUywKKyAgICAgaW5pdCwKKyAgICAgdXBkYXRlLAorICAgICBmaW5h bCwKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2NhdnMvZmlwc19lY2RodnMu Yy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2NhdnMvZmlwc19lY2RodnMuYwor LS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2NhdnMvZmlwc19lY2RodnMuYy5maXBzLWVj CTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIzODg0NTYwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2ZpcHMvY2F2cy9maXBzX2VjZGh2cy5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIzODg0 NTYwICswMjAwCitAQCAtMCwwICsxLDQ1NiBAQAorKy8qIGZpcHMvZWNkaC9maXBzX2VjZGh2cy5j ICovCisrLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9y ZykgZm9yIHRoZSBPcGVuU1NMCisrICogcHJvamVjdC4KKysgKi8KKysvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor KyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6 CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAz LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m IHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVz ICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2Vk IHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3 cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgbGljZW5zaW5nQE9wZW5T U0wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg bWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBw ZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Np b24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBv ZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBh Y2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl dmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3Bl blNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNP RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBB TlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xB SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMg Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAq IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKysgKi8KKysKKysjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQorKyNpbmNsdWRl IDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisrCisrI2lmbmRlZiBPUEVOU1NMX0ZJUFMKKysjIGlu Y2x1ZGUgPHN0ZGlvLmg+CisrCisraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sK KysgICAgcHJpbnRmKCJObyBGSVBTIEVDREggc3VwcG9ydFxuIik7CisrICAgIHJldHVybiAoMCk7 CisrfQorKyNlbHNlCisrCisrIyBpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyMgaW5jbHVk ZSA8b3BlbnNzbC9ibi5oPgorKyMgaW5jbHVkZSA8b3BlbnNzbC9lY2RoLmg+CisrIyBpbmNsdWRl IDxvcGVuc3NsL2ZpcHMuaD4KKysjIGluY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrIyBpbmNsdWRl IDxvcGVuc3NsL2V2cC5oPgorKyMgaW5jbHVkZSA8c3RyaW5nLmg+CisrIyBpbmNsdWRlIDxjdHlw ZS5oPgorKworKyMgaW5jbHVkZSAiZmlwc191dGwuaCIKKysKKytzdGF0aWMgY29uc3QgRVZQX01E ICplcGFyc2VfbWQoY2hhciAqbGluZSkKKyt7CisrICAgIGNoYXIgKnA7CisrICAgIGlmIChsaW5l WzBdICE9ICdbJyB8fCBsaW5lWzFdICE9ICdFJykKKysgICAgICAgIHJldHVybiBOVUxMOworKyAg ICBwID0gc3RyY2hyKGxpbmUsICctJyk7CisrICAgIGlmICghcCkKKysgICAgICAgIHJldHVybiBO VUxMOworKyAgICBsaW5lID0gcCArIDE7CisrICAgIHAgPSBzdHJjaHIobGluZSwgJ10nKTsKKysg ICAgaWYgKCFwKQorKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgICpwID0gMDsKKysgICAgcCA9 IGxpbmU7CisrICAgIHdoaWxlIChpc3NwYWNlKCpwKSkKKysgICAgICAgIHArKzsKKysgICAgaWYg KCFzdHJjbXAocCwgIlNIQTEiKSkKKysgICAgICAgIHJldHVybiBFVlBfc2hhMSgpOworKyAgICBl bHNlIGlmICghc3RyY21wKHAsICJTSEEyMjQiKSkKKysgICAgICAgIHJldHVybiBFVlBfc2hhMjI0 KCk7CisrICAgIGVsc2UgaWYgKCFzdHJjbXAocCwgIlNIQTI1NiIpKQorKyAgICAgICAgcmV0dXJu IEVWUF9zaGEyNTYoKTsKKysgICAgZWxzZSBpZiAoIXN0cmNtcChwLCAiU0hBMzg0IikpCisrICAg ICAgICByZXR1cm4gRVZQX3NoYTM4NCgpOworKyAgICBlbHNlIGlmICghc3RyY21wKHAsICJTSEE1 MTIiKSkKKysgICAgICAgIHJldHVybiBFVlBfc2hhNTEyKCk7CisrICAgIGVsc2UKKysgICAgICAg IHJldHVybiBOVUxMOworK30KKysKKytzdGF0aWMgaW50IGxvb2t1cF9jdXJ2ZTIoY2hhciAqY25h bWUpCisreworKyAgICBjaGFyICpwOworKyAgICBwID0gc3RyY2hyKGNuYW1lLCAnXScpOworKyAg ICBpZiAoIXApIHsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUGFyc2UgZXJyb3I6IG1pc3Np bmcgXVxuIik7CisrICAgICAgICByZXR1cm4gTklEX3VuZGVmOworKyAgICB9CisrICAgICpwID0g MDsKKysKKysgICAgaWYgKCFzdHJjbXAoY25hbWUsICJCLTE2MyIpKQorKyAgICAgICAgcmV0dXJu IE5JRF9zZWN0MTYzcjI7CisrICAgIGlmICghc3RyY21wKGNuYW1lLCAiQi0yMzMiKSkKKysgICAg ICAgIHJldHVybiBOSURfc2VjdDIzM3IxOworKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIkItMjgz IikpCisrICAgICAgICByZXR1cm4gTklEX3NlY3QyODNyMTsKKysgICAgaWYgKCFzdHJjbXAoY25h bWUsICJCLTQwOSIpKQorKyAgICAgICAgcmV0dXJuIE5JRF9zZWN0NDA5cjE7CisrICAgIGlmICgh c3RyY21wKGNuYW1lLCAiQi01NzEiKSkKKysgICAgICAgIHJldHVybiBOSURfc2VjdDU3MXIxOwor KyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIkstMTYzIikpCisrICAgICAgICByZXR1cm4gTklEX3Nl Y3QxNjNrMTsKKysgICAgaWYgKCFzdHJjbXAoY25hbWUsICJLLTIzMyIpKQorKyAgICAgICAgcmV0 dXJuIE5JRF9zZWN0MjMzazE7CisrICAgIGlmICghc3RyY21wKGNuYW1lLCAiSy0yODMiKSkKKysg ICAgICAgIHJldHVybiBOSURfc2VjdDI4M2sxOworKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIkst NDA5IikpCisrICAgICAgICByZXR1cm4gTklEX3NlY3Q0MDlrMTsKKysgICAgaWYgKCFzdHJjbXAo Y25hbWUsICJLLTU3MSIpKQorKyAgICAgICAgcmV0dXJuIE5JRF9zZWN0NTcxazE7CisrICAgIGlm ICghc3RyY21wKGNuYW1lLCAiUC0xOTIiKSkKKysgICAgICAgIHJldHVybiBOSURfWDlfNjJfcHJp bWUxOTJ2MTsKKysgICAgaWYgKCFzdHJjbXAoY25hbWUsICJQLTIyNCIpKQorKyAgICAgICAgcmV0 dXJuIE5JRF9zZWNwMjI0cjE7CisrICAgIGlmICghc3RyY21wKGNuYW1lLCAiUC0yNTYiKSkKKysg ICAgICAgIHJldHVybiBOSURfWDlfNjJfcHJpbWUyNTZ2MTsKKysgICAgaWYgKCFzdHJjbXAoY25h bWUsICJQLTM4NCIpKQorKyAgICAgICAgcmV0dXJuIE5JRF9zZWNwMzg0cjE7CisrICAgIGlmICgh c3RyY21wKGNuYW1lLCAiUC01MjEiKSkKKysgICAgICAgIHJldHVybiBOSURfc2VjcDUyMXIxOwor KworKyAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24gQ3VydmUgbmFtZSAlc1xuIiwgY25hbWUp OworKyAgICByZXR1cm4gTklEX3VuZGVmOworK30KKysKKytzdGF0aWMgaW50IGxvb2t1cF9jdXJ2 ZShjaGFyICpjbmFtZSkKKyt7CisrICAgIGNoYXIgKnA7CisrICAgIHAgPSBzdHJjaHIoY25hbWUs ICc6Jyk7CisrICAgIGlmICghcCkgeworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJQYXJzZSBl cnJvcjogbWlzc2luZyA6XG4iKTsKKysgICAgICAgIHJldHVybiBOSURfdW5kZWY7CisrICAgIH0K KysgICAgY25hbWUgPSBwICsgMTsKKysgICAgd2hpbGUgKGlzc3BhY2UoKmNuYW1lKSkKKysgICAg ICAgIGNuYW1lKys7CisrICAgIHJldHVybiBsb29rdXBfY3VydmUyKGNuYW1lKTsKKyt9CisrCisr c3RhdGljIEVDX1BPSU5UICptYWtlX3BlZXIoRUNfR1JPVVAgKmdyb3VwLCBCSUdOVU0gKngsIEJJ R05VTSAqeSkKKyt7CisrICAgIEVDX1BPSU5UICpwZWVyOworKyAgICBpbnQgcnY7CisrICAgIEJO X0NUWCAqYzsKKysgICAgcGVlciA9IEVDX1BPSU5UX25ldyhncm91cCk7CisrICAgIGlmICghcGVl cikKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICBjID0gQk5fQ1RYX25ldygpOworKyAgICBp ZiAoRUNfTUVUSE9EX2dldF9maWVsZF90eXBlKEVDX0dST1VQX21ldGhvZF9vZihncm91cCkpCisr ICAgICAgICA9PSBOSURfWDlfNjJfcHJpbWVfZmllbGQpCisrICAgICAgICBydiA9IEVDX1BPSU5U X3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwZWVyLCB4LCB5LCBjKTsKKysgICAg ZWxzZQorKyMgaWZkZWYgT1BFTlNTTF9OT19FQzJNCisrICAgIHsKKysgICAgICAgIGZwcmludGYo c3RkZXJyLCAiRVJST1I6IEdGMm0gbm90IHN1cHBvcnRlZFxuIik7CisrICAgICAgICBleGl0KDEp OworKyAgICB9CisrIyBlbHNlCisrICAgICAgICBydiA9IEVDX1BPSU5UX3NldF9hZmZpbmVfY29v cmRpbmF0ZXNfR0YybShncm91cCwgcGVlciwgeCwgeSwgYyk7CisrIyBlbmRpZgorKworKyAgICBC Tl9DVFhfZnJlZShjKTsKKysgICAgaWYgKHJ2KQorKyAgICAgICAgcmV0dXJuIHBlZXI7CisrICAg IEVDX1BPSU5UX2ZyZWUocGVlcik7CisrICAgIHJldHVybiBOVUxMOworK30KKysKKytzdGF0aWMg aW50IGVjX3ByaW50X2tleShGSUxFICpvdXQsIEVDX0tFWSAqa2V5LCBpbnQgYWRkX2UsIGludCBl eG91dCkKKyt7CisrICAgIGNvbnN0IEVDX1BPSU5UICpwdDsKKysgICAgY29uc3QgRUNfR1JPVVAg KmdycDsKKysgICAgY29uc3QgRUNfTUVUSE9EICptZXRoOworKyAgICBpbnQgcnY7CisrICAgIEJJ R05VTSAqdHgsICp0eTsKKysgICAgY29uc3QgQklHTlVNICpkID0gTlVMTDsKKysgICAgQk5fQ1RY ICpjdHg7CisrICAgIGN0eCA9IEJOX0NUWF9uZXcoKTsKKysgICAgaWYgKCFjdHgpCisrICAgICAg ICByZXR1cm4gMDsKKysgICAgdHggPSBCTl9DVFhfZ2V0KGN0eCk7CisrICAgIHR5ID0gQk5fQ1RY X2dldChjdHgpOworKyAgICBpZiAoIXR4IHx8ICF0eSkKKysgICAgICAgIHJldHVybiAwOworKyAg ICBncnAgPSBFQ19LRVlfZ2V0MF9ncm91cChrZXkpOworKyAgICBwdCA9IEVDX0tFWV9nZXQwX3B1 YmxpY19rZXkoa2V5KTsKKysgICAgaWYgKGV4b3V0KQorKyAgICAgICAgZCA9IEVDX0tFWV9nZXQw X3ByaXZhdGVfa2V5KGtleSk7CisrICAgIG1ldGggPSBFQ19HUk9VUF9tZXRob2Rfb2YoZ3JwKTsK KysgICAgaWYgKEVDX01FVEhPRF9nZXRfZmllbGRfdHlwZShtZXRoKSA9PSBOSURfWDlfNjJfcHJp bWVfZmllbGQpCisrICAgICAgICBydiA9IEVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNf R0ZwKGdycCwgcHQsIHR4LCB0eSwgY3R4KTsKKysgICAgZWxzZQorKyMgaWZkZWYgT1BFTlNTTF9O T19FQzJNCisrICAgIHsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRVJST1I6IEdGMm0gbm90 IHN1cHBvcnRlZFxuIik7CisrICAgICAgICBleGl0KDEpOworKyAgICB9CisrIyBlbHNlCisrICAg ICAgICBydiA9IEVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybShncnAsIHB0LCB0 eCwgdHksIGN0eCk7CisrIyBlbmRpZgorKworKyAgICBpZiAoYWRkX2UpIHsKKysgICAgICAgIGRv X2JuX3ByaW50X25hbWUob3V0LCAiUWVJVVR4IiwgdHgpOworKyAgICAgICAgZG9fYm5fcHJpbnRf bmFtZShvdXQsICJRZUlVVHkiLCB0eSk7CisrICAgICAgICBpZiAoZCkKKysgICAgICAgICAgICBk b19ibl9wcmludF9uYW1lKG91dCwgIlFlSVVUZCIsIGQpOworKyAgICB9IGVsc2UgeworKyAgICAg ICAgZG9fYm5fcHJpbnRfbmFtZShvdXQsICJRSVVUeCIsIHR4KTsKKysgICAgICAgIGRvX2JuX3By aW50X25hbWUob3V0LCAiUUlVVHkiLCB0eSk7CisrICAgICAgICBpZiAoZCkKKysgICAgICAgICAg ICBkb19ibl9wcmludF9uYW1lKG91dCwgIlFJVVRkIiwgZCk7CisrICAgIH0KKysKKysgICAgQk5f Q1RYX2ZyZWUoY3R4KTsKKysKKysgICAgcmV0dXJuIHJ2OworKworK30KKysKKytzdGF0aWMgdm9p ZCBlY19vdXRwdXRfWmhhc2goRklMRSAqb3V0LCBpbnQgZXhvdXQsIEVDX0dST1VQICpncm91cCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklHTlVNICppeCwgQklHTlVNICppeSwgQklH TlVNICppZCwgQklHTlVNICpjeCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklHTlVN ICpjeSwgY29uc3QgRVZQX01EICptZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgY2hhciAqcmhhc2gsIHNpemVfdCByaGFzaGxlbikKKyt7CisrICAgIEVDX0tFWSAqZWMg PSBOVUxMOworKyAgICBFQ19QT0lOVCAqcGVlcmtleSA9IE5VTEw7CisrICAgIHVuc2lnbmVkIGNo YXIgKlo7CisrICAgIHVuc2lnbmVkIGNoYXIgY2hhc2hbRVZQX01BWF9NRF9TSVpFXTsKKysgICAg aW50IFpsZW47CisrICAgIGVjID0gRUNfS0VZX25ldygpOworKyAgICBFQ19LRVlfc2V0X2ZsYWdz KGVjLCBFQ19GTEFHX0NPRkFDVE9SX0VDREgpOworKyAgICBFQ19LRVlfc2V0X2dyb3VwKGVjLCBn cm91cCk7CisrICAgIHBlZXJrZXkgPSBtYWtlX3BlZXIoZ3JvdXAsIGN4LCBjeSk7CisrICAgIGlm IChyaGFzaCA9PSBOVUxMKSB7CisrICAgICAgICBpZiAobWQpCisrICAgICAgICAgICAgcmhhc2hs ZW4gPSBNX0VWUF9NRF9zaXplKG1kKTsKKysgICAgICAgIEVDX0tFWV9nZW5lcmF0ZV9rZXkoZWMp OworKyAgICAgICAgZWNfcHJpbnRfa2V5KG91dCwgZWMsIG1kID8gMSA6IDAsIGV4b3V0KTsKKysg ICAgfSBlbHNlIHsKKysgICAgICAgIEVDX0tFWV9zZXRfcHVibGljX2tleV9hZmZpbmVfY29vcmRp bmF0ZXMoZWMsIGl4LCBpeSk7CisrICAgICAgICBFQ19LRVlfc2V0X3ByaXZhdGVfa2V5KGVjLCBp ZCk7CisrICAgIH0KKysgICAgWmxlbiA9IChFQ19HUk9VUF9nZXRfZGVncmVlKGdyb3VwKSArIDcp IC8gODsKKysgICAgWiA9IE9QRU5TU0xfbWFsbG9jKFpsZW4pOworKyAgICBpZiAoIVopCisrICAg ICAgICBleGl0KDEpOworKyAgICBFQ0RIX2NvbXB1dGVfa2V5KFosIFpsZW4sIHBlZXJrZXksIGVj LCAwKTsKKysgICAgaWYgKG1kKSB7CisrICAgICAgICBpZiAoZXhvdXQpCisrICAgICAgICAgICAg T3V0cHV0VmFsdWUoIloiLCBaLCBabGVuLCBvdXQsIDApOworKyAgICAgICAgRklQU19kaWdlc3Qo WiwgWmxlbiwgY2hhc2gsIE5VTEwsIG1kKTsKKysgICAgICAgIE91dHB1dFZhbHVlKHJoYXNoID8g IklVVEhhc2haWiIgOiAiSGFzaFpaIiwgY2hhc2gsIHJoYXNobGVuLCBvdXQsIDApOworKyAgICAg ICAgaWYgKHJoYXNoKSB7CisrICAgICAgICAgICAgZnByaW50ZihvdXQsICJSZXN1bHQgPSAlc1xu IiwKKysgICAgICAgICAgICAgICAgICAgIG1lbWNtcChjaGFzaCwgcmhhc2gsIHJoYXNobGVuKSA/ ICJGIiA6ICJQIik7CisrICAgICAgICB9CisrICAgIH0gZWxzZQorKyAgICAgICAgT3V0cHV0VmFs dWUoIlpJVVQiLCBaLCBabGVuLCBvdXQsIDApOworKyAgICBPUEVOU1NMX2NsZWFuc2UoWiwgWmxl bik7CisrICAgIE9QRU5TU0xfZnJlZShaKTsKKysgICAgRUNfS0VZX2ZyZWUoZWMpOworKyAgICBF Q19QT0lOVF9mcmVlKHBlZXJrZXkpOworK30KKysKKysjIGlmZGVmIEZJUFNfQUxHVlMKKytpbnQg Zmlwc19lY2RodnNfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisrIyBlbHNlCisraW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorKyMgZW5kaWYKKyt7CisrICAgIGNoYXIgKiphcmdz ID0gYXJndiArIDE7CisrICAgIGludCBhcmduID0gYXJnYyAtIDE7CisrICAgIEZJTEUgKmluLCAq b3V0OworKyAgICBjaGFyIGJ1ZlsyMDQ4XSwgbGJ1ZlsyMDQ4XTsKKysgICAgdW5zaWduZWQgY2hh ciAqcmhhc2ggPSBOVUxMOworKyAgICBsb25nIHJoYXNobGVuOworKyAgICBCSUdOVU0gKmN4ID0g TlVMTCwgKmN5ID0gTlVMTDsKKysgICAgQklHTlVNICppZCA9IE5VTEwsICppeCA9IE5VTEwsICpp eSA9IE5VTEw7CisrICAgIGNvbnN0IEVWUF9NRCAqbWQgPSBOVUxMOworKyAgICBFQ19HUk9VUCAq Z3JvdXAgPSBOVUxMOworKyAgICBjaGFyICprZXl3b3JkID0gTlVMTCwgKnZhbHVlID0gTlVMTDsK KysgICAgaW50IGRvX3ZlcmlmeSA9IC0xLCBleG91dCA9IDA7CisrICAgIGludCBydiA9IDE7Cisr CisrICAgIGludCBjdXJ2ZV9uaWRzWzVdID0geyAwLCAwLCAwLCAwLCAwIH07CisrICAgIGludCBw YXJhbV9zZXQgPSAtMTsKKysKKysgICAgZmlwc19hbGd0ZXN0X2luaXQoKTsKKysKKysgICAgaWYg KGFyZ24gJiYgIXN0cmNtcCgqYXJncywgImVjZGh2ZXIiKSkgeworKyAgICAgICAgZG9fdmVyaWZ5 ID0gMTsKKysgICAgICAgIGFyZ3MrKzsKKysgICAgICAgIGFyZ24tLTsKKysgICAgfSBlbHNlIGlm IChhcmduICYmICFzdHJjbXAoKmFyZ3MsICJlY2RoZ2VuIikpIHsKKysgICAgICAgIGRvX3Zlcmlm eSA9IDA7CisrICAgICAgICBhcmdzKys7CisrICAgICAgICBhcmduLS07CisrICAgIH0KKysKKysg ICAgaWYgKGFyZ24gJiYgIXN0cmNtcCgqYXJncywgIi1leG91dCIpKSB7CisrICAgICAgICBleG91 dCA9IDE7CisrICAgICAgICBhcmdzKys7CisrICAgICAgICBhcmduLS07CisrICAgIH0KKysKKysg ICAgaWYgKGRvX3ZlcmlmeSA9PSAtMSkgeworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyBb ZWNkaHZlcnxlY2RoZ2VufF0gWy1leG91dF0gKGluZmlsZSBvdXRmaWxlKVxuIiwKKysgICAgICAg ICAgICAgICAgYXJndlswXSk7CisrICAgICAgICBleGl0KDEpOworKyAgICB9CisrCisrICAgIGlm IChhcmduID09IDIpIHsKKysgICAgICAgIGluID0gZm9wZW4oKmFyZ3MsICJyIik7CisrICAgICAg ICBpZiAoIWluKSB7CisrICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBvcGVuaW5n IGlucHV0IGZpbGVcbiIpOworKyAgICAgICAgICAgIGV4aXQoMSk7CisrICAgICAgICB9CisrICAg ICAgICBvdXQgPSBmb3BlbihhcmdzWzFdLCAidyIpOworKyAgICAgICAgaWYgKCFvdXQpIHsKKysg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgb3V0cHV0IGZpbGVcbiIp OworKyAgICAgICAgICAgIGV4aXQoMSk7CisrICAgICAgICB9CisrICAgIH0gZWxzZSBpZiAoYXJn biA9PSAwKSB7CisrICAgICAgICBpbiA9IHN0ZGluOworKyAgICAgICAgb3V0ID0gc3Rkb3V0Owor KyAgICB9IGVsc2UgeworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyBbZGh2ZXJ8ZGhnZW58 XSBbLWV4b3V0XSAoaW5maWxlIG91dGZpbGUpXG4iLAorKyAgICAgICAgICAgICAgICBhcmd2WzBd KTsKKysgICAgICAgIGV4aXQoMSk7CisrICAgIH0KKysKKysgICAgd2hpbGUgKGZnZXRzKGJ1Ziwg c2l6ZW9mKGJ1ZiksIGluKSAhPSBOVUxMKSB7CisrICAgICAgICBmcHV0cyhidWYsIG91dCk7Cisr ICAgICAgICBpZiAoYnVmWzBdID09ICdbJyAmJiBidWZbMV0gPT0gJ0UnKSB7CisrICAgICAgICAg ICAgaW50IGMgPSBidWZbMl07CisrICAgICAgICAgICAgaWYgKGMgPCAnQScgfHwgYyA+ICdFJykK KysgICAgICAgICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKKysgICAgICAgICAgICBwYXJhbV9z ZXQgPSBjIC0gJ0EnOworKyAgICAgICAgICAgIC8qIElmIGp1c3QgW0U/XSB0aGVuIGluaXRpYWwg cGFyYW1zZXQgKi8KKysgICAgICAgICAgICBpZiAoYnVmWzNdID09ICddJykKKysgICAgICAgICAg ICAgICAgY29udGludWU7CisrICAgICAgICAgICAgaWYgKGdyb3VwKQorKyAgICAgICAgICAgICAg ICBFQ19HUk9VUF9mcmVlKGdyb3VwKTsKKysgICAgICAgICAgICBncm91cCA9IEVDX0dST1VQX25l d19ieV9jdXJ2ZV9uYW1lKGN1cnZlX25pZHNbYyAtICdBJ10pOworKyAgICAgICAgfQorKyAgICAg ICAgaWYgKHN0cmxlbihidWYpID4gMTAgJiYgIXN0cm5jbXAoYnVmLCAiW0N1cnZlIiwgNikpIHsK KysgICAgICAgICAgICBpbnQgbmlkOworKyAgICAgICAgICAgIGlmIChwYXJhbV9zZXQgPT0gLTEp CisrICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7CisrICAgICAgICAgICAgbmlkID0g bG9va3VwX2N1cnZlKGJ1Zik7CisrICAgICAgICAgICAgaWYgKG5pZCA9PSBOSURfdW5kZWYpCisr ICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7CisrICAgICAgICAgICAgY3VydmVfbmlk c1twYXJhbV9zZXRdID0gbmlkOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHN0cmxlbihi dWYpID4gNCAmJiBidWZbMF0gPT0gJ1snICYmIGJ1ZlsyXSA9PSAnLScpIHsKKysgICAgICAgICAg ICBpbnQgbmlkID0gbG9va3VwX2N1cnZlMihidWYgKyAxKTsKKysgICAgICAgICAgICBpZiAobmlk ID09IE5JRF91bmRlZikKKysgICAgICAgICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKKysgICAg ICAgICAgICBpZiAoZ3JvdXApCisrICAgICAgICAgICAgICAgIEVDX0dST1VQX2ZyZWUoZ3JvdXAp OworKyAgICAgICAgICAgIGdyb3VwID0gRUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWUobmlkKTsK KysgICAgICAgICAgICBpZiAoIWdyb3VwKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiRVJST1I6IHVuc3VwcG9ydGVkIGN1cnZlICVzXG4iLCBidWYgKyAxKTsKKysgICAgICAg ICAgICAgICAgcmV0dXJuIDE7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAg ICAgaWYgKHN0cmxlbihidWYpID4gNiAmJiAhc3RybmNtcChidWYsICJbRSIsIDIpKSB7CisrICAg ICAgICAgICAgbWQgPSBlcGFyc2VfbWQoYnVmKTsKKysgICAgICAgICAgICBpZiAobWQgPT0gTlVM TCkKKysgICAgICAgICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKKysgICAgICAgICAgICBjb250 aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGlmICghcGFyc2VfbGluZSgma2V5d29yZCwgJnZh bHVlLCBsYnVmLCBidWYpKQorKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgaWYgKCFz dHJjbXAoa2V5d29yZCwgIlFlQ0FWU3giKSB8fCAhc3RyY21wKGtleXdvcmQsICJRQ0FWU3giKSkg eworKyAgICAgICAgICAgIGlmICghZG9faGV4MmJuKCZjeCwgdmFsdWUpKQorKyAgICAgICAgICAg ICAgICBnb3RvIHBhcnNlX2Vycm9yOworKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtleXdv cmQsICJRZUNBVlN5IikgfHwgIXN0cmNtcChrZXl3b3JkLCAiUUNBVlN5IikpIHsKKysgICAgICAg ICAgICBpZiAoIWRvX2hleDJibigmY3ksIHZhbHVlKSkKKysgICAgICAgICAgICAgICAgZ290byBw YXJzZV9lcnJvcjsKKysgICAgICAgICAgICBpZiAoZG9fdmVyaWZ5ID09IDApCisrICAgICAgICAg ICAgICAgIGVjX291dHB1dF9aaGFzaChvdXQsIGV4b3V0LCBncm91cCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjeCwgY3ksIG1kLCByaGFzaCwgcmhhc2hsZW4pOworKyAgICAgICAgfSBl bHNlIGlmICghc3RyY21wKGtleXdvcmQsICJkZUlVVCIpKSB7CisrICAgICAgICAgICAgaWYgKCFk b19oZXgyYm4oJmlkLCB2YWx1ZSkpCisrICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7 CisrICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgIlFlSVVUeCIpKSB7CisrICAg ICAgICAgICAgaWYgKCFkb19oZXgyYm4oJml4LCB2YWx1ZSkpCisrICAgICAgICAgICAgICAgIGdv dG8gcGFyc2VfZXJyb3I7CisrICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgIlFl SVVUeSIpKSB7CisrICAgICAgICAgICAgaWYgKCFkb19oZXgyYm4oJml5LCB2YWx1ZSkpCisrICAg ICAgICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7CisrICAgICAgICB9IGVsc2UgaWYgKCFzdHJj bXAoa2V5d29yZCwgIkNBVlNIYXNoWloiKSkgeworKyAgICAgICAgICAgIGlmICghbWQpCisrICAg ICAgICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7CisrICAgICAgICAgICAgcmhhc2ggPSBoZXgy YmluX20odmFsdWUsICZyaGFzaGxlbik7CisrICAgICAgICAgICAgaWYgKCFyaGFzaCB8fCByaGFz aGxlbiAhPSBNX0VWUF9NRF9zaXplKG1kKSkKKysgICAgICAgICAgICAgICAgZ290byBwYXJzZV9l cnJvcjsKKysgICAgICAgICAgICBlY19vdXRwdXRfWmhhc2gob3V0LCBleG91dCwgZ3JvdXAsIGl4 LCBpeSwgaWQsIGN4LCBjeSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQsIHJoYXNo LCByaGFzaGxlbik7CisrICAgICAgICB9CisrICAgIH0KKysgICAgcnYgPSAwOworKyBwYXJzZV9l cnJvcjoKKysgICAgaWYgKGlkKQorKyAgICAgICAgQk5fZnJlZShpZCk7CisrICAgIGlmIChpeCkK KysgICAgICAgIEJOX2ZyZWUoaXgpOworKyAgICBpZiAoaXkpCisrICAgICAgICBCTl9mcmVlKGl5 KTsKKysgICAgaWYgKGN4KQorKyAgICAgICAgQk5fZnJlZShjeCk7CisrICAgIGlmIChjeSkKKysg ICAgICAgIEJOX2ZyZWUoY3kpOworKyAgICBpZiAoZ3JvdXApCisrICAgICAgICBFQ19HUk9VUF9m cmVlKGdyb3VwKTsKKysgICAgaWYgKGluICYmIGluICE9IHN0ZGluKQorKyAgICAgICAgZmNsb3Nl KGluKTsKKysgICAgaWYgKG91dCAmJiBvdXQgIT0gc3Rkb3V0KQorKyAgICAgICAgZmNsb3NlKG91 dCk7CisrICAgIGlmIChydikKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgUGFyc2lu ZyByZXF1ZXN0IGZpbGVcbiIpOworKyAgICByZXR1cm4gcnY7CisrfQorKworKyNlbmRpZgorZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvY2F2cy9maXBzX2VjZHNhdnMuYy5maXBz LWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2NhdnMvZmlwc19lY2RzYXZzLmMKKy0tLSBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfZWNkc2F2cy5jLmZpcHMtZWMJMjAx NS0wNC0yMiAxOTowMDoxOS43MjM4ODQ1NjAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9jYXZzL2ZpcHNfZWNkc2F2cy5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIzODg0NTYw ICswMjAwCitAQCAtMCwwICsxLDQ4NiBAQAorKy8qIGZpcHMvZWNkc2EvZmlwc19lY2RzYXZzLmMg Ki8KKysvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3Jn KSBmb3IgdGhlIE9wZW5TU0wKKysgKiBwcm9qZWN0LgorKyAqLworKy8qID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisr ICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJl c2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0 dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoK KysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0 aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisr ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMu IEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2Yg dGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xl ZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRv b2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMg Ik9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQg dG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdy aXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBsaWNlbnNpbmdAT3BlblNT TC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBt YXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBl YXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lv biBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9m IGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFj a25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVu U1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFO WQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBD T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB TCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElB QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICog QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g SUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorKyAqLworKworKyNkZWZpbmUgT1BFTlNTTF9GSVBTQVBJCisrI2luY2x1ZGUg PG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysKKysjaWZuZGVm IE9QRU5TU0xfRklQUworKworK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyt7Cisr ICAgIHByaW50ZigiTm8gRklQUyBFQ0RTQSBzdXBwb3J0XG4iKTsKKysgICAgcmV0dXJuICgwKTsK Kyt9CisrI2Vsc2UKKysKKysjIGluY2x1ZGUgPHN0cmluZy5oPgorKyMgaW5jbHVkZSA8Y3R5cGUu aD4KKysjIGluY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrIyBpbmNsdWRlIDxvcGVuc3NsL2JuLmg+ CisrIyBpbmNsdWRlIDxvcGVuc3NsL2VjZHNhLmg+CisrIyBpbmNsdWRlIDxvcGVuc3NsL2V2cC5o PgorKyMgaW5jbHVkZSAiZmlwc191dGwuaCIKKysKKysjIGluY2x1ZGUgPG9wZW5zc2wvb2JqZWN0 cy5oPgorKworK3N0YXRpYyBpbnQgZWxvb2t1cF9jdXJ2ZShjaGFyICppbiwgY2hhciAqY3VydmVf bmFtZSwgY29uc3QgRVZQX01EICoqcG1kKQorK3sKKysgICAgY2hhciAqY25hbWUsICpwOworKyAg ICAvKiBDb3B5IGJ1ZmZlciBhcyB3ZSB3aWxsIGNoYW5nZSBpdCAqLworKyAgICBzdHJjcHkoY3Vy dmVfbmFtZSwgaW4pOworKyAgICBjbmFtZSA9IGN1cnZlX25hbWUgKyAxOworKyAgICBwID0gc3Ry Y2hyKGNuYW1lLCAnXScpOworKyAgICBpZiAoIXApIHsKKysgICAgICAgIGZwcmludGYoc3RkZXJy LCAiUGFyc2UgZXJyb3I6IG1pc3NpbmcgXVxuIik7CisrICAgICAgICByZXR1cm4gTklEX3VuZGVm OworKyAgICB9CisrICAgICpwID0gMDsKKysgICAgcCA9IHN0cmNocihjbmFtZSwgJywnKTsKKysg ICAgaWYgKHApIHsKKysgICAgICAgIGlmICghcG1kKSB7CisrICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsICJQYXJzZSBlcnJvcjogdW5leHBlY3RlZCBkaWdlc3RcbiIpOworKyAgICAgICAgICAg IHJldHVybiBOSURfdW5kZWY7CisrICAgICAgICB9CisrICAgICAgICAqcCA9IDA7CisrICAgICAg ICBwKys7CisrCisrICAgICAgICBpZiAoIXN0cmNtcChwLCAiU0hBLTEiKSkKKysgICAgICAgICAg ICAqcG1kID0gRVZQX3NoYTEoKTsKKysgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAocCwgIlNIQS0y MjQiKSkKKysgICAgICAgICAgICAqcG1kID0gRVZQX3NoYTIyNCgpOworKyAgICAgICAgZWxzZSBp ZiAoIXN0cmNtcChwLCAiU0hBLTI1NiIpKQorKyAgICAgICAgICAgICpwbWQgPSBFVlBfc2hhMjU2 KCk7CisrICAgICAgICBlbHNlIGlmICghc3RyY21wKHAsICJTSEEtMzg0IikpCisrICAgICAgICAg ICAgKnBtZCA9IEVWUF9zaGEzODQoKTsKKysgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAocCwgIlNI QS01MTIiKSkKKysgICAgICAgICAgICAqcG1kID0gRVZQX3NoYTUxMigpOworKyAgICAgICAgZWxz ZSB7CisrICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmtub3duIGRpZ2VzdCAlc1xuIiwg cCk7CisrICAgICAgICAgICAgcmV0dXJuIE5JRF91bmRlZjsKKysgICAgICAgIH0KKysgICAgfSBl bHNlIGlmIChwbWQpCisrICAgICAgICAqcG1kID0gRVZQX3NoYTEoKTsKKysKKysgICAgaWYgKCFz dHJjbXAoY25hbWUsICJCLTE2MyIpKQorKyAgICAgICAgcmV0dXJuIE5JRF9zZWN0MTYzcjI7Cisr ICAgIGlmICghc3RyY21wKGNuYW1lLCAiQi0yMzMiKSkKKysgICAgICAgIHJldHVybiBOSURfc2Vj dDIzM3IxOworKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIkItMjgzIikpCisrICAgICAgICByZXR1 cm4gTklEX3NlY3QyODNyMTsKKysgICAgaWYgKCFzdHJjbXAoY25hbWUsICJCLTQwOSIpKQorKyAg ICAgICAgcmV0dXJuIE5JRF9zZWN0NDA5cjE7CisrICAgIGlmICghc3RyY21wKGNuYW1lLCAiQi01 NzEiKSkKKysgICAgICAgIHJldHVybiBOSURfc2VjdDU3MXIxOworKyAgICBpZiAoIXN0cmNtcChj bmFtZSwgIkstMTYzIikpCisrICAgICAgICByZXR1cm4gTklEX3NlY3QxNjNrMTsKKysgICAgaWYg KCFzdHJjbXAoY25hbWUsICJLLTIzMyIpKQorKyAgICAgICAgcmV0dXJuIE5JRF9zZWN0MjMzazE7 CisrICAgIGlmICghc3RyY21wKGNuYW1lLCAiSy0yODMiKSkKKysgICAgICAgIHJldHVybiBOSURf c2VjdDI4M2sxOworKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIkstNDA5IikpCisrICAgICAgICBy ZXR1cm4gTklEX3NlY3Q0MDlrMTsKKysgICAgaWYgKCFzdHJjbXAoY25hbWUsICJLLTU3MSIpKQor KyAgICAgICAgcmV0dXJuIE5JRF9zZWN0NTcxazE7CisrICAgIGlmICghc3RyY21wKGNuYW1lLCAi UC0xOTIiKSkKKysgICAgICAgIHJldHVybiBOSURfWDlfNjJfcHJpbWUxOTJ2MTsKKysgICAgaWYg KCFzdHJjbXAoY25hbWUsICJQLTIyNCIpKQorKyAgICAgICAgcmV0dXJuIE5JRF9zZWNwMjI0cjE7 CisrICAgIGlmICghc3RyY21wKGNuYW1lLCAiUC0yNTYiKSkKKysgICAgICAgIHJldHVybiBOSURf WDlfNjJfcHJpbWUyNTZ2MTsKKysgICAgaWYgKCFzdHJjbXAoY25hbWUsICJQLTM4NCIpKQorKyAg ICAgICAgcmV0dXJuIE5JRF9zZWNwMzg0cjE7CisrICAgIGlmICghc3RyY21wKGNuYW1lLCAiUC01 MjEiKSkKKysgICAgICAgIHJldHVybiBOSURfc2VjcDUyMXIxOworKworKyAgICBmcHJpbnRmKHN0 ZGVyciwgIlVua25vd24gQ3VydmUgbmFtZSAlc1xuIiwgY25hbWUpOworKyAgICByZXR1cm4gTklE X3VuZGVmOworK30KKysKKytzdGF0aWMgaW50IGVjX2dldF9wdWJrZXkoRUNfS0VZICprZXksIEJJ R05VTSAqeCwgQklHTlVNICp5KQorK3sKKysgICAgY29uc3QgRUNfUE9JTlQgKnB0OworKyAgICBj b25zdCBFQ19HUk9VUCAqZ3JwOworKyAgICBjb25zdCBFQ19NRVRIT0QgKm1ldGg7CisrICAgIGlu dCBydjsKKysgICAgQk5fQ1RYICpjdHg7CisrICAgIGN0eCA9IEJOX0NUWF9uZXcoKTsKKysgICAg aWYgKCFjdHgpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgZ3JwID0gRUNfS0VZX2dldDBfZ3Jv dXAoa2V5KTsKKysgICAgcHQgPSBFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5KGtleSk7CisrICAgIG1l dGggPSBFQ19HUk9VUF9tZXRob2Rfb2YoZ3JwKTsKKysgICAgaWYgKEVDX01FVEhPRF9nZXRfZmll bGRfdHlwZShtZXRoKSA9PSBOSURfWDlfNjJfcHJpbWVfZmllbGQpCisrICAgICAgICBydiA9IEVD X1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdycCwgcHQsIHgsIHksIGN0eCk7Cisr ICAgIGVsc2UKKysjIGlmZGVmIE9QRU5TU0xfTk9fRUMyTQorKyAgICB7CisrICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIkVSUk9SOiBHRjJtIG5vdCBzdXBwb3J0ZWRcbiIpOworKyAgICAgICAgZXhp dCgxKTsKKysgICAgfQorKyMgZWxzZQorKyAgICAgICAgcnYgPSBFQ19QT0lOVF9nZXRfYWZmaW5l X2Nvb3JkaW5hdGVzX0dGMm0oZ3JwLCBwdCwgeCwgeSwgY3R4KTsKKysjIGVuZGlmCisrCisrICAg IEJOX0NUWF9mcmVlKGN0eCk7CisrCisrICAgIHJldHVybiBydjsKKysKKyt9CisrCisrc3RhdGlj IGludCBLZXlQYWlyKEZJTEUgKmluLCBGSUxFICpvdXQpCisreworKyAgICBjaGFyIGJ1ZlsyMDQ4 XSwgbGJ1ZlsyMDQ4XTsKKysgICAgY2hhciAqa2V5d29yZCwgKnZhbHVlOworKyAgICBpbnQgY3Vy dmVfbmlkID0gTklEX3VuZGVmOworKyAgICBpbnQgaSwgY291bnQ7CisrICAgIEJJR05VTSAqUXgg PSBOVUxMLCAqUXkgPSBOVUxMOworKyAgICBjb25zdCBCSUdOVU0gKmQgPSBOVUxMOworKyAgICBF Q19LRVkgKmtleSA9IE5VTEw7CisrICAgIFF4ID0gQk5fbmV3KCk7CisrICAgIFF5ID0gQk5fbmV3 KCk7CisrICAgIHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZiBidWYsIGluKSAhPSBOVUxMKSB7Cisr ICAgICAgICBpZiAoKmJ1ZiA9PSAnWycgJiYgYnVmWzJdID09ICctJykgeworKyAgICAgICAgICAg IGlmIChidWZbMl0gPT0gJy0nKQorKyAgICAgICAgICAgICAgICBjdXJ2ZV9uaWQgPSBlbG9va3Vw X2N1cnZlKGJ1ZiwgbGJ1ZiwgTlVMTCk7CisrICAgICAgICAgICAgZnB1dHMoYnVmLCBvdXQpOwor KyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFwYXJzZV9s aW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1ZikpIHsKKysgICAgICAgICAgICBmcHV0cyhi dWYsIG91dCk7CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisrICAgICAgICBp ZiAoIXN0cmNtcChrZXl3b3JkLCAiTiIpKSB7CisrICAgICAgICAgICAgY291bnQgPSBhdG9pKHZh bHVlKTsKKysKKysgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworKwor KyAgICAgICAgICAgICAgICBrZXkgPSBFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUoY3VydmVfbmlk KTsKKysgICAgICAgICAgICAgICAgaWYgKCFFQ19LRVlfZ2VuZXJhdGVfa2V5KGtleSkpIHsKKysg ICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgZ2VuZXJhdGluZyBrZXlc biIpOworKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgICAgIH0K KysKKysgICAgICAgICAgICAgICAgaWYgKCFlY19nZXRfcHVia2V5KGtleSwgUXgsIFF5KSkgewor KyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBnZXR0aW5nIHB1Ymxp YyBrZXlcbiIpOworKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAg ICAgIH0KKysKKysgICAgICAgICAgICAgICAgZCA9IEVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5KGtl eSk7CisrCisrICAgICAgICAgICAgICAgIGRvX2JuX3ByaW50X25hbWUob3V0LCAiZCIsIGQpOwor KyAgICAgICAgICAgICAgICBkb19ibl9wcmludF9uYW1lKG91dCwgIlF4IiwgUXgpOworKyAgICAg ICAgICAgICAgICBkb19ibl9wcmludF9uYW1lKG91dCwgIlF5IiwgUXkpOworKyAgICAgICAgICAg ICAgICBmcHV0cyhSRVNQX0VPTCwgb3V0KTsKKysgICAgICAgICAgICAgICAgRUNfS0VZX2ZyZWUo a2V5KTsKKysKKysgICAgICAgICAgICB9CisrCisrICAgICAgICB9CisrCisrICAgIH0KKysgICAg Qk5fZnJlZShReCk7CisrICAgIEJOX2ZyZWUoUXkpOworKyAgICByZXR1cm4gMTsKKyt9CisrCisr c3RhdGljIGludCBQS1YoRklMRSAqaW4sIEZJTEUgKm91dCkKKyt7CisrCisrICAgIGNoYXIgYnVm WzIwNDhdLCBsYnVmWzIwNDhdOworKyAgICBjaGFyICprZXl3b3JkLCAqdmFsdWU7CisrICAgIGlu dCBjdXJ2ZV9uaWQgPSBOSURfdW5kZWY7CisrICAgIEJJR05VTSAqUXggPSBOVUxMLCAqUXkgPSBO VUxMOworKyAgICBFQ19LRVkgKmtleSA9IE5VTEw7CisrICAgIHdoaWxlIChmZ2V0cyhidWYsIHNp emVvZiBidWYsIGluKSAhPSBOVUxMKSB7CisrICAgICAgICBmcHV0cyhidWYsIG91dCk7CisrICAg ICAgICBpZiAoKmJ1ZiA9PSAnWycgJiYgYnVmWzJdID09ICctJykgeworKyAgICAgICAgICAgIGN1 cnZlX25pZCA9IGVsb29rdXBfY3VydmUoYnVmLCBsYnVmLCBOVUxMKTsKKysgICAgICAgICAgICBp ZiAoY3VydmVfbmlkID09IE5JRF91bmRlZikKKysgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisr CisrICAgICAgICB9CisrICAgICAgICBpZiAoIXBhcnNlX2xpbmUoJmtleXdvcmQsICZ2YWx1ZSwg bGJ1ZiwgYnVmKSkKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIGlmICghc3RyY21w KGtleXdvcmQsICJReCIpKSB7CisrICAgICAgICAgICAgaWYgKCFkb19oZXgyYm4oJlF4LCB2YWx1 ZSkpIHsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFF4IHZhbHVl XG4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgfQorKyAgICAg ICAgfQorKyAgICAgICAgaWYgKCFzdHJjbXAoa2V5d29yZCwgIlF5IikpIHsKKysgICAgICAgICAg ICBpbnQgcnY7CisrICAgICAgICAgICAgaWYgKCFkb19oZXgyYm4oJlF5LCB2YWx1ZSkpIHsKKysg ICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFF5IHZhbHVlXG4iKTsKKysg ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGtl eSA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShjdXJ2ZV9uaWQpOworKyAgICAgICAgICAgIG5v X2VyciA9IDE7CisrICAgICAgICAgICAgcnYgPSBFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5l X2Nvb3JkaW5hdGVzKGtleSwgUXgsIFF5KTsKKysgICAgICAgICAgICBub19lcnIgPSAwOworKyAg ICAgICAgICAgIEVDX0tFWV9mcmVlKGtleSk7CisrICAgICAgICAgICAgZnByaW50ZihvdXQsICJS ZXN1bHQgPSAlcyIgUkVTUF9FT0wsIHJ2ID8gIlAiIDogIkYiKTsKKysgICAgICAgIH0KKysKKysg ICAgfQorKyAgICBCTl9mcmVlKFF4KTsKKysgICAgQk5fZnJlZShReSk7CisrICAgIHJldHVybiAx OworK30KKysKKytzdGF0aWMgaW50IFNpZ0dlbihGSUxFICppbiwgRklMRSAqb3V0KQorK3sKKysg ICAgY2hhciBidWZbMjA0OF0sIGxidWZbMjA0OF07CisrICAgIGNoYXIgKmtleXdvcmQsICp2YWx1 ZTsKKysgICAgdW5zaWduZWQgY2hhciAqbXNnOworKyAgICBpbnQgY3VydmVfbmlkID0gTklEX3Vu ZGVmOworKyAgICBsb25nIG1sZW47CisrICAgIEJJR05VTSAqUXggPSBOVUxMLCAqUXkgPSBOVUxM OworKyAgICBFQ19LRVkgKmtleSA9IE5VTEw7CisrICAgIEVDRFNBX1NJRyAqc2lnID0gTlVMTDsK KysgICAgY29uc3QgRVZQX01EICpkaWdlc3QgPSBOVUxMOworKyAgICBReCA9IEJOX25ldygpOwor KyAgICBReSA9IEJOX25ldygpOworKyAgICB3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YgYnVmLCBp bikgIT0gTlVMTCkgeworKyAgICAgICAgZnB1dHMoYnVmLCBvdXQpOworKyAgICAgICAgaWYgKCpi dWYgPT0gJ1snKSB7CisrICAgICAgICAgICAgY3VydmVfbmlkID0gZWxvb2t1cF9jdXJ2ZShidWYs IGxidWYsICZkaWdlc3QpOworKyAgICAgICAgICAgIGlmIChjdXJ2ZV9uaWQgPT0gTklEX3VuZGVm KQorKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysgICAgICAgIGlmICgh cGFyc2VfbGluZSgma2V5d29yZCwgJnZhbHVlLCBsYnVmLCBidWYpKQorKyAgICAgICAgICAgIGNv bnRpbnVlOworKyAgICAgICAgaWYgKCFzdHJjbXAoa2V5d29yZCwgIk1zZyIpKSB7CisrICAgICAg ICAgICAgbXNnID0gaGV4MmJpbl9tKHZhbHVlLCAmbWxlbik7CisrICAgICAgICAgICAgaWYgKCFt c2cpIHsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIE1lc3NhZ2Vc biIpOworKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICB9CisrCisrICAg ICAgICAgICAga2V5ID0gRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lKGN1cnZlX25pZCk7CisrICAg ICAgICAgICAgaWYgKCFFQ19LRVlfZ2VuZXJhdGVfa2V5KGtleSkpIHsKKysgICAgICAgICAgICAg ICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBnZW5lcmF0aW5nIGtleVxuIik7CisrICAgICAgICAg ICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpZiAoIWVj X2dldF9wdWJrZXkoa2V5LCBReCwgUXkpKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiRXJyb3IgZ2V0dGluZyBwdWJsaWMga2V5XG4iKTsKKysgICAgICAgICAgICAgICAgcmV0 dXJuIDA7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIHNpZyA9IEZJUFNfZWNkc2Ff c2lnbihrZXksIG1zZywgbWxlbiwgZGlnZXN0KTsKKysKKysgICAgICAgICAgICBpZiAoIXNpZykg eworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHNpZ25pbmcgbWVzc2Fn ZVxuIik7CisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgIH0KKysKKysg ICAgICAgICAgICBkb19ibl9wcmludF9uYW1lKG91dCwgIlF4IiwgUXgpOworKyAgICAgICAgICAg IGRvX2JuX3ByaW50X25hbWUob3V0LCAiUXkiLCBReSk7CisrICAgICAgICAgICAgZG9fYm5fcHJp bnRfbmFtZShvdXQsICJSIiwgc2lnLT5yKTsKKysgICAgICAgICAgICBkb19ibl9wcmludF9uYW1l KG91dCwgIlMiLCBzaWctPnMpOworKworKyAgICAgICAgICAgIEVDX0tFWV9mcmVlKGtleSk7Cisr ICAgICAgICAgICAgT1BFTlNTTF9mcmVlKG1zZyk7CisrICAgICAgICAgICAgRklQU19lY2RzYV9z aWdfZnJlZShzaWcpOworKworKyAgICAgICAgfQorKworKyAgICB9CisrICAgIEJOX2ZyZWUoUXgp OworKyAgICBCTl9mcmVlKFF5KTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQg U2lnVmVyKEZJTEUgKmluLCBGSUxFICpvdXQpCisreworKyAgICBjaGFyIGJ1ZlsyMDQ4XSwgbGJ1 ZlsyMDQ4XTsKKysgICAgY2hhciAqa2V5d29yZCwgKnZhbHVlOworKyAgICB1bnNpZ25lZCBjaGFy ICptc2cgPSBOVUxMOworKyAgICBpbnQgY3VydmVfbmlkID0gTklEX3VuZGVmOworKyAgICBsb25n IG1sZW47CisrICAgIEJJR05VTSAqUXggPSBOVUxMLCAqUXkgPSBOVUxMOworKyAgICBFQ19LRVkg KmtleSA9IE5VTEw7CisrICAgIEVDRFNBX1NJRyBzZywgKnNpZyA9ICZzZzsKKysgICAgY29uc3Qg RVZQX01EICpkaWdlc3QgPSBOVUxMOworKyAgICBzaWctPnIgPSBOVUxMOworKyAgICBzaWctPnMg PSBOVUxMOworKyAgICB3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YgYnVmLCBpbikgIT0gTlVMTCkg eworKyAgICAgICAgZnB1dHMoYnVmLCBvdXQpOworKyAgICAgICAgaWYgKCpidWYgPT0gJ1snKSB7 CisrICAgICAgICAgICAgY3VydmVfbmlkID0gZWxvb2t1cF9jdXJ2ZShidWYsIGxidWYsICZkaWdl c3QpOworKyAgICAgICAgICAgIGlmIChjdXJ2ZV9uaWQgPT0gTklEX3VuZGVmKQorKyAgICAgICAg ICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysgICAgICAgIGlmICghcGFyc2VfbGluZSgm a2V5d29yZCwgJnZhbHVlLCBsYnVmLCBidWYpKQorKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAg ICAgICAgaWYgKCFzdHJjbXAoa2V5d29yZCwgIk1zZyIpKSB7CisrICAgICAgICAgICAgbXNnID0g aGV4MmJpbl9tKHZhbHVlLCAmbWxlbik7CisrICAgICAgICAgICAgaWYgKCFtc2cpIHsKKysgICAg ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIE1lc3NhZ2VcbiIpOworKyAgICAg ICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrCisrICAg ICAgICBpZiAoIXN0cmNtcChrZXl3b3JkLCAiUXgiKSkgeworKyAgICAgICAgICAgIGlmICghZG9f aGV4MmJuKCZReCwgdmFsdWUpKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi SW52YWxpZCBReCB2YWx1ZVxuIik7CisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAg ICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGlmICghc3RyY21wKGtleXdvcmQsICJReSIp KSB7CisrICAgICAgICAgICAgaWYgKCFkb19oZXgyYm4oJlF5LCB2YWx1ZSkpIHsKKysgICAgICAg ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFF5IHZhbHVlXG4iKTsKKysgICAgICAg ICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAg aWYgKCFzdHJjbXAoa2V5d29yZCwgIlIiKSkgeworKyAgICAgICAgICAgIGlmICghZG9faGV4MmJu KCZzaWctPnIsIHZhbHVlKSkgeworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIklu dmFsaWQgUiB2YWx1ZVxuIik7CisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAg ICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGlmICghc3RyY21wKGtleXdvcmQsICJTIikpIHsK KysgICAgICAgICAgICBpbnQgcnY7CisrICAgICAgICAgICAgaWYgKCFkb19oZXgyYm4oJnNpZy0+ cywgdmFsdWUpKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBT IHZhbHVlXG4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgfQor KyAgICAgICAgICAgIGtleSA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShjdXJ2ZV9uaWQpOwor KyAgICAgICAgICAgIHJ2ID0gRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRl cyhrZXksIFF4LCBReSk7CisrCisrICAgICAgICAgICAgaWYgKHJ2ICE9IDEpIHsKKysgICAgICAg ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBzZXR0aW5nIHB1YmxpYyBrZXlcbiIpOwor KyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAg ICAgbm9fZXJyID0gMTsKKysgICAgICAgICAgICBydiA9IEZJUFNfZWNkc2FfdmVyaWZ5KGtleSwg bXNnLCBtbGVuLCBkaWdlc3QsIHNpZyk7CisrICAgICAgICAgICAgRUNfS0VZX2ZyZWUoa2V5KTsK KysgICAgICAgICAgICBpZiAobXNnKQorKyAgICAgICAgICAgICAgICBPUEVOU1NMX2ZyZWUobXNn KTsKKysgICAgICAgICAgICBub19lcnIgPSAwOworKworKyAgICAgICAgICAgIGZwcmludGYob3V0 LCAiUmVzdWx0ID0gJXMiIFJFU1BfRU9MLCBydiA/ICJQIiA6ICJGIik7CisrICAgICAgICB9Cisr CisrICAgIH0KKysgICAgaWYgKHNpZy0+cikKKysgICAgICAgIEJOX2ZyZWUoc2lnLT5yKTsKKysg ICAgaWYgKHNpZy0+cykKKysgICAgICAgIEJOX2ZyZWUoc2lnLT5zKTsKKysgICAgaWYgKFF4KQor KyAgICAgICAgQk5fZnJlZShReCk7CisrICAgIGlmIChReSkKKysgICAgICAgIEJOX2ZyZWUoUXkp OworKyAgICByZXR1cm4gMTsKKyt9CisrCisrIyBpZmRlZiBGSVBTX0FMR1ZTCisraW50IGZpcHNf ZWNkc2F2c19tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKysjIGVsc2UKKytpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCisrIyBlbmRpZgorK3sKKysgICAgRklMRSAqaW4gPSBOVUxM LCAqb3V0ID0gTlVMTDsKKysgICAgY29uc3QgY2hhciAqY21kID0gYXJndlsxXTsKKysgICAgaW50 IHJ2ID0gMDsKKysgICAgZmlwc19hbGd0ZXN0X2luaXQoKTsKKysKKysgICAgaWYgKGFyZ2MgPT0g NCkgeworKyAgICAgICAgaW4gPSBmb3Blbihhcmd2WzJdLCAiciIpOworKyAgICAgICAgaWYgKCFp bikgeworKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBpbnB1dCBm aWxlXG4iKTsKKysgICAgICAgICAgICBleGl0KDEpOworKyAgICAgICAgfQorKyAgICAgICAgb3V0 ID0gZm9wZW4oYXJndlszXSwgInciKTsKKysgICAgICAgIGlmICghb3V0KSB7CisrICAgICAgICAg ICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBvcGVuaW5nIG91dHB1dCBmaWxlXG4iKTsKKysgICAg ICAgICAgICBleGl0KDEpOworKyAgICAgICAgfQorKyAgICB9IGVsc2UgaWYgKGFyZ2MgPT0gMikg eworKyAgICAgICAgaW4gPSBzdGRpbjsKKysgICAgICAgIG91dCA9IHN0ZG91dDsKKysgICAgfQor KworKyAgICBpZiAoIWNtZCkgeworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJmaXBzX2VjZHNh dnMgW0tleVBhaXJ8UEtWfFNpZ0dlbnxTaWdWZXJdXG4iKTsKKysgICAgICAgIHJldHVybiAxOwor KyAgICB9CisrICAgIGlmICghc3RyY21wKGNtZCwgIktleVBhaXIiKSkKKysgICAgICAgIHJ2ID0g S2V5UGFpcihpbiwgb3V0KTsKKysgICAgZWxzZSBpZiAoIXN0cmNtcChjbWQsICJQS1YiKSkKKysg ICAgICAgIHJ2ID0gUEtWKGluLCBvdXQpOworKyAgICBlbHNlIGlmICghc3RyY21wKGNtZCwgIlNp Z1ZlciIpKQorKyAgICAgICAgcnYgPSBTaWdWZXIoaW4sIG91dCk7CisrICAgIGVsc2UgaWYgKCFz dHJjbXAoY21kLCAiU2lnR2VuIikpCisrICAgICAgICBydiA9IFNpZ0dlbihpbiwgb3V0KTsKKysg ICAgZWxzZSB7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24gY29tbWFuZCAlc1xu IiwgY21kKTsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIGlmIChhcmdjID09 IDQpIHsKKysgICAgICAgIGZjbG9zZShpbik7CisrICAgICAgICBmY2xvc2Uob3V0KTsKKysgICAg fQorKworKyAgICBpZiAocnYgPD0gMCkgeworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJv ciBydW5uaW5nICVzXG4iLCBjbWQpOworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysg ICAgcmV0dXJuIDA7CisrfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2ZpcHMvZmlwc19lY2RoX3NlbGZ0ZXN0LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9maXBzX2VjZGhfc2VsZnRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9m aXBzL2ZpcHNfZWNkaF9zZWxmdGVzdC5jLmZpcHMtZWMJMjAxNS0wNC0yMiAxOTowMDoxOS43MjQ4 ODQ1ODMgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2VjZGhfc2Vs ZnRlc3QuYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyNDg4NDU4MyArMDIwMAorQEAgLTAsMCArMSwy NDIgQEAKKysvKiBmaXBzL2VjZGgvZmlwc19lY2RoX3NlbGZ0ZXN0LmMgKi8KKysvKiBXcml0dGVu IGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5T U0wKKysgKiBwcm9qZWN0IDIwMTEuCisrICovCisrLyogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmln aHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisr ICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICog MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg aW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp ZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVy dGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICog ICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Cisr ICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9w ZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0 dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBU b29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAg IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3 aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJt aXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KKysg KgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUg Y2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVp ciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBP cGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0g d2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21l bnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkg dGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtp dCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQ UkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO TyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9S UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQ RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV VAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S IFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9S IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElO IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE CisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisrICoKKysgKi8KKysKKysjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQorKworKyNpbmNsdWRlIDxz dHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8b3BlbnNz bC9lYy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2VjZGguaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9m aXBzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXZw Lmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisr CisrIyBpbmNsdWRlICJmaXBzX2xvY2wuaCIKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBwMjU2X3FjYXZzeFtdID0geworKyAgICAweDUyLCAweGM2LCAweGE1LCAweDc1LCAweGYzLCAw eDA0LCAweDk4LCAweGIzLCAweDI5LCAweDY2LCAweDBjLCAweDYyLAorKyAgICAweDE4LCAweDYw LCAweDU1LCAweDQxLCAweDU5LCAweGQ0LCAweDYwLCAweDg1LCAweDk5LCAweGMxLCAweDUxLCAw eDEzLAorKyAgICAweDZmLCAweDk3LCAweDg1LCAweDkzLCAweDMzLCAweDM0LCAweDA3LCAweDUw CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwMjU2X3FjYXZzeVtdID0gewor KyAgICAweDZmLCAweDY5LCAweDI0LCAweGViLCAweGU5LCAweDNiLCAweGE3LCAweGNjLCAweDQ3 LCAweDE3LCAweGFhLCAweDNmLAorKyAgICAweDcwLCAweGZjLCAweDEwLCAweDczLCAweDBhLCAw eGNkLCAweDIxLCAweGVlLCAweDI5LCAweDE5LCAweDFmLCAweGFmLAorKyAgICAweGI0LCAweDFj LCAweDFlLCAweGMyLCAweDhlLCAweDk3LCAweDgxLCAweDZlCisrfTsKKysKKytzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBwMjU2X3FpdXR4W10gPSB7CisrICAgIDB4NzEsIDB4NDYsIDB4ODgs IDB4MDgsIDB4OTIsIDB4MjEsIDB4MWIsIDB4MTAsIDB4MjEsIDB4NzQsIDB4ZmYsIDB4MGMsCisr ICAgIDB4OTQsIDB4ZGUsIDB4MzQsIDB4N2MsIDB4ODYsIDB4NzQsIDB4YmUsIDB4NjcsIDB4NDEs IDB4NjgsIDB4ZDQsIDB4YzEsCisrICAgIDB4ZTUsIDB4NzUsIDB4NjMsIDB4OWMsIDB4YTcsIDB4 NDYsIDB4OTMsIDB4NmYKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHAyNTZf cWl1dHlbXSA9IHsKKysgICAgMHgzMywgMHg0MCwgMHhhOSwgMHg2YSwgMHhmNSwgMHgyMCwgMHhi NSwgMHg5ZSwgMHhmYywgMHg2MCwgMHgxYSwgMHhhZSwKKysgICAgMHgzZCwgMHhmOCwgMHgyMSwg MHhkMiwgMHhhNywgMHhjYSwgMHg1MiwgMHgzNCwgMHhiOSwgMHg1ZiwgMHgyNywgMHg3NSwKKysg ICAgMHg2YywgMHg4MSwgMHhiZSwgMHgzMiwgMHg0ZCwgMHhiYSwgMHhiYiwgMHhmOAorK307Cisr Cisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcDI1Nl9xaXV0ZFtdID0geworKyAgICAweDFh LCAweDQ4LCAweDU1LCAweDZiLCAweDExLCAweGJlLCAweDkyLCAweGQ0LCAweDFjLCAweGQ3LCAw eDQ1LCAweGMzLAorKyAgICAweDgyLCAweDgxLCAweDUxLCAweGYxLCAweDIzLCAweDQwLCAweGI3 LCAweDgzLCAweGZkLCAweDAxLCAweDZkLCAweGJjLAorKyAgICAweGExLCAweDY2LCAweGFmLCAw eDBhLCAweDAzLCAweDIzLCAweGNkLCAweGM4CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBwMjU2X3ppdXRbXSA9IHsKKysgICAgMHg3NywgMHgyYSwgMHgxZSwgMHgzNywgMHhl ZSwgMHhlNiwgMHg1MSwgMHgwMiwgMHg3MSwgMHg0MCwgMHhmOCwgMHg2YSwKKysgICAgMHgzNiwg MHhmOCwgMHg2NSwgMHg2MSwgMHgyYiwgMHgxOCwgMHg3MSwgMHg4MiwgMHgyMywgMHhlNiwgMHhm MiwgMHg3NywKKysgICAgMHhjZSwgMHhlYywgMHhiOCwgMHg0OSwgMHhjNywgMHhiZiwgMHgzNiwg MHg0ZgorK307CisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKyAgICBpbnQgY3VydmU7CisrICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKngxOworKyAgICBzaXplX3QgeDFsZW47CisrICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKnkxOworKyAgICBzaXplX3QgeTFsZW47CisrICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKmQxOworKyAgICBzaXplX3QgZDFsZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KngyOworKyAgICBzaXplX3QgeDJsZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnkyOwor KyAgICBzaXplX3QgeTJsZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKno7CisrICAgIHNp emVfdCB6bGVuOworK30gRUNESF9TRUxGVEVTVF9EQVRBOworKworKyMgZGVmaW5lIG1ha2VfZWNk aF90ZXN0KG5pZCwgcHIpIHsgbmlkLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwciMjX3FpdXR4LCBzaXplb2YocHIjI19xaXV0eCksIFwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByIyNfcWl1dHksIHNpemVvZihwciMjX3FpdXR5KSwgXAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHIjI19xaXV0ZCwgc2l6ZW9mKHByIyNfcWl1dGQpLCBc CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwciMjX3FjYXZzeCwgc2l6ZW9mKHBy IyNfcWNhdnN4KSwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHIjI19xY2F2 c3ksIHNpemVvZihwciMjX3FjYXZzeSksIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByIyNfeml1dCwgc2l6ZW9mKHByIyNfeml1dCkgfQorKworK3N0YXRpYyBFQ0RIX1NFTEZU RVNUX0RBVEEgdGVzdF9lY2RoX2RhdGFbXSA9IHsKKysgICAgbWFrZV9lY2RoX3Rlc3QoTklEX1g5 XzYyX3ByaW1lMjU2djEsIHAyNTYpLAorK307CisrCisraW50IEZJUFNfc2VsZnRlc3RfZWNkaCh2 b2lkKQorK3sKKysgICAgRUNfS0VZICplYzEgPSBOVUxMLCAqZWMyID0gTlVMTDsKKysgICAgY29u c3QgRUNfUE9JTlQgKmVjcCA9IE5VTEw7CisrICAgIEJJR05VTSAqeCA9IE5VTEwsICp5ID0gTlVM TCwgKmQgPSBOVUxMOworKyAgICB1bnNpZ25lZCBjaGFyICp6dG1wID0gTlVMTDsKKysgICAgaW50 IHJ2ID0gMTsKKysgICAgc2l6ZV90IGk7CisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2Yo dGVzdF9lY2RoX2RhdGEpIC8gc2l6ZW9mKEVDREhfU0VMRlRFU1RfREFUQSk7IGkrKykgeworKyAg ICAgICAgRUNESF9TRUxGVEVTVF9EQVRBICplY2QgPSB0ZXN0X2VjZGhfZGF0YSArIGk7CisrICAg ICAgICBpZiAoIWZpcHNfcG9zdF9zdGFydGVkKEZJUFNfVEVTVF9FQ0RILCBlY2QtPmN1cnZlLCAw KSkKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIHp0bXAgPSBPUEVOU1NMX21hbGxv YyhlY2QtPnpsZW4pOworKworKyAgICAgICAgeCA9IEJOX2JpbjJibihlY2QtPngxLCBlY2QtPngx bGVuLCB4KTsKKysgICAgICAgIHkgPSBCTl9iaW4yYm4oZWNkLT55MSwgZWNkLT55MWxlbiwgeSk7 CisrICAgICAgICBkID0gQk5fYmluMmJuKGVjZC0+ZDEsIGVjZC0+ZDFsZW4sIGQpOworKworKyAg ICAgICAgaWYgKCF4IHx8ICF5IHx8ICFkIHx8ICF6dG1wKSB7CisrICAgICAgICAgICAgcnYgPSAt MTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysKKysgICAgICAgIGVjMSA9 IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShlY2QtPmN1cnZlKTsKKysgICAgICAgIGlmICghZWMx KSB7CisrICAgICAgICAgICAgcnYgPSAtMTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAg ICAgIH0KKysgICAgICAgIEVDX0tFWV9zZXRfZmxhZ3MoZWMxLCBFQ19GTEFHX0NPRkFDVE9SX0VD REgpOworKworKyAgICAgICAgaWYgKCFFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3Jk aW5hdGVzKGVjMSwgeCwgeSkpIHsKKysgICAgICAgICAgICBydiA9IC0xOworKyAgICAgICAgICAg IGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCFFQ19LRVlfc2V0X3ByaXZh dGVfa2V5KGVjMSwgZCkpIHsKKysgICAgICAgICAgICBydiA9IC0xOworKyAgICAgICAgICAgIGdv dG8gZXJyOworKyAgICAgICAgfQorKworKyAgICAgICAgeCA9IEJOX2JpbjJibihlY2QtPngyLCBl Y2QtPngybGVuLCB4KTsKKysgICAgICAgIHkgPSBCTl9iaW4yYm4oZWNkLT55MiwgZWNkLT55Mmxl biwgeSk7CisrCisrICAgICAgICBpZiAoIXggfHwgIXkpIHsKKysgICAgICAgICAgICBydiA9IC0x OworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICAgICAgZWMyID0g RUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lKGVjZC0+Y3VydmUpOworKyAgICAgICAgaWYgKCFlYzIp IHsKKysgICAgICAgICAgICBydiA9IC0xOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAg ICAgfQorKyAgICAgICAgRUNfS0VZX3NldF9mbGFncyhlYzEsIEVDX0ZMQUdfQ09GQUNUT1JfRUNE SCk7CisrCisrICAgICAgICBpZiAoIUVDX0tFWV9zZXRfcHVibGljX2tleV9hZmZpbmVfY29vcmRp bmF0ZXMoZWMyLCB4LCB5KSkgeworKyAgICAgICAgICAgIHJ2ID0gLTE7CisrICAgICAgICAgICAg Z290byBlcnI7CisrICAgICAgICB9CisrCisrICAgICAgICBlY3AgPSBFQ19LRVlfZ2V0MF9wdWJs aWNfa2V5KGVjMik7CisrICAgICAgICBpZiAoIWVjcCkgeworKyAgICAgICAgICAgIHJ2ID0gLTE7 CisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoIUVD REhfY29tcHV0ZV9rZXkoenRtcCwgZWNkLT56bGVuLCBlY3AsIGVjMSwgMCkpIHsKKysgICAgICAg ICAgICBydiA9IC0xOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAg ICAgICAgaWYgKCFmaXBzX3Bvc3RfY29ycnVwdChGSVBTX1RFU1RfRUNESCwgZWNkLT5jdXJ2ZSwg TlVMTCkpCisrICAgICAgICAgICAgenRtcFswXSBePSAweDE7CisrCisrICAgICAgICBpZiAobWVt Y21wKHp0bXAsIGVjZC0+eiwgZWNkLT56bGVuKSkgeworKyAgICAgICAgICAgIGZpcHNfcG9zdF9m YWlsZWQoRklQU19URVNUX0VDREgsIGVjZC0+Y3VydmUsIDApOworKyAgICAgICAgICAgIHJ2ID0g MDsKKysgICAgICAgIH0gZWxzZSBpZiAoIWZpcHNfcG9zdF9zdWNjZXNzKEZJUFNfVEVTVF9FQ0RI LCBlY2QtPmN1cnZlLCAwKSkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysKKysgICAgICAgIEVD X0tFWV9mcmVlKGVjMSk7CisrICAgICAgICBlYzEgPSBOVUxMOworKyAgICAgICAgRUNfS0VZX2Zy ZWUoZWMyKTsKKysgICAgICAgIGVjMiA9IE5VTEw7CisrICAgICAgICBPUEVOU1NMX2ZyZWUoenRt cCk7CisrICAgICAgICB6dG1wID0gTlVMTDsKKysgICAgfQorKworKyBlcnI6CisrCisrICAgIGlm ICh4KQorKyAgICAgICAgQk5fY2xlYXJfZnJlZSh4KTsKKysgICAgaWYgKHkpCisrICAgICAgICBC Tl9jbGVhcl9mcmVlKHkpOworKyAgICBpZiAoZCkKKysgICAgICAgIEJOX2NsZWFyX2ZyZWUoZCk7 CisrICAgIGlmIChlYzEpCisrICAgICAgICBFQ19LRVlfZnJlZShlYzEpOworKyAgICBpZiAoZWMy KQorKyAgICAgICAgRUNfS0VZX2ZyZWUoZWMyKTsKKysgICAgaWYgKHp0bXApCisrICAgICAgICBP UEVOU1NMX2ZyZWUoenRtcCk7CisrCisrICAgIHJldHVybiBydjsKKysKKyt9CisrCisrI2VuZGlm CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2VjZHNhX3NlbGZ0ZXN0 LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2VjZHNhX3NlbGZ0ZXN0 LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2VjZHNhX3NlbGZ0ZXN0LmMu Zmlwcy1lYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyNDg4NDU4MyArMDIwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZWNkc2Ffc2VsZnRlc3QuYwkyMDE1LTA0LTIyIDE5OjAw OjE5LjcyNDg4NDU4MyArMDIwMAorQEAgLTAsMCArMSwxNjUgQEAKKysvKiBmaXBzL2VjZHNhL2Zp cHNfZWNkc2Ffc2VsZnRlc3QuYyAqLworKy8qIFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNv biAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAorKyAqIHByb2plY3QgMjAxMS4K KysgKi8KKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNT TCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAq IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g CisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBk aXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRp b25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3Bs YXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8p IgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQ cm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHBy b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3 cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0 CisrICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVy aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICog ICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Ig d3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgor KyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWlu IHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Cisr ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wu b3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NM IFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS CisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVu U1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8s IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBP RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKgorKyAqLworKworKyNkZWZp bmUgT1BFTlNTTF9GSVBTQVBJCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxv cGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2VjLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvZWNkc2EuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvZXJyLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgPG9wZW5z c2wvYm4uaD4KKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrc3RhdGljIGNvbnN0IGNoYXIg UF8yNTZfbmFtZVtdID0gIkVDRFNBIFAtMjU2IjsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBQXzI1Nl9kW10gPSB7CisrICAgIDB4NTEsIDB4YmQsIDB4MDYsIDB4YTEsIDB4MWMsIDB4 ZGEsIDB4ZTIsIDB4MTIsIDB4OTksIDB4YzksIDB4NTIsIDB4M2YsCisrICAgIDB4ZWEsIDB4YTQs IDB4ZDIsIDB4ZDEsIDB4ZjQsIDB4N2YsIDB4ZDQsIDB4M2UsIDB4YmQsIDB4ZjgsIDB4ZmMsIDB4 ODcsCisrICAgIDB4ZGMsIDB4ODIsIDB4NTMsIDB4MjEsIDB4ZWUsIDB4YTAsIDB4ZGMsIDB4NjQK Kyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFBfMjU2X3F4W10gPSB7CisrICAg IDB4MjMsIDB4ODksIDB4ZTAsIDB4ZjQsIDB4NjksIDB4ZTAsIDB4NDksIDB4ZTUsIDB4YzcsIDB4 ZTUsIDB4NDAsIDB4NmUsCisrICAgIDB4OGYsIDB4MjUsIDB4ZGQsIDB4YWQsIDB4MTEsIDB4MTYs IDB4MTQsIDB4OWIsIDB4YWIsIDB4NDQsIDB4MDYsIDB4MzEsCisrICAgIDB4YmYsIDB4NWUsIDB4 YTYsIDB4NDQsIDB4YWMsIDB4ODYsIDB4MDAsIDB4MDcKKyt9OworKworK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIFBfMjU2X3F5W10gPSB7CisrICAgIDB4YjMsIDB4MDUsIDB4MGQsIDB4ZDAs IDB4ZGMsIDB4ZjcsIDB4NDAsIDB4ZTYsIDB4ZjksIDB4ZDgsIDB4NmQsIDB4N2IsCisrICAgIDB4 NjMsIDB4Y2EsIDB4OTcsIDB4ZTYsIDB4MTIsIDB4ZjksIDB4ZDQsIDB4MTgsIDB4NTksIDB4YmUs IDB4YjIsIDB4NWUsCisrICAgIDB4NGEsIDB4NmEsIDB4NzcsIDB4MjMsIDB4ZjQsIDB4MTEsIDB4 OWQsIDB4ZWIKKyt9OworKworK3R5cGVkZWYgc3RydWN0IHsKKysgICAgaW50IGN1cnZlOworKyAg ICBjb25zdCBjaGFyICpuYW1lOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICp4OworKyAgICBz aXplX3QgeGxlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqeTsKKysgICAgc2l6ZV90IHls ZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmQ7CisrICAgIHNpemVfdCBkbGVuOworK30g RUNfU0VMRlRFU1RfREFUQTsKKysKKysjIGRlZmluZSBtYWtlX2VjZHNhX3Rlc3QobmlkLCBwcikg eyBuaWQsIHByIyNfbmFtZSwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHIj I19xeCwgc2l6ZW9mKHByIyNfcXgpLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwciMjX3F5LCBzaXplb2YocHIjI19xeSksIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByIyNfZCwgc2l6ZW9mKHByIyNfZCl9CisrCisrc3RhdGljIEVDX1NFTEZURVNUX0RB VEEgdGVzdF9lY19kYXRhW10gPSB7CisrICAgIG1ha2VfZWNkc2FfdGVzdChOSURfWDlfNjJfcHJp bWUyNTZ2MSwgUF8yNTYpLAorK307CisrCisraW50IEZJUFNfc2VsZnRlc3RfZWNkc2EoKQorK3sK KysgICAgRUNfS0VZICplYyA9IE5VTEw7CisrICAgIEJJR05VTSAqeCA9IE5VTEwsICp5ID0gTlVM TCwgKmQgPSBOVUxMOworKyAgICBFVlBfUEtFWSAqcGsgPSBOVUxMOworKyAgICBpbnQgcnYgPSAw OworKyAgICBzaXplX3QgaTsKKysKKysgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0ZXN0X2Vj X2RhdGEpIC8gc2l6ZW9mKEVDX1NFTEZURVNUX0RBVEEpOyBpKyspIHsKKysgICAgICAgIEVDX1NF TEZURVNUX0RBVEEgKmVjZCA9IHRlc3RfZWNfZGF0YSArIGk7CisrCisrICAgICAgICB4ID0gQk5f YmluMmJuKGVjZC0+eCwgZWNkLT54bGVuLCB4KTsKKysgICAgICAgIHkgPSBCTl9iaW4yYm4oZWNk LT55LCBlY2QtPnlsZW4sIHkpOworKyAgICAgICAgZCA9IEJOX2JpbjJibihlY2QtPmQsIGVjZC0+ ZGxlbiwgZCk7CisrCisrICAgICAgICBpZiAoIXggfHwgIXkgfHwgIWQpCisrICAgICAgICAgICAg Z290byBlcnI7CisrCisrICAgICAgICBlYyA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShlY2Qt PmN1cnZlKTsKKysgICAgICAgIGlmICghZWMpCisrICAgICAgICAgICAgZ290byBlcnI7CisrCisr ICAgICAgICBpZiAoIUVDX0tFWV9zZXRfcHVibGljX2tleV9hZmZpbmVfY29vcmRpbmF0ZXMoZWMs IHgsIHkpKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKworKyAgICAgICAgaWYgKCFFQ19LRVlf c2V0X3ByaXZhdGVfa2V5KGVjLCBkKSkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysKKysgICAg ICAgIGlmICgocGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKKysgICAgICAgICAgICBnb3Rv IGVycjsKKysKKysgICAgICAgIEVWUF9QS0VZX2Fzc2lnbl9FQ19LRVkocGssIGVjKTsKKysKKysg ICAgICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBOVUxMLCAwLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgRVZQX3NoYTI1NigpLCAw LCBlY2QtPm5hbWUpKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIHJ2 ID0gMTsKKysKKysgZXJyOgorKworKyAgICBpZiAoeCkKKysgICAgICAgIEJOX2NsZWFyX2ZyZWUo eCk7CisrICAgIGlmICh5KQorKyAgICAgICAgQk5fY2xlYXJfZnJlZSh5KTsKKysgICAgaWYgKGQp CisrICAgICAgICBCTl9jbGVhcl9mcmVlKGQpOworKyAgICBpZiAocGspCisrICAgICAgICBFVlBf UEtFWV9mcmVlKHBrKTsKKysgICAgZWxzZSBpZiAoZWMpCisrICAgICAgICBFQ19LRVlfZnJlZShl Yyk7CisrCisrICAgIHJldHVybiBydjsKKysKKyt9CisrCisrI2VuZGlmCitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmguZmlwcy1lYyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9maXBzLmgKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmguZmlw cy1lYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjY4ODg4MzczMyArMDIwMAorKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9maXBzL2ZpcHMuaAkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyNDg4NDU4MyArMDIw MAorQEAgLTkzLDYgKzkzLDggQEAgZXh0ZXJuICJDIiB7CisgICAgIHZvaWQgRklQU19jb3JydXB0 X2RzYSh2b2lkKTsKKyAgICAgdm9pZCBGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbih2b2lkKTsKKyAg ICAgaW50IEZJUFNfc2VsZnRlc3RfZHNhKHZvaWQpOworKyAgICBpbnQgRklQU19zZWxmdGVzdF9l Y2RzYSh2b2lkKTsKKysgICAgaW50IEZJUFNfc2VsZnRlc3RfZWNkaCh2b2lkKTsKKyAgICAgdm9p ZCBGSVBTX2NvcnJ1cHRfcm5nKHZvaWQpOworICAgICB2b2lkIEZJUFNfcm5nX3N0aWNrKHZvaWQp OworICAgICB2b2lkIEZJUFNfeDkzMV9zdGljayhpbnQgb25vZmYpOworZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19wb3N0LmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZmlwcy9maXBzX3Bvc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2Zp cHNfcG9zdC5jLmZpcHMtZWMJMjAxNS0wNC0yMiAxOTowMDoxOS42ODg4ODM3MzMgKzAyMDAKKysr KyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYwkyMDE1LTA0LTIyIDE5OjAw OjE5LjcyNDg4NDU4MyArMDIwMAorQEAgLTk1LDggKzk1LDEyIEBAIGludCBGSVBTX3NlbGZ0ZXN0 KHZvaWQpCisgICAgICAgICBydiA9IDA7CisgICAgIGlmICghRklQU19zZWxmdGVzdF9yc2EoKSkK KyAgICAgICAgIHJ2ID0gMDsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X2VjZHNhKCkpCisrICAg ICAgICBydiA9IDA7CisgICAgIGlmICghRklQU19zZWxmdGVzdF9kc2EoKSkKKyAgICAgICAgIHJ2 ID0gMDsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X2VjZGgoKSkKKysgICAgICAgIHJ2ID0gMDsK KyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9m aXBzL01ha2VmaWxlLmZpcHMtZWMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvTWFrZWZpbGUK Ky0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9NYWtlZmlsZS5maXBzLWVjCTIwMTUtMDQt MjIgMTk6MDA6MTkuNjkxODgzODA1ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Zp cHMvTWFrZWZpbGUJMjAxNS0wNC0yMiAxOTowMDoxOS43MjQ4ODQ1ODMgKzAyMDAKK0BAIC0yNCwx MyArMjQsMTMgQEAgTElCU1JDPWZpcHNfYWVzX3NlbGZ0ZXN0LmMgZmlwc19kZXNfc2VsZgorICAg ICBmaXBzX3JzYV9zZWxmdGVzdC5jIGZpcHNfc2hhX3NlbGZ0ZXN0LmMgZmlwcy5jIGZpcHNfZHNh X3NlbGZ0ZXN0LmMgIGZpcHNfcmFuZC5jIFwKKyAgICAgZmlwc19yc2FfeDkzMWcuYyBmaXBzX3Bv c3QuYyBmaXBzX2RyYmdfY3RyLmMgZmlwc19kcmJnX2hhc2guYyBmaXBzX2RyYmdfaG1hYy5jIFwK KyAgICAgZmlwc19kcmJnX2xpYi5jIGZpcHNfZHJiZ19yYW5kLmMgZmlwc19kcmJnX3NlbGZ0ZXN0 LmMgZmlwc19yYW5kX2xpYi5jIFwKKy0gICAgZmlwc19jbWFjX3NlbGZ0ZXN0LmMgZmlwc19lbmMu YyBmaXBzX21kLmMKKysgICAgZmlwc19jbWFjX3NlbGZ0ZXN0LmMgZmlwc19lY2RoX3NlbGZ0ZXN0 LmMgZmlwc19lY2RzYV9zZWxmdGVzdC5jIGZpcHNfZW5jLmMgZmlwc19tZC5jCisgCisgTElCT0JK PWZpcHNfYWVzX3NlbGZ0ZXN0Lm8gZmlwc19kZXNfc2VsZnRlc3QubyBmaXBzX2htYWNfc2VsZnRl c3QubyBmaXBzX3JhbmRfc2VsZnRlc3QubyBcCisgICAgIGZpcHNfcnNhX3NlbGZ0ZXN0Lm8gZmlw c19zaGFfc2VsZnRlc3QubyBmaXBzLm8gZmlwc19kc2Ffc2VsZnRlc3QubyAgZmlwc19yYW5kLm8g XAorICAgICBmaXBzX3JzYV94OTMxZy5vIGZpcHNfcG9zdC5vIGZpcHNfZHJiZ19jdHIubyBmaXBz X2RyYmdfaGFzaC5vIGZpcHNfZHJiZ19obWFjLm8gXAorICAgICBmaXBzX2RyYmdfbGliLm8gZmlw c19kcmJnX3JhbmQubyBmaXBzX2RyYmdfc2VsZnRlc3QubyBmaXBzX3JhbmRfbGliLm8gXAorLSAg ICBmaXBzX2NtYWNfc2VsZnRlc3QubyBmaXBzX2VuYy5vIGZpcHNfbWQubworKyAgICBmaXBzX2Nt YWNfc2VsZnRlc3QubyBmaXBzX2VjZGhfc2VsZnRlc3QubyBmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm8g Zmlwc19lbmMubyBmaXBzX21kLm8KKyAKKyBMSUJDUllQVE89LUwuLiAtbGNyeXB0bworIAorQEAg LTExOSw2ICsxMTksMjEgQEAgZmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu cworIGZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2su aAorIGZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCisg Zmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlw c19hZXNfc2VsZnRlc3QuYworK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAorK2ZpcHNfY21hY19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY21hYy5oCisrZmlwc19jbWFjX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAorK2ZpcHNfY21hY19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJy LmgKKytmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKKytmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKKytmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29ial9tYWMuaAorK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb2JqZWN0cy5oCisrZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCisrZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCisrZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvc3RhY2suaAorK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2NtYWNfc2VsZnRlc3QuYworK2ZpcHNfY21hY19z ZWxmdGVzdC5vOiBmaXBzX2xvY2wuaAorIGZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCisgZmlwc19kZXNf c2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisgZmlwc19kZXNfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2Vyci5oCitAQCAtMjMyLDYgKzI0Nyw0NiBAQCBmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zCisgZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3N0YWNrLmgKKyBmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv c3ltaGFja3MuaCBmaXBzX2RzYV9zZWxmdGVzdC5jCisgZmlwc19kc2Ffc2VsZnRlc3QubzogZmlw c19sb2NsLmgKKytmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Fz bjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX2VjZGhfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2JuLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5o CisrZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9lYy5oCisrZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9lY2RoLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCisrZmlwc19l Y2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvZmlwcy5oCisrZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9saGFzaC5oCisrZmlwc19lY2RoX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vYmpfbWFjLmgKKytmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L29iamVjdHMuaAorK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv b3BlbnNzbGNvbmYuaAorK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb3BlbnNzbHYuaAorK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb3NzbF90eXAuaAorK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvc2FmZXN0YWNrLmgKKytmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3N0YWNrLmgKKytmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L3N5bWhhY2tzLmggZmlwc19lY2RoX3NlbGZ0ZXN0LmMKKytmaXBzX2VjZGhfc2VsZnRlc3Qubzog Zmlwc19sb2NsLmgKKytmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCisrZmlwc19lY2RzYV9zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYm4uaAorK2ZpcHNfZWNkc2Ffc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisrZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZWMuaAor K2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2VjZHNhLmgKKytm aXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZXZwLmgKKytmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9maXBzLmgKKytmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9saGFzaC5oCisrZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb2JqX21hYy5oCisrZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb2JqZWN0cy5oCisrZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb3BlbnNzbGNvbmYuaAorK2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL29wZW5zc2x2LmgKKytmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCisrZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKytmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9zdGFjay5oCisrZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2VjZHNhX3NlbGZ0ZXN0LmMKKytmaXBzX2VuYy5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8u aAorK2ZpcHNfZW5jLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZV9vczIuaAorK2ZpcHNfZW5jLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9l cnIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmgKKytmaXBzX2VuYy5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZmlwcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19l bmMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb2JqZWN0cy5oCisrZmlwc19lbmMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xj b25mLmgKKytmaXBzX2VuYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNfZW5jLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9zYWZlc3RhY2suaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAorK2ZpcHNf ZW5jLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfZW5jLmMKKyBmaXBz X2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYmlvLmgKKyBmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2NyeXB0by5oCisgZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAorQEAgLTI0Niw2ICszMDEs MTUgQEAgZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbgorIGZpcHNfaG1h Y19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKyBmaXBzX2ht YWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKKyBmaXBzX2htYWNf c2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19obWFjX3Nl bGZ0ZXN0LmMKKytmaXBzX21kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2Jpby5oCisrZmlwc19tZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv Y3J5cHRvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgKKytmaXBzX21kLm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9lcnIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmgKKytmaXBz X21kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2xoYXNoLmgKKytmaXBzX21kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfbWQubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29wZW5zc2xjb25mLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKKytm aXBzX21kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfbWQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0 YWNrLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmgKKytmaXBzX21kLm86IGZpcHNf bWQuYworIGZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2FzbjEuaAorIGZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv YmlvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisgZmlwc19wb3N0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9kc2EuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaAorZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvdmVyc2lvbi5tYXAuZmlwcy1lYyBvcGVuc3NsLTEuMC4yYS92 ZXJzaW9uLm1hcAorLS0tIG9wZW5zc2wtMS4wLjJhL3ZlcnNpb24ubWFwLmZpcHMtZWMJMjAxNS0w NC0yMiAxOTowMDoxOS43MDQ4ODQxMTEgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS92ZXJzaW9u Lm1hcAkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyNDg4NDU4MyArMDIwMAorQEAgLTYsNiArNiwxMCBA QCBPUEVOU1NMXzEuMC4xIHsKKyAJICAgIF9vcmlnaW5hbCo7CisgCSAgICBfY3VycmVudCo7Cisg fTsKKytPUEVOU1NMXzEuMC4xX0VDIHsKKysgICAgZ2xvYmFsOgorKyAgICAgICAgICAgIEVDKjsK Kyt9OworIE9QRU5TU0xfMS4wLjIgeworICAgICBnbG9iYWw6CisgCSAgICBTU0xlYXk7CgpkaWZm IC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtZmlwcy1tZDUtYWxsb3cucGF0Y2ggYi9vcGVuc3NsLTEu MC4yYS1maXBzLW1kNS1hbGxvdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi44MjU0MTdmCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmEtZmlwcy1tZDUt YWxsb3cucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL21kNS9tZDVfZGdzdC5jLm1kNS1hbGxvdyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWQ1L21k NV9kZ3N0LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMubWQ1LWFs bG93CTIwMTUtMDQtMDkgMTg6MTg6MzYuNTA1MzkzMTEzICswMjAwCisrKysgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL21kNS9tZDVfZGdzdC5jCTIwMTUtMDQtMDkgMTg6MTg6MzIuNDA4Mjk4NDY5ICsw MjAwCitAQCAtNzIsNyArNzIsMTYgQEAgY29uc3QgY2hhciBNRDVfdmVyc2lvbltdID0gIk1ENSIg T1BFTlNTTAorICNkZWZpbmUgSU5JVF9EQVRBX0MgKHVuc2lnbmVkIGxvbmcpMHg5OGJhZGNmZUwK KyAjZGVmaW5lIElOSVRfREFUQV9EICh1bnNpZ25lZCBsb25nKTB4MTAzMjU0NzZMCisgCistbm9u Zmlwc19tZF9pbml0KE1ENSkKKytpbnQgTUQ1X0luaXQoTUQ1X0NUWCAqYykKKysjaWZkZWYgT1BF TlNTTF9GSVBTCisreworKyAgICBpZiAoRklQU19tb2RlKCkgJiYgZ2V0ZW52KCJPUEVOU1NMX0ZJ UFNfTk9OX0FQUFJPVkVEX01ENV9BTExPVyIpID09IE5VTEwpCisrICAgICAgICBPcGVuU1NMRGll KF9fRklMRV9fLCBfX0xJTkVfXywgIkRpZ2VzdCBNRDUgZm9yYmlkZGVuIGluIEZJUFMgbW9kZSEi KTsKKysgICAgcmV0dXJuIHByaXZhdGVfTUQ1X0luaXQoYyk7CisrfQorKworK2ludCBwcml2YXRl X01ENV9Jbml0KE1ENV9DVFggKmMpCisrI2VuZGlmCisgeworICAgICBtZW1zZXQoYywgMCwgc2l6 ZW9mKCpjKSk7CisgICAgIGMtPkEgPSBJTklUX0RBVEFfQTsKCmRpZmYgLS1naXQgYS9vcGVuc3Ns LTEuMC4yYS1maXBzLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtZmlwcy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWJlZDNhCi0tLSAvZGV2L251bGwKKysrIGIvb3Bl bnNzbC0xLjAuMmEtZmlwcy5wYXRjaApAQCAtMCwwICsxLDEzNjk5IEBACitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9hcHBzL3NwZWVkLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9hcHBzL3NwZWVkLmMK Ky0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3NwZWVkLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2 LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvc3BlZWQuYwkyMDE1LTA0 LTIyIDE2OjA4OjQwLjI4NDI0NTQ2NSArMDIwMAorQEAgLTE5Nyw3ICsxOTcsNiBAQAorICMgIGlm ZGVmIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORAorICMgICB1bmRlZiBBRVNfc2V0X2VuY3J5cHRf a2V5CisgIyAgIHVuZGVmIEFFU19zZXRfZGVjcnlwdF9rZXkKKy0jICAgdW5kZWYgREVTX3NldF9r ZXlfdW5jaGVja2VkCisgIyAgZW5kaWYKKyAjICBkZWZpbmUgQkZfc2V0X2tleSAgICAgIHByaXZh dGVfQkZfc2V0X2tleQorICMgIGRlZmluZSBDQVNUX3NldF9rZXkgICAgcHJpdmF0ZV9DQVNUX3Nl dF9rZXkKK0BAIC0yMDUsNyArMjA0LDYgQEAKKyAjICBkZWZpbmUgU0VFRF9zZXRfa2V5ICAgIHBy aXZhdGVfU0VFRF9zZXRfa2V5CisgIyAgZGVmaW5lIFJDMl9zZXRfa2V5ICAgICBwcml2YXRlX1JD Ml9zZXRfa2V5CisgIyAgZGVmaW5lIFJDNF9zZXRfa2V5ICAgICBwcml2YXRlX1JDNF9zZXRfa2V5 CistIyAgZGVmaW5lIERFU19zZXRfa2V5X3VuY2hlY2tlZCAgIHByaXZhdGVfREVTX3NldF9rZXlf dW5jaGVja2VkCisgIyAgZGVmaW5lIEFFU19zZXRfZW5jcnlwdF9rZXkgICAgIHByaXZhdGVfQUVT X3NldF9lbmNyeXB0X2tleQorICMgIGRlZmluZSBBRVNfc2V0X2RlY3J5cHRfa2V5ICAgICBwcml2 YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkKKyAjICBkZWZpbmUgQ2FtZWxsaWFfc2V0X2tleSAgICAg ICAgcHJpdmF0ZV9DYW1lbGxpYV9zZXRfa2V5CitAQCAtOTc0LDcgKzk3MiwxMiBAQCBpbnQgTUFJ TihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgIyBlbmRpZgorICMgaWZuZGVmIE9QRU5TU0xfTk9f UlNBCisgICAgICAgICBpZiAoc3RyY21wKCphcmd2LCAicnNhIikgPT0gMCkgeworLSAgICAgICAg ICAgIHJzYV9kb2l0W1JfUlNBXzUxMl0gPSAxOworKyMgIGlmZGVmIE9QRU5TU0xfRklQUworKyAg ICAgICAgICAgIGlmICghRklQU19tb2RlKCkpCisrIyAgZW5kaWYKKysgICAgICAgICAgICB7Cisr ICAgICAgICAgICAgICAgIHJzYV9kb2l0W1JfUlNBXzUxMl0gPSAxOworKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgICByc2FfZG9pdFtSX1JTQV8xMDI0XSA9IDE7CisgICAgICAgICAgICAgcnNh X2RvaXRbUl9SU0FfMjA0OF0gPSAxOworICAgICAgICAgICAgIHJzYV9kb2l0W1JfUlNBXzQwOTZd ID0gMTsKK0BAIC05ODIsNyArOTg1LDEyIEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJn dikKKyAjIGVuZGlmCisgIyBpZm5kZWYgT1BFTlNTTF9OT19EU0EKKyAgICAgICAgIGlmIChzdHJj bXAoKmFyZ3YsICJkc2EiKSA9PSAwKSB7CistICAgICAgICAgICAgZHNhX2RvaXRbUl9EU0FfNTEy XSA9IDE7CisrIyAgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgICAgICAgICAgaWYgKCFGSVBTX21v ZGUoKSkKKysjICBlbmRpZgorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZHNhX2Rv aXRbUl9EU0FfNTEyXSA9IDE7CisrICAgICAgICAgICAgfQorICAgICAgICAgICAgIGRzYV9kb2l0 W1JfRFNBXzEwMjRdID0gMTsKKyAgICAgICAgICAgICBkc2FfZG9pdFtSX0RTQV8yMDQ4XSA9IDE7 CisgICAgICAgICB9IGVsc2UKK0BAIC0xMjMzLDEzICsxMjQxLDE5IEBAIGludCBNQUlOKGludCBh cmdjLCBjaGFyICoqYXJndikKKyAKKyAgICAgaWYgKGogPT0gMCkgeworICAgICAgICAgZm9yIChp ID0gMDsgaSA8IEFMR09SX05VTTsgaSsrKSB7CistICAgICAgICAgICAgaWYgKGkgIT0gRF9FVlAp CisrICAgICAgICAgICAgaWYgKGkgIT0gRF9FVlAgJiYKKysgICAgICAgICAgICAgICAgKCFGSVBT X21vZGUoKSB8fCAoaSAhPSBEX1dISVJMUE9PTCAmJgorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpICE9IERfTUQyICYmIGkgIT0gRF9NRDQgJiYKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaSAhPSBEX01ENSAmJiBpICE9IERfTURDMiAmJgorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IERfUk1EMTYwKSkpCisgICAgICAgICAgICAg ICAgIGRvaXRbaV0gPSAxOworICAgICAgICAgfQorICAgICAgICAgZm9yIChpID0gMDsgaSA8IFJT QV9OVU07IGkrKykKKy0gICAgICAgICAgICByc2FfZG9pdFtpXSA9IDE7CisrICAgICAgICAgICAg aWYgKCFGSVBTX21vZGUoKSB8fCBpICE9IFJfUlNBXzUxMikKKysgICAgICAgICAgICAgICAgcnNh X2RvaXRbaV0gPSAxOworICAgICAgICAgZm9yIChpID0gMDsgaSA8IERTQV9OVU07IGkrKykKKy0g ICAgICAgICAgICBkc2FfZG9pdFtpXSA9IDE7CisrICAgICAgICAgICAgaWYgKCFGSVBTX21vZGUo KSB8fCBpICE9IFJfRFNBXzUxMikKKysgICAgICAgICAgICAgICAgZHNhX2RvaXRbaV0gPSAxOwor ICMgaWZuZGVmIE9QRU5TU0xfTk9fRUNEU0EKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFQ19O VU07IGkrKykKKyAgICAgICAgICAgICBlY2RzYV9kb2l0W2ldID0gMTsKK0BAIC0xMjk5LDMwICsx MzEzLDQ2IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgQUVTX3NldF9l bmNyeXB0X2tleShrZXkzMiwgMjU2LCAmYWVzX2tzMyk7CisgIyBlbmRpZgorICMgaWZuZGVmIE9Q RU5TU0xfTk9fQ0FNRUxMSUEKKy0gICAgQ2FtZWxsaWFfc2V0X2tleShrZXkxNiwgMTI4LCAmY2Ft ZWxsaWFfa3MxKTsKKy0gICAgQ2FtZWxsaWFfc2V0X2tleShja2V5MjQsIDE5MiwgJmNhbWVsbGlh X2tzMik7CistICAgIENhbWVsbGlhX3NldF9rZXkoY2tleTMyLCAyNTYsICZjYW1lbGxpYV9rczMp OworKyAgICBpZiAoZG9pdFtEX0NCQ18xMjhfQ01MXSB8fCBkb2l0W0RfQ0JDXzE5Ml9DTUxdIHx8 IGRvaXRbRF9DQkNfMjU2X0NNTF0pIHsKKysgICAgICAgIENhbWVsbGlhX3NldF9rZXkoa2V5MTYs IDEyOCwgJmNhbWVsbGlhX2tzMSk7CisrICAgICAgICBDYW1lbGxpYV9zZXRfa2V5KGNrZXkyNCwg MTkyLCAmY2FtZWxsaWFfa3MyKTsKKysgICAgICAgIENhbWVsbGlhX3NldF9rZXkoY2tleTMyLCAy NTYsICZjYW1lbGxpYV9rczMpOworKyAgICB9CisgIyBlbmRpZgorICMgaWZuZGVmIE9QRU5TU0xf Tk9fSURFQQorLSAgICBpZGVhX3NldF9lbmNyeXB0X2tleShrZXkxNiwgJmlkZWFfa3MpOworKyAg ICBpZiAoZG9pdFtEX0NCQ19JREVBXSkgeworKyAgICAgICAgaWRlYV9zZXRfZW5jcnlwdF9rZXko a2V5MTYsICZpZGVhX2tzKTsKKysgICAgfQorICMgZW5kaWYKKyAjIGlmbmRlZiBPUEVOU1NMX05P X1NFRUQKKy0gICAgU0VFRF9zZXRfa2V5KGtleTE2LCAmc2VlZF9rcyk7CisrICAgIGlmIChkb2l0 W0RfQ0JDX1NFRURdKSB7CisrICAgICAgICBTRUVEX3NldF9rZXkoa2V5MTYsICZzZWVkX2tzKTsK KysgICAgfQorICMgZW5kaWYKKyAjIGlmbmRlZiBPUEVOU1NMX05PX1JDNAorLSAgICBSQzRfc2V0 X2tleSgmcmM0X2tzLCAxNiwga2V5MTYpOworKyAgICBpZiAoZG9pdFtEX1JDNF0pIHsKKysgICAg ICAgIFJDNF9zZXRfa2V5KCZyYzRfa3MsIDE2LCBrZXkxNik7CisrICAgIH0KKyAjIGVuZGlmCisg IyBpZm5kZWYgT1BFTlNTTF9OT19SQzIKKy0gICAgUkMyX3NldF9rZXkoJnJjMl9rcywgMTYsIGtl eTE2LCAxMjgpOworKyAgICBpZiAoZG9pdFtEX0NCQ19SQzJdKSB7CisrICAgICAgICBSQzJfc2V0 X2tleSgmcmMyX2tzLCAxNiwga2V5MTYsIDEyOCk7CisrICAgIH0KKyAjIGVuZGlmCisgIyBpZm5k ZWYgT1BFTlNTTF9OT19SQzUKKy0gICAgUkM1XzMyX3NldF9rZXkoJnJjNV9rcywgMTYsIGtleTE2 LCAxMik7CisrICAgIGlmIChkb2l0W0RfQ0JDX1JDNV0pIHsKKysgICAgICAgIFJDNV8zMl9zZXRf a2V5KCZyYzVfa3MsIDE2LCBrZXkxNiwgMTIpOworKyAgICB9CisgIyBlbmRpZgorICMgaWZuZGVm IE9QRU5TU0xfTk9fQkYKKy0gICAgQkZfc2V0X2tleSgmYmZfa3MsIDE2LCBrZXkxNik7CisrICAg IGlmIChkb2l0W0RfQ0JDX0JGXSkgeworKyAgICAgICAgQkZfc2V0X2tleSgmYmZfa3MsIDE2LCBr ZXkxNik7CisrICAgIH0KKyAjIGVuZGlmCisgIyBpZm5kZWYgT1BFTlNTTF9OT19DQVNUCistICAg IENBU1Rfc2V0X2tleSgmY2FzdF9rcywgMTYsIGtleTE2KTsKKysgICAgaWYgKGRvaXRbRF9DQkNf Q0FTVF0pIHsKKysgICAgICAgIENBU1Rfc2V0X2tleSgmY2FzdF9rcywgMTYsIGtleTE2KTsKKysg ICAgfQorICMgZW5kaWYKKyAjIGlmbmRlZiBPUEVOU1NMX05PX1JTQQorICAgICBtZW1zZXQocnNh X2MsIDAsIHNpemVvZihyc2FfYykpOworQEAgLTE2MDUsNiArMTYzNSw3IEBAIGludCBNQUlOKGlu dCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgIEhNQUNfQ1RYIGhjdHg7CisgCisgICAgICAg ICBITUFDX0NUWF9pbml0KCZoY3R4KTsKKysgICAgICAgIEhNQUNfQ1RYX3NldF9mbGFncygmaGN0 eCwgRVZQX01EX0NUWF9GTEFHX05PTl9GSVBTX0FMTE9XKTsKKyAgICAgICAgIEhNQUNfSW5pdF9l eCgmaGN0eCwgKHVuc2lnbmVkIGNoYXIgKikiVGhpcyBpcyBhIGtleS4uLiIsCisgICAgICAgICAg ICAgICAgICAgICAgMTYsIEVWUF9tZDUoKSwgTlVMTCk7CisgCitkaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9Db25maWd1cmUuZmlwcyBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUKKy0tLSBvcGVuc3Ns LTEuMC4yYS9Db25maWd1cmUuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI2NjI0NTAzOSArMDIw MAorKysrIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4NDI0 NTQ2NSArMDIwMAorQEAgLTEwNDAsMTEgKzEwNDAsNiBAQCBpZiAoZGVmaW5lZCgkZGlzYWJsZWR7 Im1kNSJ9KSB8fCBkZWZpbmVkCisgCSRkaXNhYmxlZHsic3NsMiJ9ID0gImZvcmNlZCI7CisgCX0K KyAKKy1pZiAoJGZpcHMgJiYgJGZpcHNsaWJkaXIgZXEgIiIpCistCXsKKy0JJGZpcHNsaWJkaXIg PSAkZmlwc2RpciAuICIvbGliLyI7CistCX0KKy0KKyAjIFJTQVggRU5HSU5FIHNldHMgZGVmYXVs dCBub24tRklQUyBSU0EgbWV0aG9kLgorIGlmICgkZmlwcykKKyAJeworQEAgLTE1MzIsNyArMTUy Nyw2IEBAICRjZmxhZ3MuPSIgLURPUEVOU1NMX0JOX0FTTV9HRjJtIiBpZiAoJGIKKyBpZiAoJGZp cHMpCisgCXsKKyAJJG9wZW5zc2xfb3RoZXJfZGVmaW5lcy49IiNkZWZpbmUgT1BFTlNTTF9GSVBT XG4iOworLQkkY2ZsYWdzIC49ICIgLUlcJChGSVBTRElSKS9pbmNsdWRlIjsKKyAJfQorIAorICRj cHVpZF9vYmo9Im1lbV9jbHIubyIJdW5sZXNzICgkY3B1aWRfb2JqID1+IC9cLm8kLyk7CitAQCAt MTcyNCw5ICsxNzE4LDEyIEBAIHdoaWxlICg8SU4+KQorIAorIAlzL15GSVBTRElSPS4qL0ZJUFNE SVI9JGZpcHNkaXIvOworIAlzL15GSVBTTElCRElSPS4qL0ZJUFNMSUJESVI9JGZpcHNsaWJkaXIv OworLQlzL15GSVBTQ0FOTElCPS4qL0ZJUFNDQU5MSUI9bGliY3J5cHRvLyBpZiAkZmlwczsKKyAJ cy9eQkFTRUFERFI9LiovQkFTRUFERFI9JGJhc2VhZGRyLzsKKyAKKysJaWYgKCRmaXBzKQorKwkJ eworKwkJcy9eRklQUz0uKi9GSVBTPXllcy87CisrCQl9CisgCXMvXlNITElCX1RBUkdFVD0uKi9T SExJQl9UQVJHRVQ9JHNoYXJlZF90YXJnZXQvOworIAlzL15TSExJQl9NQVJLPS4qL1NITElCX01B Uks9JHNoYXJlZF9tYXJrLzsKKyAJcy9eU0hBUkVEX0xJQlM9LiovU0hBUkVEX0xJQlM9XCQoU0hB UkVEX0NSWVBUTykgXCQoU0hBUkVEX1NTTCkvIGlmICghJG5vX3NoYXJlZCk7CitkaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vYWVzL2Flc19taXNjLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vYWVzL2Flc19taXNjLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vYWVzL2Flc19t aXNjLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9hZXMvYWVzX21pc2MuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4NDI0 NTQ2NSArMDIwMAorQEAgLTcwLDE3ICs3MCwxMSBAQCBjb25zdCBjaGFyICpBRVNfb3B0aW9ucyh2 b2lkKQorIGludCBBRVNfc2V0X2VuY3J5cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJL ZXksIGNvbnN0IGludCBiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEFFU19LRVkgKmtl eSkKKyB7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBmaXBzX2NpcGhlcl9hYm9ydChBRVMp OworLSNlbmRpZgorICAgICByZXR1cm4gcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5KHVzZXJL ZXksIGJpdHMsIGtleSk7CisgfQorIAorIGludCBBRVNfc2V0X2RlY3J5cHRfa2V5KGNvbnN0IHVu c2lnbmVkIGNoYXIgKnVzZXJLZXksIGNvbnN0IGludCBiaXRzLAorICAgICAgICAgICAgICAgICAg ICAgICAgIEFFU19LRVkgKmtleSkKKyB7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBmaXBz X2NpcGhlcl9hYm9ydChBRVMpOworLSNlbmRpZgorICAgICByZXR1cm4gcHJpdmF0ZV9BRVNfc2V0 X2RlY3J5cHRfa2V5KHVzZXJLZXksIGJpdHMsIGtleSk7CisgfQorZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2NtYWMvY21hYy5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2NtYWMv Y21hYy5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2NtYWMvY21hYy5jLmZpcHMJMjAxNS0w My0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v Y21hYy9jbWFjLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODQyNDU0NjUgKzAyMDAKK0BAIC0xMDUs MTIgKzEwNSw2IEBAIENNQUNfQ1RYICpDTUFDX0NUWF9uZXcodm9pZCkKKyAKKyB2b2lkIENNQUNf Q1RYX2NsZWFudXAoQ01BQ19DVFggKmN0eCkKKyB7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAg ICBpZiAoRklQU19tb2RlKCkgJiYgIWN0eC0+Y2N0eC5lbmdpbmUpIHsKKy0gICAgICAgIEZJUFNf Y21hY19jdHhfY2xlYW51cChjdHgpOworLSAgICAgICAgcmV0dXJuOworLSAgICB9CistI2VuZGlm CisgICAgIEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eC0+Y2N0eCk7CisgICAgIE9QRU5TU0xf Y2xlYW5zZShjdHgtPnRibCwgRVZQX01BWF9CTE9DS19MRU5HVEgpOworICAgICBPUEVOU1NMX2Ns ZWFuc2UoY3R4LT5rMSwgRVZQX01BWF9CTE9DS19MRU5HVEgpOworQEAgLTE1OCwxMiArMTUyLDYg QEAgaW50IENNQUNfSW5pdChDTUFDX0NUWCAqY3R4LCBjb25zdCB2b2lkCisgICAgICAgICAgICAg RVZQZXJyKEVWUF9GX0NNQUNfSU5JVCwgRVZQX1JfRElTQUJMRURfRk9SX0ZJUFMpOworICAgICAg ICAgICAgIHJldHVybiAwOworICAgICAgICAgfQorLSAgICAgICAgLyoKKy0gICAgICAgICAqIE90 aGVyIGFsZ29yaXRobSBibG9ja2luZyB3aWxsIGJlIGRvbmUgaW4gRklQU19jbWFjX2luaXQsIHZp YQorLSAgICAgICAgICogRklQU19jaXBoZXJpbml0KCkuCistICAgICAgICAgKi8KKy0gICAgICAg IGlmICghaW1wbCAmJiAhY3R4LT5jY3R4LmVuZ2luZSkKKy0gICAgICAgICAgICByZXR1cm4gRklQ U19jbWFjX2luaXQoY3R4LCBrZXksIGtleWxlbiwgY2lwaGVyLCBOVUxMKTsKKyAgICAgfQorICNl bmRpZgorICAgICAvKiBBbGwgemVyb3MgbWVhbnMgcmVzdGFydCAqLworQEAgLTIwOSwxMCArMTk3 LDYgQEAgaW50IENNQUNfVXBkYXRlKENNQUNfQ1RYICpjdHgsIGNvbnN0IHZvaQorIHsKKyAgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSA9IGluOworICAgICBzaXplX3QgYmw7CistI2lmZGVm IE9QRU5TU0xfRklQUworLSAgICBpZiAoRklQU19tb2RlKCkgJiYgIWN0eC0+Y2N0eC5lbmdpbmUp CistICAgICAgICByZXR1cm4gRklQU19jbWFjX3VwZGF0ZShjdHgsIGluLCBkbGVuKTsKKy0jZW5k aWYKKyAgICAgaWYgKGN0eC0+bmxhc3RfYmxvY2sgPT0gLTEpCisgICAgICAgICByZXR1cm4gMDsK KyAgICAgaWYgKGRsZW4gPT0gMCkKK0BAIC0yNTIsMTAgKzIzNiw2IEBAIGludCBDTUFDX1VwZGF0 ZShDTUFDX0NUWCAqY3R4LCBjb25zdCB2b2kKKyBpbnQgQ01BQ19GaW5hbChDTUFDX0NUWCAqY3R4 LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCAqcG91dGxlbikKKyB7CisgICAgIGludCBpLCBi bCwgbGI7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAoRklQU19tb2RlKCkgJiYgIWN0 eC0+Y2N0eC5lbmdpbmUpCistICAgICAgICByZXR1cm4gRklQU19jbWFjX2ZpbmFsKGN0eCwgb3V0 LCBwb3V0bGVuKTsKKy0jZW5kaWYKKyAgICAgaWYgKGN0eC0+bmxhc3RfYmxvY2sgPT0gLTEpCisg ICAgICAgICByZXR1cm4gMDsKKyAgICAgYmwgPSBFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplKCZj dHgtPmNjdHgpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2NyeXB0by5oLmZpcHMg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2NyeXB0by5oCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2NyeXB0by5oLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4xNjEyNDI1NTIgKzAyMDAKKysrKyBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vY3J5cHRvLmgJMjAxNS0wNC0yMiAxNjowODo0MC4yODUyNDU0 ODkgKzAyMDAKK0BAIC02MDAsMjQgKzYwMCwyOSBAQCBpbnQgRklQU19tb2RlX3NldChpbnQgcik7 Cisgdm9pZCBPUEVOU1NMX2luaXQodm9pZCk7CisgCisgIyBkZWZpbmUgZmlwc19tZF9pbml0KGFs ZykgZmlwc19tZF9pbml0X2N0eChhbGcsIGFsZykKKysjIGRlZmluZSBub25maXBzX21kX2luaXQo YWxnKSBub25maXBzX21kX2luaXRfY3R4KGFsZywgYWxnKQorKyMgZGVmaW5lIGZpcHNfbWRfaW5p dF9jdHgoYWxnLCBjeCkgXAorKyAgICAgICAgaW50IGFsZyMjX0luaXQoY3gjI19DVFggKmMpCisg CisgIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKy0jICBkZWZpbmUgZmlwc19tZF9pbml0X2N0eChhbGcs IGN4KSBcCisrIyAgZGVmaW5lIG5vbmZpcHNfbWRfaW5pdF9jdHgoYWxnLCBjeCkgXAorICAgICAg ICAgaW50IGFsZyMjX0luaXQoY3gjI19DVFggKmMpIFwKKyAgICAgICAgIHsgXAorICAgICAgICAg aWYgKEZJUFNfbW9kZSgpKSBPcGVuU1NMRGllKF9fRklMRV9fLCBfX0xJTkVfXywgXAorLSAgICAg ICAgICAgICAgICAiTG93IGxldmVsIEFQSSBjYWxsIHRvIGRpZ2VzdCAiICNhbGcgIiBmb3JiaWRk ZW4gaW4gRklQUyBtb2RlISIpOyBcCisrICAgICAgICAgICAgICAgICJEaWdlc3QgIiAjYWxnICIg Zm9yYmlkZGVuIGluIEZJUFMgbW9kZSEiKTsgXAorICAgICAgICAgcmV0dXJuIHByaXZhdGVfIyNh bGcjI19Jbml0KGMpOyBcCisgICAgICAgICB9IFwKKyAgICAgICAgIGludCBwcml2YXRlXyMjYWxn IyNfSW5pdChjeCMjX0NUWCAqYykKKyAKKyAjICBkZWZpbmUgZmlwc19jaXBoZXJfYWJvcnQoYWxn KSBcCisgICAgICAgICBpZiAoRklQU19tb2RlKCkpIE9wZW5TU0xEaWUoX19GSUxFX18sIF9fTElO RV9fLCBcCistICAgICAgICAgICAgICAgICJMb3cgbGV2ZWwgQVBJIGNhbGwgdG8gY2lwaGVyICIg I2FsZyAiIGZvcmJpZGRlbiBpbiBGSVBTIG1vZGUhIikKKysgICAgICAgICAgICAgICAgIkNpcGhl ciAiICNhbGcgIiBmb3JiaWRkZW4gaW4gRklQUyBtb2RlISIpCisrCisrLyogZGllIGlmIEZJUFMg c2VsZnRlc3QgZmFpbGVkICovCisrdm9pZCBGSVBTX3NlbGZ0ZXN0X2NoZWNrKHZvaWQpOworIAor ICMgZWxzZQorLSMgIGRlZmluZSBmaXBzX21kX2luaXRfY3R4KGFsZywgY3gpIFwKKy0gICAgICAg IGludCBhbGcjI19Jbml0KGN4IyNfQ1RYICpjKQorKyMgIGRlZmluZSBub25maXBzX21kX2luaXRf Y3R4KGFsZywgY3gpIGZpcHNfbWRfaW5pdF9jdHgoYWxnLCBjeCkKKyAjICBkZWZpbmUgZmlwc19j aXBoZXJfYWJvcnQoYWxnKSB3aGlsZSgwKQorICMgZW5kaWYKKyAKK0BAIC02MzcsNiArNjQyLDkg QEAgaW50IENSWVBUT19tZW1jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3QgdgorICAqLworIHZvaWQg RVJSX2xvYWRfQ1JZUFRPX3N0cmluZ3Modm9pZCk7CisgCisrIyBkZWZpbmUgT1BFTlNTTF9IQVZF X0lOSVQgICAgICAgMQorK3ZvaWQgT1BFTlNTTF9pbml0X2xpYnJhcnkodm9pZCk7CisrCisgLyog RXJyb3IgY29kZXMgZm9yIHRoZSBDUllQVE8gZnVuY3Rpb25zLiAqLworIAorIC8qIEZ1bmN0aW9u IGNvZGVzLiAqLworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Rlcy9kZXMuaC5maXBz IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kZXMvZGVzLmgKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZGVzL2Rlcy5oLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4xOTEyNDMyNjMgKzAyMDAKKysr KyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZGVzL2Rlcy5oCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg1 MjQ1NDg5ICswMjAwCitAQCAtMjMxLDEwICsyMzEsNiBAQCBpbnQgREVTX3NldF9rZXkoY29uc3Rf REVTX2NibG9jayAqa2V5LCBECisgaW50IERFU19rZXlfc2NoZWQoY29uc3RfREVTX2NibG9jayAq a2V5LCBERVNfa2V5X3NjaGVkdWxlICpzY2hlZHVsZSk7CisgaW50IERFU19zZXRfa2V5X2NoZWNr ZWQoY29uc3RfREVTX2NibG9jayAqa2V5LCBERVNfa2V5X3NjaGVkdWxlICpzY2hlZHVsZSk7Cisg dm9pZCBERVNfc2V0X2tleV91bmNoZWNrZWQoY29uc3RfREVTX2NibG9jayAqa2V5LCBERVNfa2V5 X3NjaGVkdWxlICpzY2hlZHVsZSk7CistIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKy12b2lkIHByaXZh dGVfREVTX3NldF9rZXlfdW5jaGVja2VkKGNvbnN0X0RFU19jYmxvY2sgKmtleSwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFU19rZXlfc2NoZWR1bGUgKnNjaGVkdWxlKTsK Ky0jIGVuZGlmCisgdm9pZCBERVNfc3RyaW5nX3RvX2tleShjb25zdCBjaGFyICpzdHIsIERFU19j YmxvY2sgKmtleSk7Cisgdm9pZCBERVNfc3RyaW5nX3RvXzJrZXlzKGNvbnN0IGNoYXIgKnN0ciwg REVTX2NibG9jayAqa2V5MSwgREVTX2NibG9jayAqa2V5Mik7Cisgdm9pZCBERVNfY2ZiNjRfZW5j cnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Rlcy9zZXRfa2V5LmMuZmlwcyBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZGVzL3NldF9rZXkuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kZXMvc2V0 X2tleS5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZGVzL3NldF9rZXkuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4NTI0 NTQ4OSArMDIwMAorQEAgLTM1OSwxNSArMzU5LDYgQEAgaW50IERFU19zZXRfa2V5X2NoZWNrZWQo Y29uc3RfREVTX2NibG9jaworIH0KKyAKKyB2b2lkIERFU19zZXRfa2V5X3VuY2hlY2tlZChjb25z dF9ERVNfY2Jsb2NrICprZXksIERFU19rZXlfc2NoZWR1bGUgKnNjaGVkdWxlKQorLSNpZmRlZiBP UEVOU1NMX0ZJUFMKKy17CistICAgIGZpcHNfY2lwaGVyX2Fib3J0KERFUyk7CistICAgIHByaXZh dGVfREVTX3NldF9rZXlfdW5jaGVja2VkKGtleSwgc2NoZWR1bGUpOworLX0KKy0KKy12b2lkIHBy aXZhdGVfREVTX3NldF9rZXlfdW5jaGVja2VkKGNvbnN0X0RFU19jYmxvY2sgKmtleSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFU19rZXlfc2NoZWR1bGUgKnNjaGVkdWxl KQorLSNlbmRpZgorIHsKKyAgICAgc3RhdGljIGNvbnN0IGludCBzaGlmdHMyWzE2XSA9CisgICAg ICAgICB7IDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDAgfTsK K2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9kaF9nZW4uYy5maXBzIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9kaC9kaF9nZW4uYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9k aF9nZW4uYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoX2dlbi5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg1MjQ1 NDg5ICswMjAwCitAQCAtODUsMTAgKzg1LDYgQEAgaW50IERIX2dlbmVyYXRlX3BhcmFtZXRlcnNf ZXgoREggKnJldCwgaQorICNlbmRpZgorICAgICBpZiAocmV0LT5tZXRoLT5nZW5lcmF0ZV9wYXJh bXMpCisgICAgICAgICByZXR1cm4gcmV0LT5tZXRoLT5nZW5lcmF0ZV9wYXJhbXMocmV0LCBwcmlt ZV9sZW4sIGdlbmVyYXRvciwgY2IpOworLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgaWYgKEZJ UFNfbW9kZSgpKQorLSAgICAgICAgcmV0dXJuIEZJUFNfZGhfZ2VuZXJhdGVfcGFyYW1ldGVyc19l eChyZXQsIHByaW1lX2xlbiwgZ2VuZXJhdG9yLCBjYik7CistI2VuZGlmCisgICAgIHJldHVybiBk aF9idWlsdGluX2dlbnBhcmFtcyhyZXQsIHByaW1lX2xlbiwgZ2VuZXJhdG9yLCBjYik7CisgfQor IAorQEAgLTEyNiw2ICsxMjIsMTggQEAgc3RhdGljIGludCBkaF9idWlsdGluX2dlbnBhcmFtcyhE SCAqcmV0LAorICAgICBpbnQgZywgb2sgPSAtMTsKKyAgICAgQk5fQ1RYICpjdHggPSBOVUxMOwor IAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkp IHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0RIX0JVSUxUSU5fR0VOUEFSQU1TLCBGSVBTX1Jf RklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysg ICAgaWYgKEZJUFNfbW9kZSgpICYmIChwcmltZV9sZW4gPCBPUEVOU1NMX0RIX0ZJUFNfTUlOX01P RFVMVVNfQklUUykpIHsKKysgICAgICAgIERIZXJyKERIX0ZfREhfQlVJTFRJTl9HRU5QQVJBTVMs IERIX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9Cisr I2VuZGlmCisrCisgICAgIGN0eCA9IEJOX0NUWF9uZXcoKTsKKyAgICAgaWYgKGN0eCA9PSBOVUxM KQorICAgICAgICAgZ290byBlcnI7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZGgv ZGguaC5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9kaC5oCistLS0gb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2RoL2RoLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjEzNDI0MTkxMyArMDIw MAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9kaC5oCTIwMTUtMDQtMjIgMTY6MDg6NDAu Mjg1MjQ1NDg5ICswMjAwCitAQCAtNzcsNiArNzcsOCBAQAorICMgIGRlZmluZSBPUEVOU1NMX0RI X01BWF9NT0RVTFVTX0JJVFMgICAgMTAwMDAKKyAjIGVuZGlmCisgCisrIyBkZWZpbmUgT1BFTlNT TF9ESF9GSVBTX01JTl9NT0RVTFVTX0JJVFMgMTAyNAorKworICMgZGVmaW5lIERIX0ZMQUdfQ0FD SEVfTU9OVF9QICAgICAweDAxCisgCisgLyoKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9kaC9kaF9rZXkuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9kaF9rZXkuYworLS0t IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9kaF9rZXkuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MzA6 MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoX2tleS5j CTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg1MjQ1NDg5ICswMjAwCitAQCAtNjEsNiArNjEsOSBAQAor ICNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgorICNp bmNsdWRlIDxvcGVuc3NsL2RoLmg+CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8 b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisgCisgc3RhdGljIGludCBnZW5lcmF0ZV9rZXkoREgg KmRoKTsKKyBzdGF0aWMgaW50IGNvbXB1dGVfa2V5KHVuc2lnbmVkIGNoYXIgKmtleSwgY29uc3Qg QklHTlVNICpwdWJfa2V5LCBESCAqZGgpOworQEAgLTk3LDcgKzEwMCw3IEBAIGludCBESF9jb21w dXRlX2tleSh1bnNpZ25lZCBjaGFyICprZXksIGMKKyBpbnQgREhfY29tcHV0ZV9rZXlfcGFkZGVk KHVuc2lnbmVkIGNoYXIgKmtleSwgY29uc3QgQklHTlVNICpwdWJfa2V5LCBESCAqZGgpCisgewor ICAgICBpbnQgcnYsIHBhZDsKKy0gICAgcnYgPSBkaC0+bWV0aC0+Y29tcHV0ZV9rZXkoa2V5LCBw dWJfa2V5LCBkaCk7CisrICAgIHJ2ID0gREhfY29tcHV0ZV9rZXkoa2V5LCBwdWJfa2V5LCBkaCk7 CisgICAgIGlmIChydiA8PSAwKQorICAgICAgICAgcmV0dXJuIHJ2OworICAgICBwYWQgPSBCTl9u dW1fYnl0ZXMoZGgtPnApIC0gcnY7CitAQCAtMTE1LDcgKzExOCw3IEBAIHN0YXRpYyBESF9NRVRI T0QgZGhfb3NzbCA9IHsKKyAgICAgZGhfYm5fbW9kX2V4cCwKKyAgICAgZGhfaW5pdCwKKyAgICAg ZGhfZmluaXNoLAorLSAgICAwLAorKyAgICBESF9GTEFHX0ZJUFNfTUVUSE9ELAorICAgICBOVUxM LAorICAgICBOVUxMCisgfTsKK0BAIC0xMzQsNiArMTM3LDE0IEBAIHN0YXRpYyBpbnQgZ2VuZXJh dGVfa2V5KERIICpkaCkKKyAgICAgQk5fTU9OVF9DVFggKm1vbnQgPSBOVUxMOworICAgICBCSUdO VU0gKnB1Yl9rZXkgPSBOVUxMLCAqcHJpdl9rZXkgPSBOVUxMOworIAorKyNpZmRlZiBPUEVOU1NM X0ZJUFMKKysgICAgaWYgKEZJUFNfbW9kZSgpCisrICAgICAgICAmJiAoQk5fbnVtX2JpdHMoZGgt PnApIDwgT1BFTlNTTF9ESF9GSVBTX01JTl9NT0RVTFVTX0JJVFMpKSB7CisrICAgICAgICBESGVy cihESF9GX0dFTkVSQVRFX0tFWSwgREhfUl9LRVlfU0laRV9UT09fU01BTEwpOworKyAgICAgICAg cmV0dXJuIDA7CisrICAgIH0KKysjZW5kaWYKKysKKyAgICAgY3R4ID0gQk5fQ1RYX25ldygpOwor ICAgICBpZiAoY3R4ID09IE5VTEwpCisgICAgICAgICBnb3RvIGVycjsKK0BAIC0yMTcsNiArMjI4 LDEzIEBAIHN0YXRpYyBpbnQgY29tcHV0ZV9rZXkodW5zaWduZWQgY2hhciAqa2UKKyAgICAgICAg IERIZXJyKERIX0ZfQ09NUFVURV9LRVksIERIX1JfTU9EVUxVU19UT09fTEFSR0UpOworICAgICAg ICAgZ290byBlcnI7CisgICAgIH0KKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBT X21vZGUoKQorKyAgICAgICAgJiYgKEJOX251bV9iaXRzKGRoLT5wKSA8IE9QRU5TU0xfREhfRklQ U19NSU5fTU9EVUxVU19CSVRTKSkgeworKyAgICAgICAgREhlcnIoREhfRl9DT01QVVRFX0tFWSwg REhfUl9LRVlfU0laRV9UT09fU01BTEwpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysj ZW5kaWYKKyAKKyAgICAgY3R4ID0gQk5fQ1RYX25ldygpOworICAgICBpZiAoY3R4ID09IE5VTEwp CitAQCAtMjc3LDYgKzI5NSw5IEBAIHN0YXRpYyBpbnQgZGhfYm5fbW9kX2V4cChjb25zdCBESCAq ZGgsIEIKKyAKKyBzdGF0aWMgaW50IGRoX2luaXQoREggKmRoKQorIHsKKysjaWZkZWYgT1BFTlNT TF9GSVBTCisrICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsKKysjZW5kaWYKKyAgICAgZGgtPmZs YWdzIHw9IERIX0ZMQUdfQ0FDSEVfTU9OVF9QOworICAgICByZXR1cm4gKDEpOworIH0KK2RpZmYg LXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9kaF9saWIuYy5maXBzIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9kaC9kaF9saWIuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9kaF9saWIu Yy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2RoL2RoX2xpYi5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg2MjQ1NTEyICsw MjAwCitAQCAtODAsMTQgKzgwLDcgQEAgdm9pZCBESF9zZXRfZGVmYXVsdF9tZXRob2QoY29uc3Qg REhfTUVUSAorIGNvbnN0IERIX01FVEhPRCAqREhfZ2V0X2RlZmF1bHRfbWV0aG9kKHZvaWQpCisg eworICAgICBpZiAoIWRlZmF1bHRfREhfbWV0aG9kKSB7CistI2lmZGVmIE9QRU5TU0xfRklQUwor LSAgICAgICAgaWYgKEZJUFNfbW9kZSgpKQorLSAgICAgICAgICAgIHJldHVybiBGSVBTX2RoX29w ZW5zc2woKTsKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICByZXR1cm4gREhfT3BlblNTTCgp OworLSNlbHNlCisgICAgICAgICBkZWZhdWx0X0RIX21ldGhvZCA9IERIX09wZW5TU0woKTsKKy0j ZW5kaWYKKyAgICAgfQorICAgICByZXR1cm4gZGVmYXVsdF9ESF9tZXRob2Q7CisgfQorZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2FfZXJyLmMuZmlwcyBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZHNhL2RzYV9lcnIuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNh X2Vyci5jLmZpcHMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9lcnIuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4NjI0 NTUxMiArMDIwMAorQEAgLTc0LDYgKzc0LDggQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBEU0Ff c3RyX2Z1bmN0c1tdCisgICAgIHtFUlJfRlVOQyhEU0FfRl9ET19EU0FfUFJJTlQpLCAiRE9fRFNB X1BSSU5UIn0sCisgICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FQQVJBTVNfUFJJTlQpLCAiRFNBcGFy YW1zX3ByaW50In0sCisgICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FQQVJBTVNfUFJJTlRfRlApLCAi RFNBcGFyYW1zX3ByaW50X2ZwIn0sCisrICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FfQlVJTFRJTl9L RVlHRU4pLCAiZHNhX2J1aWx0aW5fa2V5Z2VuIn0sCisrICAgIHtFUlJfRlVOQyhEU0FfRl9EU0Ff QlVJTFRJTl9QQVJBTUdFTiksICJkc2FfYnVpbHRpbl9wYXJhbWdlbiJ9LAorICAgICB7RVJSX0ZV TkMoRFNBX0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4yKSwgIkRTQV9CVUlMVElOX1BBUkFNR0VOMiJ9 LAorICAgICB7RVJSX0ZVTkMoRFNBX0ZfRFNBX0RPX1NJR04pLCAiRFNBX2RvX3NpZ24ifSwKKyAg ICAge0VSUl9GVU5DKERTQV9GX0RTQV9ET19WRVJJRlkpLCAiRFNBX2RvX3ZlcmlmeSJ9LAorQEAg LTEwOSw2ICsxMTEsOCBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIERTQV9zdHJfcmVhc29uc1td CisgICAgIHtFUlJfUkVBU09OKERTQV9SX0RFQ09ERV9FUlJPUiksICJkZWNvZGUgZXJyb3IifSwK KyAgICAge0VSUl9SRUFTT04oRFNBX1JfSU5WQUxJRF9ESUdFU1RfVFlQRSksICJpbnZhbGlkIGRp Z2VzdCB0eXBlIn0sCisgICAgIHtFUlJfUkVBU09OKERTQV9SX0lOVkFMSURfUEFSQU1FVEVSUyks ICJpbnZhbGlkIHBhcmFtZXRlcnMifSwKKysgICAge0VSUl9SRUFTT04oRFNBX1JfS0VZX1NJWkVf SU5WQUxJRCksICJrZXkgc2l6ZSBpbnZhbGlkIn0sCisrICAgIHtFUlJfUkVBU09OKERTQV9SX0tF WV9TSVpFX1RPT19TTUFMTCksICJrZXkgc2l6ZSB0b28gc21hbGwifSwKKyAgICAge0VSUl9SRUFT T04oRFNBX1JfTUlTU0lOR19QQVJBTUVURVJTKSwgIm1pc3NpbmcgcGFyYW1ldGVycyJ9LAorICAg ICB7RVJSX1JFQVNPTihEU0FfUl9NT0RVTFVTX1RPT19MQVJHRSksICJtb2R1bHVzIHRvbyBsYXJn ZSJ9LAorICAgICB7RVJSX1JFQVNPTihEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMpLCAibmVl ZCBuZXcgc2V0dXAgdmFsdWVzIn0sCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNh L2RzYV9nZW4uYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX2dlbi5jCistLS0g b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2FfZ2VuLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMw OjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX2dl bi5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg2MjQ1NTEyICswMjAwCitAQCAtOTEsNiArOTEsMTYg QEAKKyAjICBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKyAjIGVuZGlmCisgCisrIyBpZm5kZWYg T1BFTlNTTF9GSVBTCisrc3RhdGljIGludCBGSVBTX2RzYV9nZW5lcmF0ZV9wcShCTl9DVFggKmN0 eCwgc2l6ZV90IGJpdHMsIHNpemVfdCBxYml0cywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IEVWUF9NRCAqZXZwbWQsIHVuc2lnbmVkIGNoYXIgKnNlZWQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VlZF9sZW4sIEJJR05VTSAqKnBfcmV0LCBC SUdOVU0gKipxX3JldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY291 bnRlcl9yZXQsIEJOX0dFTkNCICpjYik7Cisrc3RhdGljIGludCBGSVBTX2RzYV9nZW5lcmF0ZV9n KEJOX0NUWCAqY3R4LCBCSUdOVU0gKnAsIEJJR05VTSAqcSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQklHTlVNICoqZ19yZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCTl9HRU5DQiAqY2IpOworKyMgZW5kaWYKKysKKyBp bnQgRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoRFNBICpyZXQsIGludCBiaXRzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWVkX2luLCBp bnQgc2VlZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY291bnRl cl9yZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0LAorQEAgLTEwNiwxMyArMTE2LDYgQEAgaW50IERT QV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KERTQSAqcmV0LAorICAgICBpZiAocmV0LT5tZXRoLT5k c2FfcGFyYW1nZW4pCisgICAgICAgICByZXR1cm4gcmV0LT5tZXRoLT5kc2FfcGFyYW1nZW4ocmV0 LCBiaXRzLCBzZWVkX2luLCBzZWVkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb3VudGVyX3JldCwgaF9yZXQsIGNiKTsKKy0jIGlmZGVmIE9QRU5TU0xfRklQ UworLSAgICBlbHNlIGlmIChGSVBTX21vZGUoKSkgeworLSAgICAgICAgcmV0dXJuIEZJUFNfZHNh X2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgocmV0LCBiaXRzLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZF9pbiwgc2VlZF9sZW4sCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX3JldCwgaF9yZXQs IGNiKTsKKy0gICAgfQorLSMgZW5kaWYKKyAgICAgZWxzZSB7CisgICAgICAgICBjb25zdCBFVlBf TUQgKmV2cG1kOworICAgICAgICAgc2l6ZV90IHFiaXRzID0gYml0cyA+PSAyMDQ4ID8gMjU2IDog MTYwOworQEAgLTEyNiw4MCArMTI5LDE1NiBAQCBpbnQgRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNf ZXgoRFNBICpyZXQsCisgICAgICAgICB9CisgCisgICAgICAgICByZXR1cm4gZHNhX2J1aWx0aW5f cGFyYW1nZW4ocmV0LCBiaXRzLCBxYml0cywgZXZwbWQsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VlZF9pbiwgc2VlZF9sZW4sIE5VTEwsIGNvdW50ZXJfcmV0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRfaW4sIHNlZWRfbGVuLCBjb3Vu dGVyX3JldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoX3JldCwgY2Ip OworICAgICB9CisgfQorIAorKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisraW50IEZJUFNfZHNhX2J1 aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfdCBiaXRzLCBzaXplX3QgcWJpdHMsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRVZQX01EICpldnBtZCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWVkX2luLCBzaXpl X3Qgc2VlZF9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjb3VudGVy X3JldCwgdW5zaWduZWQgbG9uZyAqaF9yZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQk5fR0VOQ0IgKmNiKQorK3sKKysgICAgcmV0dXJuIGRzYV9idWlsdGluX3BhcmFtZ2VuKHJl dCwgYml0cywgcWJpdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnBtZCwg c2VlZF9pbiwgc2VlZF9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vu dGVyX3JldCwgaF9yZXQsIGNiKTsKKyt9CisrIyBlbmRpZgorKworIGludCBkc2FfYnVpbHRpbl9w YXJhbWdlbihEU0EgKnJldCwgc2l6ZV90IGJpdHMsIHNpemVfdCBxYml0cywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgRVZQX01EICpldnBtZCwgY29uc3QgdW5zaWduZWQgY2hhciAq c2VlZF9pbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNlZWRfbGVuLCB1bnNp Z25lZCBjaGFyICpzZWVkX291dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNl ZWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNvdW50ZXJfcmV0LCB1bnNp Z25lZCBsb25nICpoX3JldCwgQk5fR0VOQ0IgKmNiKQorIHsKKyAgICAgaW50IG9rID0gMDsKKyAg ICAgdW5zaWduZWQgY2hhciBzZWVkW1NIQTI1Nl9ESUdFU1RfTEVOR1RIXTsKKysgICAgQklHTlVN ICpnID0gTlVMTCwgKnEgPSBOVUxMLCAqcCA9IE5VTEw7CisrICAgIHNpemVfdCBxc2l6ZSA9IHFi aXRzID4+IDM7CisrICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKKysgICAgCisrIyBpZmRlZiBPUEVO U1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgIEZJ UFNlcnIoRklQU19GX0RTQV9CVUlMVElOX1BBUkFNR0VOLCBGSVBTX1JfRklQU19TRUxGVEVTVF9G QUlMRUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgaWYgKEZJUFNfbW9k dWxlX21vZGUoKSAmJgorKyAgICAgICAgKGJpdHMgIT0gMTAyNCB8fCBxYml0cyAhPSAxNjApICYm CisrICAgICAgICAoYml0cyAhPSAyMDQ4IHx8IHFiaXRzICE9IDIyNCkgJiYKKysgICAgICAgIChi aXRzICE9IDIwNDggfHwgcWJpdHMgIT0gMjU2KSAmJiAoYml0cyAhPSAzMDcyIHx8IHFiaXRzICE9 IDI1NikpIHsKKysgICAgICAgIERTQWVycihEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTiwgRFNB X1JfS0VZX1NJWkVfSU5WQUxJRCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyMgZW5k aWYKKysgICAgaWYgKHNlZWRfbGVuICYmIChzZWVkX2xlbiA8IChzaXplX3QpcXNpemUpKQorKyAg ICAgICAgc2VlZF9pbiA9IE5VTEw7ICAgICAgICAgLyogc2VlZCBidWZmZXIgdG9vIHNtYWxsIC0t IGlnbm9yZSAqLworKyAgICBpZiAoc2VlZF9sZW4gPiBzaXplb2Yoc2VlZCkpCisrICAgICAgICBz ZWVkX2xlbiA9IHNpemVvZihzZWVkKTsgLyogQXBwLiAyLjIgb2YgRklQUyBQVUIgMTg2IGFsbG93 cyBsYXJnZXIgU0VFRCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBidXQg b3VyIGludGVybmFsIGJ1ZmZlcnMgYXJlIHJlc3RyaWN0ZWQgdG8gMjU2IGJpdHMqLworKyAgICBp ZiAoc2VlZF9pbiAhPSBOVUxMKQorKyAgICAgICAgbWVtY3B5KHNlZWQsIHNlZWRfaW4sIHNlZWRf bGVuKTsKKysgICAgZWxzZQorKyAgICAgICAgc2VlZF9sZW4gPSAwOworKyAgICAgICAgCisrICAg IGlmICgoY3R4ID0gQk5fQ1RYX25ldygpKSA9PSBOVUxMKQorKyAgICAgICAgZ290byBlcnI7Cisr IAorKyAgICBCTl9DVFhfc3RhcnQoY3R4KTsKKysgCisrICAgIGlmICghRklQU19kc2FfZ2VuZXJh dGVfcHEoY3R4LCBiaXRzLCBxYml0cywgZXZwbWQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VlZCwgc2VlZF9sZW4sICZwLCAmcSwgY291bnRlcl9yZXQsIGNiKSkKKysgICAgICAg IGdvdG8gZXJyOworKyAKKysgICAgaWYgKCFGSVBTX2RzYV9nZW5lcmF0ZV9nKGN0eCwgcCwgcSwg JmcsIGhfcmV0LCBjYikpCisrICAgICAgICBnb3RvIGVycjsKKysgCisrICAgIG9rID0gMTsKKysg ZXJyOgorKyAgICBpZiAob2spIHsKKysgICAgICAgIGlmIChyZXQtPnApIHsKKysgICAgICAgICAg ICBCTl9mcmVlKHJldC0+cCk7CisrICAgICAgICAgICAgcmV0LT5wID0gTlVMTDsKKysgICAgICAg IH0KKysgICAgICAgIGlmIChyZXQtPnEpIHsKKysgICAgICAgICAgICBCTl9mcmVlKHJldC0+cSk7 CisrICAgICAgICAgICAgcmV0LT5xID0gTlVMTDsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChy ZXQtPmcpIHsKKysgICAgICAgICAgICBCTl9mcmVlKHJldC0+Zyk7CisrICAgICAgICAgICAgcmV0 LT5nID0gTlVMTDsKKysgICAgICAgIH0KKysgICAgICAgIHJldC0+cCA9IEJOX2R1cChwKTsKKysg ICAgICAgIHJldC0+cSA9IEJOX2R1cChxKTsKKysgICAgICAgIHJldC0+ZyA9IEJOX2R1cChnKTsK KysgICAgICAgIGlmIChyZXQtPnAgPT0gTlVMTCB8fCByZXQtPnEgPT0gTlVMTCB8fCByZXQtPmcg PT0gTlVMTCkKKysgICAgICAgICAgICBvayA9IDA7CisrICAgIH0KKysgICAgaWYgKGN0eCkgewor KyAgICAgICAgQk5fQ1RYX2VuZChjdHgpOworKyAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKysg ICAgfQorKyAgICByZXR1cm4gb2s7CisrfQorKworKyMgaWZuZGVmIE9QRU5TU0xfRklQUworK3N0 YXRpYworKyMgZW5kaWYKKytpbnQgRklQU19kc2FfZ2VuZXJhdGVfcHEoQk5fQ1RYICpjdHgsIHNp emVfdCBiaXRzLCBzaXplX3QgcWJpdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEVWUF9NRCAqZXZwbWQsIHVuc2lnbmVkIGNoYXIgKnNlZWQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBzZWVkX2xlbiwgQklHTlVNICoqcF9yZXQsIEJJR05VTSAqKnFfcmV0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNvdW50ZXJfcmV0LCBCTl9HRU5DQiAqY2IpCisr eworKyAgICBpbnQgb2sgPSAwOworICAgICB1bnNpZ25lZCBjaGFyIG1kW1NIQTI1Nl9ESUdFU1Rf TEVOR1RIXTsKKy0gICAgdW5zaWduZWQgY2hhciBidWZbU0hBMjU2X0RJR0VTVF9MRU5HVEhdLCBi dWYyW1NIQTI1Nl9ESUdFU1RfTEVOR1RIXTsKKysgICAgdW5zaWduZWQgY2hhciBidWZbU0hBMjU2 X0RJR0VTVF9MRU5HVEhdOworICAgICBCSUdOVU0gKnIwLCAqVywgKlgsICpjLCAqdGVzdDsKKy0g ICAgQklHTlVNICpnID0gTlVMTCwgKnEgPSBOVUxMLCAqcCA9IE5VTEw7CistICAgIEJOX01PTlRf Q1RYICptb250ID0gTlVMTDsKKy0gICAgaW50IGksIGssIG4gPSAwLCBtID0gMCwgcXNpemUgPSBx Yml0cyA+PiAzOworKyAgICBCSUdOVU0gKnEgPSBOVUxMLCAqcCA9IE5VTEw7CisrICAgIGludCBp LCBrLCBiLCBuID0gMCwgbSA9IDAsIHFzaXplID0gcWJpdHMgPj4gMzsKKyAgICAgaW50IGNvdW50 ZXIgPSAwOworICAgICBpbnQgciA9IDA7CistICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKKy0gICAg dW5zaWduZWQgaW50IGggPSAyOworIAorICAgICBpZiAocXNpemUgIT0gU0hBX0RJR0VTVF9MRU5H VEggJiYgcXNpemUgIT0gU0hBMjI0X0RJR0VTVF9MRU5HVEggJiYKKyAgICAgICAgIHFzaXplICE9 IFNIQTI1Nl9ESUdFU1RfTEVOR1RIKQorICAgICAgICAgLyogaW52YWxpZCBxIHNpemUgKi8KKyAg ICAgICAgIHJldHVybiAwOworIAorLSAgICBpZiAoZXZwbWQgPT0gTlVMTCkKKy0gICAgICAgIC8q IHVzZSBTSEExIGFzIGRlZmF1bHQgKi8KKy0gICAgICAgIGV2cG1kID0gRVZQX3NoYTEoKTsKKysg ICAgaWYgKGV2cG1kID09IE5VTEwpIHsKKysgICAgICAgIGlmIChxYml0cyA8PSAxNjApCisrICAg ICAgICAgICAgZXZwbWQgPSBFVlBfc2hhMSgpOworKyAgICAgICAgZWxzZSBpZiAocWJpdHMgPD0g MjI0KQorKyAgICAgICAgICAgIGV2cG1kID0gRVZQX3NoYTIyNCgpOworKyAgICAgICAgZWxzZQor KyAgICAgICAgICAgIGV2cG1kID0gRVZQX3NoYTI1NigpOworKyAgICB9CisgCisgICAgIGlmIChi aXRzIDwgNTEyKQorICAgICAgICAgYml0cyA9IDUxMjsKKyAKKyAgICAgYml0cyA9IChiaXRzICsg NjMpIC8gNjQgKiA2NDsKKyAKKy0gICAgLyoKKy0gICAgICogTkI6IHNlZWRfbGVuID09IDAgaXMg c3BlY2lhbCBjYXNlOiBjb3B5IGdlbmVyYXRlZCBzZWVkIHRvIHNlZWRfaW4gaWYKKy0gICAgICog aXQgaXMgbm90IE5VTEwuCistICAgICAqLworLSAgICBpZiAoc2VlZF9sZW4gJiYgKHNlZWRfbGVu IDwgKHNpemVfdClxc2l6ZSkpCistICAgICAgICBzZWVkX2luID0gTlVMTDsgICAgICAgICAvKiBz ZWVkIGJ1ZmZlciB0b28gc21hbGwgLS0gaWdub3JlICovCistICAgIGlmIChzZWVkX2xlbiA+IChz aXplX3QpcXNpemUpCistICAgICAgICBzZWVkX2xlbiA9IHFzaXplOyAgICAgICAvKiBBcHAuIDIu MiBvZiBGSVBTIFBVQiAxODYgYWxsb3dzIGxhcmdlcgorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogU0VFRCwgYnV0IG91ciBpbnRlcm5hbCBidWZmZXJzIGFyZQorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICogcmVzdHJpY3RlZCB0byAxNjAgYml0cyAqLworLSAg ICBpZiAoc2VlZF9pbiAhPSBOVUxMKQorLSAgICAgICAgbWVtY3B5KHNlZWQsIHNlZWRfaW4sIHNl ZWRfbGVuKTsKKy0KKy0gICAgaWYgKChjdHggPSBCTl9DVFhfbmV3KCkpID09IE5VTEwpCistICAg ICAgICBnb3RvIGVycjsKKy0KKy0gICAgaWYgKChtb250ID0gQk5fTU9OVF9DVFhfbmV3KCkpID09 IE5VTEwpCistICAgICAgICBnb3RvIGVycjsKKy0KKy0gICAgQk5fQ1RYX3N0YXJ0KGN0eCk7Cisg ICAgIHIwID0gQk5fQ1RYX2dldChjdHgpOworLSAgICBnID0gQk5fQ1RYX2dldChjdHgpOworICAg ICBXID0gQk5fQ1RYX2dldChjdHgpOworLSAgICBxID0gQk5fQ1RYX2dldChjdHgpOworKyAgICAq cV9yZXQgPSBxID0gQk5fQ1RYX2dldChjdHgpOworICAgICBYID0gQk5fQ1RYX2dldChjdHgpOwor ICAgICBjID0gQk5fQ1RYX2dldChjdHgpOworLSAgICBwID0gQk5fQ1RYX2dldChjdHgpOworKyAg ICAqcF9yZXQgPSBwID0gQk5fQ1RYX2dldChjdHgpOworICAgICB0ZXN0ID0gQk5fQ1RYX2dldChj dHgpOworIAorICAgICBpZiAoIUJOX2xzaGlmdCh0ZXN0LCBCTl92YWx1ZV9vbmUoKSwgYml0cyAt IDEpKQorICAgICAgICAgZ290byBlcnI7CisgCisrICAgIC8qIHN0ZXAgMyBuID0gXGxjZWlsIGJp dHMgLyBxYml0cyBccmNlaWwgLSAxICovCisrICAgIG4gPSAoYml0cyArIHFiaXRzIC0gMSkgLyBx Yml0cyAtIDE7CisrICAgIC8qIHN0ZXAgNCBiID0gYml0cyAtIDEgLSBuICogcWJpdHMgKi8KKysg ICAgYiA9IGJpdHMgLSAxIC0gbiAqIHFiaXRzOworKyAgICAKKyAgICAgZm9yICg7OykgeworICAg ICAgICAgZm9yICg7OykgeyAgICAgICAgICAgICAgLyogZmluZCBxICovCisgICAgICAgICAgICAg aW50IHNlZWRfaXNfcmFuZG9tOworIAorLSAgICAgICAgICAgIC8qIHN0ZXAgMSAqLworKyAgICAg ICAgICAgIC8qIHN0ZXAgNSBnZW5lcmF0ZSBzZWVkICovCisgICAgICAgICAgICAgaWYgKCFCTl9H RU5DQl9jYWxsKGNiLCAwLCBtKyspKQorICAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAKK0BA IC0yMTIsMjkgKzI5MSwxOCBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNp emVfCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiZSBiYWQgKi8KKyAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgbWVtY3B5KGJ1Ziwgc2VlZCwgcXNpemUpOworLSAgICAg ICAgICAgIG1lbWNweShidWYyLCBzZWVkLCBxc2l6ZSk7CistICAgICAgICAgICAgLyogcHJlY29t cHV0ZSAiU0VFRCArIDEiIGZvciBzdGVwIDc6ICovCistICAgICAgICAgICAgZm9yIChpID0gcXNp emUgLSAxOyBpID49IDA7IGktLSkgeworLSAgICAgICAgICAgICAgICBidWZbaV0rKzsKKy0gICAg ICAgICAgICAgICAgaWYgKGJ1ZltpXSAhPSAwKQorLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CistICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIC8qIHN0ZXAgMiAqLworKyAgICAgICAg ICAgIC8qIHN0ZXAgNiBVID0gaGFzaChzZWVkKSAqLworICAgICAgICAgICAgIGlmICghRVZQX0Rp Z2VzdChzZWVkLCBxc2l6ZSwgbWQsIE5VTEwsIGV2cG1kLCBOVUxMKSkKKyAgICAgICAgICAgICAg ICAgZ290byBlcnI7CistICAgICAgICAgICAgaWYgKCFFVlBfRGlnZXN0KGJ1ZiwgcXNpemUsIGJ1 ZjIsIE5VTEwsIGV2cG1kLCBOVUxMKSkKKy0gICAgICAgICAgICAgICAgZ290byBlcnI7CistICAg ICAgICAgICAgZm9yIChpID0gMDsgaSA8IHFzaXplOyBpKyspCistICAgICAgICAgICAgICAgIG1k W2ldIF49IGJ1ZjJbaV07CisgCistICAgICAgICAgICAgLyogc3RlcCAzICovCisrICAgICAgICAg ICAgLyogc3RlcCA3IHEgPSAyXihxYml0cy0xKSArIFUgKyAxIC0gKFUgbW9kIDIpICovCisgICAg ICAgICAgICAgbWRbMF0gfD0gMHg4MDsKKyAgICAgICAgICAgICBtZFtxc2l6ZSAtIDFdIHw9IDB4 MDE7CisgICAgICAgICAgICAgaWYgKCFCTl9iaW4yYm4obWQsIHFzaXplLCBxKSkKKyAgICAgICAg ICAgICAgICAgZ290byBlcnI7CisgCistICAgICAgICAgICAgLyogc3RlcCA0ICovCisrICAgICAg ICAgICAgLyogc3RlcCA4IHRlc3QgZm9yIHByaW1lICg2NCByb3VuZCBvZiBSYWJpbi1NaWxsZXIp ICovCisgICAgICAgICAgICAgciA9IEJOX2lzX3ByaW1lX2Zhc3R0ZXN0X2V4KHEsIERTU19wcmlt ZV9jaGVja3MsIGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VlZF9pc19yYW5kb20sIGNiKTsKKyAgICAgICAgICAgICBpZiAociA+IDApCitAQCAtMjQyLDgg KzMxMCw2IEBAIGludCBkc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV8KKyAgICAg ICAgICAgICBpZiAociAhPSAwKQorICAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAKKy0gICAg ICAgICAgICAvKiBkbyBhIGNhbGxiYWNrIGNhbGwgKi8KKy0gICAgICAgICAgICAvKiBzdGVwIDUg Ki8KKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmICghQk5fR0VOQ0JfY2FsbChjYiwgMiwgMCkp CitAQCAtMjUxLDE5ICszMTcsMTYgQEAgaW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0 LCBzaXplXworICAgICAgICAgaWYgKCFCTl9HRU5DQl9jYWxsKGNiLCAzLCAwKSkKKyAgICAgICAg ICAgICBnb3RvIGVycjsKKyAKKy0gICAgICAgIC8qIHN0ZXAgNiAqLworKyAgICAgICAgLyogc3Rl cCAxMSAqLworICAgICAgICAgY291bnRlciA9IDA7CistICAgICAgICAvKiAib2Zmc2V0ID0gMiIg Ki8KKy0KKy0gICAgICAgIG4gPSAoYml0cyAtIDEpIC8gMTYwOworKyAgICAgICAgLyogIm9mZnNl dCA9IDEiICovCisgCisgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgaWYgKChjb3Vu dGVyICE9IDApICYmICFCTl9HRU5DQl9jYWxsKGNiLCAwLCBjb3VudGVyKSkKKyAgICAgICAgICAg ICAgICAgZ290byBlcnI7CisgCistICAgICAgICAgICAgLyogc3RlcCA3ICovCisrICAgICAgICAg ICAgLyogc3RlcCAxMS4xLCAxMS4yIG9idGFpbiBXICovCisgICAgICAgICAgICAgQk5femVybyhX KTsKKy0gICAgICAgICAgICAvKiBub3cgJ2J1ZicgY29udGFpbnMgIlNFRUQgKyBvZmZzZXQgLSAx IiAqLworICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPD0gbjsgaysrKSB7CisgICAgICAgICAg ICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAqIG9idGFpbiAiU0VFRCArIG9mZnNldCArIGsi IGJ5IGluY3JlbWVudGluZzoKK0BAIC0yNzcsMzYgKzM0MCwzNyBAQCBpbnQgZHNhX2J1aWx0aW5f cGFyYW1nZW4oRFNBICpyZXQsIHNpemVfCisgICAgICAgICAgICAgICAgIGlmICghRVZQX0RpZ2Vz dChidWYsIHFzaXplLCBtZCwgTlVMTCwgZXZwbWQsIE5VTEwpKQorICAgICAgICAgICAgICAgICAg ICAgZ290byBlcnI7CisgCistICAgICAgICAgICAgICAgIC8qIHN0ZXAgOCAqLworICAgICAgICAg ICAgICAgICBpZiAoIUJOX2JpbjJibihtZCwgcXNpemUsIHIwKSkKKyAgICAgICAgICAgICAgICAg ICAgIGdvdG8gZXJyOworLSAgICAgICAgICAgICAgICBpZiAoIUJOX2xzaGlmdChyMCwgcjAsIChx c2l6ZSA8PCAzKSAqIGspKQorKyAgICAgICAgICAgICAgICBpZiAoayA9PSBuKQorKyAgICAgICAg ICAgICAgICAgICAgQk5fbWFza19iaXRzKHIwLCBiKTsKKysgICAgICAgICAgICAgICAgaWYgKCFC Tl9sc2hpZnQocjAsIHIwLCBxYml0cyAqIGspKQorICAgICAgICAgICAgICAgICAgICAgZ290byBl cnI7CisgICAgICAgICAgICAgICAgIGlmICghQk5fYWRkKFcsIFcsIHIwKSkKKyAgICAgICAgICAg ICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAvKiBt b3JlIG9mIHN0ZXAgOCAqLworLSAgICAgICAgICAgIGlmICghQk5fbWFza19iaXRzKFcsIGJpdHMg LSAxKSkKKy0gICAgICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICAgICAgLyogc3RlcCAx MS4zIFggPSBXICsgMl4oTC0xKSAqLworICAgICAgICAgICAgIGlmICghQk5fY29weShYLCBXKSkK KyAgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICAgaWYgKCFCTl9hZGQoWCwg WCwgdGVzdCkpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworIAorLSAgICAgICAgICAgIC8q IHN0ZXAgOSAqLworKyAgICAgICAgICAgIC8qIHN0ZXAgMTEuNCBjID0gWCBtb2QgMipxICovCisg ICAgICAgICAgICAgaWYgKCFCTl9sc2hpZnQxKHIwLCBxKSkKKyAgICAgICAgICAgICAgICAgZ290 byBlcnI7CisgICAgICAgICAgICAgaWYgKCFCTl9tb2QoYywgWCwgcjAsIGN0eCkpCisgICAgICAg ICAgICAgICAgIGdvdG8gZXJyOworKworKyAgICAgICAgICAgIC8qIHN0ZXAgMTEuNSBwID0gWCAt IChjIC0gMSkgKi8KKyAgICAgICAgICAgICBpZiAoIUJOX3N1YihyMCwgYywgQk5fdmFsdWVfb25l KCkpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgICBpZiAoIUJOX3N1 YihwLCBYLCByMCkpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworIAorLSAgICAgICAgICAg IC8qIHN0ZXAgMTAgKi8KKysgICAgICAgICAgICAvKiBzdGVwIDExLjYgKi8KKyAgICAgICAgICAg ICBpZiAoQk5fY21wKHAsIHRlc3QpID49IDApIHsKKy0gICAgICAgICAgICAgICAgLyogc3RlcCAx MSAqLworKyAgICAgICAgICAgICAgICAvKiBzdGVwIDExLjcgKi8KKyAgICAgICAgICAgICAgICAg ciA9IEJOX2lzX3ByaW1lX2Zhc3R0ZXN0X2V4KHAsIERTU19wcmltZV9jaGVja3MsIGN0eCwgMSwg Y2IpOworICAgICAgICAgICAgICAgICBpZiAociA+IDApCisgICAgICAgICAgICAgICAgICAgICBn b3RvIGVuZDsgICAvKiBmb3VuZCBpdCAqLworQEAgLTMxNCwxMiArMzc4LDEyIEBAIGludCBkc2Ff YnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV8KKyAgICAgICAgICAgICAgICAgICAgIGdv dG8gZXJyOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAvKiBzdGVwIDEzICovCisr ICAgICAgICAgICAgLyogc3RlcCAxMS45ICovCisgICAgICAgICAgICAgY291bnRlcisrOworICAg ICAgICAgICAgIC8qICJvZmZzZXQgPSBvZmZzZXQgKyBuICsgMSIgKi8KKyAKKy0gICAgICAgICAg ICAvKiBzdGVwIDE0ICovCistICAgICAgICAgICAgaWYgKGNvdW50ZXIgPj0gNDA5NikKKysgICAg ICAgICAgICAvKiBzdGVwIDEyICovCisrICAgICAgICAgICAgaWYgKGNvdW50ZXIgPj0gNCAqIGJp dHMpCisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9CitAQCAtMzI3 LDcgKzM5MSwzMyBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfCisg ICAgIGlmICghQk5fR0VOQ0JfY2FsbChjYiwgMiwgMSkpCisgICAgICAgICBnb3RvIGVycjsKKyAK Ky0gICAgLyogV2Ugbm93IG5lZWQgdG8gZ2VuZXJhdGUgZyAqLworKyAgICBvayA9IDE7CisrIGVy cjoKKysgICAgaWYgKG9rKSB7CisrICAgICAgICBpZiAoY291bnRlcl9yZXQgIT0gTlVMTCkKKysg ICAgICAgICAgICAqY291bnRlcl9yZXQgPSBjb3VudGVyOworKyAgICB9CisrICAgIHJldHVybiBv azsKKyt9CisrCisrIyBpZm5kZWYgT1BFTlNTTF9GSVBTCisrc3RhdGljCisrIyBlbmRpZgorK2lu dCBGSVBTX2RzYV9nZW5lcmF0ZV9nKEJOX0NUWCAqY3R4LCBCSUdOVU0gKnAsIEJJR05VTSAqcSwK KysgICAgICAgICAgICAgICAgICAgICAgICBCSUdOVU0gKipnX3JldCwgdW5zaWduZWQgbG9uZyAq aF9yZXQsIEJOX0dFTkNCICpjYikKKyt7CisrICAgIGludCBvayA9IDA7CisrICAgIEJJR05VTSAq cjAsICp0ZXN0LCAqZyA9IE5VTEw7CisrICAgIEJOX01PTlRfQ1RYICptb250OworKyAgICB1bnNp Z25lZCBpbnQgaCA9IDI7CisrCisrICAgIGlmICgobW9udCA9IEJOX01PTlRfQ1RYX25ldygpKSA9 PSBOVUxMKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIHIwID0gQk5fQ1RYX2dldChjdHgp OworKyAgICAqZ19yZXQgPSBnID0gQk5fQ1RYX2dldChjdHgpOworKyAgICB0ZXN0ID0gQk5fQ1RY X2dldChjdHgpOworKworICAgICAvKiBTZXQgcjA9KHAtMSkvcSAqLworICAgICBpZiAoIUJOX3N1 Yih0ZXN0LCBwLCBCTl92YWx1ZV9vbmUoKSkpCisgICAgICAgICBnb3RvIGVycjsKK0BAIC0zNTYs NDYgKzQ0NiwxNCBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfCisg ICAgIG9rID0gMTsKKyAgZXJyOgorICAgICBpZiAob2spIHsKKy0gICAgICAgIGlmIChyZXQtPnAp CistICAgICAgICAgICAgQk5fZnJlZShyZXQtPnApOworLSAgICAgICAgaWYgKHJldC0+cSkKKy0g ICAgICAgICAgICBCTl9mcmVlKHJldC0+cSk7CistICAgICAgICBpZiAocmV0LT5nKQorLSAgICAg ICAgICAgIEJOX2ZyZWUocmV0LT5nKTsKKy0gICAgICAgIHJldC0+cCA9IEJOX2R1cChwKTsKKy0g ICAgICAgIHJldC0+cSA9IEJOX2R1cChxKTsKKy0gICAgICAgIHJldC0+ZyA9IEJOX2R1cChnKTsK Ky0gICAgICAgIGlmIChyZXQtPnAgPT0gTlVMTCB8fCByZXQtPnEgPT0gTlVMTCB8fCByZXQtPmcg PT0gTlVMTCkgeworLSAgICAgICAgICAgIG9rID0gMDsKKy0gICAgICAgICAgICBnb3RvIGVycjsK Ky0gICAgICAgIH0KKy0gICAgICAgIGlmIChjb3VudGVyX3JldCAhPSBOVUxMKQorLSAgICAgICAg ICAgICpjb3VudGVyX3JldCA9IGNvdW50ZXI7CisgICAgICAgICBpZiAoaF9yZXQgIT0gTlVMTCkK KyAgICAgICAgICAgICAqaF9yZXQgPSBoOworLSAgICAgICAgaWYgKHNlZWRfb3V0KQorLSAgICAg ICAgICAgIG1lbWNweShzZWVkX291dCwgc2VlZCwgcXNpemUpOworLSAgICB9CistICAgIGlmIChj dHgpIHsKKy0gICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKKy0gICAgICAgIEJOX0NUWF9mcmVlKGN0 eCk7CisgICAgIH0KKyAgICAgaWYgKG1vbnQgIT0gTlVMTCkKKyAgICAgICAgIEJOX01PTlRfQ1RY X2ZyZWUobW9udCk7CisgICAgIHJldHVybiBvazsKKyB9CisgCistIyBpZmRlZiBPUEVOU1NMX0ZJ UFMKKy0jICB1bmRlZiBmaXBzX2RzYV9idWlsdGluX3BhcmFtZ2VuMgorLWV4dGVybiBpbnQgZmlw c19kc2FfYnVpbHRpbl9wYXJhbWdlbjIoRFNBICpyZXQsIHNpemVfdCBMLCBzaXplX3QgTiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAqZXZwbWQs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj aGFyICpzZWVkX2luLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IHNlZWRfbGVuLCBpbnQgaWR4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgY2hhciAqc2VlZF9vdXQsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgKmNvdW50ZXJfcmV0LCB1bnNpZ25lZCBsb25nICpoX3JldCwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJOX0dFTkNCICpjYik7CistIyBl bmRpZgorLQorIC8qCisgICogVGhpcyBpcyBhIHBhcmFtZXRlciBnZW5lcmF0aW9uIGFsZ29yaXRo bSBmb3IgdGhlIERTQTIgYWxnb3JpdGhtIGFzCisgICogZGVzY3JpYmVkIGluIEZJUFMgMTg2LTMu CitAQCAtNDIxLDE0ICs0NzksNiBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4yKERTQSAqcmV0 LCBzaXplCisgICAgIEVWUF9NRF9DVFggbWN0eDsKKyAgICAgdW5zaWduZWQgaW50IGggPSAyOwor IAorLSMgaWZkZWYgT1BFTlNTTF9GSVBTCistCistICAgIGlmIChGSVBTX21vZGUoKSkKKy0gICAg ICAgIHJldHVybiBmaXBzX2RzYV9idWlsdGluX3BhcmFtZ2VuMihyZXQsIEwsIE4sIGV2cG1kLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRfaW4sIHNlZWRf bGVuLCBpZHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vl ZF9vdXQsIGNvdW50ZXJfcmV0LCBoX3JldCwgY2IpOworLSMgZW5kaWYKKy0KKyAgICAgRVZQX01E X0NUWF9pbml0KCZtY3R4KTsKKyAKKyAgICAgaWYgKGV2cG1kID09IE5VTEwpIHsKK2RpZmYgLXVw IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhLmguZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZHNhL2RzYS5oCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2EuaC5maXBzCTIw MTUtMDQtMjIgMTY6MDg6NDAuMDU2MjQwMDY2ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2RzYS9kc2EuaAkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4NjI0NTUxMiArMDIwMAorQEAgLTg4 LDYgKzg4LDggQEAKKyAjICBkZWZpbmUgT1BFTlNTTF9EU0FfTUFYX01PRFVMVVNfQklUUyAgIDEw MDAwCisgIyBlbmRpZgorIAorKyMgZGVmaW5lIE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNf QklUUyAxMDI0CisrCisgIyBkZWZpbmUgRFNBX0ZMQUdfQ0FDSEVfTU9OVF9QICAgMHgwMQorIC8q CisgICogbmV3IHdpdGggMC45LjdoOyB0aGUgYnVpbHQtaW4gRFNBIGltcGxlbWVudGF0aW9uIG5v dyB1c2VzIGNvbnN0YW50IHRpbWUKK0BAIC0yNjUsNiArMjY3LDIwIEBAIGludCBEU0FfcHJpbnRf ZnAoRklMRSAqYnAsIGNvbnN0IERTQSAqeCwKKyBESCAqRFNBX2R1cF9ESChjb25zdCBEU0EgKnIp OworICMgZW5kaWYKKyAKKysjIGlmZGVmIE9QRU5TU0xfRklQUworK2ludCBGSVBTX2RzYV9idWls dGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplX3QgYml0cywgc2l6ZV90IHFiaXRzLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAqZXZwbWQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VlZF9pbiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2VlZF9sZW4sIGludCAqY291bnRlcl9y ZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqaF9yZXQs IEJOX0dFTkNCICpjYik7CisraW50IEZJUFNfZHNhX2dlbmVyYXRlX3BxKEJOX0NUWCAqY3R4LCBz aXplX3QgYml0cywgc2l6ZV90IHFiaXRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBFVlBfTUQgKmV2cG1kLCB1bnNpZ25lZCBjaGFyICpzZWVkLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgc2VlZF9sZW4sIEJJR05VTSAqKnBfcmV0LCBCSUdOVU0gKipxX3JldCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjb3VudGVyX3JldCwgQk5fR0VOQ0IgKmNiKTsK KytpbnQgRklQU19kc2FfZ2VuZXJhdGVfZyhCTl9DVFggKmN0eCwgQklHTlVNICpwLCBCSUdOVU0g KnEsIEJJR05VTSAqKmdfcmV0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nICpoX3JldCwgQk5fR0VOQ0IgKmNiKTsKKysjIGVuZGlmCisrCisgIyBkZWZpbmUgRVZQ X1BLRVlfQ1RYX3NldF9kc2FfcGFyYW1nZW5fYml0cyhjdHgsIG5iaXRzKSBcCisgICAgICAgICBF VlBfUEtFWV9DVFhfY3RybChjdHgsIEVWUF9QS0VZX0RTQSwgRVZQX1BLRVlfT1BfUEFSQU1HRU4s IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9QS0VZX0NUUkxfRFNBX1BB UkFNR0VOX0JJVFMsIG5iaXRzLCBOVUxMKQorQEAgLTI4NywxMSArMzAzLDE0IEBAIHZvaWQgRVJS X2xvYWRfRFNBX3N0cmluZ3Modm9pZCk7CisgIyBkZWZpbmUgRFNBX0ZfRE9fRFNBX1BSSU5UICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNAorICMgZGVmaW5lIERTQV9GX0RTQVBBUkFN U19QUklOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAKKyAjIGRlZmluZSBEU0FfRl9E U0FQQVJBTVNfUFJJTlRfRlAgICAgICAgICAgICAgICAgICAgICAgICAgMTAxCistIyBkZWZpbmUg RFNBX0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4yICAgICAgICAgICAgICAgICAgICAgIDEyNgorKyMg ZGVmaW5lIERTQV9GX0RTQV9CVUlMVElOX0tFWUdFTiAgICAgICAgICAgICAgICAgICAgICAgICAx MjQKKysjIGRlZmluZSBEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTiAgICAgICAgICAgICAgICAg ICAgICAgMTIzCisrIyBkZWZpbmUgRFNBX0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4yICAgICAgICAg ICAgICAgICAgICAgIDIyNgorICMgZGVmaW5lIERTQV9GX0RTQV9ET19TSUdOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxMTIKKyAjIGRlZmluZSBEU0FfRl9EU0FfRE9fVkVSSUZZICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEzCistIyBkZWZpbmUgRFNBX0ZfRFNBX0dFTkVS QVRFX0tFWSAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNAorLSMgZGVmaW5lIERTQV9GX0RT QV9HRU5FUkFURV9QQVJBTUVURVJTX0VYICAgICAgICAgICAgICAgICAxMjMKKysjIGRlZmluZSBE U0FfRl9EU0FfR0VORVJBVEVfS0VZICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI2CisrIyBk ZWZpbmUgRFNBX0ZfRFNBX0dFTkVSQVRFX1BBUkFNRVRFUlNfRVggICAgICAgICAgICAgICAgIDEy NworKyMgZGVmaW5lIERTQV9GX0RTQV9HRU5FUkFURV9QQVJBTUVURVJTICAgLyogdW51c2VkICov ICAgICAxMjUKKyAjIGRlZmluZSBEU0FfRl9EU0FfTkVXX01FVEhPRCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTAzCisgIyBkZWZpbmUgRFNBX0ZfRFNBX1BBUkFNX0RFQ09ERSAgICAgICAg ICAgICAgICAgICAgICAgICAgIDExOQorICMgZGVmaW5lIERTQV9GX0RTQV9QUklOVF9GUCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAxMDUKK0BAIC0zMTcsMTIgKzMzNiwxNiBAQCB2b2lk IEVSUl9sb2FkX0RTQV9zdHJpbmdzKHZvaWQpOworICMgZGVmaW5lIERTQV9SX0RBVEFfVE9PX0xB UkdFX0ZPUl9LRVlfU0laRSAgICAgICAgICAgICAgICAxMDAKKyAjIGRlZmluZSBEU0FfUl9ERUNP REVfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0CisgIyBkZWZpbmUgRFNB X1JfSU5WQUxJRF9ESUdFU1RfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgIDEwNgorLSMgZGVm aW5lIERTQV9SX0lOVkFMSURfUEFSQU1FVEVSUyAgICAgICAgICAgICAgICAgICAgICAgICAxMTIK KysjIGRlZmluZSBEU0FfUl9JTlZBTElEX1BBUkFNRVRFUlMgICAgICAgICAgICAgICAgICAgICAg ICAgMjEyCisrIyBkZWZpbmUgRFNBX1JfS0VZX1NJWkVfSU5WQUxJRCAgICAgICAgICAgICAgICAg ICAgICAgICAgIDExMworKyMgZGVmaW5lIERTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCAgICAgICAg ICAgICAgICAgICAgICAgICAxMTAKKyAjIGRlZmluZSBEU0FfUl9NSVNTSU5HX1BBUkFNRVRFUlMg ICAgICAgICAgICAgICAgICAgICAgICAgMTAxCisgIyBkZWZpbmUgRFNBX1JfTU9EVUxVU19UT09f TEFSR0UgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMworLSMgZGVmaW5lIERTQV9SX05FRURf TkVXX1NFVFVQX1ZBTFVFUyAgICAgICAgICAgICAgICAgICAgICAxMTAKKysjIGRlZmluZSBEU0Ff Ul9ORUVEX05FV19TRVRVUF9WQUxVRVMgICAgICAgICAgICAgICAgICAgICAgMTEyCisgIyBkZWZp bmUgRFNBX1JfTk9OX0ZJUFNfRFNBX01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAgIDExMQor KyMgZGVmaW5lIERTQV9SX05PTl9GSVBTX01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxMTEKKyAjIGRlZmluZSBEU0FfUl9OT19QQVJBTUVURVJTX1NFVCAgICAgICAgICAgICAgICAg ICAgICAgICAgMTA3CisrIyBkZWZpbmUgRFNBX1JfT1BFUkFUSU9OX05PVF9BTExPV0VEX0lOX0ZJ UFNfTU9ERSAvKiB1bnVzZWQgKi8gMTEyCisgIyBkZWZpbmUgRFNBX1JfUEFSQU1FVEVSX0VOQ09E SU5HX0VSUk9SICAgICAgICAgICAgICAgICAgIDEwNQorICMgZGVmaW5lIERTQV9SX1FfTk9UX1BS SU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTMKKyAKK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX2tleS5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2RzYS9kc2Ffa2V5LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9rZXkuYy5m aXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2RzYS9kc2Ffa2V5LmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODYyNDU1MTIgKzAy MDAKK0BAIC02Niw2ICs2NiwzNCBAQAorIAorICMgaWZkZWYgT1BFTlNTTF9GSVBTCisgIyAgaW5j bHVkZSA8b3BlbnNzbC9maXBzLmg+CisrIyAgaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKysKKytz dGF0aWMgaW50IGZpcHNfY2hlY2tfZHNhKERTQSAqZHNhKQorK3sKKysgICAgRVZQX1BLRVkgKnBr OworKyAgICB1bnNpZ25lZCBjaGFyIHRic1tdID0gIkRTQSBQYWlyd2lzZSBDaGVjayBEYXRhIjsK KysgICAgaW50IHJldCA9IDA7CisrCisrICAgIGlmICgocGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0g TlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBFVlBfUEtFWV9zZXQxX0RTQShwaywg ZHNhKTsKKysKKysgICAgaWYgKGZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywgdGJzLCAtMSwg TlVMTCwgMCwgTlVMTCwgMCwgTlVMTCkpCisrICAgICAgICByZXQgPSAxOworKworKyBlcnI6Cisr ICAgIGlmIChyZXQgPT0gMCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19DSEVDS19E U0EsIEZJUFNfUl9QQUlSV0lTRV9URVNUX0ZBSUxFRCk7CisrICAgICAgICBmaXBzX3NldF9zZWxm dGVzdF9mYWlsKCk7CisrICAgIH0KKysKKysgICAgaWYgKHBrKQorKyAgICAgICAgRVZQX1BLRVlf ZnJlZShwayk7CisrCisrICAgIHJldHVybiByZXQ7CisrfQorKworICMgZW5kaWYKKyAKKyBzdGF0 aWMgaW50IGRzYV9idWlsdGluX2tleWdlbihEU0EgKmRzYSk7CitAQCAtODEsMTAgKzEwOSw2IEBA IGludCBEU0FfZ2VuZXJhdGVfa2V5KERTQSAqZHNhKQorICMgZW5kaWYKKyAgICAgaWYgKGRzYS0+ bWV0aC0+ZHNhX2tleWdlbikKKyAgICAgICAgIHJldHVybiBkc2EtPm1ldGgtPmRzYV9rZXlnZW4o ZHNhKTsKKy0jIGlmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAoRklQU19tb2RlKCkpCistICAg ICAgICByZXR1cm4gRklQU19kc2FfZ2VuZXJhdGVfa2V5KGRzYSk7CistIyBlbmRpZgorICAgICBy ZXR1cm4gZHNhX2J1aWx0aW5fa2V5Z2VuKGRzYSk7CisgfQorIAorQEAgLTk0LDYgKzExOCwxNCBA QCBzdGF0aWMgaW50IGRzYV9idWlsdGluX2tleWdlbihEU0EgKmRzYSkKKyAgICAgQk5fQ1RYICpj dHggPSBOVUxMOworICAgICBCSUdOVU0gKnB1Yl9rZXkgPSBOVUxMLCAqcHJpdl9rZXkgPSBOVUxM OworIAorKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKGRz YS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05fRklQU19BTExPVykKKysgICAgICAgICYmIChCTl9udW1f Yml0cyhkc2EtPnApIDwgT1BFTlNTTF9EU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgeworKyAg ICAgICAgRFNBZXJyKERTQV9GX0RTQV9CVUlMVElOX0tFWUdFTiwgRFNBX1JfS0VZX1NJWkVfVE9P X1NNQUxMKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrIyBlbmRpZgorKworICAgICBp ZiAoKGN0eCA9IEJOX0NUWF9uZXcoKSkgPT0gTlVMTCkKKyAgICAgICAgIGdvdG8gZXJyOworIAor QEAgLTEzMSw2ICsxNjMsMTMgQEAgc3RhdGljIGludCBkc2FfYnVpbHRpbl9rZXlnZW4oRFNBICpk c2EpCisgCisgICAgIGRzYS0+cHJpdl9rZXkgPSBwcml2X2tleTsKKyAgICAgZHNhLT5wdWJfa2V5 ID0gcHViX2tleTsKKysjIGlmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQU19tb2RlKCkg JiYgIWZpcHNfY2hlY2tfZHNhKGRzYSkpIHsKKysgICAgICAgIGRzYS0+cHViX2tleSA9IE5VTEw7 CisrICAgICAgICBkc2EtPnByaXZfa2V5ID0gTlVMTDsKKysgICAgICAgIGdvdG8gZXJyOworKyAg ICB9CisrIyBlbmRpZgorICAgICBvayA9IDE7CisgCisgIGVycjoKK2RpZmYgLXVwIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9kc2EvZHNhX2xpYi5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Rz YS9kc2FfbGliLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9saWIuYy5maXBz CTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2RzYS9kc2FfbGliLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODcyNDU1MzYgKzAyMDAK K0BAIC04NiwxNCArODYsNyBAQCB2b2lkIERTQV9zZXRfZGVmYXVsdF9tZXRob2QoY29uc3QgRFNB X01FCisgY29uc3QgRFNBX01FVEhPRCAqRFNBX2dldF9kZWZhdWx0X21ldGhvZCh2b2lkKQorIHsK KyAgICAgaWYgKCFkZWZhdWx0X0RTQV9tZXRob2QpIHsKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCist ICAgICAgICBpZiAoRklQU19tb2RlKCkpCistICAgICAgICAgICAgcmV0dXJuIEZJUFNfZHNhX29w ZW5zc2woKTsKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICByZXR1cm4gRFNBX09wZW5TU0wo KTsKKy0jZWxzZQorICAgICAgICAgZGVmYXVsdF9EU0FfbWV0aG9kID0gRFNBX09wZW5TU0woKTsK Ky0jZW5kaWYKKyAgICAgfQorICAgICByZXR1cm4gZGVmYXVsdF9EU0FfbWV0aG9kOworIH0KK2Rp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX2xvY2wuaC5maXBzIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9kc2EvZHNhX2xvY2wuaAorLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9k c2EvZHNhX2xvY2wuaC5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMDU4MjQwMTE0ICswMjAwCisr Kysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2FfbG9jbC5oCTIwMTUtMDQtMjIgMTY6MDg6 NDAuMjg3MjQ1NTM2ICswMjAwCitAQCAtNTYsNyArNTYsNyBAQAorIAorIGludCBkc2FfYnVpbHRp bl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV90IGJpdHMsIHNpemVfdCBxYml0cywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgRVZQX01EICpldnBtZCwgY29uc3QgdW5zaWduZWQgY2hh ciAqc2VlZF9pbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNlZWRfbGVuLCB1 bnNpZ25lZCBjaGFyICpzZWVkX291dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90 IHNlZWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNvdW50ZXJfcmV0LCB1 bnNpZ25lZCBsb25nICpoX3JldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQk5fR0VOQ0Ig KmNiKTsKKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX29zc2wuYy5m aXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX29zc2wuYworLS0tIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9kc2EvZHNhX29zc2wuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAw MDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCTIwMTUt MDQtMjIgMTY6MDg6NDAuMjg3MjQ1NTM2ICswMjAwCitAQCAtNjUsNiArNjUsOSBAQAorICNpbmNs dWRlIDxvcGVuc3NsL2RzYS5oPgorICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKyAjaW5jbHVk ZSA8b3BlbnNzbC9hc24xLmg+CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3Bl bnNzbC9maXBzLmg+CisrI2VuZGlmCisgCisgc3RhdGljIERTQV9TSUcgKmRzYV9kb19zaWduKGNv bnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkbGVuLCBEU0EgKmRzYSk7Cisgc3RhdGljIGlu dCBkc2Ffc2lnbl9zZXR1cChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sIEJJR05VTSAqKmtpbnZw LAorQEAgLTgzLDcgKzg2LDcgQEAgc3RhdGljIERTQV9NRVRIT0Qgb3BlbnNzbF9kc2FfbWV0aCA9 IHsKKyAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIGRzYV9ibl9tb2RfZXhwLCAq LworICAgICBkc2FfaW5pdCwKKyAgICAgZHNhX2ZpbmlzaCwKKy0gICAgMCwKKysgICAgRFNBX0ZM QUdfRklQU19NRVRIT0QsCisgICAgIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEwKK0BAIC0x NDAsNiArMTQzLDE5IEBAIHN0YXRpYyBEU0FfU0lHICpkc2FfZG9fc2lnbihjb25zdCB1bnNpZ24K KyAgICAgRFNBX1NJRyAqcmV0ID0gTlVMTDsKKyAgICAgaW50IG5vcmVkbyA9IDA7CisgCisrI2lm ZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgeworKyAg ICAgICAgRklQU2VycihGSVBTX0ZfRFNBX0RPX1NJR04sIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZB SUxFRCk7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworKyAgICBpZiAoRklQU19t b2RlKCkgJiYgIShkc2EtPmZsYWdzICYgRFNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCisrICAgICAg ICAmJiAoQk5fbnVtX2JpdHMoZHNhLT5wKSA8IE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNf QklUUykpIHsKKysgICAgICAgIERTQWVycihEU0FfRl9EU0FfRE9fU0lHTiwgRFNBX1JfS0VZX1NJ WkVfVE9PX1NNQUxMKTsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisrI2VuZGlmCisr CisgICAgIEJOX2luaXQoJm0pOworICAgICBCTl9pbml0KCZ4cik7CisgCitAQCAtMzMwLDYgKzM0 NiwxOCBAQCBzdGF0aWMgaW50IGRzYV9kb192ZXJpZnkoY29uc3QgdW5zaWduZWQKKyAgICAgICAg IERTQWVycihEU0FfRl9EU0FfRE9fVkVSSUZZLCBEU0FfUl9CQURfUV9WQUxVRSk7CisgICAgICAg ICByZXR1cm4gLTE7CisgICAgIH0KKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBT X3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9EU0FfRE9fVkVS SUZZLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIC0xOwor KyAgICB9CisrCisrICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKGRzYS0+ZmxhZ3MgJiBEU0FfRkxB R19OT05fRklQU19BTExPVykKKysgICAgICAgICYmIChCTl9udW1fYml0cyhkc2EtPnApIDwgT1BF TlNTTF9EU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgeworKyAgICAgICAgRFNBZXJyKERTQV9G X0RTQV9ET19WRVJJRlksIERTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7CisrICAgICAgICByZXR1 cm4gLTE7CisrICAgIH0KKysjZW5kaWYKKyAKKyAgICAgaWYgKEJOX251bV9iaXRzKGRzYS0+cCkg PiBPUEVOU1NMX0RTQV9NQVhfTU9EVUxVU19CSVRTKSB7CisgICAgICAgICBEU0FlcnIoRFNBX0Zf RFNBX0RPX1ZFUklGWSwgRFNBX1JfTU9EVUxVU19UT09fTEFSR0UpOworQEAgLTQxMCw2ICs0Mzgs OSBAQCBzdGF0aWMgaW50IGRzYV9kb192ZXJpZnkoY29uc3QgdW5zaWduZWQKKyAKKyBzdGF0aWMg aW50IGRzYV9pbml0KERTQSAqZHNhKQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJ UFNfc2VsZnRlc3RfY2hlY2soKTsKKysjZW5kaWYKKyAgICAgZHNhLT5mbGFncyB8PSBEU0FfRkxB R19DQUNIRV9NT05UX1A7CisgICAgIHJldHVybiAoMSk7CisgfQorZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2RzYS9kc2FfcG1ldGguYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9k c2EvZHNhX3BtZXRoLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9wbWV0aC5j LmZpcHMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZHNhL2RzYV9wbWV0aC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg3MjQ1NTM2 ICswMjAwCitAQCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyBpbnQgcGtleV9kc2FfcGFyYW1nZW4o RVZQX1BLRVlfQ1QKKyAgICAgaWYgKCFkc2EpCisgICAgICAgICByZXR1cm4gMDsKKyAgICAgcmV0 ID0gZHNhX2J1aWx0aW5fcGFyYW1nZW4oZHNhLCBkY3R4LT5uYml0cywgZGN0eC0+cWJpdHMsIGRj dHgtPnBtZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwg TlVMTCwgTlVMTCwgcGNiKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwg MCwgTlVMTCwgTlVMTCwgcGNiKTsKKyAgICAgaWYgKHJldCkKKyAgICAgICAgIEVWUF9QS0VZX2Fz c2lnbl9EU0EocGtleSwgZHNhKTsKKyAgICAgZWxzZQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2RzYS9kc2F0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYXRl c3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhdGVzdC5jLmZpcHMJMjAxNS0w My0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v ZHNhL2RzYXRlc3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4NzI0NTUzNiArMDIwMAorQEAgLTEw MCwzNiArMTAwLDQxIEBAIHN0YXRpYyBpbnQgTVNfQ0FMTEJBQ0sgZHNhX2NiKGludCBwLCBpbnQK KyAgKiBQVUIgMTg2IGFuZCBhbHNvIGFwcGVhciBpbiBBcHBlbmRpeCA1IHRvIEZJUFMgUElCIDE4 Ni0xCisgICovCisgc3RhdGljIHVuc2lnbmVkIGNoYXIgc2VlZFsyMF0gPSB7CistICAgIDB4ZDUs IDB4MDEsIDB4NGUsIDB4NGIsIDB4NjAsIDB4ZWYsIDB4MmIsIDB4YTgsIDB4YjYsIDB4MjEsIDB4 MWIsIDB4NDAsCistICAgIDB4NjIsIDB4YmEsIDB4MzIsIDB4MjQsIDB4ZTAsIDB4NDIsIDB4N2Qs IDB4ZDMsCisrICAgIDB4MDIsIDB4NDcsIDB4MTEsIDB4OTIsIDB4MTEsIDB4ODgsIDB4QzgsIDB4 RkIsIDB4QUYsIDB4NDgsIDB4NEMsIDB4NjIsCisrICAgIDB4REYsIDB4QTUsIDB4QkUsIDB4QTAs IDB4QTQsIDB4M0MsIDB4NTYsIDB4RTMsCisgfTsKKyAKKyBzdGF0aWMgdW5zaWduZWQgY2hhciBv dXRfcFtdID0geworLSAgICAweDhkLCAweGYyLCAweGE0LCAweDk0LCAweDQ5LCAweDIyLCAweDc2 LCAweGFhLAorLSAgICAweDNkLCAweDI1LCAweDc1LCAweDliLCAweGIwLCAweDY4LCAweDY5LCAw eGNiLAorLSAgICAweGVhLCAweGMwLCAweGQ4LCAweDNhLCAweGZiLCAweDhkLCAweDBjLCAweGY3 LAorLSAgICAweGNiLCAweGI4LCAweDMyLCAweDRmLCAweDBkLCAweDc4LCAweDgyLCAweGU1LAor LSAgICAweGQwLCAweDc2LCAweDJmLCAweGM1LCAweGI3LCAweDIxLCAweDBlLCAweGFmLAorLSAg ICAweGMyLCAweGU5LCAweGFkLCAweGFjLCAweDMyLCAweGFiLCAweDdhLCAweGFjLAorLSAgICAw eDQ5LCAweDY5LCAweDNkLCAweGZiLCAweGY4LCAweDM3LCAweDI0LCAweGMyLAorLSAgICAweGVj LCAweDA3LCAweDM2LCAweGVlLCAweDMxLCAweGM4LCAweDAyLCAweDkxLAorKyAgICAweEFDLCAw eENCLCAweDFFLCAweDYzLCAweDYwLCAweDY5LCAweDBDLCAweEZCLCAweDA2LCAweDE5LCAweDY4 LCAweDNFLAorKyAgICAweEE1LCAweDAxLCAweDVBLCAweEEyLCAweDE1LCAweDVDLCAweEUyLCAw eDk5LCAweDJELCAweEQ1LCAweDMwLCAweDk5LAorKyAgICAweDdFLCAweDVGLCAweDhELCAweEUy LCAweEY3LCAweEM2LCAweDJFLCAweDhELCAweEEzLCAweDlGLCAweDU4LCAweEFELAorKyAgICAw eEQ2LCAweEE5LCAweDdELCAweDBFLCAweDBELCAweDk1LCAweDUzLCAweEE2LCAweDcxLCAweDNB LCAweERFLCAweEFCLAorKyAgICAweEFDLCAweEU5LCAweEY0LCAweDM2LCAweDU1LCAweDlFLCAw eEI5LCAweEQ2LCAweDkzLCAweEJGLCAweEYzLCAweDE4LAorKyAgICAweDFDLCAweDE0LCAweDdC LCAweEE1LCAweDQyLCAweDJFLCAweENELCAweDAwLCAweEVCLCAweDM1LCAweDNCLCAweDFCLAor KyAgICAweEE4LCAweDUxLCAweEJCLCAweEUxLCAweDU4LCAweDQyLCAweDg1LCAweDg0LCAweDIy LCAweEE3LCAweDk3LCAweDVFLAorKyAgICAweDk5LCAweDZGLCAweDM4LCAweDIwLCAweEJELCAw eDlELCAweEI2LCAweEQ5LCAweDMzLCAweDM3LCAweDJBLCAweEZELAorKyAgICAweEJCLCAweEQ0 LCAweEJDLCAweDBDLCAweDJBLCAweDY3LCAweENCLCAweDlGLCAweEJCLCAweERGLCAweEY5LCAw eDkzLAorKyAgICAweEFBLCAweEQ2LCAweEYwLCAweEQ2LCAweDk1LCAweDBCLCAweDVELCAweDY1 LCAweDE0LCAweEQwLCAweDE4LCAweDlELAorKyAgICAweEM2LCAweEFGLCAweEYwLCAweEM2LCAw eDM3LCAweDdDLCAweEYzLCAweDVGLAorIH07CisgCisgc3RhdGljIHVuc2lnbmVkIGNoYXIgb3V0 X3FbXSA9IHsKKy0gICAgMHhjNywgMHg3MywgMHgyMSwgMHg4YywgMHg3MywgMHg3ZSwgMHhjOCwg MHhlZSwKKy0gICAgMHg5OSwgMHgzYiwgMHg0ZiwgMHgyZCwgMHhlZCwgMHgzMCwgMHhmNCwgMHg4 ZSwKKy0gICAgMHhkYSwgMHhjZSwgMHg5MSwgMHg1ZiwKKysgICAgMHhFMywgMHg4RSwgMHg1RSwg MHg2RCwgMHhCRiwgMHgyQiwgMHg3OSwgMHhGOCwgMHhDNSwgMHg0QiwgMHg4OSwgMHg4QiwKKysg ICAgMHhCQSwgMHgyRCwgMHg5MSwgMHhDMywgMHg2QywgMHg4MCwgMHhBQywgMHg4NywKKyB9Owor IAorIHN0YXRpYyB1bnNpZ25lZCBjaGFyIG91dF9nW10gPSB7CistICAgIDB4NjIsIDB4NmQsIDB4 MDIsIDB4NzgsIDB4MzksIDB4ZWEsIDB4MGEsIDB4MTMsCistICAgIDB4NDEsIDB4MzEsIDB4NjMs IDB4YTUsIDB4NWIsIDB4NGMsIDB4YjUsIDB4MDAsCistICAgIDB4MjksIDB4OWQsIDB4NTUsIDB4 MjIsIDB4OTUsIDB4NmMsIDB4ZWYsIDB4Y2IsCistICAgIDB4M2IsIDB4ZmYsIDB4MTAsIDB4ZjMs IDB4OTksIDB4Y2UsIDB4MmMsIDB4MmUsCistICAgIDB4NzEsIDB4Y2IsIDB4OWQsIDB4ZTUsIDB4 ZmEsIDB4MjQsIDB4YmEsIDB4YmYsCistICAgIDB4NTgsIDB4ZTUsIDB4YjcsIDB4OTUsIDB4MjEs IDB4OTIsIDB4NWMsIDB4OWMsCistICAgIDB4YzQsIDB4MmUsIDB4OWYsIDB4NmYsIDB4NDYsIDB4 NGIsIDB4MDgsIDB4OGMsCistICAgIDB4YzUsIDB4NzIsIDB4YWYsIDB4NTMsIDB4ZTYsIDB4ZDcs IDB4ODgsIDB4MDIsCisrICAgIDB4NDIsIDB4NEEsIDB4MDQsIDB4NEUsIDB4NzksIDB4QjQsIDB4 OTksIDB4N0YsIDB4RkQsIDB4NTgsIDB4MzYsIDB4MkMsCisrICAgIDB4MUIsIDB4NUYsIDB4MTgs IDB4N0UsIDB4MEQsIDB4Q0MsIDB4QUIsIDB4ODEsIDB4QzksIDB4NUQsIDB4MTAsIDB4Q0UsCisr ICAgIDB4NEUsIDB4ODAsIDB4N0UsIDB4NTgsIDB4QjQsIDB4MzQsIDB4M0YsIDB4QTcsIDB4NDUs IDB4QzcsIDB4QUEsIDB4MzYsCisrICAgIDB4MjQsIDB4NDIsIDB4QTksIDB4M0IsIDB4RTgsIDB4 MEUsIDB4MDQsIDB4MDIsIDB4MkQsIDB4RkIsIDB4QTYsIDB4MTMsCisrICAgIDB4QjksIDB4QjUs IDB4MTUsIDB4QTUsIDB4NTYsIDB4MDcsIDB4MzUsIDB4RTQsIDB4MDMsIDB4QjYsIDB4NzksIDB4 N0MsCisrICAgIDB4NjIsIDB4REQsIDB4REYsIDB4M0YsIDB4NzEsIDB4M0EsIDB4OUQsIDB4OEIs IDB4QzQsIDB4RjYsIDB4RTcsIDB4MUQsCisrICAgIDB4NTIsIDB4QTgsIDB4QTksIDB4NDMsIDB4 MUQsIDB4MzMsIDB4NTEsIDB4ODgsIDB4MzksIDB4QkQsIDB4NzMsIDB4RTksCisrICAgIDB4NUYs IDB4QkUsIDB4ODIsIDB4NDksIDB4MjcsIDB4RTYsIDB4QjUsIDB4NTMsIDB4QzEsIDB4MzgsIDB4 QUMsIDB4MkYsCisrICAgIDB4NkQsIDB4OTcsIDB4NkMsIDB4RUIsIDB4NjcsIDB4QzEsIDB4NUYs IDB4NjcsIDB4RjgsIDB4MzUsIDB4MDUsIDB4NUUsCisrICAgIDB4RDUsIDB4NjgsIDB4ODAsIDB4 QUEsIDB4OTYsIDB4Q0EsIDB4MEIsIDB4OEEsIDB4RTYsIDB4RjEsIDB4QjEsIDB4NDEsCisrICAg IDB4QzYsIDB4NzUsIDB4OTQsIDB4MEEsIDB4MEEsIDB4MkEsIDB4RkEsIDB4MjksCisgfTsKKyAK KyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzdHIxW10gPSAiMTIzNDU2Nzg5MDEyMzQ1Njc4 OTAiOworQEAgLTE2Miw3ICsxNjcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CisgICAgIEJJT19wcmludGYoYmlvX2VyciwgInRlc3QgZ2VuZXJhdGlvbiBvZiBEU0EgcGFyYW1l dGVyc1xuIik7CisgCisgICAgIEJOX0dFTkNCX3NldCgmY2IsIGRzYV9jYiwgYmlvX2Vycik7Cist ICAgIGlmICgoKGRzYSA9IERTQV9uZXcoKSkgPT0gTlVMTCkgfHwgIURTQV9nZW5lcmF0ZV9wYXJh bWV0ZXJzX2V4KGRzYSwgNTEyLAorKyAgICBpZiAoKChkc2EgPSBEU0FfbmV3KCkpID09IE5VTEwp IHx8ICFEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChkc2EsIDEwMjQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl ZWQsIDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmY291bnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmgsICZjYikpCitAQCAt MTc2LDggKzE4MSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgQklP X3ByaW50ZihiaW9fZXJyLCAiXG5jb3VudGVyPSVkIGg9JWxkXG4iLCBjb3VudGVyLCBoKTsKKyAK KyAgICAgRFNBX3ByaW50KGJpb19lcnIsIGRzYSwgMCk7CistICAgIGlmIChjb3VudGVyICE9IDEw NSkgeworLSAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiY291bnRlciBzaG91bGQgYmUgMTA1 XG4iKTsKKysgICAgaWYgKGNvdW50ZXIgIT0gMjM5KSB7CisrICAgICAgICBCSU9fcHJpbnRmKGJp b19lcnIsICJjb3VudGVyIHNob3VsZCBiZSAyMzlcbiIpOworICAgICAgICAgZ290byBlbmQ7Cisg ICAgIH0KKyAgICAgaWYgKGggIT0gMikgeworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2VuZ2luZS9lbmdfYWxsLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZW5naW5lL2VuZ19h bGwuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jLmZpcHMJMjAx NS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZW5naW5lL2VuZ19hbGwuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4NzI0NTUzNiArMDIwMAor QEAgLTU5LDExICs1OSwyNSBAQAorIAorICNpbmNsdWRlICJjcnlwdGxpYi5oIgorICNpbmNsdWRl ICJlbmdfaW50LmgiCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9m aXBzLmg+CisrI2VuZGlmCisgCisgdm9pZCBFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXModm9p ZCkKKyB7CisgICAgIC8qIFNvbWUgRU5HSU5FcyBuZWVkIHRoaXMgKi8KKyAgICAgT1BFTlNTTF9j cHVpZF9zZXR1cCgpOworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgT1BFTlNTTF9pbml0X2xp YnJhcnkoKTsKKysgICAgaWYgKEZJUFNfbW9kZSgpKSB7CisrICAgICAgICAvKiBXZSBhbGxvdyBs b2FkaW5nIGR5bmFtaWMgZW5naW5lIGFzIGEgdGhpcmQgcGFydHkKKysgICAgICAgICAgIGVuZ2lu ZSBtaWdodCBiZSBGSVBTIHZhbGlkYXRlZC4KKysgICAgICAgICAgIFVzZXIgaXMgZGlzYWxsb3dl ZCB0byBsb2FkIG5vbi12YWxpZGF0ZWQgZW5naW5lcworKyAgICAgICAgICAgYnkgc2VjdXJpdHkg cG9saWN5LiAqLworKyAgICAgICAgRU5HSU5FX2xvYWRfZHluYW1pYygpOworKyAgICAgICAgcmV0 dXJuOworKyAgICB9CisrI2VuZGlmCisgI2lmIDAKKyAgICAgLyoKKyAgICAgICogVGhlcmUncyBu byBsb25nZXIgYW55IG5lZWQgZm9yIGFuICJvcGVuc3NsIiBFTkdJTkUgdW5sZXNzLCBvbmUgZGF5 LCBpdAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9jX2FsbGMuYy5maXBzIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvY19hbGxjLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZXZwL2NfYWxsYy5jLmZpcHMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAK KysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2NfYWxsYy5jCTIwMTUtMDQtMjIgMTY6MDg6 NDAuMjg3MjQ1NTM2ICswMjAwCitAQCAtNjUsNiArNjUsMTAgQEAKKyB2b2lkIE9wZW5TU0xfYWRk X2FsbF9jaXBoZXJzKHZvaWQpCisgeworIAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgT1BF TlNTTF9pbml0X2xpYnJhcnkoKTsKKysgICAgaWYgKCFGSVBTX21vZGUoKSkgeworKyNlbmRpZgor ICNpZm5kZWYgT1BFTlNTTF9OT19ERVMKKyAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19jZmIo KSk7CisgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfY2ZiMSgpKTsKK0BAIC0yMzgsNCArMjQy LDY0IEBAIHZvaWQgT3BlblNTTF9hZGRfYWxsX2NpcGhlcnModm9pZCkKKyAgICAgRVZQX2FkZF9j aXBoZXJfYWxpYXMoU05fY2FtZWxsaWFfMjU2X2NiYywgIkNBTUVMTElBMjU2Iik7CisgICAgIEVW UF9hZGRfY2lwaGVyX2FsaWFzKFNOX2NhbWVsbGlhXzI1Nl9jYmMsICJjYW1lbGxpYTI1NiIpOwor ICNlbmRpZgorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgfSBlbHNlIHsKKysjIGlmbmRlZiBP UEVOU1NMX05PX0RFUworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGVfY2ZiKCkp OworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUzX2NmYigpKTsKKysKKysgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlX29mYigpKTsKKysgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9kZXNfZWRlM19vZmIoKSk7CisrCisrICAgICAgICBFVlBfYWRkX2NpcGhlcihF VlBfZGVzX2VkZV9jYmMoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTNf Y2JjKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fZGVzX2VkZTNfY2JjLCAi REVTMyIpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fZGVzX2VkZTNfY2JjLCAi ZGVzMyIpOworKworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUoKSk7CisrICAg ICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTMoKSk7CisrIyBlbmRpZgorKworKyMgaWZu ZGVmIE9QRU5TU0xfTk9fQUVTCisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9l Y2IoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9jYmMoKSk7CisrICAg ICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9jZmIoKSk7CisrICAgICAgICBFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzEyOF9jZmIxKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQ X2Flc18xMjhfY2ZiOCgpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X29m YigpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2N0cigpKTsKKysgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2djbSgpKTsKKysgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9hZXNfMTI4X3h0cygpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTI4X2NjbSgpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X3dyYXAo KSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9hZXNfMTI4X2NiYywgIkFFUzEy OCIpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzEyOF9jYmMsICJhZXMx MjgiKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2VjYigpKTsKKysgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2NiYygpKTsKKysgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9hZXNfMTkyX2NmYigpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTkyX2NmYjEoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9jZmI4 KCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfb2ZiKCkpOworKyAgICAg ICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY3RyKCkpOworKyAgICAgICAgRVZQX2FkZF9j aXBoZXIoRVZQX2Flc18xOTJfZ2NtKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18xOTJfY2NtKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfd3JhcCgp KTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xOTJfY2JjLCAiQUVTMTky Iik7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9hZXNfMTkyX2NiYywgImFlczE5 MiIpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZWNiKCkpOworKyAgICAg ICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfY2JjKCkpOworKyAgICAgICAgRVZQX2FkZF9j aXBoZXIoRVZQX2Flc18yNTZfY2ZiKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18yNTZfY2ZiMSgpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2NmYjgo KSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9vZmIoKSk7CisrICAgICAg ICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9jdHIoKSk7CisrICAgICAgICBFVlBfYWRkX2Np cGhlcihFVlBfYWVzXzI1Nl9nY20oKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVz XzI1Nl94dHMoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9jY20oKSk7 CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl93cmFwKCkpOworKyAgICAgICAg RVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzI1Nl9jYmMsICJBRVMyNTYiKTsKKysgICAgICAg IEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18yNTZfY2JjLCAiYWVzMjU2Iik7CisrIyBlbmRp ZgorKyAgICB9CisrI2VuZGlmCisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2 cC9jX2FsbGQuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvY19hbGxkLmMKKy0tLSBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2NfYWxsZC5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTow MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2NfYWxsZC5j CTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg4MjQ1NTYwICswMjAwCitAQCAtNjQsNTEgKzY0LDgxIEBA CisgCisgdm9pZCBPcGVuU1NMX2FkZF9hbGxfZGlnZXN0cyh2b2lkKQorIHsKKysjaWZkZWYgT1BF TlNTTF9GSVBTCisrICAgIE9QRU5TU0xfaW5pdF9saWJyYXJ5KCk7CisrICAgIGlmICghRklQU19t b2RlKCkpIHsKKysjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fTUQ0CistICAgIEVWUF9hZGRf ZGlnZXN0KEVWUF9tZDQoKSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfbWQ0KCkpOwor ICNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19NRDUKKy0gICAgRVZQX2FkZF9kaWdlc3QoRVZQ X21kNSgpKTsKKy0gICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fbWQ1LCAic3NsMi1tZDUiKTsK Ky0gICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fbWQ1LCAic3NsMy1tZDUiKTsKKysgICAgICAg IEVWUF9hZGRfZGlnZXN0KEVWUF9tZDUoKSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlh cyhTTl9tZDUsICJzc2wyLW1kNSIpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05f bWQ1LCAic3NsMy1tZDUiKTsKKyAjZW5kaWYKKyAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEp ICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBMCkKKy0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX3No YSgpKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEoKSk7CisgIyBpZm5kZWYgT1BF TlNTTF9OT19EU0EKKy0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX2RzcygpKTsKKysgICAgICAgIEVW UF9hZGRfZGlnZXN0KEVWUF9kc3MoKSk7CisgIyBlbmRpZgorICNlbmRpZgorICNpZiAhZGVmaW5l ZChPUEVOU1NMX05PX1NIQSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEExKQorLSAgICBFVlBf YWRkX2RpZ2VzdChFVlBfc2hhMSgpKTsKKy0gICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fc2hh MSwgInNzbDMtc2hhMSIpOworLSAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9zaGExV2l0aFJT QUVuY3J5cHRpb24sIFNOX3NoYTFXaXRoUlNBKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVW UF9zaGExKCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fc2hhMSwgInNzbDMt c2hhMSIpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fc2hhMVdpdGhSU0FFbmNy eXB0aW9uLCBTTl9zaGExV2l0aFJTQSk7CisgIyBpZm5kZWYgT1BFTlNTTF9OT19EU0EKKy0gICAg RVZQX2FkZF9kaWdlc3QoRVZQX2RzczEoKSk7CistICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNO X2RzYVdpdGhTSEExLCBTTl9kc2FXaXRoU0hBMV8yKTsKKy0gICAgRVZQX2FkZF9kaWdlc3RfYWxp YXMoU05fZHNhV2l0aFNIQTEsICJEU1MxIik7CistICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNO X2RzYVdpdGhTSEExLCAiZHNzMSIpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX2RzczEo KSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgU05fZHNh V2l0aFNIQTFfMik7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hB MSwgIkRTUzEiKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEEx LCAiZHNzMSIpOworICMgZW5kaWYKKyAjIGlmbmRlZiBPUEVOU1NMX05PX0VDRFNBCistICAgIEVW UF9hZGRfZGlnZXN0KEVWUF9lY2RzYSgpKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9l Y2RzYSgpKTsKKyAjIGVuZGlmCisgI2VuZGlmCisgI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fTURD MikgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19ERVMpCistICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9t ZGMyKCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX21kYzIoKSk7CisgI2VuZGlmCisg I2lmbmRlZiBPUEVOU1NMX05PX1JJUEVNRAorLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfcmlwZW1k MTYwKCkpOworLSAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9yaXBlbWQxNjAsICJyaXBlbWQi KTsKKy0gICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fcmlwZW1kMTYwLCAicm1kMTYwIik7Cisr ICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfcmlwZW1kMTYwKCkpOworKyAgICAgICAgRVZQX2Fk ZF9kaWdlc3RfYWxpYXMoU05fcmlwZW1kMTYwLCAicmlwZW1kIik7CisrICAgICAgICBFVlBfYWRk X2RpZ2VzdF9hbGlhcyhTTl9yaXBlbWQxNjAsICJybWQxNjAiKTsKKyAjZW5kaWYKKyAjaWZuZGVm IE9QRU5TU0xfTk9fU0hBMjU2CistICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyMjQoKSk7Cist ICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyNTYoKSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2Vz dChFVlBfc2hhMjI0KCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTI1NigpKTsK KyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fU0hBNTEyCistICAgIEVWUF9hZGRfZGlnZXN0 KEVWUF9zaGEzODQoKSk7CistICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGE1MTIoKSk7CisrICAg ICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMzg0KCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdl c3QoRVZQX3NoYTUxMigpKTsKKyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fV0hJUkxQT09M CistICAgIEVWUF9hZGRfZGlnZXN0KEVWUF93aGlybHBvb2woKSk7CisrICAgICAgICBFVlBfYWRk X2RpZ2VzdChFVlBfd2hpcmxwb29sKCkpOworKyNlbmRpZgorKyNpZmRlZiBPUEVOU1NMX0ZJUFMK KysgICAgfSBlbHNlIHsKKysjIGlmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBKSAmJiAhZGVmaW5l ZChPUEVOU1NMX05PX1NIQTEpCisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMSgpKTsK KysgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX3NoYTEsICJzc2wzLXNoYTEiKTsKKysg ICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX3NoYTFXaXRoUlNBRW5jcnlwdGlvbiwgU05f c2hhMVdpdGhSU0EpOworKyMgIGlmbmRlZiBPUEVOU1NMX05PX0RTQQorKyAgICAgICAgRVZQX2Fk ZF9kaWdlc3QoRVZQX2RzczEoKSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9k c2FXaXRoU0hBMSwgU05fZHNhV2l0aFNIQTFfMik7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9h bGlhcyhTTl9kc2FXaXRoU0hBMSwgIkRTUzEiKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0X2Fs aWFzKFNOX2RzYVdpdGhTSEExLCAiZHNzMSIpOworKyMgIGVuZGlmCisrIyAgaWZuZGVmIE9QRU5T U0xfTk9fRUNEU0EKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9lY2RzYSgpKTsKKysjICBl bmRpZgorKyMgZW5kaWYKKysjIGlmbmRlZiBPUEVOU1NMX05PX1NIQTI1NgorKyAgICAgICAgRVZQ X2FkZF9kaWdlc3QoRVZQX3NoYTIyNCgpKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9z aGEyNTYoKSk7CisrIyBlbmRpZgorKyMgaWZuZGVmIE9QRU5TU0xfTk9fU0hBNTEyCisrICAgICAg ICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMzg0KCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3Qo RVZQX3NoYTUxMigpKTsKKysjIGVuZGlmCisrICAgIH0KKyAjZW5kaWYKKyB9CitkaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2RpZ2VzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2V2cC9kaWdlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZGlnZXN0LmMu ZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9ldnAvZGlnZXN0LmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODgyNDU1NjAgKzAy MDAKK0BAIC0xNDMsMTggKzE0Myw1NSBAQCBpbnQgRVZQX0RpZ2VzdEluaXQoRVZQX01EX0NUWCAq Y3R4LCBjb25zCisgICAgIHJldHVybiBFVlBfRGlnZXN0SW5pdF9leChjdHgsIHR5cGUsIE5VTEwp OworIH0KKyAKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrLyogVGhlIHB1cnBvc2Ugb2YgdGhl c2UgaXMgdG8gdHJhcCBwcm9ncmFtcyB0aGF0IGF0dGVtcHQgdG8gdXNlIG5vbiBGSVBTCisrICog YWxnb3JpdGhtcyBpbiBGSVBTIG1vZGUgYW5kIGlnbm9yZSB0aGUgZXJyb3JzLgorKyAqLworKwor K3N0YXRpYyBpbnQgYmFkX2luaXQoRVZQX01EX0NUWCAqY3R4KQorK3sKKysgICAgRklQU19FUlJP Ul9JR05PUkVEKCJEaWdlc3QgaW5pdCIpOworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGlj IGludCBiYWRfdXBkYXRlKEVWUF9NRF9DVFggKmN0eCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90 IGNvdW50KQorK3sKKysgICAgRklQU19FUlJPUl9JR05PUkVEKCJEaWdlc3QgdXBkYXRlIik7Cisr ICAgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgaW50IGJhZF9maW5hbChFVlBfTURfQ1RYICpj dHgsIHVuc2lnbmVkIGNoYXIgKm1kKQorK3sKKysgICAgRklQU19FUlJPUl9JR05PUkVEKCJEaWdl c3QgRmluYWwiKTsKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBjb25zdCBFVlBfTUQg YmFkX21kID0geworKyAgICAwLAorKyAgICAwLAorKyAgICAwLAorKyAgICAwLAorKyAgICBiYWRf aW5pdCwKKysgICAgYmFkX3VwZGF0ZSwKKysgICAgYmFkX2ZpbmFsLAorKyAgICBOVUxMLAorKyAg ICBOVUxMLAorKyAgICBOVUxMLAorKyAgICAwLAorKyAgICB7MCwgMCwgMCwgMH0sCisrfTsKKysK KysjZW5kaWYKKysKKyBpbnQgRVZQX0RpZ2VzdEluaXRfZXgoRVZQX01EX0NUWCAqY3R4LCBjb25z dCBFVlBfTUQgKnR5cGUsIEVOR0lORSAqaW1wbCkKKyB7CisgICAgIEVWUF9NRF9DVFhfY2xlYXJf ZmxhZ3MoY3R4LCBFVlBfTURfQ1RYX0ZMQUdfQ0xFQU5FRCk7CisgI2lmZGVmIE9QRU5TU0xfRklQ UworLSAgICAvKiBJZiBGSVBTIG1vZGUgc3dpdGNoIHRvIGFwcHJvdmVkIGltcGxlbWVudGF0aW9u IGlmIHBvc3NpYmxlICovCistICAgIGlmIChGSVBTX21vZGUoKSkgeworLSAgICAgICAgY29uc3Qg RVZQX01EICpmaXBzbWQ7CistICAgICAgICBpZiAodHlwZSkgeworLSAgICAgICAgICAgIGZpcHNt ZCA9IGV2cF9nZXRfZmlwc19tZCh0eXBlKTsKKy0gICAgICAgICAgICBpZiAoZmlwc21kKQorLSAg ICAgICAgICAgICAgICB0eXBlID0gZmlwc21kOworLSAgICAgICAgfQorKyAgICBpZiAoRklQU19z ZWxmdGVzdF9mYWlsZWQoKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRVZQX0RJR0VTVElO SVRfRVgsIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICBjdHgtPmRpZ2Vz dCA9ICZiYWRfbWQ7CisrICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorICNlbmRpZgorICNpZm5k ZWYgT1BFTlNTTF9OT19FTkdJTkUKK0BAIC0yMTIsNiArMjQ5LDE2IEBAIGludCBFVlBfRGlnZXN0 SW5pdF9leChFVlBfTURfQ1RYICpjdHgsIGMKKyAgICAgfQorICNlbmRpZgorICAgICBpZiAoY3R4 LT5kaWdlc3QgIT0gdHlwZSkgeworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgICAgIGlmIChG SVBTX21vZGUoKSkgeworKyAgICAgICAgICAgIGlmICghKHR5cGUtPmZsYWdzICYgRVZQX01EX0ZM QUdfRklQUykKKysgICAgICAgICAgICAgICAgJiYgIShjdHgtPmZsYWdzICYgRVZQX01EX0NUWF9G TEFHX05PTl9GSVBTX0FMTE9XKSkgeworKyAgICAgICAgICAgICAgICBFVlBlcnIoRVZQX0ZfRVZQ X0RJR0VTVElOSVRfRVgsIEVWUF9SX0RJU0FCTEVEX0ZPUl9GSVBTKTsKKysgICAgICAgICAgICAg ICAgY3R4LT5kaWdlc3QgPSAmYmFkX21kOworKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysg ICAgICAgICAgICB9CisrICAgICAgICB9CisrI2VuZGlmCisgICAgICAgICBpZiAoY3R4LT5kaWdl c3QgJiYgY3R4LT5kaWdlc3QtPmN0eF9zaXplKQorICAgICAgICAgICAgIE9QRU5TU0xfZnJlZShj dHgtPm1kX2RhdGEpOworICAgICAgICAgY3R4LT5kaWdlc3QgPSB0eXBlOworQEAgLTIzNiwyNSAr MjgzLDE1IEBAIGludCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RYICpjdHgsIGMKKyAgICAg fQorICAgICBpZiAoY3R4LT5mbGFncyAmIEVWUF9NRF9DVFhfRkxBR19OT19JTklUKQorICAgICAg ICAgcmV0dXJuIDE7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAoRklQU19tb2RlKCkp IHsKKy0gICAgICAgIGlmIChGSVBTX2RpZ2VzdGluaXQoY3R4LCB0eXBlKSkKKy0gICAgICAgICAg ICByZXR1cm4gMTsKKy0gICAgICAgIE9QRU5TU0xfZnJlZShjdHgtPm1kX2RhdGEpOworLSAgICAg ICAgY3R4LT5tZF9kYXRhID0gTlVMTDsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistI2Vu ZGlmCisgICAgIHJldHVybiBjdHgtPmRpZ2VzdC0+aW5pdChjdHgpOworIH0KKyAKKyBpbnQgRVZQ X0RpZ2VzdFVwZGF0ZShFVlBfTURfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBj b3VudCkKKyB7CisgI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICByZXR1cm4gRklQU19kaWdlc3R1 cGRhdGUoY3R4LCBkYXRhLCBjb3VudCk7CistI2Vsc2UKKy0gICAgcmV0dXJuIGN0eC0+dXBkYXRl KGN0eCwgZGF0YSwgY291bnQpOworKyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7CisgI2VuZGlm CisrICAgIHJldHVybiBjdHgtPnVwZGF0ZShjdHgsIGRhdGEsIGNvdW50KTsKKyB9CisgCisgLyog VGhlIGNhbGxlciBjYW4gYXNzdW1lIHRoYXQgdGhpcyByZW1vdmVzIGFueSBzZWNyZXQgZGF0YSBm cm9tIHRoZSBjb250ZXh0ICovCitAQCAtMjY5LDExICszMDYsMTEgQEAgaW50IEVWUF9EaWdlc3RG aW5hbChFVlBfTURfQ1RYICpjdHgsIHVucworIC8qIFRoZSBjYWxsZXIgY2FuIGFzc3VtZSB0aGF0 IHRoaXMgcmVtb3ZlcyBhbnkgc2VjcmV0IGRhdGEgZnJvbSB0aGUgY29udGV4dCAqLworIGludCBF VlBfRGlnZXN0RmluYWxfZXgoRVZQX01EX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICptZCwgdW5z aWduZWQgaW50ICpzaXplKQorIHsKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgIHJldHVybiBG SVBTX2RpZ2VzdGZpbmFsKGN0eCwgbWQsIHNpemUpOworLSNlbHNlCisgICAgIGludCByZXQ7Cisg CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7CisrI2Vu ZGlmCisgICAgIE9QRU5TU0xfYXNzZXJ0KGN0eC0+ZGlnZXN0LT5tZF9zaXplIDw9IEVWUF9NQVhf TURfU0laRSk7CisgICAgIHJldCA9IGN0eC0+ZGlnZXN0LT5maW5hbChjdHgsIG1kKTsKKyAgICAg aWYgKHNpemUgIT0gTlVMTCkKK0BAIC0yODQsNyArMzIxLDYgQEAgaW50IEVWUF9EaWdlc3RGaW5h bF9leChFVlBfTURfQ1RYICpjdHgsCisgICAgIH0KKyAgICAgbWVtc2V0KGN0eC0+bWRfZGF0YSwg MCwgY3R4LT5kaWdlc3QtPmN0eF9zaXplKTsKKyAgICAgcmV0dXJuIHJldDsKKy0jZW5kaWYKKyB9 CisgCisgaW50IEVWUF9NRF9DVFhfY29weShFVlBfTURfQ1RYICpvdXQsIGNvbnN0IEVWUF9NRF9D VFggKmluKQorQEAgLTM3Myw3ICs0MDksNiBAQCB2b2lkIEVWUF9NRF9DVFhfZGVzdHJveShFVlBf TURfQ1RYICpjdHgpCisgLyogVGhpcyBjYWxsIGZyZWVzIHJlc291cmNlcyBhc3NvY2lhdGVkIHdp dGggdGhlIGNvbnRleHQgKi8KKyBpbnQgRVZQX01EX0NUWF9jbGVhbnVwKEVWUF9NRF9DVFggKmN0 eCkKKyB7CistI2lmbmRlZiBPUEVOU1NMX0ZJUFMKKyAgICAgLyoKKyAgICAgICogRG9uJ3QgYXNz dW1lIGN0eC0+bWRfZGF0YSB3YXMgY2xlYW5lZCBpbiBFVlBfRGlnZXN0X0ZpbmFsLCBiZWNhdXNl CisgICAgICAqIHNvbWV0aW1lcyBvbmx5IGNvcGllcyBvZiB0aGUgY29udGV4dCBhcmUgZXZlciBm aW5hbGlzZWQuCitAQCAtMzg2LDcgKzQyMSw2IEBAIGludCBFVlBfTURfQ1RYX2NsZWFudXAoRVZQ X01EX0NUWCAqY3R4KQorICAgICAgICAgT1BFTlNTTF9jbGVhbnNlKGN0eC0+bWRfZGF0YSwgY3R4 LT5kaWdlc3QtPmN0eF9zaXplKTsKKyAgICAgICAgIE9QRU5TU0xfZnJlZShjdHgtPm1kX2RhdGEp OworICAgICB9CistI2VuZGlmCisgICAgIGlmIChjdHgtPnBjdHgpCisgICAgICAgICBFVlBfUEtF WV9DVFhfZnJlZShjdHgtPnBjdHgpOworICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKK0BAIC0z OTcsOSArNDMxLDYgQEAgaW50IEVWUF9NRF9DVFhfY2xlYW51cChFVlBfTURfQ1RYICpjdHgpCisg ICAgICAgICAgKi8KKyAgICAgICAgIEVOR0lORV9maW5pc2goY3R4LT5lbmdpbmUpOworICNlbmRp ZgorLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgRklQU19tZF9jdHhfY2xlYW51cChjdHgpOwor LSNlbmRpZgorICAgICBtZW1zZXQoY3R4LCAnXDAnLCBzaXplb2YgKmN0eCk7CisgCisgICAgIHJl dHVybiAxOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9lX2Flcy5jLmZpcHMg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9lX2Flcy5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2V2cC9lX2Flcy5jLmZpcHMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAK KysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2VfYWVzLmMJMjAxNS0wNC0yMiAxNjowODo0 MC4yODgyNDU1NjAgKzAyMDAKK0BAIC01OSw5ICs1OSw2IEBACisgIyBpbmNsdWRlICJtb2Rlc19s Y2wuaCIKKyAjIGluY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgorIAorLSMgdW5kZWYgRVZQX0NJUEhf RkxBR19GSVBTCistIyBkZWZpbmUgRVZQX0NJUEhfRkxBR19GSVBTIDAKKy0KKyB0eXBlZGVmIHN0 cnVjdCB7CisgICAgIHVuaW9uIHsKKyAgICAgICAgIGRvdWJsZSBhbGlnbjsKK0BAIC0xMTU4LDYg KzExNTUsMTEgQEAgc3RhdGljIGludCBhZXNfZ2NtX2N0cmwoRVZQX0NJUEhFUl9DVFggKgorICAg ICBjYXNlIEVWUF9DVFJMX0dDTV9TRVRfSVZMRU46CisgICAgICAgICBpZiAoYXJnIDw9IDApCisg ICAgICAgICAgICAgcmV0dXJuIDA7CisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgICAgIGlm IChGSVBTX21vZHVsZV9tb2RlKCkgJiYgIShjLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJ UFNfQUxMT1cpCisrICAgICAgICAgICAgJiYgYXJnIDwgMTIpCisrICAgICAgICAgICAgcmV0dXJu IDA7CisrIyBlbmRpZgorICAgICAgICAgLyogQWxsb2NhdGUgbWVtb3J5IGZvciBJViBpZiBuZWVk ZWQgKi8KKyAgICAgICAgIGlmICgoYXJnID4gRVZQX01BWF9JVl9MRU5HVEgpICYmIChhcmcgPiBn Y3R4LT5pdmxlbikpIHsKKyAgICAgICAgICAgICBpZiAoZ2N0eC0+aXYgIT0gYy0+aXYpCitAQCAt MTcyNiw2ICsxNzI4LDE0IEBAIHN0YXRpYyBpbnQgYWVzX3h0c19jaXBoZXIoRVZQX0NJUEhFUl9D VFgKKyAgICAgICAgIHJldHVybiAwOworICAgICBpZiAoIW91dCB8fCAhaW4gfHwgbGVuIDwgQUVT X0JMT0NLX1NJWkUpCisgICAgICAgICByZXR1cm4gMDsKKysjIGlmZGVmIE9QRU5TU0xfRklQUwor KyAgICAvKiBSZXF1aXJlbWVudCBvZiBTUDgwMC0zOEUgKi8KKysgICAgaWYgKEZJUFNfbW9kdWxl X21vZGUoKSAmJiAhKGN0eC0+ZmxhZ3MgJiBFVlBfQ0lQSF9GTEFHX05PTl9GSVBTX0FMTE9XKSAm JgorKyAgICAgICAgKGxlbiA+ICgxVUwgPDwgMjApICogMTYpKSB7CisrICAgICAgICBFVlBlcnIo RVZQX0ZfQUVTX1hUU19DSVBIRVIsIEVWUF9SX1RPT19MQVJHRSk7CisrICAgICAgICByZXR1cm4g MDsKKysgICAgfQorKyMgZW5kaWYKKyAgICAgaWYgKHhjdHgtPnN0cmVhbSkKKyAgICAgICAgICgq eGN0eC0+c3RyZWFtKSAoaW4sIG91dCwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICB4 Y3R4LT54dHMua2V5MSwgeGN0eC0+eHRzLmtleTIsIGN0eC0+aXYpOworZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmEvY3J5cHRvL2V2cC9lX2RlczMuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9l dnAvZV9kZXMzLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2VfZGVzMy5jLmZpcHMJ MjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZXZwL2VfZGVzMy5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg4MjQ1NTYwICswMjAwCitA QCAtNjUsMTAgKzY1LDYgQEAKKyAjIGluY2x1ZGUgPG9wZW5zc2wvZGVzLmg+CisgIyBpbmNsdWRl IDxvcGVuc3NsL3JhbmQuaD4KKyAKKy0vKiBCbG9jayB1c2Ugb2YgaW1wbGVtZW50YXRpb25zIGlu IEZJUFMgbW9kZSAqLworLSMgdW5kZWYgRVZQX0NJUEhfRkxBR19GSVBTCistIyBkZWZpbmUgRVZQ X0NJUEhfRkxBR19GSVBTICAgICAgMAorLQorIHR5cGVkZWYgc3RydWN0IHsKKyAgICAgdW5pb24g eworICAgICAgICAgZG91YmxlIGFsaWduOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2V2cC9lX251bGwuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZV9udWxsLmMKKy0t LSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2VfbnVsbC5jLmZpcHMJMjAxNS0wMy0xOSAxNDoz MDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2VfbnVs bC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg4MjQ1NTYwICswMjAwCitAQCAtNjgsNyArNjgsNyBA QCBzdGF0aWMgaW50IG51bGxfY2lwaGVyKEVWUF9DSVBIRVJfQ1RYICpjCisgc3RhdGljIGNvbnN0 IEVWUF9DSVBIRVIgbl9jaXBoZXIgPSB7CisgICAgIE5JRF91bmRlZiwKKyAgICAgMSwgMCwgMCwK Ky0gICAgMCwKKysgICAgRVZQX0NJUEhfRkxBR19GSVBTLAorICAgICBudWxsX2luaXRfa2V5LAor ICAgICBudWxsX2NpcGhlciwKKyAgICAgTlVMTCwKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9ldnAvZXZwX2VuYy5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9ldnBfZW5j LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2V2cF9lbmMuYy5maXBzCTIwMTUtMDMt MTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2 cC9ldnBfZW5jLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODkyNDU1ODMgKzAyMDAKK0BAIC02OSwx NiArNjksNzMgQEAKKyAjZW5kaWYKKyAjaW5jbHVkZSAiZXZwX2xvY2wuaCIKKyAKKy0jaWZkZWYg T1BFTlNTTF9GSVBTCistIyBkZWZpbmUgTV9kb19jaXBoZXIoY3R4LCBvdXQsIGluLCBpbmwpIEZJ UFNfY2lwaGVyKGN0eCwgb3V0LCBpbiwgaW5sKQorLSNlbHNlCistIyBkZWZpbmUgTV9kb19jaXBo ZXIoY3R4LCBvdXQsIGluLCBpbmwpIGN0eC0+Y2lwaGVyLT5kb19jaXBoZXIoY3R4LCBvdXQsIGlu LCBpbmwpCistI2VuZGlmCisrI2RlZmluZSBNX2RvX2NpcGhlcihjdHgsIG91dCwgaW4sIGlubCkg Y3R4LT5jaXBoZXItPmRvX2NpcGhlcihjdHgsIG91dCwgaW4sIGlubCkKKyAKKyBjb25zdCBjaGFy IEVWUF92ZXJzaW9uW10gPSAiRVZQIiBPUEVOU1NMX1ZFUlNJT05fUFRFWFQ7CisgCisrI2lmZGVm IE9QRU5TU0xfRklQUworKworKy8qIFRoZSBwdXJwb3NlIG9mIHRoZXNlIGlzIHRvIHRyYXAgcHJv Z3JhbXMgdGhhdCBhdHRlbXB0IHRvIHVzZSBub24gRklQUworKyAqIGFsZ29yaXRobXMgaW4gRklQ UyBtb2RlIGFuZCBpZ25vcmUgdGhlIGVycm9ycy4KKysgKi8KKysKKytzdGF0aWMgaW50IGJhZF9p bml0KEVWUF9DSVBIRVJfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKKysgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LCBpbnQgZW5jKQorK3sKKysg ICAgRklQU19FUlJPUl9JR05PUkVEKCJDaXBoZXIgaW5pdCIpOworKyAgICByZXR1cm4gMDsKKyt9 CisrCisrc3RhdGljIGludCBiYWRfZG9fY2lwaGVyKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2ln bmVkIGNoYXIgKm91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqaW4sIHVuc2lnbmVkIGludCBpbmwpCisreworKyAgICBGSVBTX0VSUk9SX0lHTk9SRUQo IkNpcGhlciB1cGRhdGUiKTsKKysgICAgcmV0dXJuIDA7CisrfQorKworKy8qIE5COiBubyBjbGVh bnVwIGJlY2F1c2UgaXQgaXMgYWxsb3dlZCBhZnRlciBmYWlsZWQgaW5pdCAqLworKworK3N0YXRp YyBpbnQgYmFkX3NldF9hc24xKEVWUF9DSVBIRVJfQ1RYICpjdHgsIEFTTjFfVFlQRSAqdHlwKQor K3sKKysgICAgRklQU19FUlJPUl9JR05PUkVEKCJDaXBoZXIgc2V0X2FzbjEiKTsKKysgICAgcmV0 dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQgYmFkX2dldF9hc24xKEVWUF9DSVBIRVJfQ1RYICpj dHgsIEFTTjFfVFlQRSAqdHlwKQorK3sKKysgICAgRklQU19FUlJPUl9JR05PUkVEKCJDaXBoZXIg Z2V0X2FzbjEiKTsKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQgYmFkX2N0cmwo RVZQX0NJUEhFUl9DVFggKmN0eCwgaW50IHR5cGUsIGludCBhcmcsIHZvaWQgKnB0cikKKyt7Cisr ICAgIEZJUFNfRVJST1JfSUdOT1JFRCgiQ2lwaGVyIGN0cmwiKTsKKysgICAgcmV0dXJuIDA7Cisr fQorKworK3N0YXRpYyBjb25zdCBFVlBfQ0lQSEVSIGJhZF9jaXBoZXIgPSB7CisrICAgIDAsCisr ICAgIDAsCisrICAgIDAsCisrICAgIDAsCisrICAgIDAsCisrICAgIGJhZF9pbml0LAorKyAgICBi YWRfZG9fY2lwaGVyLAorKyAgICBOVUxMLAorKyAgICAwLAorKyAgICBiYWRfc2V0X2FzbjEsCisr ICAgIGJhZF9nZXRfYXNuMSwKKysgICAgYmFkX2N0cmwsCisrICAgIE5VTEwKKyt9OworKworKyNl bmRpZgorKworIHZvaWQgRVZQX0NJUEhFUl9DVFhfaW5pdChFVlBfQ0lQSEVSX0NUWCAqY3R4KQor IHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsKKysj ZW5kaWYKKyAgICAgbWVtc2V0KGN0eCwgMCwgc2l6ZW9mKEVWUF9DSVBIRVJfQ1RYKSk7CisgICAg IC8qIGN0eC0+Y2lwaGVyPU5VTEw7ICovCisgfQorQEAgLTExMCw2ICsxNjcsMTMgQEAgaW50IEVW UF9DaXBoZXJJbml0X2V4KEVWUF9DSVBIRVJfQ1RYICpjdAorICAgICAgICAgICAgIGVuYyA9IDE7 CisgICAgICAgICBjdHgtPmVuY3J5cHQgPSBlbmM7CisgICAgIH0KKysjaWZkZWYgT1BFTlNTTF9G SVBTCisrICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICBGSVBTZXJy KEZJUFNfRl9FVlBfQ0lQSEVSSU5JVF9FWCwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsK KysgICAgICAgIGN0eC0+Y2lwaGVyID0gJmJhZF9jaXBoZXI7CisrICAgICAgICByZXR1cm4gMDsK KysgICAgfQorKyNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKKyAgICAgLyoKKyAg ICAgICogV2hldGhlciBpdCdzIG5pY2Ugb3Igbm90LCAiSW5pdHMiIGNhbiBiZSB1c2VkIG9uICJG aW5hbCInZCBjb250ZXh0cyBzbworQEAgLTE2OCwxNiArMjMyLDYgQEAgaW50IEVWUF9DaXBoZXJJ bml0X2V4KEVWUF9DSVBIRVJfQ1RYICpjdAorICAgICAgICAgICAgIGN0eC0+ZW5naW5lID0gTlVM TDsKKyAjZW5kaWYKKyAKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgICAgICBpZiAoRklQU19t b2RlKCkpIHsKKy0gICAgICAgICAgICBjb25zdCBFVlBfQ0lQSEVSICpmY2lwaGVyOworLSAgICAg ICAgICAgIGlmIChjaXBoZXIpCistICAgICAgICAgICAgICAgIGZjaXBoZXIgPSBldnBfZ2V0X2Zp cHNfY2lwaGVyKGNpcGhlcik7CistICAgICAgICAgICAgaWYgKGZjaXBoZXIpCistICAgICAgICAg ICAgICAgIGNpcGhlciA9IGZjaXBoZXI7CistICAgICAgICAgICAgcmV0dXJuIEZJUFNfY2lwaGVy aW5pdChjdHgsIGNpcGhlciwga2V5LCBpdiwgZW5jKTsKKy0gICAgICAgIH0KKy0jZW5kaWYKKyAg ICAgICAgIGN0eC0+Y2lwaGVyID0gY2lwaGVyOworICAgICAgICAgaWYgKGN0eC0+Y2lwaGVyLT5j dHhfc2l6ZSkgeworICAgICAgICAgICAgIGN0eC0+Y2lwaGVyX2RhdGEgPSBPUEVOU1NMX21hbGxv YyhjdHgtPmNpcGhlci0+Y3R4X3NpemUpOworQEAgLTIwNCwxMCArMjU4LDYgQEAgaW50IEVWUF9D aXBoZXJJbml0X2V4KEVWUF9DSVBIRVJfQ1RYICpjdAorICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJ TkUKKyAgc2tpcF90b19pbml0OgorICNlbmRpZgorLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAg aWYgKEZJUFNfbW9kZSgpKQorLSAgICAgICAgcmV0dXJuIEZJUFNfY2lwaGVyaW5pdChjdHgsIGNp cGhlciwga2V5LCBpdiwgZW5jKTsKKy0jZW5kaWYKKyAgICAgLyogd2UgYXNzdW1lIGJsb2NrIHNp emUgaXMgYSBwb3dlciBvZiAyIGluICpjcnlwdFVwZGF0ZSAqLworICAgICBPUEVOU1NMX2Fzc2Vy dChjdHgtPmNpcGhlci0+YmxvY2tfc2l6ZSA9PSAxCisgICAgICAgICAgICAgICAgICAgIHx8IGN0 eC0+Y2lwaGVyLT5ibG9ja19zaXplID09IDgKK0BAIC0yNTMsNiArMzAzLDE5IEBAIGludCBFVlBf Q2lwaGVySW5pdF9leChFVlBfQ0lQSEVSX0NUWCAqY3QKKyAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgIH0KKyAgICAgfQorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgLyogQWZ0ZXIgJ2tl eScgaXMgc2V0IG5vIGZ1cnRoZXIgcGFyYW1ldGVycyBjaGFuZ2VzIGFyZSBwZXJtaXNzaWJsZS4K KysgICAgICogU28gb25seSBjaGVjayBmb3Igbm9uIEZJUFMgZW5hYmxpbmcgYXQgdGhpcyBwb2lu dC4KKysgICAgICovCisrICAgIGlmIChrZXkgJiYgRklQU19tb2RlKCkpIHsKKysgICAgICAgIGlm ICghKGN0eC0+Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfRklQUykKKysgICAgICAgICAg ICAmICEoY3R4LT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7CisrICAg ICAgICAgICAgRVZQZXJyKEVWUF9GX0VWUF9DSVBIRVJJTklUX0VYLCBFVlBfUl9ESVNBQkxFRF9G T1JfRklQUyk7CisrICAgICAgICAgICAgY3R4LT5jaXBoZXIgPSAmYmFkX2NpcGhlcjsKKysgICAg ICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorIAorICAgICBp ZiAoa2V5IHx8IChjdHgtPmNpcGhlci0+ZmxhZ3MgJiBFVlBfQ0lQSF9BTFdBWVNfQ0FMTF9JTklU KSkgeworICAgICAgICAgaWYgKCFjdHgtPmNpcGhlci0+aW5pdChjdHgsIGtleSwgaXYsIGVuYykp CitAQCAtNTU0LDcgKzYxNyw2IEBAIHZvaWQgRVZQX0NJUEhFUl9DVFhfZnJlZShFVlBfQ0lQSEVS X0NUWAorIAorIGludCBFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKEVWUF9DSVBIRVJfQ1RYICpjKQor IHsKKy0jaWZuZGVmIE9QRU5TU0xfRklQUworICAgICBpZiAoYy0+Y2lwaGVyICE9IE5VTEwpIHsK KyAgICAgICAgIGlmIChjLT5jaXBoZXItPmNsZWFudXAgJiYgIWMtPmNpcGhlci0+Y2xlYW51cChj KSkKKyAgICAgICAgICAgICByZXR1cm4gMDsKK0BAIC01NjQsNyArNjI2LDYgQEAgaW50IEVWUF9D SVBIRVJfQ1RYX2NsZWFudXAoRVZQX0NJUEhFUl9DVAorICAgICB9CisgICAgIGlmIChjLT5jaXBo ZXJfZGF0YSkKKyAgICAgICAgIE9QRU5TU0xfZnJlZShjLT5jaXBoZXJfZGF0YSk7CistI2VuZGlm CisgI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQorICAgICBpZiAoYy0+ZW5naW5lKQorICAgICAg ICAgLyoKK0BAIC01NzMsOSArNjM0LDYgQEAgaW50IEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoRVZQ X0NJUEhFUl9DVAorICAgICAgICAgICovCisgICAgICAgICBFTkdJTkVfZmluaXNoKGMtPmVuZ2lu ZSk7CisgI2VuZGlmCistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBGSVBTX2NpcGhlcl9jdHhf Y2xlYW51cChjKTsKKy0jZW5kaWYKKyAgICAgbWVtc2V0KGMsIDAsIHNpemVvZihFVlBfQ0lQSEVS X0NUWCkpOworICAgICByZXR1cm4gMTsKKyB9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZXZwL2V2cC5oLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9ldnAuaAorLS0tIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZXZwLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjE3 NDI0Mjg2MCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZXZwLmgJMjAxNS0w NC0yMiAxNjowODo0MC4yODkyNDU1ODMgKzAyMDAKK0BAIC0xMjMsNiArMTIzLDEwIEBACisgZXh0 ZXJuICJDIiB7CisgI2VuZGlmCisgCisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysjICBpbmNsdWRl IDxvcGVuc3NsL2ZpcHMuaD4KKysjIGVuZGlmCisrCisgLyoKKyAgKiBUeXBlIG5lZWRzIHRvIGJl IGEgYml0IGZpZWxkIFN1Yi10eXBlIG5lZWRzIHRvIGJlIGZvciB2YXJpYXRpb25zIG9uIHRoZQor ICAqIG1ldGhvZCwgYXMgaW4sIGNhbiBpdCBkbyBhcmJpdHJhcnkgZW5jcnlwdGlvbi4uLi4KK0BA IC0yODYsMTEgKzI5MCw2IEBAIHN0cnVjdCBlbnZfbWRfY3R4X3N0IHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGNsZWFuZWQgKi8KKyAjIGRlZmlu ZSBFVlBfTURfQ1RYX0ZMQUdfUkVVU0UgICAgICAgICAgIDB4MDAwNC8qIERvbid0IGZyZWUgdXAg Y3R4LT5tZF9kYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKiBpbiBFVlBfTURfQ1RYX2NsZWFudXAgKi8KKy0vKgorLSAqIEZJUFMgYW5kIHBhZCBv cHRpb25zIGFyZSBpZ25vcmVkIGluIDEuMC4wLCBkZWZpbml0aW9ucyBhcmUgaGVyZSBzbyB3ZQor LSAqIGRvbid0IGFjY2lkZW50YWxseSByZXVzZSB0aGUgdmFsdWVzIGZvciBvdGhlciBwdXJwb3Nl cy4KKy0gKi8KKy0KKyAjIGRlZmluZSBFVlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cgIDB4 MDAwOC8qIEFsbG93IHVzZSBvZiBub24gRklQUworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICogZGlnZXN0IGluIEZJUFMgbW9kZSAqLworIAorQEAgLTMw Myw2ICszMDIsMTAgQEAgc3RydWN0IGVudl9tZF9jdHhfc3QgeworICMgZGVmaW5lIEVWUF9NRF9D VFhfRkxBR19QQURfUEtDUzEgICAgICAgMHgwMC8qIFBLQ1MjMSB2MS41IG1vZGUgKi8KKyAjIGRl ZmluZSBFVlBfTURfQ1RYX0ZMQUdfUEFEX1g5MzEgICAgICAgIDB4MTAvKiBYOS4zMSBtb2RlICov CisgIyBkZWZpbmUgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MgICAgICAgICAweDIwLyogUFNTIG1v ZGUgKi8KKysjIGRlZmluZSBNX0VWUF9NRF9DVFhfRkxBR19QU1NfU0FMVChjdHgpIFwKKysgICAg ICAgICAgICAgICAgKChjdHgtPmZsYWdzPj4xNikgJjB4RkZGRikgLyogc2VlZCBsZW5ndGggKi8K KysjIGRlZmluZSBFVlBfTURfQ1RYX0ZMQUdfUFNTX01ETEVOICAgICAgIDB4RkZGRi8qIHNhbHQg bGVuIHNhbWUgYXMgZGlnZXN0ICovCisrIyBkZWZpbmUgRVZQX01EX0NUWF9GTEFHX1BTU19NUkVD ICAgICAgICAweEZGRkUvKiBzYWx0IG1heCBvciBhdXRvIHJlY292ZXJlZCAqLworIAorICMgZGVm aW5lIEVWUF9NRF9DVFhfRkxBR19OT19JTklUICAgICAgICAgMHgwMTAwLyogRG9uJ3QgaW5pdGlh bGl6ZSBtZF9kYXRhICovCisgCitAQCAtMzY0LDE1ICszNjcsMTUgQEAgc3RydWN0IGV2cF9jaXBo ZXJfc3QgeworIC8qIGNpcGhlciBoYW5kbGVzIHJhbmRvbSBrZXkgZ2VuZXJhdGlvbiAqLworICMg ZGVmaW5lICAgICAgICAgRVZQX0NJUEhfUkFORF9LRVkgICAgICAgICAgICAgICAweDIwMAorIC8q IGNpcGhlciBoYXMgaXRzIG93biBhZGRpdGlvbmFsIGNvcHlpbmcgbG9naWMgKi8KKy0jIGRlZmlu ZSAgICAgICAgIEVWUF9DSVBIX0NVU1RPTV9DT1BZICAgICAgICAgICAgMHg0MDAKKysjIGRlZmlu ZSAgICAgICAgIEVWUF9DSVBIX0NVU1RPTV9DT1BZICAgICAgICAgICAgMHg0MDAwCisgLyogQWxs b3cgdXNlIGRlZmF1bHQgQVNOMSBnZXQvc2V0IGl2ICovCisgIyBkZWZpbmUgICAgICAgICBFVlBf Q0lQSF9GTEFHX0RFRkFVTFRfQVNOMSAgICAgIDB4MTAwMAorIC8qIEJ1ZmZlciBsZW5ndGggaW4g Yml0cyBub3QgYnl0ZXM6IENGQjEgbW9kZSBvbmx5ICovCisgIyBkZWZpbmUgICAgICAgICBFVlBf Q0lQSF9GTEFHX0xFTkdUSF9CSVRTICAgICAgIDB4MjAwMAorIC8qIE5vdGUgaWYgc3VpdGFibGUg Zm9yIHVzZSBpbiBGSVBTIG1vZGUgKi8KKy0jIGRlZmluZSAgICAgICAgIEVWUF9DSVBIX0ZMQUdf RklQUyAgICAgICAgICAgICAgMHg0MDAwCisrIyBkZWZpbmUgICAgICAgICBFVlBfQ0lQSF9GTEFH X0ZJUFMgICAgICAgICAgICAgIDB4NDAwCisgLyogQWxsb3cgbm9uIEZJUFMgY2lwaGVyIGluIEZJ UFMgbW9kZSAqLworLSMgZGVmaW5lICAgICAgICAgRVZQX0NJUEhfRkxBR19OT05fRklQU19BTExP VyAgICAweDgwMDAKKysjIGRlZmluZSAgICAgICAgIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNfQUxM T1cgICAgMHg4MDAKKyAvKgorICAqIENpcGhlciBoYW5kbGVzIGFueSBhbmQgYWxsIHBhZGRpbmcg bG9naWMgYXMgd2VsbCBhcyBmaW5hbGlzYXRpb24uCisgICovCitkaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZXZwL2V2cF9saWIuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAv ZXZwX2xpYi5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9ldnBfbGliLmMuZmlwcwky MDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9ldnAvZXZwX2xpYi5jCTIwMTUtMDQtMjIgMTY6MTA6NTguMjk3NTEzMTcwICswMjAwCitA QCAtNjAsMTAgKzYwLDYgQEAKKyAjaW5jbHVkZSAiY3J5cHRsaWIuaCIKKyAjaW5jbHVkZSA8b3Bl bnNzbC9ldnAuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+CistI2lmZGVmIE9QRU5T U0xfRklQUworLSMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CistIyBpbmNsdWRlICJldnBfbG9j bC5oIgorLSNlbmRpZgorIAorIGludCBFVlBfQ0lQSEVSX3BhcmFtX3RvX2FzbjEoRVZQX0NJUEhF Ul9DVFggKmMsIEFTTjFfVFlQRSAqdHlwZSkKKyB7CitAQCAtMjAwLDYgKzE5Niw5IEBAIGludCBF VlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplKGNvbnN0IEVWUF8KKyBpbnQgRVZQX0NpcGhlcihFVlBf Q0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCisgICAgICAgICAgICAgICAgY29u c3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGludCBpbmwpCisgeworKyNpZmRlZiBPUEVO U1NMX0ZJUFMKKysgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOworKyNlbmRpZgorICAgICByZXR1 cm4gY3R4LT5jaXBoZXItPmRvX2NpcGhlcihjdHgsIG91dCwgaW4sIGlubCk7CisgfQorIAorQEAg LTIxMCwyMiArMjA5LDEyIEBAIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9DSVBIRVJfQ1RYX2NpcGhl cigKKyAKKyB1bnNpZ25lZCBsb25nIEVWUF9DSVBIRVJfZmxhZ3MoY29uc3QgRVZQX0NJUEhFUiAq Y2lwaGVyKQorIHsKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgIGNvbnN0IEVWUF9DSVBIRVIg KmZjaXBoZXI7CistICAgIGZjaXBoZXIgPSBldnBfZ2V0X2ZpcHNfY2lwaGVyKGNpcGhlcik7Cist ICAgIGlmIChmY2lwaGVyICYmIGZjaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfRkxBR19GSVBTKQor LSAgICAgICAgcmV0dXJuIGNpcGhlci0+ZmxhZ3MgfCBFVlBfQ0lQSF9GTEFHX0ZJUFM7CistI2Vu ZGlmCisgICAgIHJldHVybiBjaXBoZXItPmZsYWdzOworIH0KKyAKKyB1bnNpZ25lZCBsb25nIEVW UF9DSVBIRVJfQ1RYX2ZsYWdzKGNvbnN0IEVWUF9DSVBIRVJfQ1RYICpjdHgpCisgeworLSNpZmRl ZiBPUEVOU1NMX0ZJUFMKKy0gICAgcmV0dXJuIEVWUF9DSVBIRVJfZmxhZ3MoY3R4LT5jaXBoZXIp OworLSNlbHNlCisgICAgIHJldHVybiBjdHgtPmNpcGhlci0+ZmxhZ3M7CistI2VuZGlmCisgfQor IAorIHZvaWQgKkVWUF9DSVBIRVJfQ1RYX2dldF9hcHBfZGF0YShjb25zdCBFVlBfQ0lQSEVSX0NU WCAqY3R4KQorQEAgLTI5Miw0MCArMjgxLDggQEAgaW50IEVWUF9NRF9zaXplKGNvbnN0IEVWUF9N RCAqbWQpCisgICAgIHJldHVybiBtZC0+bWRfc2l6ZTsKKyB9CisgCistI2lmZGVmIE9QRU5TU0xf RklQUworLQorLWNvbnN0IEVWUF9NRCAqZXZwX2dldF9maXBzX21kKGNvbnN0IEVWUF9NRCAqbWQp CisteworLSAgICBpbnQgbmlkID0gRVZQX01EX3R5cGUobWQpOworLSAgICBpZiAobmlkID09IE5J RF9kc2EpCistICAgICAgICByZXR1cm4gRklQU19ldnBfZHNzMSgpOworLSAgICBlbHNlIGlmIChu aWQgPT0gTklEX2RzYVdpdGhTSEEpCistICAgICAgICByZXR1cm4gRklQU19ldnBfZHNzKCk7Cist ICAgIGVsc2UgaWYgKG5pZCA9PSBOSURfZWNkc2Ffd2l0aF9TSEExKQorLSAgICAgICAgcmV0dXJu IEZJUFNfZXZwX2VjZHNhKCk7CistICAgIGVsc2UKKy0gICAgICAgIHJldHVybiBGSVBTX2dldF9k aWdlc3RieW5pZChuaWQpOworLX0KKy0KKy1jb25zdCBFVlBfQ0lQSEVSICpldnBfZ2V0X2ZpcHNf Y2lwaGVyKGNvbnN0IEVWUF9DSVBIRVIgKmNpcGhlcikKKy17CistICAgIGludCBuaWQgPSBjaXBo ZXItPm5pZDsKKy0gICAgaWYgKG5pZCA9PSBOSURfdW5kZWYpCistICAgICAgICByZXR1cm4gRklQ U19ldnBfZW5jX251bGwoKTsKKy0gICAgZWxzZQorLSAgICAgICAgcmV0dXJuIEZJUFNfZ2V0X2Np cGhlcmJ5bmlkKG5pZCk7CistfQorLQorLSNlbmRpZgorLQorIHVuc2lnbmVkIGxvbmcgRVZQX01E X2ZsYWdzKGNvbnN0IEVWUF9NRCAqbWQpCisgeworLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAg Y29uc3QgRVZQX01EICpmbWQ7CistICAgIGZtZCA9IGV2cF9nZXRfZmlwc19tZChtZCk7CistICAg IGlmIChmbWQgJiYgZm1kLT5mbGFncyAmIEVWUF9NRF9GTEFHX0ZJUFMpCistICAgICAgICByZXR1 cm4gbWQtPmZsYWdzIHwgRVZQX01EX0ZMQUdfRklQUzsKKy0jZW5kaWYKKyAgICAgcmV0dXJuIG1k LT5mbGFnczsKKyB9CisgCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2V2cF9s b2NsLmguZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2V2cF9sb2NsLmgKKy0tLSBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZXZwL2V2cF9sb2NsLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQw LjE3MDI0Mjc2NiArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZXZwX2xvY2wu aAkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4OTI0NTU4MyArMDIwMAorQEAgLTI1OCwxMCArMjU4LDgg QEAgY29uc3QgRVZQX0NJUEhFUiAqRVZQXyMjY25hbWUjI19lY2Iodm9pZAorICAgICAgICAgQkxP Q0tfQ0lQSEVSX2Z1bmNfY2ZiKGNpcGhlciMjXyMja2V5c2l6ZSxjcHJlZml4LGNiaXRzLGtzdHJ1 Y3Qsa3NjaGVkKSBcCisgICAgICAgICBCTE9DS19DSVBIRVJfZGVmX2NmYihjaXBoZXIjI18jI2tl eXNpemUsa3N0cnVjdCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTklEXyMjY2lw aGVyIyNfIyNrZXlzaXplLCBrZXlzaXplLzgsIGl2X2xlbiwgY2JpdHMsIFwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDAsIGNpcGhlciMjX2luaXRfa2V5LCBOVUxMLCBcCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFVlBfQ0lQSEVSX3NldF9hc24xX2l2LCBcCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFVlBfQ0lQSEVSX2dldF9hc24xX2l2LCBcCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRVZQX0NJUEhfRkxBR19ERUZBVUxUX0FTTjEsIFwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNpcGhlciMjX2luaXRfa2V5LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQorIAorIHN0 cnVjdCBldnBfcGtleV9jdHhfc3QgeworICAgICAvKiBNZXRob2QgYXNzb2NpYXRlZCB3aXRoIHRo aXMgb3BlcmF0aW9uICovCitAQCAtMzU1LDExICszNTMsNiBAQCBjb25zdCBFVlBfQ0lQSEVSICpl dnBfZ2V0X2ZpcHNfY2lwaGVyKGNvCisgIyBkZWZpbmUgTUQyX0luaXQgICAgICAgIHByaXZhdGVf TUQyX0luaXQKKyAjIGRlZmluZSBNREMyX0luaXQgICAgICAgcHJpdmF0ZV9NREMyX0luaXQKKyAj IGRlZmluZSBTSEFfSW5pdCAgICAgICAgcHJpdmF0ZV9TSEFfSW5pdAorLSMgZGVmaW5lIFNIQTFf SW5pdCAgICAgICBwcml2YXRlX1NIQTFfSW5pdAorLSMgZGVmaW5lIFNIQTIyNF9Jbml0ICAgICBw cml2YXRlX1NIQTIyNF9Jbml0CistIyBkZWZpbmUgU0hBMjU2X0luaXQgICAgIHByaXZhdGVfU0hB MjU2X0luaXQKKy0jIGRlZmluZSBTSEEzODRfSW5pdCAgICAgcHJpdmF0ZV9TSEEzODRfSW5pdAor LSMgZGVmaW5lIFNIQTUxMl9Jbml0ICAgICBwcml2YXRlX1NIQTUxMl9Jbml0CisgCisgIyBkZWZp bmUgQkZfc2V0X2tleSAgICAgIHByaXZhdGVfQkZfc2V0X2tleQorICMgZGVmaW5lIENBU1Rfc2V0 X2tleSAgICBwcml2YXRlX0NBU1Rfc2V0X2tleQorQEAgLTM2Nyw3ICszNjAsNiBAQCBjb25zdCBF VlBfQ0lQSEVSICpldnBfZ2V0X2ZpcHNfY2lwaGVyKGNvCisgIyBkZWZpbmUgU0VFRF9zZXRfa2V5 ICAgIHByaXZhdGVfU0VFRF9zZXRfa2V5CisgIyBkZWZpbmUgUkMyX3NldF9rZXkgICAgIHByaXZh dGVfUkMyX3NldF9rZXkKKyAjIGRlZmluZSBSQzRfc2V0X2tleSAgICAgcHJpdmF0ZV9SQzRfc2V0 X2tleQorLSMgZGVmaW5lIERFU19zZXRfa2V5X3VuY2hlY2tlZCAgIHByaXZhdGVfREVTX3NldF9r ZXlfdW5jaGVja2VkCisgIyBkZWZpbmUgQ2FtZWxsaWFfc2V0X2tleSAgICAgICAgcHJpdmF0ZV9D YW1lbGxpYV9zZXRfa2V5CisgCisgI2VuZGlmCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZXZwL21fZHNzLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL21fZHNzLmMKKy0t LSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL21fZHNzLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMw OjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvbV9kc3Mu YwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5MDI0NTYwNyArMDIwMAorQEAgLTg2LDcgKzg2LDcgQEAg c3RhdGljIGNvbnN0IEVWUF9NRCBkc2FfbWQgPSB7CisgICAgIE5JRF9kc2FXaXRoU0hBLAorICAg ICBOSURfZHNhV2l0aFNIQSwKKyAgICAgU0hBX0RJR0VTVF9MRU5HVEgsCistICAgIEVWUF9NRF9G TEFHX1BLRVlfRElHRVNULAorKyAgICBFVlBfTURfRkxBR19QS0VZX0RJR0VTVCB8IEVWUF9NRF9G TEFHX0ZJUFMsCisgICAgIGluaXQsCisgICAgIHVwZGF0ZSwKKyAgICAgZmluYWwsCitkaWZmIC11 cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL21fZHNzMS5jLmZpcHMgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2V2cC9tX2RzczEuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvbV9kc3Mx LmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9ldnAvbV9kc3MxLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTAyNDU2MDcg KzAyMDAKK0BAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgZHNzMV9tZCA9IHsK KyAgICAgTklEX2RzYSwKKyAgICAgTklEX2RzYVdpdGhTSEExLAorICAgICBTSEFfRElHRVNUX0xF TkdUSCwKKy0gICAgRVZQX01EX0ZMQUdfUEtFWV9ESUdFU1QsCisrICAgIEVWUF9NRF9GTEFHX1BL RVlfRElHRVNUIHwgRVZQX01EX0ZMQUdfRklQUywKKyAgICAgaW5pdCwKKyAgICAgdXBkYXRlLAor ICAgICBmaW5hbCwKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvbV9tZDIuYy5m aXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvbV9tZDIuYworLS0tIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9ldnAvbV9tZDIuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICsw MTAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9tX21kMi5jCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMjkwMjQ1NjA3ICswMjAwCitAQCAtNjgsNiArNjgsNyBAQAorICMgaWZuZGVmIE9QRU5T U0xfTk9fUlNBCisgIyAgaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KKyAjIGVuZGlmCisrIyBpbmNs dWRlICJldnBfbG9jbC5oIgorIAorIHN0YXRpYyBpbnQgaW5pdChFVlBfTURfQ1RYICpjdHgpCisg eworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9tX3NoYTEuYy5maXBzIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9ldnAvbV9zaGExLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v ZXZwL21fc2hhMS5jLmZpcHMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysr KyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL21fc2hhMS5jCTIwMTUtMDQtMjIgMTY6MDg6NDAu MjkwMjQ1NjA3ICswMjAwCitAQCAtODcsNyArODcsOCBAQCBzdGF0aWMgY29uc3QgRVZQX01EIHNo YTFfbWQgPSB7CisgICAgIE5JRF9zaGExLAorICAgICBOSURfc2hhMVdpdGhSU0FFbmNyeXB0aW9u LAorICAgICBTSEFfRElHRVNUX0xFTkdUSCwKKy0gICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0Rf U0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5ULAorKyAgICBFVlBfTURfRkxB R19QS0VZX01FVEhPRF9TSUdOQVRVUkUgfCBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQgfAor KyAgICAgICAgRVZQX01EX0ZMQUdfRklQUywKKyAgICAgaW5pdCwKKyAgICAgdXBkYXRlLAorICAg ICBmaW5hbCwKK0BAIC0xMzQsNyArMTM1LDggQEAgc3RhdGljIGNvbnN0IEVWUF9NRCBzaGEyMjRf bWQgPSB7CisgICAgIE5JRF9zaGEyMjQsCisgICAgIE5JRF9zaGEyMjRXaXRoUlNBRW5jcnlwdGlv biwKKyAgICAgU0hBMjI0X0RJR0VTVF9MRU5HVEgsCistICAgIEVWUF9NRF9GTEFHX1BLRVlfTUVU SE9EX1NJR05BVFVSRSB8IEVWUF9NRF9GTEFHX0RJR0FMR0lEX0FCU0VOVCwKKysgICAgRVZQX01E X0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5U IHwKKysgICAgICAgIEVWUF9NRF9GTEFHX0ZJUFMsCisgICAgIGluaXQyMjQsCisgICAgIHVwZGF0 ZTI1NiwKKyAgICAgZmluYWwyNTYsCitAQCAtMTU0LDcgKzE1Niw4IEBAIHN0YXRpYyBjb25zdCBF VlBfTUQgc2hhMjU2X21kID0geworICAgICBOSURfc2hhMjU2LAorICAgICBOSURfc2hhMjU2V2l0 aFJTQUVuY3J5cHRpb24sCisgICAgIFNIQTI1Nl9ESUdFU1RfTEVOR1RILAorLSAgICBFVlBfTURf RkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkUgfCBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQs CisrICAgIEVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRSB8IEVWUF9NRF9GTEFHX0RJ R0FMR0lEX0FCU0VOVCB8CisrICAgICAgICBFVlBfTURfRkxBR19GSVBTLAorICAgICBpbml0MjU2 LAorICAgICB1cGRhdGUyNTYsCisgICAgIGZpbmFsMjU2LAorQEAgLTE5Nyw3ICsyMDAsOCBAQCBz dGF0aWMgY29uc3QgRVZQX01EIHNoYTM4NF9tZCA9IHsKKyAgICAgTklEX3NoYTM4NCwKKyAgICAg TklEX3NoYTM4NFdpdGhSU0FFbmNyeXB0aW9uLAorICAgICBTSEEzODRfRElHRVNUX0xFTkdUSCwK Ky0gICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdfRElH QUxHSURfQUJTRU5ULAorKyAgICBFVlBfTURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkUgfCBF VlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQgfAorKyAgICAgICAgRVZQX01EX0ZMQUdfRklQUywK KyAgICAgaW5pdDM4NCwKKyAgICAgdXBkYXRlNTEyLAorICAgICBmaW5hbDUxMiwKK0BAIC0yMTcs NyArMjIxLDggQEAgc3RhdGljIGNvbnN0IEVWUF9NRCBzaGE1MTJfbWQgPSB7CisgICAgIE5JRF9z aGE1MTIsCisgICAgIE5JRF9zaGE1MTJXaXRoUlNBRW5jcnlwdGlvbiwKKyAgICAgU0hBNTEyX0RJ R0VTVF9MRU5HVEgsCistICAgIEVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRSB8IEVW UF9NRF9GTEFHX0RJR0FMR0lEX0FCU0VOVCwKKysgICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0Rf U0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5UIHwKKysgICAgICAgIEVWUF9N RF9GTEFHX0ZJUFMsCisgICAgIGluaXQ1MTIsCisgICAgIHVwZGF0ZTUxMiwKKyAgICAgZmluYWw1 MTIsCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL3Bfc2lnbi5jLmZpcHMgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9wX3NpZ24uYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9ldnAvcF9zaWduLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAor KysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvcF9zaWduLmMJMjAxNS0wNC0yMiAxNjowODo0 MC4yOTAyNDU2MDcgKzAyMDAKK0BAIC02MSw2ICs2MSw3IEBACisgI2luY2x1ZGUgPG9wZW5zc2wv ZXZwLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPgorICNpbmNsdWRlIDxvcGVuc3Ns L3g1MDkuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KKyAKKyAjaWZkZWYgdW5kZWYKKyB2 b2lkIEVWUF9TaWduSW5pdChFVlBfTURfQ1RYICpjdHgsIEVWUF9NRCAqdHlwZSkKK0BAIC0xMDEs NiArMTAyLDIyIEBAIGludCBFVlBfU2lnbkZpbmFsKEVWUF9NRF9DVFggKmN0eCwgdW5zaWcKKyAg ICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgIGlmIChFVlBfUEtFWV9DVFhfc2V0X3NpZ25h dHVyZV9tZChwa2N0eCwgY3R4LT5kaWdlc3QpIDw9IDApCisgICAgICAgICAgICAgZ290byBlcnI7 CisrICAgICAgICBpZiAoY3R4LT5mbGFncyAmIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSkKKysg ICAgICAgICAgICBpZiAoRVZQX1BLRVlfQ1RYX3NldF9yc2FfcGFkZGluZyhwa2N0eCwgUlNBX1g5 MzFfUEFERElORykgPD0gMCkKKysgICAgICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICBp ZiAoY3R4LT5mbGFncyAmIEVWUF9NRF9DVFhfRkxBR19QQURfUFNTKSB7CisrICAgICAgICAgICAg aW50IHNhbHRsZW47CisrICAgICAgICAgICAgaWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3BhZGRp bmcocGtjdHgsIFJTQV9QS0NTMV9QU1NfUEFERElORykgPD0KKysgICAgICAgICAgICAgICAgMCkK KysgICAgICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICAgICAgc2FsdGxlbiA9IE1fRVZQ X01EX0NUWF9GTEFHX1BTU19TQUxUKGN0eCk7CisrICAgICAgICAgICAgaWYgKHNhbHRsZW4gPT0g RVZQX01EX0NUWF9GTEFHX1BTU19NRExFTikKKysgICAgICAgICAgICAgICAgc2FsdGxlbiA9IC0x OworKyAgICAgICAgICAgIGVsc2UgaWYgKHNhbHRsZW4gPT0gRVZQX01EX0NUWF9GTEFHX1BTU19N UkVDKQorKyAgICAgICAgICAgICAgICBzYWx0bGVuID0gLTI7CisrICAgICAgICAgICAgaWYgKEVW UF9QS0VZX0NUWF9zZXRfcnNhX3Bzc19zYWx0bGVuKHBrY3R4LCBzYWx0bGVuKSA8PSAwKQorKyAg ICAgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKyAgICAgICAgIGlmIChFVlBfUEtF WV9zaWduKHBrY3R4LCBzaWdyZXQsICZzbHRtcCwgbSwgbV9sZW4pIDw9IDApCisgICAgICAgICAg ICAgZ290byBlcnI7CisgICAgICAgICAqc2lnbGVuID0gc2x0bXA7CitkaWZmIC11cCBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZXZwL3BfdmVyaWZ5LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v ZXZwL3BfdmVyaWZ5LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL3BfdmVyaWZ5LmMu ZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9ldnAvcF92ZXJpZnkuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5MDI0NTYwNyAr MDIwMAorQEAgLTYxLDYgKzYxLDcgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKyAjaW5j bHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgorKyNp bmNsdWRlIDxvcGVuc3NsL3JzYS5oPgorIAorIGludCBFVlBfVmVyaWZ5RmluYWwoRVZQX01EX0NU WCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaWdidWYsCisgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgc2lnbGVuLCBFVlBfUEtFWSAqcGtleSkKK0BAIC04Nyw2ICs4OCwyMiBA QCBpbnQgRVZQX1ZlcmlmeUZpbmFsKEVWUF9NRF9DVFggKmN0eCwgY29uCisgICAgICAgICAgICAg Z290byBlcnI7CisgICAgICAgICBpZiAoRVZQX1BLRVlfQ1RYX3NldF9zaWduYXR1cmVfbWQocGtj dHgsIGN0eC0+ZGlnZXN0KSA8PSAwKQorICAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAg aWYgKGN0eC0+ZmxhZ3MgJiBFVlBfTURfQ1RYX0ZMQUdfUEFEX1g5MzEpCisrICAgICAgICAgICAg aWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3BhZGRpbmcocGtjdHgsIFJTQV9YOTMxX1BBRERJTkcp IDw9IDApCisrICAgICAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgaWYgKGN0eC0+Zmxh Z3MgJiBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUykgeworKyAgICAgICAgICAgIGludCBzYWx0bGVu OworKyAgICAgICAgICAgIGlmIChFVlBfUEtFWV9DVFhfc2V0X3JzYV9wYWRkaW5nKHBrY3R4LCBS U0FfUEtDUzFfUFNTX1BBRERJTkcpIDw9CisrICAgICAgICAgICAgICAgIDApCisrICAgICAgICAg ICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgICAgIHNhbHRsZW4gPSBNX0VWUF9NRF9DVFhfRkxB R19QU1NfU0FMVChjdHgpOworKyAgICAgICAgICAgIGlmIChzYWx0bGVuID09IEVWUF9NRF9DVFhf RkxBR19QU1NfTURMRU4pCisrICAgICAgICAgICAgICAgIHNhbHRsZW4gPSAtMTsKKysgICAgICAg ICAgICBlbHNlIGlmIChzYWx0bGVuID09IEVWUF9NRF9DVFhfRkxBR19QU1NfTVJFQykKKysgICAg ICAgICAgICAgICAgc2FsdGxlbiA9IC0yOworKyAgICAgICAgICAgIGlmIChFVlBfUEtFWV9DVFhf c2V0X3JzYV9wc3Nfc2FsdGxlbihwa2N0eCwgc2FsdGxlbikgPD0gMCkKKysgICAgICAgICAgICAg ICAgZ290byBlcnI7CisrICAgICAgICB9CisgICAgICAgICBpID0gRVZQX1BLRVlfdmVyaWZ5KHBr Y3R4LCBzaWdidWYsIHNpZ2xlbiwgbSwgbV9sZW4pOworICBlcnI6CisgICAgICAgICBFVlBfUEtF WV9DVFhfZnJlZShwa2N0eCk7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9m aXBzX2Flc19zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19h ZXNfc2VsZnRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfYWVzX3Nl bGZ0ZXN0LmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NDI0NTcwMiArMDIwMAorKysrIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfYWVzX3NlbGZ0ZXN0LmMJMjAxNS0wNC0yMiAx NjowODo0MC4yOTQyNDU3MDIgKzAyMDAKK0BAIC0wLDAgKzEsMzY1IEBACisrLyogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUg bWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0 cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln aHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisr ICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVz ZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNr bm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZl bG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5T U0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBu YW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUg dXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g dGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBG b3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wtY29y ZUBvcGVuc3NsLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5T U0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBw ZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1 dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisr ICogICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0 d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4g dGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICog VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMn JyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJF IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisr ICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ TkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B R0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNU UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF LgorKyAqCisrICovCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3Ns L2Vyci5oPgorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5o PgorKyNlbmRpZgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKworKyNpZmRlZiBPUEVOU1NM X0ZJUFMKKytzdGF0aWMgY29uc3Qgc3RydWN0IHsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciBr ZXlbMTZdOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHBsYWludGV4dFsxNl07CisrICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgY2lwaGVydGV4dFsxNl07CisrfSB0ZXN0c1tdID0geworKyAgICB7 CisrICAgICAgICB7CisrICAgICAgICAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1 LCAweDA2LCAweDA3LAorKyAgICAgICAgICAgICAgICAweDA4LCAweDA5LCAweDBBLCAweDBCLCAw eDBDLCAweDBELCAweDBFLCAweDBGfSwgeworKyAgICAgICAgMHgwMCwgMHgxMSwgMHgyMiwgMHgz MywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywKKysgICAgICAgICAgICAgICAgMHg4OCwgMHg5OSwg MHhBQSwgMHhCQiwgMHhDQywgMHhERCwgMHhFRSwgMHhGRn0sIHsKKysweDY5LCAweEM0LCAweEUw LCAweEQ4LCAweDZBLCAweDdCLCAweDA0LCAweDMwLAorKyAgICAgICAgICAgICAgICAweEQ4LCAw eENELCAweEI3LCAweDgwLCAweDcwLCAweEI0LCAweEM1LCAweDVBfSx9LH07CisrCisrc3RhdGlj IGludCBjb3JydXB0X2FlczsKKysKKyt2b2lkIEZJUFNfY29ycnVwdF9hZXMoKQorK3sKKysgICAg Y29ycnVwdF9hZXMgPSAxOworK30KKysKKytpbnQgRklQU19zZWxmdGVzdF9hZXMoKQorK3sKKysg ICAgaW50IG47CisrICAgIGludCByZXQgPSAwOworKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7Cisr ICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0eCk7CisrCisrICAgIGZvciAobiA9IDA7IG4gPCAx OyArK24pIHsKKysgICAgICAgIHVuc2lnbmVkIGNoYXIga2V5WzE2XTsKKysKKysgICAgICAgIG1l bWNweShrZXksIHRlc3RzW25dLmtleSwgc2l6ZW9mKGtleSkpOworKyAgICAgICAgaWYgKGNvcnJ1 cHRfYWVzKQorKyAgICAgICAgICAgIGtleVswXSsrOworKyAgICAgICAgaWYgKGZpcHNfY2lwaGVy X3Rlc3QoJmN0eCwgRVZQX2Flc18xMjhfZWNiKCksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBrZXksIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c1tuXS5w bGFpbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c1tuXS5jaXBoZXJ0 ZXh0LCAxNikgPD0gMCkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyAgICByZXQg PSAxOworKyBlcnI6CisrICAgIEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7CisrICAgIGlm IChyZXQgPT0gMCkKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTLCBG SVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrLyogQUVT LUNDTSB0ZXN0IGRhdGEgZnJvbSBOSVNUIHB1YmxpYyB0ZXN0IHZlY3RvcnMgKi8KKysKKytzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBjY21fa2V5W10gPSB7CisrICAgIDB4Y2UsIDB4YjAsIDB4 MDksIDB4YWUsIDB4YTQsIDB4NDUsIDB4NDQsIDB4NTEsIDB4ZmUsIDB4YWQsIDB4ZjAsIDB4ZTYs CisrICAgIDB4YjMsIDB4NmYsIDB4NDUsIDB4NTUsIDB4NWQsIDB4ZDAsIDB4NDcsIDB4MjMsIDB4 YmEsIDB4YTQsIDB4NDgsIDB4ZTgKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGNjbV9ub25jZVtdID0geworKyAgICAweDc2LCAweDQwLCAweDQzLCAweGM0LCAweDk0LCAweDYw LCAweGI3CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBjY21fYWRhdGFbXSA9 IHsKKysgICAgMHg2ZSwgMHg4MCwgMHhkZCwgMHg3ZiwgMHgxYiwgMHhhZCwgMHhmMywgMHhhMSwg MHhjOSwgMHhhYiwgMHgyNSwgMHhjNywKKysgICAgMHg1ZiwgMHgxMCwgMHhiZCwgMHhlNywgMHg4 YywgMHgyMywgMHhmYSwgMHgwZSwgMHhiOCwgMHhmOSwgMHhhYSwgMHhhNSwKKysgICAgMHgzYSwg MHhkZSwgMHhmYiwgMHhmNCwgMHhjYiwgMHhmNywgMHg4ZiwgMHhlNAorK307CisrCisrc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgY2NtX3B0W10gPSB7CisrICAgIDB4YzgsIDB4ZDIsIDB4NzUs IDB4ZjksIDB4MTksIDB4ZTEsIDB4N2QsIDB4N2YsIDB4ZTYsIDB4OWMsIDB4MmEsIDB4MWYsCisr ICAgIDB4NTgsIDB4OTMsIDB4OWQsIDB4ZmUsIDB4NGQsIDB4NDAsIDB4MzcsIDB4OTEsIDB4YjUs IDB4ZGYsIDB4MTMsIDB4MTAKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNj bV9jdFtdID0geworKyAgICAweDhhLCAweDBmLCAweDNkLCAweDgyLCAweDI5LCAweGU0LCAweDhl LCAweDc0LCAweDg3LCAweGZkLCAweDk1LCAweGEyLAorKyAgICAweDhhLCAweGQzLCAweDkyLCAw eGM4LCAweDBiLCAweDM2LCAweDgxLCAweGQ0LCAweGZiLCAweGM3LCAweGJiLCAweGZkCisrfTsK KysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBjY21fdGFnW10gPSB7CisrICAgIDB4MmQs IDB4ZDYsIDB4ZWYsIDB4MWMsIDB4NDUsIDB4ZDQsIDB4Y2MsIDB4YjcsIDB4MjMsIDB4ZGMsIDB4 MDcsIDB4NDQsCisrICAgIDB4MTQsIDB4ZGIsIDB4NTAsIDB4NmQKKyt9OworKworK2ludCBGSVBT X3NlbGZ0ZXN0X2Flc19jY20odm9pZCkKKyt7CisrICAgIGludCByZXQgPSAwOworKyAgICB1bnNp Z25lZCBjaGFyIG91dFsxMjhdLCB0YWdbMTZdOworKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7Cisr ICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0eCk7CisrICAgIG1lbXNldChvdXQsIDAsIHNpemVv ZihvdXQpKTsKKysgICAgaWYgKCFFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfYWVzXzE5Ml9j Y20oKSwgTlVMTCwgTlVMTCwgTlVMTCwgMSkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYg KCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2NtX25vbmNlKSwgTlVMTCkpCisrICAg ICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVWUF9D VFJMX0NDTV9TRVRfVEFHLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNj bV90YWcpLCBOVUxMKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIUVWUF9DaXBoZXJJ bml0X2V4KCZjdHgsIE5VTEwsIE5VTEwsIGNjbV9rZXksIGNjbV9ub25jZSwgMSkpCisrICAgICAg ICBnb3RvIGVycjsKKysgICAgaWYgKEVWUF9DaXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwgc2l6ZW9m KGNjbV9wdCkpICE9IHNpemVvZihjY21fcHQpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlm IChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIGNjbV9hZGF0YSwgc2l6ZW9mKGNjbV9hZGF0YSkpIDwg MCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQsIGNj bV9wdCwgc2l6ZW9mKGNjbV9wdCkpICE9IHNpemVvZihjY21fY3QpKQorKyAgICAgICAgZ290byBl cnI7CisrCisrICAgIGlmICghRVZQX0NJUEhFUl9DVFhfY3RybCgmY3R4LCBFVlBfQ1RSTF9DQ01f R0VUX1RBRywgMTYsIHRhZykpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKG1lbWNtcCh0 YWcsIGNjbV90YWcsIHNpemVvZihjY21fdGFnKSkKKysgICAgICAgIHx8IG1lbWNtcChvdXQsIGNj bV9jdCwgc2l6ZW9mKGNjbV9jdCkpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIG1lbXNl dChvdXQsIDAsIHNpemVvZihvdXQpKTsKKysKKysgICAgaWYgKCFFVlBfQ2lwaGVySW5pdF9leCgm Y3R4LCBFVlBfYWVzXzE5Ml9jY20oKSwgTlVMTCwgTlVMTCwgTlVMTCwgMCkpCisrICAgICAgICBn b3RvIGVycjsKKysgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVWUF9DVFJMX0ND TV9TRVRfSVZMRU4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2NtX25v bmNlKSwgTlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFFVlBfQ0lQSEVSX0NU WF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfVEFHLCAxNiwgdGFnKSkKKysgICAgICAgIGdv dG8gZXJyOworKyAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCZjdHgsIE5VTEwsIE5VTEwsIGNj bV9rZXksIGNjbV9ub25jZSwgMCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKEVWUF9D aXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwgc2l6ZW9mKGNjbV9jdCkpICE9IHNpemVvZihjY21fY3Qp KQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIGNj bV9hZGF0YSwgc2l6ZW9mKGNjbV9hZGF0YSkpIDwgMCkKKysgICAgICAgIGdvdG8gZXJyOworKyAg ICBpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQsIGNjbV9jdCwgc2l6ZW9mKGNjbV9jdCkpICE9IHNp emVvZihjY21fcHQpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGlmIChtZW1jbXAob3V0 LCBjY21fcHQsIHNpemVvZihjY21fcHQpKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBy ZXQgPSAxOworKworKyBlcnI6CisrICAgIEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7Cisr CisrICAgIGlmIChyZXQgPT0gMCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxG VEVTVF9BRVNfQ0NNLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgIHJldHVybiAw OworKyAgICB9IGVsc2UKKysgICAgICAgIHJldHVybiByZXQ7CisrCisrfQorKworKy8qIEFFUy1H Q00gdGVzdCBkYXRhIGZyb20gTklTVCBwdWJsaWMgdGVzdCB2ZWN0b3JzICovCisrCisrc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2NtX2tleVtdID0geworKyAgICAweGVlLCAweGJjLCAweDFm LCAweDU3LCAweDQ4LCAweDdmLCAweDUxLCAweDkyLCAweDFjLCAweDA0LCAweDY1LCAweDY2LAor KyAgICAweDVmLCAweDhhLCAweGU2LCAweGQxLCAweDY1LCAweDhiLCAweGIyLCAweDZkLCAweGU2 LCAweGY4LCAweGEwLCAweDY5LAorKyAgICAweGEzLCAweDUyLCAweDAyLCAweDkzLCAweGE1LCAw eDcyLCAweDA3LCAweDhmCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21f aXZbXSA9IHsKKysgICAgMHg5OSwgMHhhYSwgMHgzZSwgMHg2OCwgMHhlZCwgMHg4MSwgMHg3Mywg MHhhMCwgMHhlZSwgMHhkMCwgMHg2NiwgMHg4NAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgZ2NtX3B0W10gPSB7CisrICAgIDB4ZjUsIDB4NmUsIDB4ODcsIDB4MDUsIDB4NWIs IDB4YzMsIDB4MmQsIDB4MGUsIDB4ZWIsIDB4MzEsIDB4YjIsIDB4ZWEsCisrICAgIDB4Y2MsIDB4 MmIsIDB4ZjIsIDB4YTUKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdjbV9h YWRbXSA9IHsKKysgICAgMHg0ZCwgMHgyMywgMHhjMywgMHhjZSwgMHhjMywgMHgzNCwgMHhiNCwg MHg5YiwgMHhkYiwgMHgzNywgMHgwYywgMHg0MywKKysgICAgMHg3ZiwgMHhlYywgMHg3OCwgMHhk ZQorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2NtX2N0W10gPSB7CisrICAg IDB4ZjcsIDB4MjYsIDB4NDQsIDB4MTMsIDB4YTgsIDB4NGMsIDB4MGUsIDB4N2MsIDB4ZDUsIDB4 MzYsIDB4ODYsIDB4N2UsCisrICAgIDB4YjksIDB4ZjIsIDB4MTcsIDB4MzYKKyt9OworKworK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdjbV90YWdbXSA9IHsKKysgICAgMHg2NywgMHhiYSwg MHgwNSwgMHgxMCwgMHgyNiwgMHgyYSwgMHhlNCwgMHg4NywgMHhkNywgMHgzNywgMHhlZSwgMHg2 MiwKKysgICAgMHg5OCwgMHhmNywgMHg3ZSwgMHgwYworK307CisrCisraW50IEZJUFNfc2VsZnRl c3RfYWVzX2djbSh2b2lkKQorK3sKKysgICAgaW50IHJldCA9IDA7CisrICAgIHVuc2lnbmVkIGNo YXIgb3V0WzEyOF0sIHRhZ1sxNl07CisrICAgIEVWUF9DSVBIRVJfQ1RYIGN0eDsKKysgICAgRVZQ X0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKKysgICAgbWVtc2V0KG91dCwgMCwgc2l6ZW9mKG91dCkp OworKyAgICBtZW1zZXQodGFnLCAwLCBzaXplb2YodGFnKSk7CisrICAgIGlmICghRVZQX0NpcGhl ckluaXRfZXgoJmN0eCwgRVZQX2Flc18yNTZfZ2NtKCksIE5VTEwsIE5VTEwsIE5VTEwsIDEpKQor KyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0NJUEhFUl9DVFhfY3RybCgmY3R4LCBF VlBfQ1RSTF9HQ01fU0VUX0lWTEVOLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZW9mKGdjbV9pdiksIE5VTEwpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0Np cGhlckluaXRfZXgoJmN0eCwgTlVMTCwgTlVMTCwgZ2NtX2tleSwgZ2NtX2l2LCAxKSkKKysgICAg ICAgIGdvdG8gZXJyOworKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBOVUxMLCBnY21fYWFkLCBz aXplb2YoZ2NtX2FhZCkpIDwgMCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoRVZQX0Np cGhlcigmY3R4LCBvdXQsIGdjbV9wdCwgc2l6ZW9mKGdjbV9wdCkpICE9IHNpemVvZihnY21fY3Qp KQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIE5V TEwsIDApIDwgMCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBpZiAoIUVWUF9DSVBIRVJf Q1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX0dFVF9UQUcsIDE2LCB0YWcpKQorKyAgICAgICAg Z290byBlcnI7CisrCisrICAgIGlmIChtZW1jbXAodGFnLCBnY21fdGFnLCAxNikgfHwgbWVtY21w KG91dCwgZ2NtX2N0LCAxNikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgbWVtc2V0KG91 dCwgMCwgc2l6ZW9mKG91dCkpOworKworKyAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCZjdHgs IEVWUF9hZXNfMjU2X2djbSgpLCBOVUxMLCBOVUxMLCBOVUxMLCAwKSkKKysgICAgICAgIGdvdG8g ZXJyOworKyAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX1NF VF9JVkxFTiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihnY21faXYpLCBO VUxMKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0cmwo JmN0eCwgRVZQX0NUUkxfR0NNX1NFVF9UQUcsIDE2LCB0YWcpKQorKyAgICAgICAgZ290byBlcnI7 CisrICAgIGlmICghRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgTlVMTCwgTlVMTCwgZ2NtX2tleSwg Z2NtX2l2LCAwKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4 LCBOVUxMLCBnY21fYWFkLCBzaXplb2YoZ2NtX2FhZCkpIDwgMCkKKysgICAgICAgIGdvdG8gZXJy OworKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQsIGdjbV9jdCwgc2l6ZW9mKGdjbV9jdCkp ICE9IHNpemVvZihnY21fcHQpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmIChFVlBfQ2lw aGVyKCZjdHgsIE5VTEwsIE5VTEwsIDApIDwgMCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAg ICBpZiAobWVtY21wKG91dCwgZ2NtX3B0LCAxNikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysg ICAgcmV0ID0gMTsKKysKKysgZXJyOgorKyAgICBFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgp OworKworKyAgICBpZiAocmV0ID09IDApIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNf U0VMRlRFU1RfQUVTX0dDTSwgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICByZXR1 cm4gMDsKKysgICAgfSBlbHNlCisrICAgICAgICByZXR1cm4gcmV0OworKworK30KKysKKytzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNfMTI4X2tleVtdID0geworKyAgICAweGExLCAweGI5 LCAweDBjLCAweGJhLCAweDNmLCAweDA2LCAweGFjLCAweDM1LCAweDNiLCAweDJjLCAweDM0LCAw eDM4LAorKyAgICAweDc2LCAweDA4LCAweDE3LCAweDYyLCAweDA5LCAweDA5LCAweDIzLCAweDAy LCAweDZlLCAweDkxLCAweDc3LCAweDE4LAorKyAgICAweDE1LCAweGYyLCAweDlkLCAweGFiLCAw eDAxLCAweDkzLCAweDJmLCAweDJmCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBYVFNfMTI4X2lbXSA9IHsKKysgICAgMHg0ZiwgMHhhZSwgMHhmNywgMHgxMSwgMHg3YywgMHhk YSwgMHg1OSwgMHhjNiwgMHg2ZSwgMHg0YiwgMHg5MiwgMHgwMSwKKysgICAgMHgzZSwgMHg3Niwg MHg4YSwgMHhkNQorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgWFRTXzEyOF9w dFtdID0geworKyAgICAweGViLCAweGFiLCAweGNlLCAweDk1LCAweGIxLCAweDRkLCAweDNjLCAw eDhkLCAweDZmLCAweGIzLCAweDUwLCAweDM5LAorKyAgICAweDA3LCAweDkwLCAweDMxLCAweDFj CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNfMTI4X2N0W10gPSB7Cisr ICAgIDB4NzcsIDB4OGEsIDB4ZTgsIDB4YjQsIDB4M2MsIDB4YjksIDB4OGQsIDB4NWEsIDB4ODIs IDB4NTAsIDB4ODEsIDB4ZDUsCisrICAgIDB4YmUsIDB4NDcsIDB4MWMsIDB4NjMKKyt9OworKwor K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18yNTZfa2V5W10gPSB7CisrICAgIDB4MWUs IDB4YTYsIDB4NjEsIDB4YzUsIDB4OGQsIDB4OTQsIDB4M2EsIDB4MGUsIDB4NDgsIDB4MDEsIDB4 ZTQsIDB4MmYsCisrICAgIDB4NGIsIDB4MDksIDB4NDcsIDB4MTQsIDB4OWUsIDB4N2YsIDB4OWYs IDB4OGUsIDB4M2UsIDB4NjgsIDB4ZDAsIDB4YzcsCisrICAgIDB4NTAsIDB4NTIsIDB4MTAsIDB4 YmQsIDB4MzEsIDB4MWEsIDB4MGUsIDB4N2MsIDB4ZDYsIDB4ZTEsIDB4M2YsIDB4ZmQsCisrICAg IDB4ZjIsIDB4NDEsIDB4OGQsIDB4OGQsIDB4MTksIDB4MTEsIDB4YzAsIDB4MDQsIDB4Y2QsIDB4 YTUsIDB4OGQsIDB4YTMsCisrICAgIDB4ZDYsIDB4MTksIDB4YjcsIDB4ZTIsIDB4YjksIDB4MTQs IDB4MWUsIDB4NTgsIDB4MzEsIDB4OGUsIDB4ZWEsIDB4MzksCisrICAgIDB4MmMsIDB4ZjQsIDB4 MWIsIDB4MDgKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18yNTZfaVtd ID0geworKyAgICAweGFkLCAweGY4LCAweGQ5LCAweDI2LCAweDI3LCAweDQ2LCAweDRhLCAweGQy LCAweGYwLCAweDQyLCAweDhlLCAweDg0LAorKyAgICAweGE5LCAweGY4LCAweDc1LCAweDY0Cisr fTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNfMjU2X3B0W10gPSB7CisrICAg IDB4MmUsIDB4ZWQsIDB4ZWEsIDB4NTIsIDB4Y2QsIDB4ODIsIDB4MTUsIDB4ZTEsIDB4YWMsIDB4 YzYsIDB4NDcsIDB4ZTgsCisrICAgIDB4MTAsIDB4YmIsIDB4YzMsIDB4NjQsIDB4MmUsIDB4ODcs IDB4MjgsIDB4N2YsIDB4OGQsIDB4MmUsIDB4NTcsIDB4ZTMsCisrICAgIDB4NmMsIDB4MGEsIDB4 MjQsIDB4ZmIsIDB4YzEsIDB4MmEsIDB4MjAsIDB4MmUKKyt9OworKworK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIFhUU18yNTZfY3RbXSA9IHsKKysgICAgMHhjYiwgMHhhYSwgMHhkMCwgMHhl MiwgMHhmNiwgMHhjZSwgMHhhMywgMHhmNSwgMHgwYiwgMHgzNywgMHhmOSwgMHgzNCwKKysgICAg MHhkNCwgMHg2YSwgMHg5YiwgMHgxMywgMHgwYiwgMHg5ZCwgMHg1NCwgMHhmMCwgMHg3ZSwgMHgz NCwgMHhmMywgMHg2YSwKKysgICAgMHhmNywgMHg5MywgMHhlOCwgMHg2ZiwgMHg3MywgMHhjNiwg MHhkNywgMHhkYgorK307CisrCisraW50IEZJUFNfc2VsZnRlc3RfYWVzX3h0cygpCisreworKyAg ICBpbnQgcmV0ID0gMTsKKysgICAgRVZQX0NJUEhFUl9DVFggY3R4OworKyAgICBFVlBfQ0lQSEVS X0NUWF9pbml0KCZjdHgpOworKworKyAgICBpZiAoZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBf YWVzXzEyOF94dHMoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgWFRTXzEyOF9rZXksIFhU U18xMjhfaSwgWFRTXzEyOF9wdCwgWFRTXzEyOF9jdCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZW9mKFhUU18xMjhfcHQpKSA8PSAwKQorKyAgICAgICAgcmV0ID0gMDsKKysKKysgICAg aWYgKGZpcHNfY2lwaGVyX3Rlc3QoJmN0eCwgRVZQX2Flc18yNTZfeHRzKCksCisrICAgICAgICAg ICAgICAgICAgICAgICAgIFhUU18yNTZfa2V5LCBYVFNfMjU2X2ksIFhUU18yNTZfcHQsIFhUU18y NTZfY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihYVFNfMjU2X3B0KSkgPD0g MCkKKysgICAgICAgIHJldCA9IDA7CisrCisrICAgIEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0 eCk7CisrICAgIGlmIChyZXQgPT0gMCkKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VM RlRFU1RfQUVTX1hUUywgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgIHJldHVybiByZXQ7 CisrfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlw cy5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5jCistLS0gb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTQyNDU3 MDIgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmMJMjAxNS0wNC0y MiAxNjowODo0MC4yOTQyNDU3MDIgKzAyMDAKK0BAIC0wLDAgKzEsNDgzIEBACisrLyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFy ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBh cmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAq CisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y IHVzZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcg YWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk ZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9w ZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRo ZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3Qg YmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u LiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wt Y29yZUBvcGVuc3NsLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9w ZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAg ICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3Ry aWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5n CisrICogICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBz b2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2Ug aW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisr ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMg SVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0Ug QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9S CisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU LCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE QU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQg QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAq IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU V0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLgorKyAqCisrICovCisrCisrI2RlZmluZSBfR05VX1NPVVJDRQorKworKyNpbmNsdWRlIDxv cGVuc3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KKysjaW5jbHVkZSA8 b3BlbnNzbC9obWFjLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisrI2luY2x1ZGUgPHN0 cmluZy5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKysjaW5jbHVkZSA8ZGxmY24uaD4KKysjaW5j bHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgImZpcHNfbG9j bC5oIgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKysjIGluY2x1ZGUgPG9wZW5zc2wvZmlw cy5oPgorKworKyMgaWZuZGVmIFBBVEhfTUFYCisrIyAgZGVmaW5lIFBBVEhfTUFYIDEwMjQKKysj IGVuZGlmCisrCisrc3RhdGljIGludCBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAwOworK3N0YXRpYyBp bnQgZmlwc19tb2RlID0gMDsKKytzdGF0aWMgaW50IGZpcHNfc3RhcnRlZCA9IDA7CisrCisrc3Rh dGljIGludCBmaXBzX2lzX293bmluZ190aHJlYWQodm9pZCk7Cisrc3RhdGljIGludCBmaXBzX3Nl dF9vd25pbmdfdGhyZWFkKHZvaWQpOworK3N0YXRpYyBpbnQgZmlwc19jbGVhcl9vd25pbmdfdGhy ZWFkKHZvaWQpOworKworKyMgZGVmaW5lIGZpcHNfd19sb2NrKCkgICBDUllQVE9fd19sb2NrKENS WVBUT19MT0NLX0ZJUFMpCisrIyBkZWZpbmUgZmlwc193X3VubG9jaygpIENSWVBUT193X3VubG9j ayhDUllQVE9fTE9DS19GSVBTKQorKyMgZGVmaW5lIGZpcHNfcl9sb2NrKCkgICBDUllQVE9fcl9s b2NrKENSWVBUT19MT0NLX0ZJUFMpCisrIyBkZWZpbmUgZmlwc19yX3VubG9jaygpIENSWVBUT19y X3VubG9jayhDUllQVE9fTE9DS19GSVBTKQorKworK3N0YXRpYyB2b2lkIGZpcHNfc2V0X21vZGUo aW50IG9ub2ZmKQorK3sKKysgICAgaW50IG93bmluZ190aHJlYWQgPSBmaXBzX2lzX293bmluZ190 aHJlYWQoKTsKKysKKysgICAgaWYgKGZpcHNfc3RhcnRlZCkgeworKyAgICAgICAgaWYgKCFvd25p bmdfdGhyZWFkKQorKyAgICAgICAgICAgIGZpcHNfd19sb2NrKCk7CisrICAgICAgICBmaXBzX21v ZGUgPSBvbm9mZjsKKysgICAgICAgIGlmICghb3duaW5nX3RocmVhZCkKKysgICAgICAgICAgICBm aXBzX3dfdW5sb2NrKCk7CisrICAgIH0KKyt9CisrCisraW50IEZJUFNfbW9kdWxlX21vZGUodm9p ZCkKKyt7CisrICAgIGludCByZXQgPSAwOworKyAgICBpbnQgb3duaW5nX3RocmVhZCA9IGZpcHNf aXNfb3duaW5nX3RocmVhZCgpOworKworKyAgICBpZiAoZmlwc19zdGFydGVkKSB7CisrICAgICAg ICBpZiAoIW93bmluZ190aHJlYWQpCisrICAgICAgICAgICAgZmlwc19yX2xvY2soKTsKKysgICAg ICAgIHJldCA9IGZpcHNfbW9kZTsKKysgICAgICAgIGlmICghb3duaW5nX3RocmVhZCkKKysgICAg ICAgICAgICBmaXBzX3JfdW5sb2NrKCk7CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyt9Cisr CisraW50IEZJUFNfc2VsZnRlc3RfZmFpbGVkKHZvaWQpCisreworKyAgICBpbnQgcmV0ID0gMDsK KysgICAgaWYgKGZpcHNfc3RhcnRlZCkgeworKyAgICAgICAgaW50IG93bmluZ190aHJlYWQgPSBm aXBzX2lzX293bmluZ190aHJlYWQoKTsKKysKKysgICAgICAgIGlmICghb3duaW5nX3RocmVhZCkK KysgICAgICAgICAgICBmaXBzX3JfbG9jaygpOworKyAgICAgICAgcmV0ID0gZmlwc19zZWxmdGVz dF9mYWlsOworKyAgICAgICAgaWYgKCFvd25pbmdfdGhyZWFkKQorKyAgICAgICAgICAgIGZpcHNf cl91bmxvY2soKTsKKysgICAgfQorKyAgICByZXR1cm4gcmV0OworK30KKysKKysvKiBTZWxmdGVz dCBmYWlsdXJlIGZhdGFsIGV4aXQgcm91dGluZS4gVGhpcyB3aWxsIGJlIGNhbGxlZAorKyAqIGR1 cmluZyAqYW55KiBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbi4gSXQgaGFzIHRoZSBtaW5pbXVtCisr ICogb3ZlcmhlYWQgcG9zc2libGUgdG8gYXZvaWQgdG9vIGJpZyBhIHBlcmZvcm1hbmNlIGhpdC4K KysgKi8KKysKKyt2b2lkIEZJUFNfc2VsZnRlc3RfY2hlY2sodm9pZCkKKyt7CisrICAgIGlmIChm aXBzX3NlbGZ0ZXN0X2ZhaWwpIHsKKysgICAgICAgIE9wZW5TU0xEaWUoX19GSUxFX18sIF9fTElO RV9fLCAiRkFUQUwgRklQUyBTRUxGVEVTVCBGQUlMVVJFIik7CisrICAgIH0KKyt9CisrCisrdm9p ZCBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKHZvaWQpCisreworKyAgICBmaXBzX3NlbGZ0ZXN0X2Zh aWwgPSAxOworK30KKysKKysvKiB3ZSBpbXBsZW1lbnQgd2hhdCBsaWJmaXBzY2hlY2sgZG9lcyBv dXJzZWx2ZXMgKi8KKysKKytzdGF0aWMgaW50CisrZ2V0X2xpYnJhcnlfcGF0aChjb25zdCBjaGFy ICpsaWJuYW1lLCBjb25zdCBjaGFyICpzeW1ib2xuYW1lLCBjaGFyICpwYXRoLAorKyAgICAgICAg ICAgICAgICAgc2l6ZV90IHBhdGhsZW4pCisreworKyAgICBEbF9pbmZvIGluZm87CisrICAgIHZv aWQgKmRsLCAqc3ltOworKyAgICBpbnQgcnYgPSAtMTsKKysKKysgICAgZGwgPSBkbG9wZW4obGli bmFtZSwgUlRMRF9MQVpZKTsKKysgICAgaWYgKGRsID09IE5VTEwpIHsKKysgICAgICAgIHJldHVy biAtMTsKKysgICAgfQorKworKyAgICBzeW0gPSBkbHN5bShkbCwgc3ltYm9sbmFtZSk7CisrCisr ICAgIGlmIChzeW0gIT0gTlVMTCAmJiBkbGFkZHIoc3ltLCAmaW5mbykpIHsKKysgICAgICAgIHN0 cm5jcHkocGF0aCwgaW5mby5kbGlfZm5hbWUsIHBhdGhsZW4gLSAxKTsKKysgICAgICAgIHBhdGhb cGF0aGxlbiAtIDFdID0gJ1wwJzsKKysgICAgICAgIHJ2ID0gMDsKKysgICAgfQorKworKyAgICBk bGNsb3NlKGRsKTsKKysKKysgICAgcmV0dXJuIHJ2OworK30KKysKKytzdGF0aWMgY29uc3QgY2hh ciBjb252W10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisrCisrc3RhdGljIGNoYXIgKmJpbjJoZXgo dm9pZCAqYnVmLCBzaXplX3QgbGVuKQorK3sKKysgICAgY2hhciAqaGV4LCAqcDsKKysgICAgdW5z aWduZWQgY2hhciAqc3JjID0gYnVmOworKworKyAgICBoZXggPSBtYWxsb2MobGVuICogMiArIDEp OworKyAgICBpZiAoaGV4ID09IE5VTEwpCisrICAgICAgICByZXR1cm4gTlVMTDsKKysKKysgICAg cCA9IGhleDsKKysKKysgICAgd2hpbGUgKGxlbiA+IDApIHsKKysgICAgICAgIHVuc2lnbmVkIGM7 CisrCisrICAgICAgICBjID0gKnNyYzsKKysgICAgICAgIHNyYysrOworKworKyAgICAgICAgKnAg PSBjb252W2MgPj4gNF07CisrICAgICAgICArK3A7CisrICAgICAgICAqcCA9IGNvbnZbYyAmIDB4 MGZdOworKyAgICAgICAgKytwOworKyAgICAgICAgLS1sZW47CisrICAgIH0KKysgICAgKnAgPSAn XDAnOworKyAgICByZXR1cm4gaGV4OworK30KKysKKysjIGRlZmluZSBITUFDX1BSRUZJWCAiLiIK KysjIGRlZmluZSBITUFDX1NVRkZJWCAiLmhtYWMiCisrIyBkZWZpbmUgUkVBRF9CVUZGRVJfTEVO R1RIIDE2Mzg0CisrCisrc3RhdGljIGNoYXIgKm1ha2VfaG1hY19wYXRoKGNvbnN0IGNoYXIgKm9y aWdwYXRoKQorK3sKKysgICAgY2hhciAqcGF0aCwgKnA7CisrICAgIGNvbnN0IGNoYXIgKmZuOwor KworKyAgICBwYXRoID0KKysgICAgICAgIG1hbGxvYyhzaXplb2YoSE1BQ19QUkVGSVgpICsgc2l6 ZW9mKEhNQUNfU1VGRklYKSArIHN0cmxlbihvcmlncGF0aCkpOworKyAgICBpZiAocGF0aCA9PSBO VUxMKSB7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworKyAgICBmbiA9IHN0cnJj aHIob3JpZ3BhdGgsICcvJyk7CisrICAgIGlmIChmbiA9PSBOVUxMKSB7CisrICAgICAgICBmbiA9 IG9yaWdwYXRoOworKyAgICB9IGVsc2UgeworKyAgICAgICAgKytmbjsKKysgICAgfQorKworKyAg ICBzdHJuY3B5KHBhdGgsIG9yaWdwYXRoLCBmbiAtIG9yaWdwYXRoKTsKKysgICAgcCA9IHBhdGgg KyAoZm4gLSBvcmlncGF0aCk7CisrICAgIHAgPSBzdHBjcHkocCwgSE1BQ19QUkVGSVgpOworKyAg ICBwID0gc3RwY3B5KHAsIGZuKTsKKysgICAgcCA9IHN0cGNweShwLCBITUFDX1NVRkZJWCk7Cisr CisrICAgIHJldHVybiBwYXRoOworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciBobWFja2V5W10g PSAib3Jib0RlSklUSVRlanNpcnBBRE9OaXZpcnBVa3ZhclAiOworKworK3N0YXRpYyBpbnQgY29t cHV0ZV9maWxlX2htYWMoY29uc3QgY2hhciAqcGF0aCwgdm9pZCAqKmJ1Ziwgc2l6ZV90ICpobWFj bGVuKQorK3sKKysgICAgRklMRSAqZiA9IE5VTEw7CisrICAgIGludCBydiA9IC0xOworKyAgICB1 bnNpZ25lZCBjaGFyIHJidWZbUkVBRF9CVUZGRVJfTEVOR1RIXTsKKysgICAgc2l6ZV90IGxlbjsK KysgICAgdW5zaWduZWQgaW50IGhsZW47CisrICAgIEhNQUNfQ1RYIGM7CisrCisrICAgIEhNQUNf Q1RYX2luaXQoJmMpOworKworKyAgICBmID0gZm9wZW4ocGF0aCwgInIiKTsKKysKKysgICAgaWYg KGYgPT0gTlVMTCkgeworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysKKysgICAgSE1BQ19J bml0KCZjLCBobWFja2V5LCBzaXplb2YoaG1hY2tleSkgLSAxLCBFVlBfc2hhMjU2KCkpOworKwor KyAgICB3aGlsZSAoKGxlbiA9IGZyZWFkKHJidWYsIDEsIHNpemVvZihyYnVmKSwgZikpICE9IDAp IHsKKysgICAgICAgIEhNQUNfVXBkYXRlKCZjLCByYnVmLCBsZW4pOworKyAgICB9CisrCisrICAg IGxlbiA9IHNpemVvZihyYnVmKTsKKysgICAgLyogcmV1c2UgcmJ1ZiBmb3IgaG1hYyAqLworKyAg ICBITUFDX0ZpbmFsKCZjLCByYnVmLCAmaGxlbik7CisrCisrICAgICpidWYgPSBtYWxsb2MoaGxl bik7CisrICAgIGlmICgqYnVmID09IE5VTEwpIHsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9 CisrCisrICAgICpobWFjbGVuID0gaGxlbjsKKysKKysgICAgbWVtY3B5KCpidWYsIHJidWYsIGhs ZW4pOworKworKyAgICBydiA9IDA7CisrIGVuZDoKKysgICAgSE1BQ19DVFhfY2xlYW51cCgmYyk7 CisrCisrICAgIGlmIChmKQorKyAgICAgICAgZmNsb3NlKGYpOworKworKyAgICByZXR1cm4gcnY7 CisrfQorKworK3N0YXRpYyBpbnQgRklQU0NIRUNLX3ZlcmlmeShjb25zdCBjaGFyICpsaWJuYW1l LCBjb25zdCBjaGFyICpzeW1ib2xuYW1lKQorK3sKKysgICAgY2hhciBwYXRoW1BBVEhfTUFYICsg MV07CisrICAgIGludCBydjsKKysgICAgRklMRSAqaGY7CisrICAgIGNoYXIgKmhtYWNwYXRoLCAq cDsKKysgICAgY2hhciAqaG1hYyA9IE5VTEw7CisrICAgIHNpemVfdCBuOworKworKyAgICBydiA9 IGdldF9saWJyYXJ5X3BhdGgobGlibmFtZSwgc3ltYm9sbmFtZSwgcGF0aCwgc2l6ZW9mKHBhdGgp KTsKKysKKysgICAgaWYgKHJ2IDwgMCkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICBobWFj cGF0aCA9IG1ha2VfaG1hY19wYXRoKHBhdGgpOworKyAgICBpZiAoaG1hY3BhdGggPT0gTlVMTCkK KysgICAgICAgIHJldHVybiAwOworKworKyAgICBoZiA9IGZvcGVuKGhtYWNwYXRoLCAiciIpOwor KyAgICBpZiAoaGYgPT0gTlVMTCkgeworKyAgICAgICAgZnJlZShobWFjcGF0aCk7CisrICAgICAg ICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICBpZiAoZ2V0bGluZSgmaG1hYywgJm4sIGhmKSA+ IDApIHsKKysgICAgICAgIHZvaWQgKmJ1ZjsKKysgICAgICAgIHNpemVfdCBobWFjbGVuOworKyAg ICAgICAgY2hhciAqaGV4OworKworKyAgICAgICAgaWYgKChwID0gc3RyY2hyKGhtYWMsICdcbicp KSAhPSBOVUxMKQorKyAgICAgICAgICAgICpwID0gJ1wwJzsKKysKKysgICAgICAgIGlmIChjb21w dXRlX2ZpbGVfaG1hYyhwYXRoLCAmYnVmLCAmaG1hY2xlbikgPCAwKSB7CisrICAgICAgICAgICAg cnYgPSAtNDsKKysgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgIH0KKysKKysgICAgICAg IGlmICgoaGV4ID0gYmluMmhleChidWYsIGhtYWNsZW4pKSA9PSBOVUxMKSB7CisrICAgICAgICAg ICAgZnJlZShidWYpOworKyAgICAgICAgICAgIHJ2ID0gLTU7CisrICAgICAgICAgICAgZ290byBl bmQ7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoc3RyY21wKGhleCwgaG1hYykgIT0gMCkg eworKyAgICAgICAgICAgIHJ2ID0gLTE7CisrICAgICAgICB9CisrICAgICAgICBmcmVlKGJ1Zik7 CisrICAgICAgICBmcmVlKGhleCk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBydiA9IC0xOwor KyAgICB9CisrCisrIGVuZDoKKysgICAgZnJlZShobWFjKTsKKysgICAgZnJlZShobWFjcGF0aCk7 CisrICAgIGZjbG9zZShoZik7CisrCisrICAgIGlmIChydiA8IDApCisrICAgICAgICByZXR1cm4g MDsKKysKKysgICAgLyogY2hlY2sgc3VjY2Vzc2Z1bCAqLworKyAgICByZXR1cm4gMTsKKyt9Cisr CisraW50IEZJUFNfbW9kdWxlX21vZGVfc2V0KGludCBvbm9mZiwgY29uc3QgY2hhciAqYXV0aCkK Kyt7CisrICAgIGludCByZXQgPSAwOworKworKyAgICBmaXBzX3dfbG9jaygpOworKyAgICBmaXBz X3N0YXJ0ZWQgPSAxOworKyAgICBmaXBzX3NldF9vd25pbmdfdGhyZWFkKCk7CisrCisrICAgIGlm IChvbm9mZikgeworKworKyAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMDsKKysKKysgICAg ICAgIC8qIERvbid0IGdvIGludG8gRklQUyBtb2RlIHR3aWNlLCBqdXN0IHNvIHdlIGNhbiBkbyBh dXRvbWFnaWMKKysgICAgICAgICAgIHNlZWRpbmcgKi8KKysgICAgICAgIGlmIChGSVBTX21vZHVs ZV9tb2RlKCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RF X1NFVCwKKysgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSVBTX01PREVfQUxSRUFEWV9TRVQp OworKyAgICAgICAgICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9IDE7CisrICAgICAgICAgICAgcmV0 ID0gMDsKKysgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgIH0KKysjIGlmZGVmIE9QRU5T U0xfSUEzMl9TU0UyCisrICAgICAgICB7CisrICAgICAgICAgICAgZXh0ZXJuIHVuc2lnbmVkIGlu dCBPUEVOU1NMX2lhMzJjYXBfUFsyXTsKKysgICAgICAgICAgICBpZiAoKE9QRU5TU0xfaWEzMmNh cF9QWzBdICYgKDEgPDwgMjUgfCAxIDw8IDI2KSkgIT0KKysgICAgICAgICAgICAgICAgKDEgPDwg MjUgfCAxIDw8IDI2KSkgeworKyAgICAgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01P RFVMRV9NT0RFX1NFVCwKKysgICAgICAgICAgICAgICAgICAgICAgICBGSVBTX1JfVU5TVVBQT1JU RURfUExBVEZPUk0pOworKyAgICAgICAgICAgICAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOwor KyAgICAgICAgICAgICAgICByZXQgPSAwOworKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsKKysg ICAgICAgICAgICB9CisrICAgICAgICAgICAgT1BFTlNTTF9pYTMyY2FwX1BbMF0gfD0gKDEgPDwg MjgpOyAvKiBzZXQgInNoYXJlZCBjYWNoZSIgICAqLworKyAgICAgICAgICAgIE9QRU5TU0xfaWEz MmNhcF9QWzFdICY9IH4oMSA8PCAoNjAgLSAzMikpOyAvKiBjbGVhciBBVlggICAgICAgICAgICAq LworKyAgICAgICAgfQorKyMgZW5kaWYKKysKKysgICAgICAgIGlmICghRklQU0NIRUNLX3Zlcmlm eQorKyAgICAgICAgICAgICgibGliY3J5cHRvLnNvLiIgU0hMSUJfVkVSU0lPTl9OVU1CRVIsICJG SVBTX21vZGVfc2V0IikpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVM RV9NT0RFX1NFVCwKKysgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VT X05PVF9NQVRDSCk7CisrICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKKysgICAg ICAgICAgICByZXQgPSAwOworKyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKwor KyAgICAgICAgaWYgKCFGSVBTQ0hFQ0tfdmVyaWZ5CisrICAgICAgICAgICAgKCJsaWJzc2wuc28u IiBTSExJQl9WRVJTSU9OX05VTUJFUiwgIlNTTF9DVFhfbmV3IikpIHsKKysgICAgICAgICAgICBG SVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCwKKysgICAgICAgICAgICAgICAgICAg IEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRDSCk7CisrICAgICAgICAgICAgZmlwc19z ZWxmdGVzdF9mYWlsID0gMTsKKysgICAgICAgICAgICByZXQgPSAwOworKyAgICAgICAgICAgIGdv dG8gZW5kOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKEZJUFNfc2VsZnRlc3QoKSkKKysg ICAgICAgICAgICBmaXBzX3NldF9tb2RlKG9ub2ZmKTsKKysgICAgICAgIGVsc2UgeworKyAgICAg ICAgICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9IDE7CisrICAgICAgICAgICAgcmV0ID0gMDsKKysg ICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgIH0KKysgICAgICAgIHJldCA9IDE7CisrICAg ICAgICBnb3RvIGVuZDsKKysgICAgfQorKyAgICBmaXBzX3NldF9tb2RlKDApOworKyAgICBmaXBz X3NlbGZ0ZXN0X2ZhaWwgPSAwOworKyAgICByZXQgPSAxOworKyBlbmQ6CisrICAgIGZpcHNfY2xl YXJfb3duaW5nX3RocmVhZCgpOworKyAgICBmaXBzX3dfdW5sb2NrKCk7CisrICAgIHJldHVybiBy ZXQ7CisrfQorKworK3N0YXRpYyBDUllQVE9fVEhSRUFESUQgZmlwc190aHJlYWQ7Cisrc3RhdGlj IGludCBmaXBzX3RocmVhZF9zZXQgPSAwOworKworK3N0YXRpYyBpbnQgZmlwc19pc19vd25pbmdf dGhyZWFkKHZvaWQpCisreworKyAgICBpbnQgcmV0ID0gMDsKKysKKysgICAgaWYgKGZpcHNfc3Rh cnRlZCkgeworKyAgICAgICAgQ1JZUFRPX3JfbG9jayhDUllQVE9fTE9DS19GSVBTMik7CisrICAg ICAgICBpZiAoZmlwc190aHJlYWRfc2V0KSB7CisrICAgICAgICAgICAgQ1JZUFRPX1RIUkVBRElE IGN1cjsKKysgICAgICAgICAgICBDUllQVE9fVEhSRUFESURfY3VycmVudCgmY3VyKTsKKysgICAg ICAgICAgICBpZiAoIUNSWVBUT19USFJFQURJRF9jbXAoJmN1ciwgJmZpcHNfdGhyZWFkKSkKKysg ICAgICAgICAgICAgICAgcmV0ID0gMTsKKysgICAgICAgIH0KKysgICAgICAgIENSWVBUT19yX3Vu bG9jayhDUllQVE9fTE9DS19GSVBTMik7CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyt9Cisr CisraW50IGZpcHNfc2V0X293bmluZ190aHJlYWQodm9pZCkKKyt7CisrICAgIGludCByZXQgPSAw OworKworKyAgICBpZiAoZmlwc19zdGFydGVkKSB7CisrICAgICAgICBDUllQVE9fd19sb2NrKENS WVBUT19MT0NLX0ZJUFMyKTsKKysgICAgICAgIGlmICghZmlwc190aHJlYWRfc2V0KSB7CisrICAg ICAgICAgICAgQ1JZUFRPX1RIUkVBRElEX2N1cnJlbnQoJmZpcHNfdGhyZWFkKTsKKysgICAgICAg ICAgICByZXQgPSAxOworKyAgICAgICAgICAgIGZpcHNfdGhyZWFkX3NldCA9IDE7CisrICAgICAg ICB9CisrICAgICAgICBDUllQVE9fd191bmxvY2soQ1JZUFRPX0xPQ0tfRklQUzIpOworKyAgICB9 CisrICAgIHJldHVybiByZXQ7CisrfQorKworK2ludCBmaXBzX2NsZWFyX293bmluZ190aHJlYWQo dm9pZCkKKyt7CisrICAgIGludCByZXQgPSAwOworKworKyAgICBpZiAoZmlwc19zdGFydGVkKSB7 CisrICAgICAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX0ZJUFMyKTsKKysgICAgICAgIGlm IChmaXBzX3RocmVhZF9zZXQpIHsKKysgICAgICAgICAgICBDUllQVE9fVEhSRUFESUQgY3VyOwor KyAgICAgICAgICAgIENSWVBUT19USFJFQURJRF9jdXJyZW50KCZjdXIpOworKyAgICAgICAgICAg IGlmICghQ1JZUFRPX1RIUkVBRElEX2NtcCgmY3VyLCAmZmlwc190aHJlYWQpKQorKyAgICAgICAg ICAgICAgICBmaXBzX3RocmVhZF9zZXQgPSAwOworKyAgICAgICAgfQorKyAgICAgICAgQ1JZUFRP X3dfdW5sb2NrKENSWVBUT19MT0NLX0ZJUFMyKTsKKysgICAgfQorKyAgICByZXR1cm4gcmV0Owor K30KKysKKysjIGlmIDAKKysvKiBUaGUgcHVycG9zZSBvZiB0aGlzIGlzIHRvIGVuc3VyZSB0aGUg ZXJyb3IgY29kZSBleGlzdHMgYW5kIHRoZSBmdW5jdGlvbgorKyAqIG5hbWUgaXMgdG8ga2VlcCB0 aGUgZXJyb3IgY2hlY2tpbmcgc2NyaXB0IHF1aWV0CisrICovCisrdm9pZCBoYXNoX2ZpbmFsKHZv aWQpCisreworKyAgICBGSVBTZXJyKEZJUFNfRl9IQVNIX0ZJTkFMLCBGSVBTX1JfTk9OX0ZJUFNf TUVUSE9EKTsKKyt9CisrIyBlbmRpZgorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2ZpcHMvZmlwc19jbWFjX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZmlwcy9maXBzX2NtYWNfc2VsZnRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9maXBzL2ZpcHNfY21hY19zZWxmdGVzdC5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTQy NDU3MDIgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2NtYWNfc2Vs ZnRlc3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NDI0NTcwMiArMDIwMAorQEAgLTAsMCArMSwx NTYgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNT TCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAq IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g CisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBk aXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRp b25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3Bs YXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8p IgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQ cm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHBy b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3 cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0 CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMg ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisr ICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJp b3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysg KgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0 YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0 CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5z c2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVu U1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElF RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBP cGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQg VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9T UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysg KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lC SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+ CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgor KyNpbmNsdWRlIDxvcGVuc3NsL2NtYWMuaD4KKysjaW5jbHVkZSAiZmlwc19sb2NsLmgiCisrCisr I2lmZGVmIE9QRU5TU0xfRklQUworK3R5cGVkZWYgc3RydWN0IHsKKysgICAgaW50IG5pZDsKKysg ICAgY29uc3QgdW5zaWduZWQgY2hhciBrZXlbRVZQX01BWF9LRVlfTEVOR1RIXTsKKysgICAgc2l6 ZV90IGtleXNpemU7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgbXNnWzY0XTsKKysgICAgc2l6 ZV90IG1zZ3NpemU7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjWzMyXTsKKysgICAgc2l6 ZV90IG1hY3NpemU7CisrfSBDTUFDX0tBVDsKKysKKysvKiBmcm9tIGh0dHA6Ly9jc3JjLm5pc3Qu Z292L3B1YmxpY2F0aW9ucy9uaXN0cHVicy84MDAtMzhCL1NQXzgwMC0zOEIucGRmICovCisrc3Rh dGljIGNvbnN0IENNQUNfS0FUIHZlY3RvcltdID0geworKyAgICB7TklEX2Flc18xMjhfY2JjLCAg ICAgICAgICAgLyogQ291bnQgPSAzMiBmcm9tIENNQUNHZW5BRVMxMjgudHh0ICovCisrICAgICB7 MHg3NywgMHhhNywgMHg3ZiwgMHhhZiwgMHgyOSwgMHgwYywgMHgxZiwgMHhhMywKKysgICAgICAw eDBjLCAweDY4LCAweDNkLCAweGYxLCAweDZiLCAweGE3LCAweGE3LCAweDdiLH0sIDEyOCwKKysg ICAgIHsweDAyLCAweDA2LCAweDgzLCAweGUxLCAweGYwLCAweDM5LCAweDJmLCAweDRjLAorKyAg ICAgIDB4YWMsIDB4NTQsIDB4MzEsIDB4OGIsIDB4NjAsIDB4MjksIDB4MjUsIDB4OWUsCisrICAg ICAgMHg5YywgMHg1NSwgMHgzZCwgMHhiYywgMHg0YiwgMHg2YSwgMHhkOSwgMHg5OCwKKysgICAg ICAweGU2LCAweDRkLCAweDU4LCAweGU0LCAweGU3LCAweGRjLCAweDJlLCAweDEzLH0sIDI1NiwK KysgICAgIHsweGZiLCAweGZlLCAweGE0LCAweDFiLH0sIDMyfSwKKysgICAge05JRF9hZXNfMTky X2NiYywgICAgICAgICAgIC8qIENvdW50ID0gMjMgZnJvbSBDTUFDR2VuQUVTMTkyLnR4dCAqLwor KyAgICAgezB4N2IsIDB4MzIsIDB4MzksIDB4MTMsIDB4NjksIDB4YWEsIDB4NGMsIDB4YTksCisr ICAgICAgMHg3NSwgMHg1OCwgMHgwOSwgMHg1YiwgMHhlMywgMHhjMywgMHhlYywgMHg4NiwKKysg ICAgICAweDJiLCAweGQwLCAweDU3LCAweGNlLCAweGYxLCAweGUzLCAweDJkLCAweDYyLH0sIDE5 MiwKKysgICAgIHsweDB9LCAwLAorKyAgICAgezB4ZTQsIDB4ZDksIDB4MzQsIDB4MGIsIDB4MDMs IDB4ZTYsIDB4N2QsIDB4ZWYsCisrICAgICAgMHhkNCwgMHg5NiwgMHg5YywgMHhjMSwgMHhlZCwg MHgzNywgMHgzNSwgMHhlNix9LCAxMjgsCisrICAgICB9LAorKyAgICB7TklEX2Flc18yNTZfY2Jj LCAgICAgICAgICAgLyogQ291bnQgPSAzMyBmcm9tIENNQUNHZW5BRVMyNTYudHh0ICovCisrICAg ICB7MHgwYiwgMHgxMiwgMHgyYSwgMHhjOCwgMHhmMywgMHg0ZSwgMHhkMSwgMHhmZSwKKysgICAg ICAweDA4LCAweDJhLCAweDM2LCAweDI1LCAweGQxLCAweDU3LCAweDU2LCAweDE0LAorKyAgICAg IDB4NTQsIDB4MTYsIDB4N2EsIDB4YzEsIDB4NDUsIDB4YTEsIDB4MGIsIDB4YmYsCisrICAgICAg MHg3NywgMHhjNiwgMHhhNywgMHgwNSwgMHg5NiwgMHhkNSwgMHg3NCwgMHhmMSx9LCAyNTYsCisr ICAgICB7MHg0OSwgMHg4YiwgMHg1MywgMHhmZCwgMHhlYywgMHg4NywgMHhlZCwgMHhjYiwKKysg ICAgICAweGYwLCAweDcwLCAweDk3LCAweGRjLCAweGNkLCAweGU5LCAweDNhLCAweDA4LAorKyAg ICAgIDB4NGIsIDB4YWQsIDB4NzUsIDB4MDEsIDB4YTIsIDB4MjQsIDB4ZTMsIDB4ODgsCisrICAg ICAgMHhkZiwgMHgzNCwgMHg5YywgMHhlMSwgMHg4OSwgMHg1OSwgMHhmZSwgMHg4NCwKKysgICAg ICAweDg1LCAweGY4LCAweGFkLCAweDE1LCAweDM3LCAweGYwLCAweGQ4LCAweDk2LAorKyAgICAg IDB4ZWEsIDB4NzMsIDB4YmUsIDB4ZGMsIDB4NzIsIDB4MTQsIDB4NzEsIDB4M2YsfSwgMzg0LAor KyAgICAgezB4ZjYsIDB4MmMsIDB4NDYsIDB4MzIsIDB4OWIsfSwgNDAsCisrICAgICB9LAorKyAg ICB7TklEX2Rlc19lZGUzX2NiYywgICAgICAgICAgLyogQ291bnQgPSA0MSBmcm9tIENNQUNHZW5U REVTMy5yZXEgKi8KKysgICAgIHsweDg5LCAweGJjLCAweGQ5LCAweDUyLCAweGE4LCAweGM4LCAw eGFiLCAweDM3LAorKyAgICAgIDB4MWEsIDB4ZjQsIDB4OGEsIDB4YzcsIDB4ZDAsIDB4NzAsIDB4 ODUsIDB4ZDUsCisrICAgICAgMHhlZiwgMHhmNywgMHgwMiwgMHhlNiwgMHhkNiwgMHgyYywgMHhk YywgMHgyMyx9LCAxOTIsCisrICAgICB7MHhmYSwgMHg2MiwgMHgwYywgMHgxYiwgMHhiZSwgMHg5 NywgMHgzMSwgMHg5ZSwKKysgICAgICAweDlhLCAweDBjLCAweGYwLCAweDQ5LCAweDIxLCAweDIx LCAweGY3LCAweGEyLAorKyAgICAgIDB4MGUsIDB4YjAsIDB4OGEsIDB4NmEsIDB4NzAsIDB4OWQs IDB4Y2IsIDB4ZDAsCisrICAgICAgMHgwYSwgMHhhZiwgMHgzOCwgMHhlNCwgMHhmOSwgMHg5ZSwg MHg3NSwgMHg0ZSx9LCAyNTYsCisrICAgICB7MHg4ZiwgMHg0OSwgMHhhMSwgMHhiNywgMHhkNiwg MHhhYSwgMHgyMiwgMHg1OCx9LCA2NCwKKysgICAgIH0sCisrfTsKKysKKytpbnQgRklQU19zZWxm dGVzdF9jbWFjKCkKKyt7CisrICAgIHNpemVfdCBuLCBvdXRsZW47CisrICAgIHVuc2lnbmVkIGNo YXIgb3V0WzMyXTsKKysgICAgY29uc3QgRVZQX0NJUEhFUiAqY2lwaGVyOworKyAgICBDTUFDX0NU WCAqY3R4ID0gQ01BQ19DVFhfbmV3KCk7CisrICAgIGNvbnN0IENNQUNfS0FUICp0OworKyAgICBp bnQgcnYgPSAxOworKworKyAgICBmb3IgKG4gPSAwLCB0ID0gdmVjdG9yOyBuIDwgc2l6ZW9mKHZl Y3RvcikgLyBzaXplb2YodmVjdG9yWzBdKTsgbisrLCB0KyspIHsKKysgICAgICAgIGNpcGhlciA9 IEZJUFNfZ2V0X2NpcGhlcmJ5bmlkKHQtPm5pZCk7CisrICAgICAgICBpZiAoIWNpcGhlcikgewor KyAgICAgICAgICAgIHJ2ID0gLTE7CisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9 CisrICAgICAgICBpZiAoIUNNQUNfSW5pdChjdHgsIHQtPmtleSwgdC0+a2V5c2l6ZSAvIDgsIGNp cGhlciwgMCkpIHsKKysgICAgICAgICAgICBydiA9IC0xOworKyAgICAgICAgICAgIGdvdG8gZXJy OworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFDTUFDX1VwZGF0ZShjdHgsIHQtPm1zZywgdC0+ bXNnc2l6ZSAvIDgpKSB7CisrICAgICAgICAgICAgcnYgPSAtMTsKKysgICAgICAgICAgICBnb3Rv IGVycjsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICghQ01BQ19GaW5hbChjdHgsIG91dCwg Jm91dGxlbikpIHsKKysgICAgICAgICAgICBydiA9IC0xOworKyAgICAgICAgICAgIGdvdG8gZXJy OworKyAgICAgICAgfQorKyAgICAgICAgQ01BQ19DVFhfY2xlYW51cChjdHgpOworKworKyAgICAg ICAgaWYgKG91dGxlbiA8IHQtPm1hY3NpemUgLyA4IHx8IG1lbWNtcChvdXQsIHQtPm1hYywgdC0+ bWFjc2l6ZSAvIDgpKSB7CisrICAgICAgICAgICAgcnYgPSAwOworKyAgICAgICAgfQorKyAgICB9 CisrCisrIGVycjoKKysgICAgQ01BQ19DVFhfZnJlZShjdHgpOworKworKyAgICBpZiAocnYgPT0g LTEpIHsKKysgICAgICAgIHJ2ID0gMDsKKysgICAgfQorKyAgICBpZiAoIXJ2KQorKyAgICAgICAg RklQU2VycihGSVBTX0ZfRklQU19TRUxGVEVTVF9DTUFDLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVE KTsKKysKKysgICAgcmV0dXJuIHJ2OworK30KKysjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9maXBzL2ZpcHNfZGVzX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZmlwcy9maXBzX2Rlc19zZWxmdGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2ZpcHMvZmlwc19kZXNfc2VsZnRlc3QuYy5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk0MjQ1 NzAyICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kZXNfc2VsZnRl c3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NDI0NTcwMiArMDIwMAorQEAgLTAsMCArMSwxMzgg QEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQ cm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisr ICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug dGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0 aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0 cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25p bmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkg dGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1 ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9y IHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgor KyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9q ZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1 Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0 dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Cisr ICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVy aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICog ICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Ig d3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgor KyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWlu IHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Cisr ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wu b3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NM IFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS CisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVu U1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8s IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBP RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVk ZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisrI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KKysKKysjaWZkZWYgT1BFTlNTTF9GSVBT CisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCB7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5 WzE2XTsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciBwbGFpbnRleHRbOF07CisrICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgY2lwaGVydGV4dFs4XTsKKyt9IHRlc3RzMltdID0geworKyAgICB7Cisr ICAgICAgICB7CisrICAgICAgICAweDdjLCAweDRmLCAweDZlLCAweGY3LCAweGEyLCAweDA0LCAw eDE2LCAweGVjLAorKyAgICAgICAgICAgICAgICAweDBiLCAweDZiLCAweDdjLCAweDllLCAweDVl LCAweDE5LCAweGE3LCAweGM0fSwgeworKyAgICAgICAgMHgwNiwgMHhhNywgMHhkOCwgMHg3OSwg MHhhYSwgMHhjZSwgMHg2OSwgMHhlZn0sIHsKKysgICAgICAgIDB4NGMsIDB4MTEsIDB4MTcsIDB4 NTUsIDB4YmYsIDB4YzQsIDB4NGUsIDB4ZmR9CisrICAgIH0sIHsKKysgICAgICAgIHsKKysgICAg ICAgIDB4NWQsIDB4OWUsIDB4MDEsIDB4ZDMsIDB4MjUsIDB4YzcsIDB4M2UsIDB4MzQsCisrICAg ICAgICAgICAgICAgIDB4MDEsIDB4MTYsIDB4N2MsIDB4ODUsIDB4MjMsIDB4ZGYsIDB4ZTAsIDB4 Njh9LCB7CisrICAgICAgICAweDljLCAweDUwLCAweDA5LCAweDBmLCAweDVlLCAweDdkLCAweDY5 LCAweDdlfSwgeworKyAgICAweGQyLCAweDBiLCAweDE4LCAweGRmLCAweGQ5LCAweDBkLCAweDll LCAweGZmfSx9CisrfTsKKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHsKKysgICAgY29uc3QgdW5z aWduZWQgY2hhciBrZXlbMjRdOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHBsYWludGV4dFs4 XTsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciBjaXBoZXJ0ZXh0WzhdOworK30gdGVzdHMzW10g PSB7CisrICAgIHsKKysgICAgICAgIHsKKysgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisrICAgICAgICAgICAgICAgIDB4RkUsIDB4REMsIDB4 QkEsIDB4OTgsIDB4NzYsIDB4NTQsIDB4MzIsIDB4MTAsCisrICAgICAgICAgICAgICAgIDB4MTIs IDB4MzQsIDB4NTYsIDB4NzgsIDB4OWEsIDB4YmMsIDB4ZGUsIDB4ZjB9LCB7CisrICAgICAgICAw eDhmLCAweDhmLCAweGJmLCAweDliLCAweDVkLCAweDQ4LCAweGI0LCAweDFjfSwgeworKyAgICAw eDU5LCAweDhjLCAweGU1LCAweGQzLCAweDZjLCAweGEyLCAweGVhLCAweDFifSx9LCB7CisrICAg ICAgICB7CisrICAgICAgICAweERDLCAweEJBLCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEw LCAweEZFLAorKyAgICAgICAgICAgICAgICAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAw eEFCLCAweENELCAweEVGLAorKyAgICAgICAgICAgICAgICAweEVELCAweDM5LCAweEQ5LCAweDUw LCAweEZBLCAweDc0LCAweEJDLCAweEM0fSwgeworKyAgICAgICAgMHgwMSwgMHgyMywgMHg0NSwg MHg2NywgMHg4OSwgMHhBQiwgMHhDRCwgMHhFRn0sIHsKKysweDExLCAweDI1LCAweGIwLCAweDM1 LCAweGJlLCAweGEwLCAweDgyLCAweDg2fSx9LH07CisrCisrc3RhdGljIGludCBjb3JydXB0X2Rl czsKKysKKyt2b2lkIEZJUFNfY29ycnVwdF9kZXMoKQorK3sKKysgICAgY29ycnVwdF9kZXMgPSAx OworK30KKysKKytpbnQgRklQU19zZWxmdGVzdF9kZXMoKQorK3sKKysgICAgaW50IG4sIHJldCA9 IDA7CisrICAgIEVWUF9DSVBIRVJfQ1RYIGN0eDsKKysgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgm Y3R4KTsKKysgICAgLyogRW5jcnlwdC9kZWNyeXB0IHdpdGggMi1rZXkgM0RFUyBhbmQgY29tcGFy ZSB0byBrbm93biBhbnN3ZXJzICovCisrICAgIGZvciAobiA9IDA7IG4gPCAyOyArK24pIHsKKysg ICAgICAgIHVuc2lnbmVkIGNoYXIgcGxhaW50ZXh0WzhdOworKworKyAgICAgICAgbWVtY3B5KHBs YWludGV4dCwgdGVzdHMyW25dLnBsYWludGV4dCwgc2l6ZW9mKHBsYWludGV4dCkpOworKyAgICAg ICAgaWYgKGNvcnJ1cHRfZGVzKQorKyAgICAgICAgICAgIHBsYWludGV4dFswXSsrOworKyAgICAg ICAgaWYgKCFmaXBzX2NpcGhlcl90ZXN0KCZjdHgsIEVWUF9kZXNfZWRlX2VjYigpLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzMltuXS5rZXksIE5VTEwsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGxhaW50ZXh0LCB0ZXN0czJbbl0uY2lwaGVydGV4dCwgOCkp CisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyogRW5jcnlwdC9kZWNy eXB0IHdpdGggM0RFUyBhbmQgY29tcGFyZSB0byBrbm93biBhbnN3ZXJzICovCisrICAgIGZvciAo biA9IDA7IG4gPCAyOyArK24pIHsKKysgICAgICAgIGlmICghZmlwc19jaXBoZXJfdGVzdCgmY3R4 LCBFVlBfZGVzX2VkZTNfZWNiKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz dHMzW25dLmtleSwgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0czNb bl0ucGxhaW50ZXh0LCB0ZXN0czNbbl0uY2lwaGVydGV4dCwgOCkpCisrICAgICAgICAgICAgZ290 byBlcnI7CisrICAgIH0KKysgICAgcmV0ID0gMTsKKysgZXJyOgorKyAgICBFVlBfQ0lQSEVSX0NU WF9jbGVhbnVwKCZjdHgpOworKyAgICBpZiAocmV0ID09IDApCisrICAgICAgICBGSVBTZXJyKEZJ UFNfRl9GSVBTX1NFTEZURVNUX0RFUywgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7CisrCisrICAg IHJldHVybiByZXQ7CisrfQorKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2ZpcHMvZmlwc19kcmJnX2N0ci5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlw c19kcmJnX2N0ci5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2N0 ci5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTQyNDU3MDIgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfY3RyLmMJMjAxNS0wNC0yMiAxNjowODo0MC4y OTQyNDU3MDIgKzAyMDAKK0BAIC0wLDAgKzEsNDE1IEBACisrLyogZmlwcy9yYW5kL2ZpcHNfZHJi Z19jdHIuYyAqLworKy8qIFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3Bl bnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAorKyAqIHByb2plY3QuCisrICovCisrLyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFy ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBh cmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAq CisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y IHVzZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcg YWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk ZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9w ZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIDQuIFRo ZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3Qg YmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u LiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIGxpY2Vuc2lu Z0BPcGVuU1NMLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5T U0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBw ZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1 dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisr ICogICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0 d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4g dGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICog VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMn JyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJF IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisr ICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ TkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B R0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNU UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF LgorKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisrICovCisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNs dWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8 b3BlbnNzbC9maXBzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1 ZGUgImZpcHNfcmFuZF9sY2wuaCIKKysKKytzdGF0aWMgdm9pZCBpbmNfMTI4KERSQkdfQ1RSX0NU WCAqIGNjdHgpCisreworKyAgICBpbnQgaTsKKysgICAgdW5zaWduZWQgY2hhciBjOworKyAgICB1 bnNpZ25lZCBjaGFyICpwID0gY2N0eC0+ViArIDE1OworKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7 IGkrKykgeworKyAgICAgICAgYyA9ICpwOworKyAgICAgICAgYysrOworKyAgICAgICAgKnAgPSBj OworKyAgICAgICAgaWYgKGMpCisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgcC0tOwor KyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIGN0cl9YT1IoRFJCR19DVFJfQ1RYICogY2N0eCwg Y29uc3QgdW5zaWduZWQgY2hhciAqaW4sCisrICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5s ZW4pCisreworKyAgICBzaXplX3QgaSwgbjsKKysgICAgLyogQW55IHplcm8gcGFkZGluZyB3aWxs IGhhdmUgbm8gZWZmZWN0IG9uIHRoZSByZXN1bHQgYXMgd2UKKysgICAgICogYXJlIFhPUmluZy4g U28ganVzdCBwcm9jZXNzIGhvd2V2ZXIgbXVjaCBpbnB1dCB3ZSBoYXZlLgorKyAgICAgKi8KKysK KysgICAgaWYgKCFpbiB8fCAhaW5sZW4pCisrICAgICAgICByZXR1cm47CisrCisrICAgIGlmIChp bmxlbiA8IGNjdHgtPmtleWxlbikKKysgICAgICAgIG4gPSBpbmxlbjsKKysgICAgZWxzZQorKyAg ICAgICAgbiA9IGNjdHgtPmtleWxlbjsKKysKKysgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykK KysgICAgICAgIGNjdHgtPktbaV0gXj0gaW5baV07CisrICAgIGlmIChpbmxlbiA8PSBjY3R4LT5r ZXlsZW4pCisrICAgICAgICByZXR1cm47CisrCisrICAgIG4gPSBpbmxlbiAtIGNjdHgtPmtleWxl bjsKKysgICAgLyogU2hvdWxkIG5ldmVyIGhhcHBlbiAqLworKyAgICBpZiAobiA+IDE2KQorKyAg ICAgICAgbiA9IDE2OworKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKysgICAgICAgIGNj dHgtPlZbaV0gXj0gaW5baSArIGNjdHgtPmtleWxlbl07CisrfQorKworKy8qIFByb2Nlc3MgYSBj b21wbGV0ZSBibG9jayB1c2luZyBCQ0MgYWxnb3JpdGhtIG9mIFNQUCA4MDAtOTAgMTAuNC4zICov CisrCisrc3RhdGljIHZvaWQgY3RyX0JDQ19ibG9jayhEUkJHX0NUUl9DVFggKiBjY3R4LCB1bnNp Z25lZCBjaGFyICpvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l ZCBjaGFyICppbikKKyt7CisrICAgIGludCBpOworKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkr KykKKysgICAgICAgIG91dFtpXSBePSBpbltpXTsKKysgICAgQUVTX2VuY3J5cHQob3V0LCBvdXQs ICZjY3R4LT5kZl9rcyk7CisrI2lmIDAKKysgICAgZnByaW50ZihzdGRlcnIsICJCQ0MgaW4rb3V0 XG4iKTsKKysgICAgQklPX2R1bXBfZnAoc3RkZXJyLCBpbiwgMTYpOworKyAgICBCSU9fZHVtcF9m cChzdGRlcnIsIG91dCwgMTYpOworKyNlbmRpZgorK30KKysKKysvKiBIYW5kbGUgc2V2ZXJhbCBC Q0Mgb3BlcmF0aW9ucyBmb3IgYXMgbXVjaCBkYXRhIGFzIHdlIG5lZWQgZm9yIEsgYW5kIFggKi8K KytzdGF0aWMgdm9pZCBjdHJfQkNDX2Jsb2NrcyhEUkJHX0NUUl9DVFggKiBjY3R4LCBjb25zdCB1 bnNpZ25lZCBjaGFyICppbikKKyt7CisrICAgIGN0cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+S1gs IGluKTsKKysgICAgY3RyX0JDQ19ibG9jayhjY3R4LCBjY3R4LT5LWCArIDE2LCBpbik7CisrICAg IGlmIChjY3R4LT5rZXlsZW4gIT0gMTYpCisrICAgICAgICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNj dHgtPktYICsgMzIsIGluKTsKKyt9CisrCisrLyogSW5pdGlhbGlzZSBCQ0MgYmxvY2tzOiB0aGVz ZSBoYXZlIHRoZSB2YWx1ZSAwLDEsMiBpbiBsZWZ0bW9zdCBwb3NpdGlvbnM6CisrICogc2VlIDEw LjQuMiBzdGFnZSA3LgorKyAqLworK3N0YXRpYyB2b2lkIGN0cl9CQ0NfaW5pdChEUkJHX0NUUl9D VFggKiBjY3R4KQorK3sKKysgICAgbWVtc2V0KGNjdHgtPktYLCAwLCA0OCk7CisrICAgIG1lbXNl dChjY3R4LT5ibHRtcCwgMCwgMTYpOworKyAgICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgtPktY LCBjY3R4LT5ibHRtcCk7CisrICAgIGNjdHgtPmJsdG1wWzNdID0gMTsKKysgICAgY3RyX0JDQ19i bG9jayhjY3R4LCBjY3R4LT5LWCArIDE2LCBjY3R4LT5ibHRtcCk7CisrICAgIGlmIChjY3R4LT5r ZXlsZW4gIT0gMTYpIHsKKysgICAgICAgIGNjdHgtPmJsdG1wWzNdID0gMjsKKysgICAgICAgIGN0 cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+S1ggKyAzMiwgY2N0eC0+Ymx0bXApOworKyAgICB9Cisr fQorKworKy8qIFByb2Nlc3Mgc2V2ZXJhbCBibG9ja3MgaW50byBCQ0MgYWxnb3JpdGhtLCBzb21l IHBvc3NpYmx5IHBhcnRpYWwgKi8KKytzdGF0aWMgdm9pZCBjdHJfQkNDX3VwZGF0ZShEUkJHX0NU Ul9DVFggKiBjY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKmluLCBzaXplX3QgaW5sZW4pCisreworKyAgICBpZiAoIWluIHx8ICFpbmxlbikKKysg ICAgICAgIHJldHVybjsKKysgICAgLyogSWYgd2UgaGF2ZSBwYXJ0aWFsIGJsb2NrIGhhbmRsZSBp dCBmaXJzdCAqLworKyAgICBpZiAoY2N0eC0+Ymx0bXBfcG9zKSB7CisrICAgICAgICBzaXplX3Qg bGVmdCA9IDE2IC0gY2N0eC0+Ymx0bXBfcG9zOworKyAgICAgICAgLyogSWYgd2Ugbm93IGhhdmUg YSBjb21wbGV0ZSBibG9jayBwcm9jZXNzIGl0ICovCisrICAgICAgICBpZiAoaW5sZW4gPj0gbGVm dCkgeworKyAgICAgICAgICAgIG1lbWNweShjY3R4LT5ibHRtcCArIGNjdHgtPmJsdG1wX3Bvcywg aW4sIGxlZnQpOworKyAgICAgICAgICAgIGN0cl9CQ0NfYmxvY2tzKGNjdHgsIGNjdHgtPmJsdG1w KTsKKysgICAgICAgICAgICBjY3R4LT5ibHRtcF9wb3MgPSAwOworKyAgICAgICAgICAgIGlubGVu IC09IGxlZnQ7CisrICAgICAgICAgICAgaW4gKz0gbGVmdDsKKysgICAgICAgIH0KKysgICAgfQor KyAgICAvKiBQcm9jZXNzIHplcm8gb3IgbW9yZSBjb21wbGV0ZSBibG9ja3MgKi8KKysgICAgd2hp bGUgKGlubGVuID49IDE2KSB7CisrICAgICAgICBjdHJfQkNDX2Jsb2NrcyhjY3R4LCBpbik7Cisr ICAgICAgICBpbiArPSAxNjsKKysgICAgICAgIGlubGVuIC09IDE2OworKyAgICB9CisrICAgIC8q IENvcHkgYW55IHJlbWFpbmluZyBwYXJ0aWFsIGJsb2NrIHRvIHRoZSB0ZW1wb3JhcnkgYnVmZmVy ICovCisrICAgIGlmIChpbmxlbiA+IDApIHsKKysgICAgICAgIG1lbWNweShjY3R4LT5ibHRtcCAr IGNjdHgtPmJsdG1wX3BvcywgaW4sIGlubGVuKTsKKysgICAgICAgIGNjdHgtPmJsdG1wX3BvcyAr PSBpbmxlbjsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBjdHJfQkNDX2ZpbmFsKERSQkdf Q1RSX0NUWCAqIGNjdHgpCisreworKyAgICBpZiAoY2N0eC0+Ymx0bXBfcG9zKSB7CisrICAgICAg ICBtZW1zZXQoY2N0eC0+Ymx0bXAgKyBjY3R4LT5ibHRtcF9wb3MsIDAsIDE2IC0gY2N0eC0+Ymx0 bXBfcG9zKTsKKysgICAgICAgIGN0cl9CQ0NfYmxvY2tzKGNjdHgsIGNjdHgtPmJsdG1wKTsKKysg ICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBjdHJfZGYoRFJCR19DVFJfQ1RYICogY2N0eCwKKysg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4xLCBzaXplX3QgaW4xbGVu LAorKyAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjIsIHNpemVfdCBp bjJsZW4sCisrICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMywgc2l6 ZV90IGluM2xlbikKKyt7CisrICAgIHNpemVfdCBpbmxlbjsKKysgICAgdW5zaWduZWQgY2hhciAq cCA9IGNjdHgtPmJsdG1wOworKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBjODAgPSAweDgwOwor KworKyAgICBjdHJfQkNDX2luaXQoY2N0eCk7CisrICAgIGlmICghaW4xKQorKyAgICAgICAgaW4x bGVuID0gMDsKKysgICAgaWYgKCFpbjIpCisrICAgICAgICBpbjJsZW4gPSAwOworKyAgICBpZiAo IWluMykKKysgICAgICAgIGluM2xlbiA9IDA7CisrICAgIGlubGVuID0gaW4xbGVuICsgaW4ybGVu ICsgaW4zbGVuOworKyAgICAvKiBJbml0aWFsaXNlIEx8fE4gaW4gdGVtcG9yYXJ5IGJsb2NrICov CisrICAgICpwKysgPSAoaW5sZW4gPj4gMjQpICYgMHhmZjsKKysgICAgKnArKyA9IChpbmxlbiA+ PiAxNikgJiAweGZmOworKyAgICAqcCsrID0gKGlubGVuID4+IDgpICYgMHhmZjsKKysgICAgKnAr KyA9IGlubGVuICYgMHhmZjsKKysgICAgLyogTkIga2V5bGVuIGlzIGF0IG1vc3QgMzIgYnl0ZXMg Ki8KKysgICAgKnArKyA9IDA7CisrICAgICpwKysgPSAwOworKyAgICAqcCsrID0gMDsKKysgICAg KnAgPSAodW5zaWduZWQgY2hhcikoKGNjdHgtPmtleWxlbiArIDE2KSAmIDB4ZmYpOworKyAgICBj Y3R4LT5ibHRtcF9wb3MgPSA4OworKyAgICBjdHJfQkNDX3VwZGF0ZShjY3R4LCBpbjEsIGluMWxl bik7CisrICAgIGN0cl9CQ0NfdXBkYXRlKGNjdHgsIGluMiwgaW4ybGVuKTsKKysgICAgY3RyX0JD Q191cGRhdGUoY2N0eCwgaW4zLCBpbjNsZW4pOworKyAgICBjdHJfQkNDX3VwZGF0ZShjY3R4LCAm YzgwLCAxKTsKKysgICAgY3RyX0JDQ19maW5hbChjY3R4KTsKKysgICAgLyogU2V0IHVwIGtleSBL ICovCisrICAgIEFFU19zZXRfZW5jcnlwdF9rZXkoY2N0eC0+S1gsIGNjdHgtPmtleWxlbiAqIDgs ICZjY3R4LT5kZl9reGtzKTsKKysgICAgLyogWCBmb2xsb3dzIGtleSBLICovCisrICAgIEFFU19l bmNyeXB0KGNjdHgtPktYICsgY2N0eC0+a2V5bGVuLCBjY3R4LT5LWCwgJmNjdHgtPmRmX2t4a3Mp OworKyAgICBBRVNfZW5jcnlwdChjY3R4LT5LWCwgY2N0eC0+S1ggKyAxNiwgJmNjdHgtPmRmX2t4 a3MpOworKyAgICBpZiAoY2N0eC0+a2V5bGVuICE9IDE2KQorKyAgICAgICAgQUVTX2VuY3J5cHQo Y2N0eC0+S1ggKyAxNiwgY2N0eC0+S1ggKyAzMiwgJmNjdHgtPmRmX2t4a3MpOworKyNpZiAwCisr ICAgIGZwcmludGYoc3RkZXJyLCAiT3V0cHV0IG9mIGN0cl9kZjpcbiIpOworKyAgICBCSU9fZHVt cF9mcChzdGRlcnIsIGNjdHgtPktYLCBjY3R4LT5rZXlsZW4gKyAxNik7CisrI2VuZGlmCisrfQor KworKy8qIE5CIHRoZSBuby1kZiAgVXBkYXRlIGluIFNQODAwLTkwIHNwZWNpZmllcyBhIGNvbnN0 YW50IGlucHV0IGxlbmd0aAorKyAqIG9mIHNlZWRsZW4sIGhvd2V2ZXIgb3RoZXIgdXNlcyBvZiB0 aGlzIGFsZ29yaXRobSBwYWQgdGhlIGlucHV0IHdpdGgKKysgKiB6ZXJvZXMgaWYgbmVjZXNzYXJ5 IGFuZCBoYXZlIHVwIHRvIHR3byBwYXJhbWV0ZXJzIFhPUmVkIHRvZ2V0aGVyLAorKyAqIGhhbmRs ZSBib3RoIGNhc2VzIGluIHRoaXMgZnVuY3Rpb24gaW5zdGVhZC4KKysgKi8KKysKKytzdGF0aWMg dm9pZCBjdHJfVXBkYXRlKERSQkdfQ1RYICpkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqaW4xLCBzaXplX3QgaW4xbGVuLAorKyAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4yLCBzaXplX3QgaW4ybGVuLAorKyAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbm9uY2UsIHNpemVfdCBub25j ZWxlbikKKyt7CisrICAgIERSQkdfQ1RSX0NUWCAqY2N0eCA9ICZkY3R4LT5kLmN0cjsKKysgICAg Lyoga3MgaXMgYWxyZWFkeSBzZXR1cCBmb3IgY29ycmVjdCBrZXkgKi8KKysgICAgaW5jXzEyOChj Y3R4KTsKKysgICAgQUVTX2VuY3J5cHQoY2N0eC0+ViwgY2N0eC0+SywgJmNjdHgtPmtzKTsKKysg ICAgLyogSWYga2V5bGVuIGxvbmdlciB0aGFuIDEyOCBiaXRzIG5lZWQgZXh0cmEgZW5jcnlwdCAq LworKyAgICBpZiAoY2N0eC0+a2V5bGVuICE9IDE2KSB7CisrICAgICAgICBpbmNfMTI4KGNjdHgp OworKyAgICAgICAgQUVTX2VuY3J5cHQoY2N0eC0+ViwgY2N0eC0+SyArIDE2LCAmY2N0eC0+a3Mp OworKyAgICB9CisrICAgIGluY18xMjgoY2N0eCk7CisrICAgIEFFU19lbmNyeXB0KGNjdHgtPlYs IGNjdHgtPlYsICZjY3R4LT5rcyk7CisrICAgIC8qIElmIDE5MiBiaXQga2V5IHBhcnQgb2YgViBp cyBvbiBlbmQgb2YgSyAqLworKyAgICBpZiAoY2N0eC0+a2V5bGVuID09IDI0KSB7CisrICAgICAg ICBtZW1jcHkoY2N0eC0+ViArIDgsIGNjdHgtPlYsIDgpOworKyAgICAgICAgbWVtY3B5KGNjdHgt PlYsIGNjdHgtPksgKyAyNCwgOCk7CisrICAgIH0KKysKKysgICAgaWYgKGRjdHgtPnhmbGFncyAm IERSQkdfRkxBR19DVFJfVVNFX0RGKSB7CisrICAgICAgICAvKiBJZiBubyBpbnB1dCByZXVzZSBl eGlzdGluZyBkZXJpdmVkIHZhbHVlICovCisrICAgICAgICBpZiAoaW4xIHx8IG5vbmNlIHx8IGlu MikKKysgICAgICAgICAgICBjdHJfZGYoY2N0eCwgaW4xLCBpbjFsZW4sIG5vbmNlLCBub25jZWxl biwgaW4yLCBpbjJsZW4pOworKyAgICAgICAgLyogSWYgdGhpcyBhIHJldXNlIGlucHV0IGluMWxl biAhPSAwICovCisrICAgICAgICBpZiAoaW4xbGVuKQorKyAgICAgICAgICAgIGN0cl9YT1IoY2N0 eCwgY2N0eC0+S1gsIGRjdHgtPnNlZWRsZW4pOworKyAgICB9IGVsc2UgeworKyAgICAgICAgY3Ry X1hPUihjY3R4LCBpbjEsIGluMWxlbik7CisrICAgICAgICBjdHJfWE9SKGNjdHgsIGluMiwgaW4y bGVuKTsKKysgICAgfQorKworKyAgICBBRVNfc2V0X2VuY3J5cHRfa2V5KGNjdHgtPkssIGRjdHgt PnN0cmVuZ3RoLCAmY2N0eC0+a3MpOworKyNpZiAwCisrICAgIGZwcmludGYoc3RkZXJyLCAiSytW IGFmdGVyIHVwZGF0ZSBpczpcbiIpOworKyAgICBCSU9fZHVtcF9mcChzdGRlcnIsIGNjdHgtPkss IGNjdHgtPmtleWxlbik7CisrICAgIEJJT19kdW1wX2ZwKHN0ZGVyciwgY2N0eC0+ViwgMTYpOwor KyNlbmRpZgorK30KKysKKytzdGF0aWMgaW50IGRyYmdfY3RyX2luc3RhbnRpYXRlKERSQkdfQ1RY ICpkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqZW50LCBzaXplX3QgZW50bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqbm9uY2UsIHNpemVfdCBub25jZWxlbiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBlcnMsIHNpemVf dCBwZXJzbGVuKQorK3sKKysgICAgRFJCR19DVFJfQ1RYICpjY3R4ID0gJmRjdHgtPmQuY3RyOwor KyAgICBtZW1zZXQoY2N0eC0+SywgMCwgc2l6ZW9mKGNjdHgtPkspKTsKKysgICAgbWVtc2V0KGNj dHgtPlYsIDAsIHNpemVvZihjY3R4LT5WKSk7CisrICAgIEFFU19zZXRfZW5jcnlwdF9rZXkoY2N0 eC0+SywgZGN0eC0+c3RyZW5ndGgsICZjY3R4LT5rcyk7CisrICAgIGN0cl9VcGRhdGUoZGN0eCwg ZW50LCBlbnRsZW4sIHBlcnMsIHBlcnNsZW4sIG5vbmNlLCBub25jZWxlbik7CisrICAgIHJldHVy biAxOworK30KKysKKytzdGF0aWMgaW50IGRyYmdfY3RyX3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnQsIHNp emVfdCBlbnRsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4pCisreworKyAgICBjdHJfVXBkYXRlKGRjdHgsIGVu dCwgZW50bGVuLCBhZGluLCBhZGlubGVuLCBOVUxMLCAwKTsKKysgICAgcmV0dXJuIDE7CisrfQor KworK3N0YXRpYyBpbnQgZHJiZ19jdHJfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4s CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGlu LCBzaXplX3QgYWRpbmxlbikKKyt7CisrICAgIERSQkdfQ1RSX0NUWCAqY2N0eCA9ICZkY3R4LT5k LmN0cjsKKysgICAgaWYgKGFkaW4gJiYgYWRpbmxlbikgeworKyAgICAgICAgY3RyX1VwZGF0ZShk Y3R4LCBhZGluLCBhZGlubGVuLCBOVUxMLCAwLCBOVUxMLCAwKTsKKysgICAgICAgIC8qIFRoaXMg bWVhbnMgd2UgcmV1c2UgZGVyaXZlZCB2YWx1ZSAqLworKyAgICAgICAgaWYgKGRjdHgtPnhmbGFn cyAmIERSQkdfRkxBR19DVFJfVVNFX0RGKSB7CisrICAgICAgICAgICAgYWRpbiA9IE5VTEw7Cisr ICAgICAgICAgICAgYWRpbmxlbiA9IDE7CisrICAgICAgICB9CisrICAgIH0gZWxzZQorKyAgICAg ICAgYWRpbmxlbiA9IDA7CisrCisrICAgIGZvciAoOzspIHsKKysgICAgICAgIGluY18xMjgoY2N0 eCk7CisrICAgICAgICBpZiAoIShkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkgJiYgIWRj dHgtPmxiX3ZhbGlkKSB7CisrICAgICAgICAgICAgQUVTX2VuY3J5cHQoY2N0eC0+ViwgZGN0eC0+ bGIsICZjY3R4LT5rcyk7CisrICAgICAgICAgICAgZGN0eC0+bGJfdmFsaWQgPSAxOworKyAgICAg ICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKG91dGxlbiA8IDE2KSB7 CisrICAgICAgICAgICAgLyogVXNlIEsgYXMgdGVtcCBzcGFjZSBhcyBpdCB3aWxsIGJlIHVwZGF0 ZWQgKi8KKysgICAgICAgICAgICBBRVNfZW5jcnlwdChjY3R4LT5WLCBjY3R4LT5LLCAmY2N0eC0+ a3MpOworKyAgICAgICAgICAgIGlmICghZmlwc19kcmJnX2Nwcm5nX3Rlc3QoZGN0eCwgY2N0eC0+ SykpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgIG1lbWNweShvdXQs IGNjdHgtPkssIG91dGxlbik7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAg ICAgICBBRVNfZW5jcnlwdChjY3R4LT5WLCBvdXQsICZjY3R4LT5rcyk7CisrICAgICAgICBpZiAo IWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRjdHgsIG91dCkpCisrICAgICAgICAgICAgcmV0dXJuIDA7 CisrICAgICAgICBvdXQgKz0gMTY7CisrICAgICAgICBvdXRsZW4gLT0gMTY7CisrICAgICAgICBp ZiAob3V0bGVuID09IDApCisrICAgICAgICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAgY3Ry X1VwZGF0ZShkY3R4LCBhZGluLCBhZGlubGVuLCBOVUxMLCAwLCBOVUxMLCAwKTsKKysKKysgICAg cmV0dXJuIDE7CisrCisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19jdHJfdW5pbnN0YW50aWF0ZShE UkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIG1lbXNldCgmZGN0eC0+ZC5jdHIsIDAsIHNpemVvZihE UkJHX0NUUl9DVFgpKTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCBmaXBzX2RyYmdfY3Ry X2luaXQoRFJCR19DVFggKmRjdHgpCisreworKyAgICBEUkJHX0NUUl9DVFggKmNjdHggPSAmZGN0 eC0+ZC5jdHI7CisrCisrICAgIHNpemVfdCBrZXlsZW47CisrCisrICAgIHN3aXRjaCAoZGN0eC0+ dHlwZSkgeworKyAgICBjYXNlIE5JRF9hZXNfMTI4X2N0cjoKKysgICAgICAgIGtleWxlbiA9IDE2 OworKyAgICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgTklEX2Flc18xOTJfY3RyOgorKyAgICAg ICAga2V5bGVuID0gMjQ7CisrICAgICAgICBicmVhazsKKysKKysgICAgY2FzZSBOSURfYWVzXzI1 Nl9jdHI6CisrICAgICAgICBrZXlsZW4gPSAzMjsKKysgICAgICAgIGJyZWFrOworKworKyAgICBk ZWZhdWx0OgorKyAgICAgICAgcmV0dXJuIC0yOworKyAgICB9CisrCisrICAgIGRjdHgtPmluc3Rh bnRpYXRlID0gZHJiZ19jdHJfaW5zdGFudGlhdGU7CisrICAgIGRjdHgtPnJlc2VlZCA9IGRyYmdf Y3RyX3Jlc2VlZDsKKysgICAgZGN0eC0+Z2VuZXJhdGUgPSBkcmJnX2N0cl9nZW5lcmF0ZTsKKysg ICAgZGN0eC0+dW5pbnN0YW50aWF0ZSA9IGRyYmdfY3RyX3VuaW5zdGFudGlhdGU7CisrCisrICAg IGNjdHgtPmtleWxlbiA9IGtleWxlbjsKKysgICAgZGN0eC0+c3RyZW5ndGggPSBrZXlsZW4gKiA4 OworKyAgICBkY3R4LT5ibG9ja2xlbmd0aCA9IDE2OworKyAgICBkY3R4LT5zZWVkbGVuID0ga2V5 bGVuICsgMTY7CisrCisrICAgIGlmIChkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfQ1RSX1VTRV9E RikgeworKyAgICAgICAgLyogZGYgaW5pdGlhbGlzYXRpb24gKi8KKysgICAgICAgIHN0YXRpYyB1 bnNpZ25lZCBjaGFyIGRmX2tleVszMl0gPSB7CisrICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHgw MiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKysgICAgICAgICAgICAweDA4LCAweDA5 LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLAorKyAgICAgICAgICAgIDB4MTAs IDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsCisrICAgICAgICAgICAg MHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgxZgorKyAgICAgICAg fTsKKysgICAgICAgIC8qIFNldCBrZXkgc2NoZWR1bGUgZm9yIGRmX2tleSAqLworKyAgICAgICAg QUVTX3NldF9lbmNyeXB0X2tleShkZl9rZXksIGRjdHgtPnN0cmVuZ3RoLCAmY2N0eC0+ZGZfa3Mp OworKworKyAgICAgICAgZGN0eC0+bWluX2VudHJvcHkgPSBjY3R4LT5rZXlsZW47CisrICAgICAg ICBkY3R4LT5tYXhfZW50cm9weSA9IERSQkdfTUFYX0xFTkdUSDsKKysgICAgICAgIGRjdHgtPm1p bl9ub25jZSA9IGRjdHgtPm1pbl9lbnRyb3B5IC8gMjsKKysgICAgICAgIGRjdHgtPm1heF9ub25j ZSA9IERSQkdfTUFYX0xFTkdUSDsKKysgICAgICAgIGRjdHgtPm1heF9wZXJzID0gRFJCR19NQVhf TEVOR1RIOworKyAgICAgICAgZGN0eC0+bWF4X2FkaW4gPSBEUkJHX01BWF9MRU5HVEg7CisrICAg IH0gZWxzZSB7CisrICAgICAgICBkY3R4LT5taW5fZW50cm9weSA9IGRjdHgtPnNlZWRsZW47Cisr ICAgICAgICBkY3R4LT5tYXhfZW50cm9weSA9IGRjdHgtPnNlZWRsZW47CisrICAgICAgICAvKiBO b25jZSBub3QgdXNlZCAqLworKyAgICAgICAgZGN0eC0+bWluX25vbmNlID0gMDsKKysgICAgICAg IGRjdHgtPm1heF9ub25jZSA9IDA7CisrICAgICAgICBkY3R4LT5tYXhfcGVycyA9IGRjdHgtPnNl ZWRsZW47CisrICAgICAgICBkY3R4LT5tYXhfYWRpbiA9IGRjdHgtPnNlZWRsZW47CisrICAgIH0K KysKKysgICAgZGN0eC0+bWF4X3JlcXVlc3QgPSAxIDw8IDE2OworKyAgICBkY3R4LT5yZXNlZWRf aW50ZXJ2YWwgPSAxIDw8IDI0OworKworKyAgICByZXR1cm4gMTsKKyt9CitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaGFzaC5jLmZpcHMgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2hhc2guYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9maXBzL2ZpcHNfZHJiZ19oYXNoLmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NTI0NTcy NSArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19oYXNoLmMJ MjAxNS0wNC0yMiAxNjowODo0MC4yOTUyNDU3MjUgKzAyMDAKK0BAIC0wLDAgKzEsMzU4IEBACisr LyogZmlwcy9yYW5kL2ZpcHNfZHJiZ19oYXNoLmMgKi8KKysvKiBXcml0dGVuIGJ5IERyIFN0ZXBo ZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKKysgKiBwcm9q ZWN0LgorKyAqLworKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBP cGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv d2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRv Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAq ICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wu b3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVu U1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHBy aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNv bnRhY3QKKysgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIK KysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBw cmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0Lgor KyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCBy ZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlz IHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2pl Y3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3Bl blNTTC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9w ZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVE IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBM SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF IE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlks IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBM T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQor KyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NT SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqLworKworKyNkZWZp bmUgT1BFTlNTTF9GSVBTQVBJCisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxz dHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8b3BlbnNz bC9maXBzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUgImZp cHNfcmFuZF9sY2wuaCIKKysKKysvKiBUaGlzIGlzIEhhc2hfZGYgZnJvbSBTUCA4MDAtOTAgMTAu NC4xICovCisrCisrc3RhdGljIGludCBoYXNoX2RmKERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBj aGFyICpvdXQsCisrICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMSwg c2l6ZV90IGluMWxlbiwKKysgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq aW4yLCBzaXplX3QgaW4ybGVuLAorKyAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj aGFyICppbjMsIHNpemVfdCBpbjNsZW4sCisrICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKmluNCwgc2l6ZV90IGluNGxlbikKKyt7CisrICAgIEVWUF9NRF9DVFggKm1jdHgg PSAmZGN0eC0+ZC5oYXNoLm1jdHg7CisrICAgIHVuc2lnbmVkIGNoYXIgKnZ0bXAgPSBkY3R4LT5k Lmhhc2gudnRtcDsKKysgICAgdW5zaWduZWQgY2hhciB0bXBbNl07CisrICAgIC8qIFN0YW5kYXJk IG9ubHkgZXZlciBuZWVkcyBzZWVkbGVuIGJ5dGVzIHdoaWNoIGlzIGFsd2F5cyBsZXNzIHRoYW4K KysgICAgICogbWF4aW11bSBwZXJtaXR0ZWQgc28gbm8gbmVlZCB0byBjaGVjayBsZW5ndGguCisr ICAgICAqLworKyAgICBzaXplX3Qgb3V0bGVuID0gZGN0eC0+c2VlZGxlbjsKKysgICAgdG1wWzBd ID0gMTsKKysgICAgdG1wWzFdID0gKChvdXRsZW4gKiA4KSA+PiAyNCkgJiAweGZmOworKyAgICB0 bXBbMl0gPSAoKG91dGxlbiAqIDgpID4+IDE2KSAmIDB4ZmY7CisrICAgIHRtcFszXSA9ICgob3V0 bGVuICogOCkgPj4gOCkgJiAweGZmOworKyAgICB0bXBbNF0gPSAob3V0bGVuICogOCkgJiAweGZm OworKyAgICBpZiAoIWluMSkgeworKyAgICAgICAgdG1wWzVdID0gKHVuc2lnbmVkIGNoYXIpaW4x bGVuOworKyAgICAgICAgaW4xID0gdG1wICsgNTsKKysgICAgICAgIGluMWxlbiA9IDE7CisrICAg IH0KKysgICAgZm9yICg7OykgeworKyAgICAgICAgaWYgKCFGSVBTX2RpZ2VzdGluaXQobWN0eCwg ZGN0eC0+ZC5oYXNoLm1kKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmICgh RklQU19kaWdlc3R1cGRhdGUobWN0eCwgdG1wLCA1KSkKKysgICAgICAgICAgICByZXR1cm4gMDsK KysgICAgICAgIGlmIChpbjEgJiYgIUZJUFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluMSwgaW4xbGVu KSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmIChpbjIgJiYgIUZJUFNfZGln ZXN0dXBkYXRlKG1jdHgsIGluMiwgaW4ybGVuKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysg ICAgICAgIGlmIChpbjMgJiYgIUZJUFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluMywgaW4zbGVuKSkK KysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmIChpbjQgJiYgIUZJUFNfZGlnZXN0 dXBkYXRlKG1jdHgsIGluNCwgaW40bGVuKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAg ICAgIGlmIChvdXRsZW4gPCBkY3R4LT5ibG9ja2xlbmd0aCkgeworKyAgICAgICAgICAgIGlmICgh RklQU19kaWdlc3RmaW5hbChtY3R4LCB2dG1wLCBOVUxMKSkKKysgICAgICAgICAgICAgICAgcmV0 dXJuIDA7CisrICAgICAgICAgICAgbWVtY3B5KG91dCwgdnRtcCwgb3V0bGVuKTsKKysgICAgICAg ICAgICBPUEVOU1NMX2NsZWFuc2UodnRtcCwgZGN0eC0+YmxvY2tsZW5ndGgpOworKyAgICAgICAg ICAgIHJldHVybiAxOworKyAgICAgICAgfSBlbHNlIGlmICghRklQU19kaWdlc3RmaW5hbChtY3R4 LCBvdXQsIE5VTEwpKQorKyAgICAgICAgICAgIHJldHVybiAwOworKworKyAgICAgICAgb3V0bGVu IC09IGRjdHgtPmJsb2NrbGVuZ3RoOworKyAgICAgICAgaWYgKG91dGxlbiA9PSAwKQorKyAgICAg ICAgICAgIHJldHVybiAxOworKyAgICAgICAgdG1wWzBdKys7CisrICAgICAgICBvdXQgKz0gZGN0 eC0+YmxvY2tsZW5ndGg7CisrICAgIH0KKyt9CisrCisrLyogQWRkIGFuIHVuc2lnbmVkIGJ1ZmZl ciB0byB0aGUgYnVmIHZhbHVlLCBzdG9yaW5nIHRoZSByZXN1bHQgaW4gYnVmLiBGb3IKKysgKiB0 aGlzIGFsZ29yaXRobSB0aGUgbGVuZ3RoIG9mIGlucHV0IG5ldmVyIGV4Y2VlZHMgdGhlIHNlZWQg bGVuZ3RoLgorKyAqLworKworK3N0YXRpYyB2b2lkIGN0eF9hZGRfYnVmKERSQkdfQ1RYICpkY3R4 LCB1bnNpZ25lZCBjaGFyICpidWYsCisrICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg Y2hhciAqaW4sIHNpemVfdCBpbmxlbikKKyt7CisrICAgIHNpemVfdCBpID0gaW5sZW47CisrICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnE7CisrICAgIHVuc2lnbmVkIGNoYXIgYywgKnA7CisrICAg IHAgPSBidWYgKyBkY3R4LT5zZWVkbGVuOworKyAgICBxID0gaW4gKyBpbmxlbjsKKysKKysgICAg T1BFTlNTTF9hc3NlcnQoaSA8PSBkY3R4LT5zZWVkbGVuKTsKKysKKysgICAgLyogU3BlY2lhbCBj YXNlOiB6ZXJvIGxlbmd0aCwganVzdCBpbmNyZW1lbnQgYnVmZmVyICovCisrICAgIGlmIChpKQor KyAgICAgICAgYyA9IDA7CisrICAgIGVsc2UKKysgICAgICAgIGMgPSAxOworKworKyAgICB3aGls ZSAoaSkgeworKyAgICAgICAgaW50IHI7CisrICAgICAgICBwLS07CisrICAgICAgICBxLS07Cisr ICAgICAgICByID0gKnAgKyAqcSArIGM7CisrICAgICAgICAvKiBDYXJyeSAqLworKyAgICAgICAg aWYgKHIgPiAweGZmKQorKyAgICAgICAgICAgIGMgPSAxOworKyAgICAgICAgZWxzZQorKyAgICAg ICAgICAgIGMgPSAwOworKyAgICAgICAgKnAgPSByICYgMHhmZjsKKysgICAgICAgIGktLTsKKysg ICAgfQorKworKyAgICBpID0gZGN0eC0+c2VlZGxlbiAtIGlubGVuOworKworKyAgICAvKiBJZiBu b3QgYWRkaW5nIHdob2xlIGJ1ZmZlciBoYW5kbGUgZmluYWwgY2FycmllcyAqLworKyAgICBpZiAo YyAmJiBpKSB7CisrICAgICAgICBkbyB7CisrICAgICAgICAgICAgcC0tOworKyAgICAgICAgICAg IGMgPSAqcDsKKysgICAgICAgICAgICBjKys7CisrICAgICAgICAgICAgKnAgPSBjOworKyAgICAg ICAgICAgIGlmIChjKQorKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9IHdoaWxl IChpLS0pOworKyAgICB9CisrfQorKworKy8qIEZpbmFsaXNlIGFuZCBhZGQgaGFzaCB0byBWICov CisrCisrc3RhdGljIGludCBjdHhfYWRkX21kKERSQkdfQ1RYICpkY3R4KQorK3sKKysgICAgaWYg KCFGSVBTX2RpZ2VzdGZpbmFsKCZkY3R4LT5kLmhhc2gubWN0eCwgZGN0eC0+ZC5oYXNoLnZ0bXAs IE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGN0eF9hZGRfYnVmKGRjdHgsIGRjdHgt PmQuaGFzaC5WLCBkY3R4LT5kLmhhc2gudnRtcCwgZGN0eC0+YmxvY2tsZW5ndGgpOworKyAgICBy ZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBoYXNoX2dlbihEUkJHX0NUWCAqZGN0eCwgdW5z aWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuKQorK3sKKysgICAgRFJCR19IQVNIX0NUWCAq aGN0eCA9ICZkY3R4LT5kLmhhc2g7CisrICAgIGlmIChvdXRsZW4gPT0gMCkKKysgICAgICAgIHJl dHVybiAxOworKyAgICBtZW1jcHkoaGN0eC0+dnRtcCwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbik7 CisrICAgIGZvciAoOzspIHsKKysgICAgICAgIEZJUFNfZGlnZXN0aW5pdCgmaGN0eC0+bWN0eCwg aGN0eC0+bWQpOworKyAgICAgICAgRklQU19kaWdlc3R1cGRhdGUoJmhjdHgtPm1jdHgsIGhjdHgt PnZ0bXAsIGRjdHgtPnNlZWRsZW4pOworKyAgICAgICAgaWYgKCEoZGN0eC0+eGZsYWdzICYgRFJC R19GTEFHX1RFU1QpICYmICFkY3R4LT5sYl92YWxpZCkgeworKyAgICAgICAgICAgIEZJUFNfZGln ZXN0ZmluYWwoJmhjdHgtPm1jdHgsIGRjdHgtPmxiLCBOVUxMKTsKKysgICAgICAgICAgICBkY3R4 LT5sYl92YWxpZCA9IDE7CisrICAgICAgICB9IGVsc2UgaWYgKG91dGxlbiA8IGRjdHgtPmJsb2Nr bGVuZ3RoKSB7CisrICAgICAgICAgICAgRklQU19kaWdlc3RmaW5hbCgmaGN0eC0+bWN0eCwgaGN0 eC0+dnRtcCwgTlVMTCk7CisrICAgICAgICAgICAgaWYgKCFmaXBzX2RyYmdfY3BybmdfdGVzdChk Y3R4LCBoY3R4LT52dG1wKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAg ICAgbWVtY3B5KG91dCwgaGN0eC0+dnRtcCwgb3V0bGVuKTsKKysgICAgICAgICAgICByZXR1cm4g MTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgRklQU19kaWdlc3RmaW5hbCgmaGN0 eC0+bWN0eCwgb3V0LCBOVUxMKTsKKysgICAgICAgICAgICBpZiAoIWZpcHNfZHJiZ19jcHJuZ190 ZXN0KGRjdHgsIG91dCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAg IG91dGxlbiAtPSBkY3R4LT5ibG9ja2xlbmd0aDsKKysgICAgICAgICAgICBpZiAob3V0bGVuID09 IDApCisrICAgICAgICAgICAgICAgIHJldHVybiAxOworKyAgICAgICAgICAgIG91dCArPSBkY3R4 LT5ibG9ja2xlbmd0aDsKKysgICAgICAgIH0KKysgICAgICAgIGN0eF9hZGRfYnVmKGRjdHgsIGhj dHgtPnZ0bXAsIE5VTEwsIDApOworKyAgICB9CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19oYXNo X2luc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudF9sZW4sCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbm9uY2UsIHNp emVfdCBub25jZV9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqcHN0ciwgc2l6ZV90IHBzdHJfbGVuKQorK3sKKysgICAgRFJCR19IQVNI X0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7CisrICAgIGlmICghaGFzaF9kZihkY3R4LCBoY3R4 LT5WLAorKyAgICAgICAgICAgICAgICAgZW50LCBlbnRfbGVuLCBub25jZSwgbm9uY2VfbGVuLCBw c3RyLCBwc3RyX2xlbiwgTlVMTCwgMCkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFo YXNoX2RmKGRjdHgsIGhjdHgtPkMsCisrICAgICAgICAgICAgICAgICBOVUxMLCAwLCBoY3R4LT5W LCBkY3R4LT5zZWVkbGVuLCBOVUxMLCAwLCBOVUxMLCAwKSkKKysgICAgICAgIHJldHVybiAwOwor KworKyNpZmRlZiBIQVNIX0RSQkdfVFJBQ0UKKysgICAgZnByaW50ZihzdGRlcnIsICJWK0MgYWZ0 ZXIgaW5zdGFudGlhdGU6XG4iKTsKKysgICAgaGV4cHJpbnQoc3RkZXJyLCBoY3R4LT5WLCBkY3R4 LT5zZWVkbGVuKTsKKysgICAgaGV4cHJpbnQoc3RkZXJyLCBoY3R4LT5DLCBkY3R4LT5zZWVkbGVu KTsKKysjZW5kaWYKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19oYXNo X3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXplX3QgZW50X2xlbiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5fbGVuKQor K3sKKysgICAgRFJCR19IQVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7CisrICAgIC8qIFYg YWJvdXQgdG8gYmUgdXBkYXRlZCBzbyB1c2UgQyBhcyBvdXRwdXQgaW5zdGVhZCAqLworKyAgICBp ZiAoIWhhc2hfZGYoZGN0eCwgaGN0eC0+QywKKysgICAgICAgICAgICAgICAgIE5VTEwsIDEsIGhj dHgtPlYsIGRjdHgtPnNlZWRsZW4sCisrICAgICAgICAgICAgICAgICBlbnQsIGVudF9sZW4sIGFk aW4sIGFkaW5fbGVuKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBtZW1jcHkoaGN0eC0+Viwg aGN0eC0+QywgZGN0eC0+c2VlZGxlbik7CisrICAgIGlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5D LCBOVUxMLCAwLAorKyAgICAgICAgICAgICAgICAgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbiwgTlVM TCwgMCwgTlVMTCwgMCkpCisrICAgICAgICByZXR1cm4gMDsKKysjaWZkZWYgSEFTSF9EUkJHX1RS QUNFCisrICAgIGZwcmludGYoc3RkZXJyLCAiVitDIGFmdGVyIHJlc2VlZDpcbiIpOworKyAgICBo ZXhwcmludChzdGRlcnIsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4pOworKyAgICBoZXhwcmludChz dGRlcnIsIGhjdHgtPkMsIGRjdHgtPnNlZWRsZW4pOworKyNlbmRpZgorKyAgICByZXR1cm4gMTsK Kyt9CisrCisrc3RhdGljIGludCBkcmJnX2hhc2hfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qg b3V0bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKmFkaW4sIHNpemVfdCBhZGluX2xlbikKKyt7CisrICAgIERSQkdfSEFTSF9DVFggKmhjdHgg PSAmZGN0eC0+ZC5oYXNoOworKyAgICBFVlBfTURfQ1RYICptY3R4ID0gJmhjdHgtPm1jdHg7Cisr ICAgIHVuc2lnbmVkIGNoYXIgdG1wWzRdOworKyAgICBpZiAoYWRpbiAmJiBhZGluX2xlbikgewor KyAgICAgICAgdG1wWzBdID0gMjsKKysgICAgICAgIGlmICghRklQU19kaWdlc3Rpbml0KG1jdHgs IGhjdHgtPm1kKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmICghRVZQX0Rp Z2VzdFVwZGF0ZShtY3R4LCB0bXAsIDEpKQorKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAg ICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1jdHgsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4pKQor KyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1j dHgsIGFkaW4sIGFkaW5fbGVuKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlm ICghY3R4X2FkZF9tZChkY3R4KSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAg ICBpZiAoIWhhc2hfZ2VuKGRjdHgsIG91dCwgb3V0bGVuKSkKKysgICAgICAgIHJldHVybiAwOwor KworKyAgICB0bXBbMF0gPSAzOworKyAgICBpZiAoIUZJUFNfZGlnZXN0aW5pdChtY3R4LCBoY3R4 LT5tZCkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1j dHgsIHRtcCwgMSkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFFVlBfRGlnZXN0VXBk YXRlKG1jdHgsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7Cisr CisrICAgIGlmICghY3R4X2FkZF9tZChkY3R4KSkKKysgICAgICAgIHJldHVybiAwOworKworKyAg ICBjdHhfYWRkX2J1ZihkY3R4LCBoY3R4LT5WLCBoY3R4LT5DLCBkY3R4LT5zZWVkbGVuKTsKKysK KysgICAgdG1wWzBdID0gKGRjdHgtPnJlc2VlZF9jb3VudGVyID4+IDI0KSAmIDB4ZmY7CisrICAg IHRtcFsxXSA9IChkY3R4LT5yZXNlZWRfY291bnRlciA+PiAxNikgJiAweGZmOworKyAgICB0bXBb Ml0gPSAoZGN0eC0+cmVzZWVkX2NvdW50ZXIgPj4gOCkgJiAweGZmOworKyAgICB0bXBbM10gPSBk Y3R4LT5yZXNlZWRfY291bnRlciAmIDB4ZmY7CisrICAgIGN0eF9hZGRfYnVmKGRjdHgsIGhjdHgt PlYsIHRtcCwgNCk7CisrI2lmZGVmIEhBU0hfRFJCR19UUkFDRQorKyAgICBmcHJpbnRmKHN0ZGVy ciwgIlYrQyBhZnRlciBnZW5lcmF0ZTpcbiIpOworKyAgICBoZXhwcmludChzdGRlcnIsIGhjdHgt PlYsIGRjdHgtPnNlZWRsZW4pOworKyAgICBoZXhwcmludChzdGRlcnIsIGhjdHgtPkMsIGRjdHgt PnNlZWRsZW4pOworKyNlbmRpZgorKyAgICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBk cmJnX2hhc2hfdW5pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIEVWUF9NRF9D VFhfY2xlYW51cCgmZGN0eC0+ZC5oYXNoLm1jdHgpOworKyAgICBPUEVOU1NMX2NsZWFuc2UoJmRj dHgtPmQuaGFzaCwgc2l6ZW9mKERSQkdfSEFTSF9DVFgpKTsKKysgICAgcmV0dXJuIDE7CisrfQor KworK2ludCBmaXBzX2RyYmdfaGFzaF9pbml0KERSQkdfQ1RYICpkY3R4KQorK3sKKysgICAgY29u c3QgRVZQX01EICptZDsKKysgICAgRFJCR19IQVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7 CisrICAgIG1kID0gRklQU19nZXRfZGlnZXN0YnluaWQoZGN0eC0+dHlwZSk7CisrICAgIGlmICgh bWQpCisrICAgICAgICByZXR1cm4gLTI7CisrICAgIHN3aXRjaCAoZGN0eC0+dHlwZSkgeworKyAg ICBjYXNlIE5JRF9zaGExOgorKyAgICAgICAgZGN0eC0+c3RyZW5ndGggPSAxMjg7CisrICAgICAg ICBicmVhazsKKysKKysgICAgY2FzZSBOSURfc2hhMjI0OgorKyAgICAgICAgZGN0eC0+c3RyZW5n dGggPSAxOTI7CisrICAgICAgICBicmVhazsKKysKKysgICAgZGVmYXVsdDoKKysgICAgICAgIGRj dHgtPnN0cmVuZ3RoID0gMjU2OworKyAgICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAgZGN0 eC0+aW5zdGFudGlhdGUgPSBkcmJnX2hhc2hfaW5zdGFudGlhdGU7CisrICAgIGRjdHgtPnJlc2Vl ZCA9IGRyYmdfaGFzaF9yZXNlZWQ7CisrICAgIGRjdHgtPmdlbmVyYXRlID0gZHJiZ19oYXNoX2dl bmVyYXRlOworKyAgICBkY3R4LT51bmluc3RhbnRpYXRlID0gZHJiZ19oYXNoX3VuaW5zdGFudGlh dGU7CisrCisrICAgIGRjdHgtPmQuaGFzaC5tZCA9IG1kOworKyAgICBFVlBfTURfQ1RYX2luaXQo JmhjdHgtPm1jdHgpOworKworKyAgICAvKiBUaGVzZSBhcmUgdGFrZW4gZnJvbSBTUCA4MDAtOTAg MTAuMSB0YWJsZSAyICovCisrCisrICAgIGRjdHgtPmJsb2NrbGVuZ3RoID0gTV9FVlBfTURfc2l6 ZShtZCk7CisrICAgIGlmIChkY3R4LT5ibG9ja2xlbmd0aCA+IDMyKQorKyAgICAgICAgZGN0eC0+ c2VlZGxlbiA9IDExMTsKKysgICAgZWxzZQorKyAgICAgICAgZGN0eC0+c2VlZGxlbiA9IDU1Owor KworKyAgICBkY3R4LT5taW5fZW50cm9weSA9IGRjdHgtPnN0cmVuZ3RoIC8gODsKKysgICAgZGN0 eC0+bWF4X2VudHJvcHkgPSBEUkJHX01BWF9MRU5HVEg7CisrCisrICAgIGRjdHgtPm1pbl9ub25j ZSA9IGRjdHgtPm1pbl9lbnRyb3B5IC8gMjsKKysgICAgZGN0eC0+bWF4X25vbmNlID0gRFJCR19N QVhfTEVOR1RIOworKworKyAgICBkY3R4LT5tYXhfcGVycyA9IERSQkdfTUFYX0xFTkdUSDsKKysg ICAgZGN0eC0+bWF4X2FkaW4gPSBEUkJHX01BWF9MRU5HVEg7CisrCisrICAgIGRjdHgtPm1heF9y ZXF1ZXN0ID0gMSA8PCAxNjsKKysgICAgZGN0eC0+cmVzZWVkX2ludGVydmFsID0gMSA8PCAyNDsK KysKKysgICAgcmV0dXJuIDE7CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Zp cHMvZmlwc19kcmJnX2htYWMuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNf ZHJiZ19obWFjLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaG1h Yy5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTUyNDU3MjUgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaG1hYy5jCTIwMTUtMDQtMjIgMTY6MDg6NDAu Mjk1MjQ1NzI1ICswMjAwCitAQCAtMCwwICsxLDI3MCBAQAorKy8qIGZpcHMvcmFuZC9maXBzX2Ry YmdfaG1hYy5jICovCisrLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBv cGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCisrICogcHJvamVjdC4KKysgKi8KKysvKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxs IHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAq IGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv cHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisr ICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg b3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2lu ZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4g VGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5v dCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Np b24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgbGljZW5z aW5nQE9wZW5TU0wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3Bl blNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAg IHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJp YnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcK KysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNv ZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBp biB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysg KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJ UycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBB UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IK KysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICog U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuCisrICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKysgKi8KKysKKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2lu Y2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRl IDxvcGVuc3NsL2V2cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KKysjaW5jbHVkZSA8 b3BlbnNzbC9hZXMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKKysKKytzdGF0 aWMgaW50IGRyYmdfaG1hY191cGRhdGUoRFJCR19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMSwgc2l6ZV90IGluMWxlbiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4yLCBzaXpl X3QgaW4ybGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj aGFyICppbjMsIHNpemVfdCBpbjNsZW4pCisreworKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBj MCA9IDAsIGMxID0gMTsKKysgICAgRFJCR19ITUFDX0NUWCAqaG1hYyA9ICZkY3R4LT5kLmhtYWM7 CisrICAgIEhNQUNfQ1RYICpoY3R4ID0gJmhtYWMtPmhjdHg7CisrCisrICAgIGlmICghSE1BQ19J bml0X2V4KGhjdHgsIGhtYWMtPkssIGRjdHgtPmJsb2NrbGVuZ3RoLCBobWFjLT5tZCwgTlVMTCkp CisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4LCBobWFjLT5W LCBkY3R4LT5ibG9ja2xlbmd0aCkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFITUFD X1VwZGF0ZShoY3R4LCAmYzAsIDEpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChpbjFs ZW4gJiYgIUhNQUNfVXBkYXRlKGhjdHgsIGluMSwgaW4xbGVuKSkKKysgICAgICAgIHJldHVybiAw OworKyAgICBpZiAoaW4ybGVuICYmICFITUFDX1VwZGF0ZShoY3R4LCBpbjIsIGluMmxlbikpCisr ICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKGluM2xlbiAmJiAhSE1BQ19VcGRhdGUoaGN0eCwg aW4zLCBpbjNsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIGlmICghSE1BQ19GaW5h bChoY3R4LCBobWFjLT5LLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICBpZiAo IUhNQUNfSW5pdF9leChoY3R4LCBobWFjLT5LLCBkY3R4LT5ibG9ja2xlbmd0aCwgaG1hYy0+bWQs IE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmICghSE1BQ19VcGRhdGUoaGN0eCwg aG1hYy0+ViwgZGN0eC0+YmxvY2tsZW5ndGgpKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAg IGlmICghSE1BQ19GaW5hbChoY3R4LCBobWFjLT5WLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAw OworKworKyAgICBpZiAoIWluMWxlbiAmJiAhaW4ybGVuICYmICFpbjNsZW4pCisrICAgICAgICBy ZXR1cm4gMTsKKysKKysgICAgaWYgKCFITUFDX0luaXRfZXgoaGN0eCwgaG1hYy0+SywgZGN0eC0+ YmxvY2tsZW5ndGgsIGhtYWMtPm1kLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBp ZiAoIUhNQUNfVXBkYXRlKGhjdHgsIGhtYWMtPlYsIGRjdHgtPmJsb2NrbGVuZ3RoKSkKKysgICAg ICAgIHJldHVybiAwOworKyAgICBpZiAoIUhNQUNfVXBkYXRlKGhjdHgsICZjMSwgMSkpCisrICAg ICAgICByZXR1cm4gMDsKKysgICAgaWYgKGluMWxlbiAmJiAhSE1BQ19VcGRhdGUoaGN0eCwgaW4x LCBpbjFsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChpbjJsZW4gJiYgIUhNQUNf VXBkYXRlKGhjdHgsIGluMiwgaW4ybGVuKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAo aW4zbGVuICYmICFITUFDX1VwZGF0ZShoY3R4LCBpbjMsIGluM2xlbikpCisrICAgICAgICByZXR1 cm4gMDsKKysKKysgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPkssIE5VTEwpKQorKyAg ICAgICAgcmV0dXJuIDA7CisrCisrICAgIGlmICghSE1BQ19Jbml0X2V4KGhjdHgsIGhtYWMtPkss IGRjdHgtPmJsb2NrbGVuZ3RoLCBobWFjLT5tZCwgTlVMTCkpCisrICAgICAgICByZXR1cm4gMDsK KysgICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4LCBobWFjLT5WLCBkY3R4LT5ibG9ja2xlbmd0aCkp CisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMt PlYsIE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIHJldHVybiAxOworKworK30K KysKKytzdGF0aWMgaW50IGRyYmdfaG1hY19pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnQs IHNpemVfdCBlbnRfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKm5vbmNlLCBzaXplX3Qgbm9uY2VfbGVuLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBzdHIsIHNpemVfdCBwc3Ry X2xlbikKKyt7CisrICAgIERSQkdfSE1BQ19DVFggKmhtYWMgPSAmZGN0eC0+ZC5obWFjOworKyAg ICBtZW1zZXQoaG1hYy0+SywgMCwgZGN0eC0+YmxvY2tsZW5ndGgpOworKyAgICBtZW1zZXQoaG1h Yy0+ViwgMSwgZGN0eC0+YmxvY2tsZW5ndGgpOworKyAgICBpZiAoIWRyYmdfaG1hY191cGRhdGUo ZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGVudCwgZW50X2xlbiwgbm9uY2UsIG5v bmNlX2xlbiwgcHN0ciwgcHN0cl9sZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrI2lmZGVm IEhNQUNfRFJCR19UUkFDRQorKyAgICBmcHJpbnRmKHN0ZGVyciwgIksrViBhZnRlciBpbnN0YW50 aWF0ZTpcbiIpOworKyAgICBoZXhwcmludChzdGRlcnIsIGhtYWMtPkssIGhtYWMtPmJsb2NrbGVu Z3RoKTsKKysgICAgaGV4cHJpbnQoc3RkZXJyLCBobWFjLT5WLCBobWFjLT5ibG9ja2xlbmd0aCk7 CisrI2VuZGlmCisrICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IGRyYmdfaG1hY19y ZXNlZWQoRFJCR19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudF9sZW4sCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGluX2xlbikKKyt7 CisrICAgIGlmICghZHJiZ19obWFjX3VwZGF0ZShkY3R4LCBlbnQsIGVudF9sZW4sIGFkaW4sIGFk aW5fbGVuLCBOVUxMLCAwKSkKKysgICAgICAgIHJldHVybiAwOworKworKyNpZmRlZiBITUFDX0RS QkdfVFJBQ0UKKysgICAgeworKyAgICAgICAgRFJCR19ITUFDX0NUWCAqaG1hYyA9ICZkY3R4LT5k LmhtYWM7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIksrViBhZnRlciByZXNlZWQ6XG4iKTsK KysgICAgICAgIGhleHByaW50KHN0ZGVyciwgaG1hYy0+SywgaG1hYy0+YmxvY2tsZW5ndGgpOwor KyAgICAgICAgaGV4cHJpbnQoc3RkZXJyLCBobWFjLT5WLCBobWFjLT5ibG9ja2xlbmd0aCk7Cisr ICAgIH0KKysjZW5kaWYKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19o bWFjX2dlbmVyYXRlKERSQkdfQ1RYICpkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3QgYWRpbl9sZW4p CisreworKyAgICBEUkJHX0hNQUNfQ1RYICpobWFjID0gJmRjdHgtPmQuaG1hYzsKKysgICAgSE1B Q19DVFggKmhjdHggPSAmaG1hYy0+aGN0eDsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqVnRt cCA9IGhtYWMtPlY7CisrICAgIGlmIChhZGluX2xlbiAmJiAhZHJiZ19obWFjX3VwZGF0ZShkY3R4 LCBhZGluLCBhZGluX2xlbiwgTlVMTCwgMCwgTlVMTCwgMCkpCisrICAgICAgICByZXR1cm4gMDsK KysgICAgZm9yICg7OykgeworKyAgICAgICAgaWYgKCFITUFDX0luaXRfZXgoaGN0eCwgaG1hYy0+ SywgZGN0eC0+YmxvY2tsZW5ndGgsIGhtYWMtPm1kLCBOVUxMKSkKKysgICAgICAgICAgICByZXR1 cm4gMDsKKysgICAgICAgIGlmICghSE1BQ19VcGRhdGUoaGN0eCwgVnRtcCwgZGN0eC0+YmxvY2ts ZW5ndGgpKQorKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgaWYgKCEoZGN0eC0+eGZs YWdzICYgRFJCR19GTEFHX1RFU1QpICYmICFkY3R4LT5sYl92YWxpZCkgeworKyAgICAgICAgICAg IGlmICghSE1BQ19GaW5hbChoY3R4LCBkY3R4LT5sYiwgTlVMTCkpCisrICAgICAgICAgICAgICAg IHJldHVybiAwOworKyAgICAgICAgICAgIGRjdHgtPmxiX3ZhbGlkID0gMTsKKysgICAgICAgICAg ICBWdG1wID0gZGN0eC0+bGI7CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9IGVs c2UgaWYgKG91dGxlbiA+IGRjdHgtPmJsb2NrbGVuZ3RoKSB7CisrICAgICAgICAgICAgaWYgKCFI TUFDX0ZpbmFsKGhjdHgsIG91dCwgTlVMTCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOwor KyAgICAgICAgICAgIGlmICghZmlwc19kcmJnX2Nwcm5nX3Rlc3QoZGN0eCwgb3V0KSkKKysgICAg ICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgVnRtcCA9IG91dDsKKysgICAgICAg IH0gZWxzZSB7CisrICAgICAgICAgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPlYsIE5V TEwpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICBpZiAoIWZpcHNf ZHJiZ19jcHJuZ190ZXN0KGRjdHgsIGhtYWMtPlYpKQorKyAgICAgICAgICAgICAgICByZXR1cm4g MDsKKysgICAgICAgICAgICBtZW1jcHkob3V0LCBobWFjLT5WLCBvdXRsZW4pOworKyAgICAgICAg ICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICAgICAgb3V0ICs9IGRjdHgtPmJsb2NrbGVuZ3Ro OworKyAgICAgICAgb3V0bGVuIC09IGRjdHgtPmJsb2NrbGVuZ3RoOworKyAgICB9CisrICAgIGlm ICghZHJiZ19obWFjX3VwZGF0ZShkY3R4LCBhZGluLCBhZGluX2xlbiwgTlVMTCwgMCwgTlVMTCwg MCkpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRp YyBpbnQgZHJiZ19obWFjX3VuaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgpCisreworKyAgICBI TUFDX0NUWF9jbGVhbnVwKCZkY3R4LT5kLmhtYWMuaGN0eCk7CisrICAgIE9QRU5TU0xfY2xlYW5z ZSgmZGN0eC0+ZC5obWFjLCBzaXplb2YoRFJCR19ITUFDX0NUWCkpOworKyAgICByZXR1cm4gMTsK Kyt9CisrCisraW50IGZpcHNfZHJiZ19obWFjX2luaXQoRFJCR19DVFggKmRjdHgpCisreworKyAg ICBjb25zdCBFVlBfTUQgKm1kID0gTlVMTDsKKysgICAgRFJCR19ITUFDX0NUWCAqaGN0eCA9ICZk Y3R4LT5kLmhtYWM7CisrICAgIGRjdHgtPnN0cmVuZ3RoID0gMjU2OworKyAgICBzd2l0Y2ggKGRj dHgtPnR5cGUpIHsKKysgICAgY2FzZSBOSURfaG1hY1dpdGhTSEExOgorKyAgICAgICAgbWQgPSBF VlBfc2hhMSgpOworKyAgICAgICAgZGN0eC0+c3RyZW5ndGggPSAxMjg7CisrICAgICAgICBicmVh azsKKysKKysgICAgY2FzZSBOSURfaG1hY1dpdGhTSEEyMjQ6CisrICAgICAgICBtZCA9IEVWUF9z aGEyMjQoKTsKKysgICAgICAgIGRjdHgtPnN0cmVuZ3RoID0gMTkyOworKyAgICAgICAgYnJlYWs7 CisrCisrICAgIGNhc2UgTklEX2htYWNXaXRoU0hBMjU2OgorKyAgICAgICAgbWQgPSBFVlBfc2hh MjU2KCk7CisrICAgICAgICBicmVhazsKKysKKysgICAgY2FzZSBOSURfaG1hY1dpdGhTSEEzODQ6 CisrICAgICAgICBtZCA9IEVWUF9zaGEzODQoKTsKKysgICAgICAgIGJyZWFrOworKworKyAgICBj YXNlIE5JRF9obWFjV2l0aFNIQTUxMjoKKysgICAgICAgIG1kID0gRVZQX3NoYTUxMigpOworKyAg ICAgICAgYnJlYWs7CisrCisrICAgIGRlZmF1bHQ6CisrICAgICAgICBkY3R4LT5zdHJlbmd0aCA9 IDA7CisrICAgICAgICByZXR1cm4gLTI7CisrICAgIH0KKysgICAgZGN0eC0+aW5zdGFudGlhdGUg PSBkcmJnX2htYWNfaW5zdGFudGlhdGU7CisrICAgIGRjdHgtPnJlc2VlZCA9IGRyYmdfaG1hY19y ZXNlZWQ7CisrICAgIGRjdHgtPmdlbmVyYXRlID0gZHJiZ19obWFjX2dlbmVyYXRlOworKyAgICBk Y3R4LT51bmluc3RhbnRpYXRlID0gZHJiZ19obWFjX3VuaW5zdGFudGlhdGU7CisrICAgIEhNQUNf Q1RYX2luaXQoJmhjdHgtPmhjdHgpOworKyAgICBoY3R4LT5tZCA9IG1kOworKyAgICBkY3R4LT5i bG9ja2xlbmd0aCA9IE1fRVZQX01EX3NpemUobWQpOworKyAgICBkY3R4LT5zZWVkbGVuID0gTV9F VlBfTURfc2l6ZShtZCk7CisrCisrICAgIGRjdHgtPm1pbl9lbnRyb3B5ID0gZGN0eC0+c3RyZW5n dGggLyA4OworKyAgICBkY3R4LT5tYXhfZW50cm9weSA9IERSQkdfTUFYX0xFTkdUSDsKKysKKysg ICAgZGN0eC0+bWluX25vbmNlID0gZGN0eC0+bWluX2VudHJvcHkgLyAyOworKyAgICBkY3R4LT5t YXhfbm9uY2UgPSBEUkJHX01BWF9MRU5HVEg7CisrCisrICAgIGRjdHgtPm1heF9wZXJzID0gRFJC R19NQVhfTEVOR1RIOworKyAgICBkY3R4LT5tYXhfYWRpbiA9IERSQkdfTUFYX0xFTkdUSDsKKysK KysgICAgZGN0eC0+bWF4X3JlcXVlc3QgPSAxIDw8IDE2OworKyAgICBkY3R4LT5yZXNlZWRfaW50 ZXJ2YWwgPSAxIDw8IDI0OworKworKyAgICByZXR1cm4gMTsKKyt9CitkaWZmIC11cCBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfbGliLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZmlwcy9maXBzX2RyYmdfbGliLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlw cy9maXBzX2RyYmdfbGliLmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NTI0NTcyNSArMDIw MAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19saWIuYwkyMDE1LTA0 LTIyIDE2OjA4OjQwLjI5NTI0NTcyNSArMDIwMAorQEAgLTAsMCArMSw1NTMgQEAKKysvKiBXcml0 dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9w ZW5TU0wKKysgKiBwcm9qZWN0LgorKyAqLworKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0 IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAq CisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg d2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEu IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu CisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl ZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRp c2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAg IHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAq ICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVu U1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRw Oi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9v bGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBl bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0 aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlz c2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCisrICoK KysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNh bGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIg bmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3Bl blNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdo YXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50 OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRo ZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQg KGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJF U1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP LCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g RVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMg QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQK KysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBU T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBB TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAor KyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor KyAqLworKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8u aD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3Jh bmQuaD4KKysjaW5jbHVkZSAiZmlwc19sb2NsLmgiCisrI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wu aCIKKysKKysvKiBTdXBwb3J0IGZyYW1ld29yayBmb3IgU1A4MDAtOTAgRFJCR3MgKi8KKysKKytp bnQgRklQU19kcmJnX2luaXQoRFJCR19DVFggKmRjdHgsIGludCB0eXBlLCB1bnNpZ25lZCBpbnQg ZmxhZ3MpCisreworKyAgICBpbnQgcnY7CisrICAgIG1lbXNldChkY3R4LCAwLCBzaXplb2YoRFJC R19DVFgpKTsKKysgICAgZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRDsK KysgICAgZGN0eC0+eGZsYWdzID0gZmxhZ3M7CisrICAgIGRjdHgtPnR5cGUgPSB0eXBlOworKwor KyAgICBkY3R4LT5pZmxhZ3MgPSAwOworKyAgICBkY3R4LT5lbnRyb3B5X2Jsb2NrbGVuID0gMDsK KysgICAgZGN0eC0+aGVhbHRoX2NoZWNrX2NudCA9IDA7CisrICAgIGRjdHgtPmhlYWx0aF9jaGVj a19pbnRlcnZhbCA9IERSQkdfSEVBTFRIX0lOVEVSVkFMOworKworKyAgICBydiA9IGZpcHNfZHJi Z19oYXNoX2luaXQoZGN0eCk7CisrCisrICAgIGlmIChydiA9PSAtMikKKysgICAgICAgIHJ2ID0g Zmlwc19kcmJnX2N0cl9pbml0KGRjdHgpOworKyAgICBpZiAocnYgPT0gLTIpCisrICAgICAgICBy diA9IGZpcHNfZHJiZ19obWFjX2luaXQoZGN0eCk7CisrCisrICAgIGlmIChydiA8PSAwKSB7Cisr ICAgICAgICBpZiAocnYgPT0gLTIpCisrICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19E UkJHX0lOSVQsIEZJUFNfUl9VTlNVUFBPUlRFRF9EUkJHX1RZUEUpOworKyAgICAgICAgZWxzZQor KyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTklULCBGSVBTX1JfRVJST1Jf SU5JVElBTElTSU5HX0RSQkcpOworKyAgICB9CisrCisrICAgIC8qIElmIG5vdCBpbiB0ZXN0IG1v ZGUgcnVuIHNlbGZ0ZXN0cyBvbiBEUkJHIG9mIHRoZSBzYW1lIHR5cGUgKi8KKysKKysgICAgaWYg KCEoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QpKSB7CisrICAgICAgICBpZiAoIUZJUFNf ZHJiZ19oZWFsdGhfY2hlY2soZGN0eCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX0RSQkdfSU5JVCwgRklQU19SX1NFTEZURVNUX0ZBSUxVUkUpOworKyAgICAgICAgICAgIHJl dHVybiAwOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHJldHVybiBydjsKKyt9CisrCisr RFJCR19DVFggKkZJUFNfZHJiZ19uZXcoaW50IHR5cGUsIHVuc2lnbmVkIGludCBmbGFncykKKyt7 CisrICAgIERSQkdfQ1RYICpkY3R4OworKyAgICBkY3R4ID0gT1BFTlNTTF9tYWxsb2Moc2l6ZW9m KERSQkdfQ1RYKSk7CisrICAgIGlmICghZGN0eCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0Zf RklQU19EUkJHX05FVywgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworKyAgICAgICAgcmV0dXJuIE5V TEw7CisrICAgIH0KKysKKysgICAgaWYgKHR5cGUgPT0gMCkgeworKyAgICAgICAgbWVtc2V0KGRj dHgsIDAsIHNpemVvZihEUkJHX0NUWCkpOworKyAgICAgICAgZGN0eC0+dHlwZSA9IDA7CisrICAg ICAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEOworKyAgICAgICAg cmV0dXJuIGRjdHg7CisrICAgIH0KKysKKysgICAgaWYgKEZJUFNfZHJiZ19pbml0KGRjdHgsIHR5 cGUsIGZsYWdzKSA8PSAwKSB7CisrICAgICAgICBPUEVOU1NMX2ZyZWUoZGN0eCk7CisrICAgICAg ICByZXR1cm4gTlVMTDsKKysgICAgfQorKworKyAgICByZXR1cm4gZGN0eDsKKyt9CisrCisrdm9p ZCBGSVBTX2RyYmdfZnJlZShEUkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIGlmIChkY3R4LT51bmlu c3RhbnRpYXRlKQorKyAgICAgICAgZGN0eC0+dW5pbnN0YW50aWF0ZShkY3R4KTsKKysgICAgLyog RG9uJ3QgZnJlZSB1cCBkZWZhdWx0IERSQkcgKi8KKysgICAgaWYgKGRjdHggPT0gRklQU19nZXRf ZGVmYXVsdF9kcmJnKCkpIHsKKysgICAgICAgIG1lbXNldChkY3R4LCAwLCBzaXplb2YoRFJCR19D VFgpKTsKKysgICAgICAgIGRjdHgtPnR5cGUgPSAwOworKyAgICAgICAgZGN0eC0+c3RhdHVzID0g RFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRDsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIE9QRU5T U0xfY2xlYW5zZSgmZGN0eC0+ZCwgc2l6ZW9mKGRjdHgtPmQpKTsKKysgICAgICAgIE9QRU5TU0xf ZnJlZShkY3R4KTsKKysgICAgfQorK30KKysKKytzdGF0aWMgc2l6ZV90IGZpcHNfZ2V0X2VudHJv cHkoRFJCR19DVFggKmRjdHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhf bGVuKQorK3sKKysgICAgdW5zaWduZWQgY2hhciAqdG91dCwgKnA7CisrICAgIHNpemVfdCBibCA9 IGRjdHgtPmVudHJvcHlfYmxvY2tsZW4sIHJ2OworKyAgICBpZiAoIWRjdHgtPmdldF9lbnRyb3B5 KQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdf VEVTVCB8fCAhYmwpCisrICAgICAgICByZXR1cm4gZGN0eC0+Z2V0X2VudHJvcHkoZGN0eCwgcG91 dCwgZW50cm9weSwgbWluX2xlbiwgbWF4X2xlbik7CisrICAgIHJ2ID0gZGN0eC0+Z2V0X2VudHJv cHkoZGN0eCwgJnRvdXQsIGVudHJvcHkgKyBibCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICBtaW5fbGVuICsgYmwsIG1heF9sZW4gKyBibCk7CisrICAgIGlmICh0b3V0ID09IE5VTEwpCisr ICAgICAgICByZXR1cm4gMDsKKysgICAgKnBvdXQgPSB0b3V0ICsgYmw7CisrICAgIGlmIChydiA8 IChtaW5fbGVuICsgYmwpIHx8IChydiAlIGJsKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICAv KiBDb21wYXJlIGNvbnNlY3V0aXZlIGJsb2NrcyBmb3IgY29udGludW91cyBQUk5HIHRlc3QgKi8K KysgICAgZm9yIChwID0gdG91dDsgcCA8IHRvdXQgKyBydiAtIGJsOyBwICs9IGJsKSB7CisrICAg ICAgICBpZiAoIW1lbWNtcChwLCBwICsgYmwsIGJsKSkgeworKyAgICAgICAgICAgIEZJUFNlcnIo RklQU19GX0ZJUFNfR0VUX0VOVFJPUFksIEZJUFNfUl9FTlRST1BZX1NPVVJDRV9TVFVDSyk7Cisr ICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICB9CisrICAgIH0KKysgICAgcnYgLT0gYmw7 CisrICAgIGlmIChydiA+IG1heF9sZW4pCisrICAgICAgICByZXR1cm4gbWF4X2xlbjsKKysgICAg cmV0dXJuIHJ2OworK30KKysKKytzdGF0aWMgdm9pZCBmaXBzX2NsZWFudXBfZW50cm9weShEUkJH X0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyICpvdXQsIHNpemVfdCBvbGVuKQorK3sKKysgICAgc2l6ZV90IGJsOworKyAgICBpZiAoZGN0 eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QpCisrICAgICAgICBibCA9IDA7CisrICAgIGVsc2UK KysgICAgICAgIGJsID0gZGN0eC0+ZW50cm9weV9ibG9ja2xlbjsKKysgICAgLyogQ2FsbCBjbGVh bnVwIHdpdGggb3JpZ2luYWwgYXJndW1lbnRzICovCisrICAgIGRjdHgtPmNsZWFudXBfZW50cm9w eShkY3R4LCBvdXQgLSBibCwgb2xlbiArIGJsKTsKKyt9CisrCisraW50IEZJUFNfZHJiZ19pbnN0 YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKnBlcnMsIHNpemVfdCBwZXJzbGVuKQorK3sKKysgICAgc2l6ZV90IGVu dGxlbiA9IDAsIG5vbmNlbGVuID0gMDsKKysgICAgdW5zaWduZWQgY2hhciAqbm9uY2UgPSBOVUxM LCAqZW50cm9weSA9IE5VTEw7CisrCisrI2lmIDAKKysgICAgLyogUHV0IGhlcmUgc28gZXJyb3Ig c2NyaXB0IHBpY2tzIHRoZW0gdXAgKi8KKysgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lO U1RBTlRJQVRFLAorKyAgICAgICAgICAgIEZJUFNfUl9QRVJTT05BTElTQVRJT05fU1RSSU5HX1RP T19MT05HKTsKKysgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLCBGSVBT X1JfSU5fRVJST1JfU1RBVEUpOworKyAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFO VElBVEUsIEZJUFNfUl9BTFJFQURZX0lOU1RBTlRJQVRFRCk7CisrICAgIEZJUFNlcnIoRklQU19G X0ZJUFNfRFJCR19JTlNUQU5USUFURSwgRklQU19SX0VSUk9SX1JFVFJJRVZJTkdfRU5UUk9QWSk7 CisrICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTlNUQU5USUFURSwgRklQU19SX0VSUk9S X1JFVFJJRVZJTkdfTk9OQ0UpOworKyAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFO VElBVEUsIEZJUFNfUl9JTlNUQU5USUFURV9FUlJPUik7CisrICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19JTlNUQU5USUFURSwgRklQU19SX0RSQkdfTk9UX0lOSVRJQUxJU0VEKTsKKysjZW5k aWYKKysKKysgICAgaW50IHIgPSAwOworKworKyAgICBpZiAocGVyc2xlbiA+IGRjdHgtPm1heF9w ZXJzKSB7CisrICAgICAgICByID0gRklQU19SX1BFUlNPTkFMSVNBVElPTl9TVFJJTkdfVE9PX0xP Tkc7CisrICAgICAgICBnb3RvIGVuZDsKKysgICAgfQorKworKyAgICBpZiAoIWRjdHgtPmluc3Rh bnRpYXRlKSB7CisrICAgICAgICByID0gRklQU19SX0RSQkdfTk9UX0lOSVRJQUxJU0VEOworKyAg ICAgICAgZ290byBlbmQ7CisrICAgIH0KKysKKysgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJH X1NUQVRVU19VTklOSVRJQUxJU0VEKSB7CisrICAgICAgICBpZiAoZGN0eC0+c3RhdHVzID09IERS QkdfU1RBVFVTX0VSUk9SKQorKyAgICAgICAgICAgIHIgPSBGSVBTX1JfSU5fRVJST1JfU1RBVEU7 CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgciA9IEZJUFNfUl9BTFJFQURZX0lOU1RBTlRJ QVRFRDsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisrICAgIGRjdHgtPnN0YXR1cyA9 IERSQkdfU1RBVFVTX0VSUk9SOworKworKyAgICBlbnRsZW4gPSBmaXBzX2dldF9lbnRyb3B5KGRj dHgsICZlbnRyb3B5LCBkY3R4LT5zdHJlbmd0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkY3R4LT5taW5fZW50cm9weSwgZGN0eC0+bWF4X2VudHJvcHkpOworKworKyAgICBpZiAo ZW50bGVuIDwgZGN0eC0+bWluX2VudHJvcHkgfHwgZW50bGVuID4gZGN0eC0+bWF4X2VudHJvcHkp IHsKKysgICAgICAgIHIgPSBGSVBTX1JfRVJST1JfUkVUUklFVklOR19FTlRST1BZOworKyAgICAg ICAgZ290byBlbmQ7CisrICAgIH0KKysKKysgICAgaWYgKGRjdHgtPm1heF9ub25jZSA+IDAgJiYg ZGN0eC0+Z2V0X25vbmNlKSB7CisrICAgICAgICBub25jZWxlbiA9IGRjdHgtPmdldF9ub25jZShk Y3R4LCAmbm9uY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkY3R4LT5z dHJlbmd0aCAvIDIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkY3R4LT5t aW5fbm9uY2UsIGRjdHgtPm1heF9ub25jZSk7CisrCisrICAgICAgICBpZiAobm9uY2VsZW4gPCBk Y3R4LT5taW5fbm9uY2UgfHwgbm9uY2VsZW4gPiBkY3R4LT5tYXhfbm9uY2UpIHsKKysgICAgICAg ICAgICByID0gRklQU19SX0VSUk9SX1JFVFJJRVZJTkdfTk9OQ0U7CisrICAgICAgICAgICAgZ290 byBlbmQ7CisrICAgICAgICB9CisrCisrICAgIH0KKysKKysgICAgaWYgKCFkY3R4LT5pbnN0YW50 aWF0ZShkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJvcHksIGVudGxlbiwg bm9uY2UsIG5vbmNlbGVuLCBwZXJzLCBwZXJzbGVuKSkgeworKyAgICAgICAgciA9IEZJUFNfUl9F UlJPUl9JTlNUQU5USUFUSU5HX0RSQkc7CisrICAgICAgICBnb3RvIGVuZDsKKysgICAgfQorKwor KyAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19SRUFEWTsKKysgICAgaWYgKCEoZGN0eC0+ aWZsYWdzICYgRFJCR19DVVNUT01fUkVTRUVEKSkKKysgICAgICAgIGRjdHgtPnJlc2VlZF9jb3Vu dGVyID0gMTsKKysKKysgZW5kOgorKworKyAgICBpZiAoZW50cm9weSAmJiBkY3R4LT5jbGVhbnVw X2VudHJvcHkpCisrICAgICAgICBmaXBzX2NsZWFudXBfZW50cm9weShkY3R4LCBlbnRyb3B5LCBl bnRsZW4pOworKworKyAgICBpZiAobm9uY2UgJiYgZGN0eC0+Y2xlYW51cF9ub25jZSkKKysgICAg ICAgIGRjdHgtPmNsZWFudXBfbm9uY2UoZGN0eCwgbm9uY2UsIG5vbmNlbGVuKTsKKysKKysgICAg aWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19SRUFEWSkKKysgICAgICAgIHJldHVybiAx OworKworKyAgICBpZiAociAmJiAhKGRjdHgtPmlmbGFncyAmIERSQkdfRkxBR19OT0VSUikpCisr ICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFOVElBVEUsIHIpOworKworKyAg ICByZXR1cm4gMDsKKysKKyt9CisrCisrc3RhdGljIGludCBkcmJnX3Jlc2VlZChEUkJHX0NUWCAq ZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4s IHNpemVfdCBhZGlubGVuLCBpbnQgaGNoZWNrKQorK3sKKysgICAgdW5zaWduZWQgY2hhciAqZW50 cm9weSA9IE5VTEw7CisrICAgIHNpemVfdCBlbnRsZW4gPSAwOworKyAgICBpbnQgciA9IDA7Cisr CisrI2lmIDAKKysgICAgRklQU2VycihGSVBTX0ZfRFJCR19SRVNFRUQsIEZJUFNfUl9OT1RfSU5T VEFOVElBVEVEKTsKKysgICAgRklQU2VycihGSVBTX0ZfRFJCR19SRVNFRUQsIEZJUFNfUl9BRERJ VElPTkFMX0lOUFVUX1RPT19MT05HKTsKKysjZW5kaWYKKysgICAgaWYgKGRjdHgtPnN0YXR1cyAh PSBEUkJHX1NUQVRVU19SRUFEWQorKyAgICAgICAgJiYgZGN0eC0+c3RhdHVzICE9IERSQkdfU1RB VFVTX1JFU0VFRCkgeworKyAgICAgICAgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19F UlJPUikKKysgICAgICAgICAgICByID0gRklQU19SX0lOX0VSUk9SX1NUQVRFOworKyAgICAgICAg ZWxzZSBpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX1VOSU5JVElBTElTRUQpCisrICAg ICAgICAgICAgciA9IEZJUFNfUl9OT1RfSU5TVEFOVElBVEVEOworKyAgICAgICAgZ290byBlbmQ7 CisrICAgIH0KKysKKysgICAgaWYgKCFhZGluKQorKyAgICAgICAgYWRpbmxlbiA9IDA7CisrICAg IGVsc2UgaWYgKGFkaW5sZW4gPiBkY3R4LT5tYXhfYWRpbikgeworKyAgICAgICAgciA9IEZJUFNf Ul9BRERJVElPTkFMX0lOUFVUX1RPT19MT05HOworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0K KysKKysgICAgZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfRVJST1I7CisrICAgIC8qIFBlZm9y bSBoZWFsdGggY2hlY2sgb24gYWxsIHJlc2VlZCBvcGVyYXRpb25zIGlmIG5vdCBhIHByZWRpY3Rp b24KKysgICAgICogcmVzaXN0YW5jZSByZXF1ZXN0IGFuZCBub3QgaW4gdGVzdCBtb2RlLgorKyAg ICAgKi8KKysgICAgaWYgKGhjaGVjayAmJiAhKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19URVNU KSkgeworKyAgICAgICAgaWYgKCFGSVBTX2RyYmdfaGVhbHRoX2NoZWNrKGRjdHgpKSB7CisrICAg ICAgICAgICAgciA9IEZJUFNfUl9TRUxGVEVTVF9GQUlMVVJFOworKyAgICAgICAgICAgIGdvdG8g ZW5kOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGVudGxlbiA9IGZpcHNfZ2V0X2VudHJv cHkoZGN0eCwgJmVudHJvcHksIGRjdHgtPnN0cmVuZ3RoLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRjdHgtPm1pbl9lbnRyb3B5LCBkY3R4LT5tYXhfZW50cm9weSk7CisrCisrICAg IGlmIChlbnRsZW4gPCBkY3R4LT5taW5fZW50cm9weSB8fCBlbnRsZW4gPiBkY3R4LT5tYXhfZW50 cm9weSkgeworKyAgICAgICAgciA9IEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX0VOVFJPUFk7Cisr ICAgICAgICBnb3RvIGVuZDsKKysgICAgfQorKworKyAgICBpZiAoIWRjdHgtPnJlc2VlZChkY3R4 LCBlbnRyb3B5LCBlbnRsZW4sIGFkaW4sIGFkaW5sZW4pKQorKyAgICAgICAgZ290byBlbmQ7Cisr CisrICAgIGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX1JFQURZOworKyAgICBpZiAoIShkY3R4 LT5pZmxhZ3MgJiBEUkJHX0NVU1RPTV9SRVNFRUQpKQorKyAgICAgICAgZGN0eC0+cmVzZWVkX2Nv dW50ZXIgPSAxOworKyBlbmQ6CisrCisrICAgIGlmIChlbnRyb3B5ICYmIGRjdHgtPmNsZWFudXBf ZW50cm9weSkKKysgICAgICAgIGZpcHNfY2xlYW51cF9lbnRyb3B5KGRjdHgsIGVudHJvcHksIGVu dGxlbik7CisrCisrICAgIGlmIChkY3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfUkVBRFkpCisr ICAgICAgICByZXR1cm4gMTsKKysKKysgICAgaWYgKHIgJiYgIShkY3R4LT5pZmxhZ3MgJiBEUkJH X0ZMQUdfTk9FUlIpKQorKyAgICAgICAgRklQU2VycihGSVBTX0ZfRFJCR19SRVNFRUQsIHIpOwor KworKyAgICByZXR1cm4gMDsKKyt9CisrCisraW50IEZJUFNfZHJiZ19yZXNlZWQoRFJCR19DVFgg KmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwg c2l6ZV90IGFkaW5sZW4pCisreworKyAgICByZXR1cm4gZHJiZ19yZXNlZWQoZGN0eCwgYWRpbiwg YWRpbmxlbiwgMSk7CisrfQorKworK3N0YXRpYyBpbnQgZmlwc19kcmJnX2NoZWNrKERSQkdfQ1RY ICpkY3R4KQorK3sKKysgICAgaWYgKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19URVNUKQorKyAg ICAgICAgcmV0dXJuIDE7CisrICAgIGRjdHgtPmhlYWx0aF9jaGVja19jbnQrKzsKKysgICAgaWYg KGRjdHgtPmhlYWx0aF9jaGVja19jbnQgPj0gZGN0eC0+aGVhbHRoX2NoZWNrX2ludGVydmFsKSB7 CisrICAgICAgICBpZiAoIUZJUFNfZHJiZ19oZWFsdGhfY2hlY2soZGN0eCkpIHsKKysgICAgICAg ICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfQ0hFQ0ssIEZJUFNfUl9TRUxGVEVTVF9GQUlM VVJFKTsKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBy ZXR1cm4gMTsKKyt9CisrCisraW50IEZJUFNfZHJiZ19nZW5lcmF0ZShEUkJHX0NUWCAqZGN0eCwg dW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuLAorKyAgICAgICAgICAgICAgICAgICAg ICAgaW50IHByZWRpY3Rpb25fcmVzaXN0YW5jZSwKKysgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKQorK3sKKysgICAgaW50IHIg PSAwOworKworKyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgeworKyAgICAgICAgRklQ U2VycihGSVBTX0ZfRklQU19EUkJHX0dFTkVSQVRFLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsK KysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICAgIGlmICghZmlwc19kcmJnX2NoZWNr KGRjdHgpKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIGlmIChkY3R4LT5zdGF0dXMgIT0g RFJCR19TVEFUVVNfUkVBRFkKKysgICAgICAgICYmIGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRV U19SRVNFRUQpIHsKKysgICAgICAgIGlmIChkY3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfRVJS T1IpCisrICAgICAgICAgICAgciA9IEZJUFNfUl9JTl9FUlJPUl9TVEFURTsKKysgICAgICAgIGVs c2UgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEKQorKyAgICAg ICAgICAgIHIgPSBGSVBTX1JfTk9UX0lOU1RBTlRJQVRFRDsKKysgICAgICAgIGdvdG8gZW5kOwor KyAgICB9CisrCisrICAgIGlmIChvdXRsZW4gPiBkY3R4LT5tYXhfcmVxdWVzdCkgeworKyAgICAg ICAgciA9IEZJUFNfUl9SRVFVRVNUX1RPT19MQVJHRV9GT1JfRFJCRzsKKysgICAgICAgIHJldHVy biAwOworKyAgICB9CisrCisrICAgIGlmIChhZGlubGVuID4gZGN0eC0+bWF4X2FkaW4pIHsKKysg ICAgICAgIHIgPSBGSVBTX1JfQURESVRJT05BTF9JTlBVVF9UT09fTE9ORzsKKysgICAgICAgIGdv dG8gZW5kOworKyAgICB9CisrCisrICAgIGlmIChkY3R4LT5pZmxhZ3MgJiBEUkJHX0NVU1RPTV9S RVNFRUQpCisrICAgICAgICBkY3R4LT5nZW5lcmF0ZShkY3R4LCBOVUxMLCBvdXRsZW4sIE5VTEws IDApOworKyAgICBlbHNlIGlmIChkY3R4LT5yZXNlZWRfY291bnRlciA+PSBkY3R4LT5yZXNlZWRf aW50ZXJ2YWwpCisrICAgICAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19SRVNFRUQ7Cisr CisrICAgIGlmIChkY3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfUkVTRUVEIHx8IHByZWRpY3Rp b25fcmVzaXN0YW5jZSkgeworKyAgICAgICAgLyogSWYgcHJlZGljdGlvbiByZXNpc3RhbmNlIHJl cXVlc3QgZG9uJ3QgZG8gaGVhbHRoIGNoZWNrICovCisrICAgICAgICBpbnQgaGNoZWNrID0gcHJl ZGljdGlvbl9yZXNpc3RhbmNlID8gMCA6IDE7CisrCisrICAgICAgICBpZiAoIWRyYmdfcmVzZWVk KGRjdHgsIGFkaW4sIGFkaW5sZW4sIGhjaGVjaykpIHsKKysgICAgICAgICAgICByID0gRklQU19S X1JFU0VFRF9FUlJPUjsKKysgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgIH0KKysgICAg ICAgIGFkaW4gPSBOVUxMOworKyAgICAgICAgYWRpbmxlbiA9IDA7CisrICAgIH0KKysKKysgICAg aWYgKCFkY3R4LT5nZW5lcmF0ZShkY3R4LCBvdXQsIG91dGxlbiwgYWRpbiwgYWRpbmxlbikpIHsK KysgICAgICAgIHIgPSBGSVBTX1JfR0VORVJBVEVfRVJST1I7CisrICAgICAgICBkY3R4LT5zdGF0 dXMgPSBEUkJHX1NUQVRVU19FUlJPUjsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrICAg IGlmICghKGRjdHgtPmlmbGFncyAmIERSQkdfQ1VTVE9NX1JFU0VFRCkpIHsKKysgICAgICAgIGlm IChkY3R4LT5yZXNlZWRfY291bnRlciA+PSBkY3R4LT5yZXNlZWRfaW50ZXJ2YWwpCisrICAgICAg ICAgICAgZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfUkVTRUVEOworKyAgICAgICAgZWxzZQor KyAgICAgICAgICAgIGRjdHgtPnJlc2VlZF9jb3VudGVyKys7CisrICAgIH0KKysKKysgZW5kOgor KyAgICBpZiAocikgeworKyAgICAgICAgaWYgKCEoZGN0eC0+aWZsYWdzICYgRFJCR19GTEFHX05P RVJSKSkKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfR0VORVJBVEUsIHIp OworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDE7CisrfQorKwor K2ludCBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIGlu dCBydjsKKysgICAgaWYgKCFkY3R4LT51bmluc3RhbnRpYXRlKQorKyAgICAgICAgcnYgPSAxOwor KyAgICBlbHNlCisrICAgICAgICBydiA9IGRjdHgtPnVuaW5zdGFudGlhdGUoZGN0eCk7CisrICAg IC8qIEFsdGhvdWdoIHdlJ2QgbGlrZSB0byBjbGVhbnNlIGhlcmUgd2UgY2FuJ3QgYmVjYXVzZSB3 ZSBoYXZlIHRvCisrICAgICAqIHRlc3QgdGhlIHVuaW5zdGFudGlhdGUgcmVhbGx5IHplcm9lcyB0 aGUgZGF0YS4KKysgICAgICovCisrICAgIG1lbXNldCgmZGN0eC0+ZCwgMCwgc2l6ZW9mKGRjdHgt PmQpKTsKKysgICAgZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRDsKKysg ICAgLyogSWYgbWV0aG9kIGhhcyBwcm9ibGVtcyB1bmluc3RhbnRpYXRpbmcsIHJldHVybiBlcnJv ciAqLworKyAgICByZXR1cm4gcnY7CisrfQorKworK2ludCBGSVBTX2RyYmdfc2V0X2NhbGxiYWNr cyhEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICgq Z2V0X2VudHJvcHkpIChEUkJHX0NUWCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwb3V0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCBtaW5fbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCBtYXhfbGVuKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p ZCAoKmNsZWFudXBfZW50cm9weSkgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl X3Qgb2xlbiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBlbnRyb3B5X2Js b2NrbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKCpnZXRfbm9uY2Up IChEUkJHX0NUWCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcG91dCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksIHNpemVfdCBtaW5fbGVuLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg bWF4X2xlbiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpjbGVhbnVwX25v bmNlKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9sZW4pKQorK3sKKysgICAg aWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEKQorKyAgICAgICAg cmV0dXJuIDA7CisrICAgIGRjdHgtPmVudHJvcHlfYmxvY2tsZW4gPSBlbnRyb3B5X2Jsb2NrbGVu OworKyAgICBkY3R4LT5nZXRfZW50cm9weSA9IGdldF9lbnRyb3B5OworKyAgICBkY3R4LT5jbGVh bnVwX2VudHJvcHkgPSBjbGVhbnVwX2VudHJvcHk7CisrICAgIGRjdHgtPmdldF9ub25jZSA9IGdl dF9ub25jZTsKKysgICAgZGN0eC0+Y2xlYW51cF9ub25jZSA9IGNsZWFudXBfbm9uY2U7CisrICAg IHJldHVybiAxOworK30KKysKKytpbnQgRklQU19kcmJnX3NldF9yYW5kX2NhbGxiYWNrcyhEUkJH X0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKCpn ZXRfYWRpbikgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcG91dCksCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmNsZWFudXBfYWRpbikgKERSQkdfQ1RYICpj dHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9sZW4pLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAoKnJhbmRfc2VlZF9jYikgKERSQkdfQ1RYICpjdHgsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dm9pZCAqYnVmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBudW0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAoKnJhbmRfYWRkX2NiKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1ZiwgaW50IG51bSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv dWJsZSBlbnRyb3B5KSkKKyt7CisrICAgIGlmIChkY3R4LT5zdGF0dXMgIT0gRFJCR19TVEFUVVNf VU5JTklUSUFMSVNFRCkKKysgICAgICAgIHJldHVybiAwOworKyAgICBkY3R4LT5nZXRfYWRpbiA9 IGdldF9hZGluOworKyAgICBkY3R4LT5jbGVhbnVwX2FkaW4gPSBjbGVhbnVwX2FkaW47CisrICAg IGRjdHgtPnJhbmRfc2VlZF9jYiA9IHJhbmRfc2VlZF9jYjsKKysgICAgZGN0eC0+cmFuZF9hZGRf Y2IgPSByYW5kX2FkZF9jYjsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3ZvaWQgKkZJUFNfZHJi Z19nZXRfYXBwX2RhdGEoRFJCR19DVFggKmRjdHgpCisreworKyAgICByZXR1cm4gZGN0eC0+YXBw X2RhdGE7CisrfQorKworK3ZvaWQgRklQU19kcmJnX3NldF9hcHBfZGF0YShEUkJHX0NUWCAqZGN0 eCwgdm9pZCAqYXBwX2RhdGEpCisreworKyAgICBkY3R4LT5hcHBfZGF0YSA9IGFwcF9kYXRhOwor K30KKysKKytzaXplX3QgRklQU19kcmJnX2dldF9ibG9ja2xlbmd0aChEUkJHX0NUWCAqZGN0eCkK Kyt7CisrICAgIHJldHVybiBkY3R4LT5ibG9ja2xlbmd0aDsKKyt9CisrCisraW50IEZJUFNfZHJi Z19nZXRfc3RyZW5ndGgoRFJCR19DVFggKmRjdHgpCisreworKyAgICByZXR1cm4gZGN0eC0+c3Ry ZW5ndGg7CisrfQorKworK3ZvaWQgRklQU19kcmJnX3NldF9jaGVja19pbnRlcnZhbChEUkJHX0NU WCAqZGN0eCwgaW50IGludGVydmFsKQorK3sKKysgICAgZGN0eC0+aGVhbHRoX2NoZWNrX2ludGVy dmFsID0gaW50ZXJ2YWw7CisrfQorKworK3ZvaWQgRklQU19kcmJnX3NldF9yZXNlZWRfaW50ZXJ2 YWwoRFJCR19DVFggKmRjdHgsIGludCBpbnRlcnZhbCkKKyt7CisrICAgIGRjdHgtPnJlc2VlZF9p bnRlcnZhbCA9IGludGVydmFsOworK30KKysKKytzdGF0aWMgaW50IGRyYmdfc3RpY2sgPSAwOwor KworK3ZvaWQgRklQU19kcmJnX3N0aWNrKGludCBvbm9mZikKKyt7CisrICAgIGRyYmdfc3RpY2sg PSBvbm9mZjsKKyt9CisrCisrLyogQ29udGludW91cyBEUkJHIHV0aWxpdHkgZnVuY3Rpb24gKi8K KytpbnQgZmlwc19kcmJnX2Nwcm5nX3Rlc3QoRFJCR19DVFggKmRjdHgsIGNvbnN0IHVuc2lnbmVk IGNoYXIgKm91dCkKKyt7CisrICAgIC8qIE5vIENQUk5HIGluIHRlc3QgbW9kZSAqLworKyAgICBp ZiAoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QpCisrICAgICAgICByZXR1cm4gMTsKKysg ICAgLyogQ2hlY2sgYmxvY2sgaXMgdmFsaWQ6IHNob3VsZCBuZXZlciBoYXBwZW4gKi8KKysgICAg aWYgKGRjdHgtPmxiX3ZhbGlkID09IDApIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19DUFJOR19URVNULCBGSVBTX1JfSU5URVJOQUxfRVJST1IpOworKyAgICAgICAgZmlwc19z ZXRfc2VsZnRlc3RfZmFpbCgpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgaWYg KGRyYmdfc3RpY2spCisrICAgICAgICBtZW1jcHkoZGN0eC0+bGIsIG91dCwgZGN0eC0+YmxvY2ts ZW5ndGgpOworKyAgICAvKiBDaGVjayBhZ2FpbnN0IGxhc3QgYmxvY2s6IGZhaWwgaWYgbWF0Y2gg Ki8KKysgICAgaWYgKCFtZW1jbXAoZGN0eC0+bGIsIG91dCwgZGN0eC0+YmxvY2tsZW5ndGgpKSB7 CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfQ1BSTkdfVEVTVCwgRklQU19SX0RS QkdfU1RVQ0spOworKyAgICAgICAgZmlwc19zZXRfc2VsZnRlc3RfZmFpbCgpOworKyAgICAgICAg cmV0dXJuIDA7CisrICAgIH0KKysgICAgLyogU2F2ZSBsYXN0IGJsb2NrIGZvciBuZXh0IGNvbXBh cmlzb24gKi8KKysgICAgbWVtY3B5KGRjdHgtPmxiLCBvdXQsIGRjdHgtPmJsb2NrbGVuZ3RoKTsK KysgICAgcmV0dXJuIDE7CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMv Zmlwc19kcmJnX3JhbmQuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJi Z19yYW5kLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfcmFuZC5j LmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTUyNDU3MjUgKzAyMDAKKysrKyBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfcmFuZC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk1 MjQ1NzI1ICswMjAwCitAQCAtMCwwICsxLDE2NiBAQAorKy8qIGZpcHMvcmFuZC9maXBzX2RyYmdf cmFuZC5jICovCisrLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVu c3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCisrICogcHJvamVjdC4KKysgKi8KKysvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJp Z2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJl IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFy ZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRp c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly aWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoK KysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3Ig dXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBh Y2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl dmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3Bl blNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhl IG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBi ZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u IEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgbGljZW5zaW5n QE9wZW5TU0wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNT TCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBl cm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0 aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysg KiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3 YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0 aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycn IEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUg RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysg KiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO Q0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu CisrICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1 ZGUgPG9wZW5zc2wvY3J5cHRvLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2luY2x1 ZGUgPG9wZW5zc2wvcmFuZC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgorKyNp bmNsdWRlICJmaXBzX3JhbmRfbGNsLmgiCisrCisrLyogTWFwcGluZyBvZiBTUDgwMC05MCBEUkJH cyB0byBPcGVuU1NMIFJBTkRfTUVUSE9EICovCisrCisrLyogU2luY2Ugd2Ugb25seSBoYXZlIG9u ZSBnbG9iYWwgUFJORyB1c2VkIGF0IGFueSB0aW1lIGluIE9wZW5TU0wgdXNlIGEgZ2xvYmFsCisr ICogdmFyaWFibGUgdG8gc3RvcmUgY29udGV4dC4KKysgKi8KKysKKytzdGF0aWMgRFJCR19DVFgg b3NzbF9kY3R4OworKworK0RSQkdfQ1RYICpGSVBTX2dldF9kZWZhdWx0X2RyYmcodm9pZCkKKyt7 CisrICAgIHJldHVybiAmb3NzbF9kY3R4OworK30KKysKKytzdGF0aWMgaW50IGZpcHNfZHJiZ19i eXRlcyh1bnNpZ25lZCBjaGFyICpvdXQsIGludCBjb3VudCkKKyt7CisrICAgIERSQkdfQ1RYICpk Y3R4ID0gJm9zc2xfZGN0eDsKKysgICAgaW50IHJ2ID0gMDsKKysgICAgdW5zaWduZWQgY2hhciAq YWRpbiA9IE5VTEw7CisrICAgIHNpemVfdCBhZGlubGVuID0gMDsKKysgICAgQ1JZUFRPX3dfbG9j ayhDUllQVE9fTE9DS19SQU5EKTsKKysgICAgZG8geworKyAgICAgICAgc2l6ZV90IHJjbnQ7Cisr ICAgICAgICBpZiAoY291bnQgPiAoaW50KWRjdHgtPm1heF9yZXF1ZXN0KQorKyAgICAgICAgICAg IHJjbnQgPSBkY3R4LT5tYXhfcmVxdWVzdDsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBy Y250ID0gY291bnQ7CisrICAgICAgICBpZiAoZGN0eC0+Z2V0X2FkaW4pIHsKKysgICAgICAgICAg ICBhZGlubGVuID0gZGN0eC0+Z2V0X2FkaW4oZGN0eCwgJmFkaW4pOworKyAgICAgICAgICAgIGlm IChhZGlubGVuICYmICFhZGluKSB7CisrICAgICAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19CWVRFUywKKysgICAgICAgICAgICAgICAgICAgICAgICBGSVBTX1JfRVJST1JfUkVU UklFVklOR19BRERJVElPTkFMX0lOUFVUKTsKKysgICAgICAgICAgICAgICAgZ290byBlcnI7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgcnYgPSBGSVBTX2RyYmdfZ2VuZXJh dGUoZGN0eCwgb3V0LCByY250LCAwLCBhZGluLCBhZGlubGVuKTsKKysgICAgICAgIGlmIChhZGlu KSB7CisrICAgICAgICAgICAgaWYgKGRjdHgtPmNsZWFudXBfYWRpbikKKysgICAgICAgICAgICAg ICAgZGN0eC0+Y2xlYW51cF9hZGluKGRjdHgsIGFkaW4sIGFkaW5sZW4pOworKyAgICAgICAgICAg IGFkaW4gPSBOVUxMOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFydikKKysgICAgICAgICAg ICBnb3RvIGVycjsKKysgICAgICAgIG91dCArPSByY250OworKyAgICAgICAgY291bnQgLT0gcmNu dDsKKysgICAgfQorKyAgICB3aGlsZSAoY291bnQpOworKyAgICBydiA9IDE7CisrIGVycjoKKysg ICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOworKyAgICByZXR1cm4gcnY7Cisr fQorKworK3N0YXRpYyBpbnQgZmlwc19kcmJnX3BzZXVkbyh1bnNpZ25lZCBjaGFyICpvdXQsIGlu dCBjb3VudCkKKyt7CisrICAgIGlmIChmaXBzX2RyYmdfYnl0ZXMob3V0LCBjb3VudCkgPD0gMCkK KysgICAgICAgIHJldHVybiAtMTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQg Zmlwc19kcmJnX3N0YXR1cyh2b2lkKQorK3sKKysgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9k Y3R4OworKyAgICBpbnQgcnY7CisrICAgIENSWVBUT19yX2xvY2soQ1JZUFRPX0xPQ0tfUkFORCk7 CisrICAgIHJ2ID0gZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX1JFQURZID8gMSA6IDA7Cisr ICAgIENSWVBUT19yX3VubG9jayhDUllQVE9fTE9DS19SQU5EKTsKKysgICAgcmV0dXJuIHJ2Owor K30KKysKKytzdGF0aWMgdm9pZCBmaXBzX2RyYmdfY2xlYW51cCh2b2lkKQorK3sKKysgICAgRFJC R19DVFggKmRjdHggPSAmb3NzbF9kY3R4OworKyAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NL X1JBTkQpOworKyAgICBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KTsKKysgICAgQ1JZUFRP X3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOworK30KKysKKytzdGF0aWMgaW50IGZpcHNfZHJi Z19zZWVkKGNvbnN0IHZvaWQgKnNlZWQsIGludCBzZWVkbGVuKQorK3sKKysgICAgRFJCR19DVFgg KmRjdHggPSAmb3NzbF9kY3R4OworKyAgICBpZiAoZGN0eC0+cmFuZF9zZWVkX2NiKQorKyAgICAg ICAgcmV0dXJuIGRjdHgtPnJhbmRfc2VlZF9jYihkY3R4LCBzZWVkLCBzZWVkbGVuKTsKKysgICAg cmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgZmlwc19kcmJnX2FkZChjb25zdCB2b2lkICpz ZWVkLCBpbnQgc2VlZGxlbiwgZG91YmxlIGFkZF9lbnRyb3B5KQorK3sKKysgICAgRFJCR19DVFgg KmRjdHggPSAmb3NzbF9kY3R4OworKyAgICBpZiAoZGN0eC0+cmFuZF9hZGRfY2IpCisrICAgICAg ICByZXR1cm4gZGN0eC0+cmFuZF9hZGRfY2IoZGN0eCwgc2VlZCwgc2VlZGxlbiwgYWRkX2VudHJv cHkpOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGNvbnN0IFJBTkRfTUVUSE9EIHJh bmRfZHJiZ19tZXRoID0geworKyAgICBmaXBzX2RyYmdfc2VlZCwKKysgICAgZmlwc19kcmJnX2J5 dGVzLAorKyAgICBmaXBzX2RyYmdfY2xlYW51cCwKKysgICAgZmlwc19kcmJnX2FkZCwKKysgICAg Zmlwc19kcmJnX3BzZXVkbywKKysgICAgZmlwc19kcmJnX3N0YXR1cworK307CisrCisrY29uc3Qg UkFORF9NRVRIT0QgKkZJUFNfZHJiZ19tZXRob2Qodm9pZCkKKyt7CisrICAgIHJldHVybiAmcmFu ZF9kcmJnX21ldGg7CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlw c19kcmJnX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2Ry Ymdfc2VsZnRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19z ZWxmdGVzdC5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTYyNDU3NDkgKzAyMDAKKysrKyBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfc2VsZnRlc3QuYwkyMDE1LTA0LTIy IDE2OjA4OjQwLjI5NjI0NTc0OSArMDIwMAorQEAgLTAsMCArMSw4MjcgQEAKKysvKiBmaXBzL3Jh bmQvZmlwc19kcmJnX3NlbGZ0ZXN0LmMgKi8KKysvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBI ZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKKysgKiBwcm9qZWN0Lgor KyAqLworKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NM IFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICog bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAK KysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRp c3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlv bmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxh eSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5j bHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBm b3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLyki CisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFBy b2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJv ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdy aXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QK KysgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAg ICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3 cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisr ICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4g dGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5v cmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wg UFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK KysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5T U0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9G IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhP V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD T05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElU WSBPRiBTVUNIIERBTUFHRS4KKysgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqLworKworKyNpbmNsdWRlIDxz dHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8b3BlbnNz bC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KKysjaW5jbHVkZSAiZmlw c19yYW5kX2xjbC5oIgorKyNpbmNsdWRlICJmaXBzX2xvY2wuaCIKKysKKysjaW5jbHVkZSAiZmlw c19kcmJnX3NlbGZ0ZXN0LmgiCisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKyAgICBpbnQgcG9zdDsK KysgICAgaW50IG5pZDsKKysgICAgdW5zaWduZWQgaW50IGZsYWdzOworKworKyAgICAvKiBLQVQg ZGF0YSBmb3Igbm8gUFIgKi8KKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50OworKyAgICBz aXplX3QgZW50bGVuOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpub25jZTsKKysgICAgc2l6 ZV90IG5vbmNlbGVuOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwZXJzOworKyAgICBzaXpl X3QgcGVyc2xlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbjsKKysgICAgc2l6ZV90 IGFkaW5sZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudHJlc2VlZDsKKysgICAgc2l6 ZV90IGVudHJlc2VlZGxlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbnJlc2VlZDsK KysgICAgc2l6ZV90IGFkaW5yZXNlZWRsZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFk aW4yOworKyAgICBzaXplX3QgYWRpbjJsZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmth dDsKKysgICAgc2l6ZV90IGthdGxlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2F0MjsK KysgICAgc2l6ZV90IGthdDJsZW47CisrCisrICAgIC8qIEtBVCBkYXRhIGZvciBQUiAqLworKyAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnRfcHI7CisrICAgIHNpemVfdCBlbnRsZW5fcHI7Cisr ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlX3ByOworKyAgICBzaXplX3Qgbm9uY2VsZW5f cHI7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBlcnNfcHI7CisrICAgIHNpemVfdCBwZXJz bGVuX3ByOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluX3ByOworKyAgICBzaXplX3Qg YWRpbmxlbl9wcjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50cHJfcHI7CisrICAgIHNp emVfdCBlbnRwcmxlbl9wcjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbmdfcHI7Cisr ICAgIHNpemVfdCBhZGluZ2xlbl9wcjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50Z19w cjsKKysgICAgc2l6ZV90IGVudGdsZW5fcHI7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmth dF9wcjsKKysgICAgc2l6ZV90IGthdGxlbl9wcjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAq a2F0Ml9wcjsKKysgICAgc2l6ZV90IGthdDJsZW5fcHI7CisrCisrfSBEUkJHX1NFTEZURVNUX0RB VEE7CisrCisrI2RlZmluZSBtYWtlX2RyYmdfdGVzdF9kYXRhKG5pZCwgZmxhZywgcHIsIHApIHtw LCBuaWQsIGZsYWcgfCBEUkJHX0ZMQUdfVEVTVCwgXAorKyAgICAgICAgcHIjI19lbnRyb3B5aW5w dXQsIHNpemVvZihwciMjX2VudHJvcHlpbnB1dCksIFwKKysgICAgICAgIHByIyNfbm9uY2UsIHNp emVvZihwciMjX25vbmNlKSwgXAorKyAgICAgICAgcHIjI19wZXJzb25hbGl6YXRpb25zdHJpbmcs IHNpemVvZihwciMjX3BlcnNvbmFsaXphdGlvbnN0cmluZyksIFwKKysgICAgICAgIHByIyNfYWRk aXRpb25hbGlucHV0LCBzaXplb2YocHIjI19hZGRpdGlvbmFsaW5wdXQpLCBcCisrICAgICAgICBw ciMjX2VudHJvcHlpbnB1dHJlc2VlZCwgc2l6ZW9mKHByIyNfZW50cm9weWlucHV0cmVzZWVkKSwg XAorKyAgICAgICAgcHIjI19hZGRpdGlvbmFsaW5wdXRyZXNlZWQsIHNpemVvZihwciMjX2FkZGl0 aW9uYWxpbnB1dHJlc2VlZCksIFwKKysgICAgICAgIHByIyNfYWRkaXRpb25hbGlucHV0Miwgc2l6 ZW9mKHByIyNfYWRkaXRpb25hbGlucHV0MiksIFwKKysgICAgICAgIHByIyNfaW50X3JldHVybmVk Yml0cywgc2l6ZW9mKHByIyNfaW50X3JldHVybmVkYml0cyksIFwKKysgICAgICAgIHByIyNfcmV0 dXJuZWRiaXRzLCBzaXplb2YocHIjI19yZXR1cm5lZGJpdHMpLCBcCisrICAgICAgICBwciMjX3By X2VudHJvcHlpbnB1dCwgc2l6ZW9mKHByIyNfcHJfZW50cm9weWlucHV0KSwgXAorKyAgICAgICAg cHIjI19wcl9ub25jZSwgc2l6ZW9mKHByIyNfcHJfbm9uY2UpLCBcCisrICAgICAgICBwciMjX3By X3BlcnNvbmFsaXphdGlvbnN0cmluZywgc2l6ZW9mKHByIyNfcHJfcGVyc29uYWxpemF0aW9uc3Ry aW5nKSwgXAorKyAgICAgICAgcHIjI19wcl9hZGRpdGlvbmFsaW5wdXQsIHNpemVvZihwciMjX3By X2FkZGl0aW9uYWxpbnB1dCksIFwKKysgICAgICAgIHByIyNfcHJfZW50cm9weWlucHV0cHIsIHNp emVvZihwciMjX3ByX2VudHJvcHlpbnB1dHByKSwgXAorKyAgICAgICAgcHIjI19wcl9hZGRpdGlv bmFsaW5wdXQyLCBzaXplb2YocHIjI19wcl9hZGRpdGlvbmFsaW5wdXQyKSwgXAorKyAgICAgICAg cHIjI19wcl9lbnRyb3B5aW5wdXRwcjIsIHNpemVvZihwciMjX3ByX2VudHJvcHlpbnB1dHByMiks IFwKKysgICAgICAgIHByIyNfcHJfaW50X3JldHVybmVkYml0cywgc2l6ZW9mKHByIyNfcHJfaW50 X3JldHVybmVkYml0cyksIFwKKysgICAgICAgIHByIyNfcHJfcmV0dXJuZWRiaXRzLCBzaXplb2Yo cHIjI19wcl9yZXR1cm5lZGJpdHMpLCBcCisrICAgICAgICB9CisrCisrI2RlZmluZSBtYWtlX2Ry YmdfdGVzdF9kYXRhX2RmKG5pZCwgcHIsIHApIFwKKysgICAgICAgIG1ha2VfZHJiZ190ZXN0X2Rh dGEobmlkLCBEUkJHX0ZMQUdfQ1RSX1VTRV9ERiwgcHIsIHApCisrCisrI2RlZmluZSBtYWtlX2Ry YmdfdGVzdF9kYXRhX2VjKGN1cnZlLCBtZCwgcHIsIHApIFwKKysgICAgICAgIG1ha2VfZHJiZ190 ZXN0X2RhdGEoKGN1cnZlIDw8IDE2KSB8IG1kICwgMCwgcHIsIHApCisrCisrc3RhdGljIERSQkdf U0VMRlRFU1RfREFUQSBkcmJnX3Rlc3RbXSA9IHsKKysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YV9k ZihOSURfYWVzXzEyOF9jdHIsIGFlc18xMjhfdXNlX2RmLCAwKSwKKysgICAgbWFrZV9kcmJnX3Rl c3RfZGF0YV9kZihOSURfYWVzXzE5Ml9jdHIsIGFlc18xOTJfdXNlX2RmLCAwKSwKKysgICAgbWFr ZV9kcmJnX3Rlc3RfZGF0YV9kZihOSURfYWVzXzI1Nl9jdHIsIGFlc18yNTZfdXNlX2RmLCAxKSwK KysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURfYWVzXzEyOF9jdHIsIDAsIGFlc18xMjhfbm9f ZGYsIDApLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9hZXNfMTkyX2N0ciwgMCwgYWVz XzE5Ml9ub19kZiwgMCksCisrICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2Flc18yNTZfY3Ry LCAwLCBhZXNfMjU2X25vX2RmLCAxKSwKKysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURfc2hh MSwgMCwgc2hhMSwgMCksCisrICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX3NoYTIyNCwgMCwg c2hhMjI0LCAwKSwKKysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURfc2hhMjU2LCAwLCBzaGEy NTYsIDEpLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9zaGEzODQsIDAsIHNoYTM4NCwg MCksCisrICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX3NoYTUxMiwgMCwgc2hhNTEyLCAwKSwK KysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURfaG1hY1dpdGhTSEExLCAwLCBobWFjX3NoYTEs IDApLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTIyNCwgMCwgaG1h Y19zaGEyMjQsIDApLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTI1 NiwgMCwgaG1hY19zaGEyNTYsIDEpLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9obWFj V2l0aFNIQTM4NCwgMCwgaG1hY19zaGEzODQsIDApLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRh KE5JRF9obWFjV2l0aFNIQTUxMiwgMCwgaG1hY19zaGE1MTIsIDApLAorKyAgICB7MCwgMCwgMH0K Kyt9OworKworK3R5cGVkZWYgc3RydWN0IHsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50 OworKyAgICBzaXplX3QgZW50bGVuOworKyAgICBpbnQgZW50Y250OworKyAgICBjb25zdCB1bnNp Z25lZCBjaGFyICpub25jZTsKKysgICAgc2l6ZV90IG5vbmNlbGVuOworKyAgICBpbnQgbm9uY2Vj bnQ7CisrfSBURVNUX0VOVDsKKysKKytzdGF0aWMgc2l6ZV90IHRlc3RfZW50cm9weShEUkJHX0NU WCAqZGN0eCwgdW5zaWduZWQgY2hhciAqKnBvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IGVudHJvcHksIHNpemVfdCBtaW5fbGVuLCBzaXplX3QgbWF4X2xlbikKKyt7CisrICAg IFRFU1RfRU5UICp0ID0gRklQU19kcmJnX2dldF9hcHBfZGF0YShkY3R4KTsKKysgICAgKnBvdXQg PSAodW5zaWduZWQgY2hhciAqKXQtPmVudDsKKysgICAgdC0+ZW50Y250Kys7CisrICAgIHJldHVy biB0LT5lbnRsZW47CisrfQorKworK3N0YXRpYyBzaXplX3QgdGVzdF9ub25jZShEUkJHX0NUWCAq ZGN0eCwgdW5zaWduZWQgY2hhciAqKnBvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBlbnRyb3B5LCBzaXplX3QgbWluX2xlbiwgc2l6ZV90IG1heF9sZW4pCisreworKyAgICBURVNU X0VOVCAqdCA9IEZJUFNfZHJiZ19nZXRfYXBwX2RhdGEoZGN0eCk7CisrICAgICpwb3V0ID0gKHVu c2lnbmVkIGNoYXIgKil0LT5ub25jZTsKKysgICAgdC0+bm9uY2VjbnQrKzsKKysgICAgcmV0dXJu IHQtPm5vbmNlbGVuOworK30KKysKKytzdGF0aWMgaW50IGZpcHNfZHJiZ19zaW5nbGVfa2F0KERS QkdfQ1RYICpkY3R4LCBEUkJHX1NFTEZURVNUX0RBVEEgKiB0ZCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBxdWljaykKKyt7CisrICAgIFRFU1RfRU5UIHQ7CisrICAgIGlu dCBydiA9IDA7CisrICAgIHNpemVfdCBhZGlubGVuOworKyAgICB1bnNpZ25lZCBjaGFyIHJhbmRv dXRbMTAyNF07CisrCisrICAgIC8qIEluaXRpYWwgdGVzdCB3aXRob3V0IFBSICovCisrCisrICAg IC8qIEluc3RhbnRpYXRlIERSQkcgd2l0aCB0ZXN0IGVudHJvcHksIG5vbmNlIGFuZCBwZXJzb25h bGlzYXRpb24KKysgICAgICogc3RyaW5nLgorKyAgICAgKi8KKysKKysgICAgaWYgKCFGSVBTX2Ry YmdfaW5pdChkY3R4LCB0ZC0+bmlkLCB0ZC0+ZmxhZ3MpKQorKyAgICAgICAgcmV0dXJuIDA7Cisr ICAgIGlmICghRklQU19kcmJnX3NldF9jYWxsYmFja3MoZGN0eCwgdGVzdF9lbnRyb3B5LCAwLCAw LCB0ZXN0X25vbmNlLCAwKSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICBGSVBTX2RyYmdf c2V0X2FwcF9kYXRhKGRjdHgsICZ0KTsKKysKKysgICAgdC5lbnQgPSB0ZC0+ZW50OworKyAgICB0 LmVudGxlbiA9IHRkLT5lbnRsZW47CisrICAgIHQubm9uY2UgPSB0ZC0+bm9uY2U7CisrICAgIHQu bm9uY2VsZW4gPSB0ZC0+bm9uY2VsZW47CisrICAgIHQuZW50Y250ID0gMDsKKysgICAgdC5ub25j ZWNudCA9IDA7CisrCisrICAgIGlmICghRklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5w ZXJzLCB0ZC0+cGVyc2xlbikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgLyogTm90ZSBm b3IgQ1RSIHdpdGhvdXQgREYgc29tZSBhZGRpdGlvbmFsIGlucHV0IHZhbHVlcworKyAgICAgKiBp Z25vcmUgYnl0ZXMgYWZ0ZXIgdGhlIGtleWxlbmd0aDogc28gcmVkdWNlIGFkaW5sZW4KKysgICAg ICogdG8gaGFsZiB0byBlbnN1cmUgaW52YWxpZCBkYXRhIGlzIGZlZCBpbi4KKysgICAgICovCisr ICAgIGlmICghZmlwc19wb3N0X2NvcnJ1cHQoRklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZk Y3R4LT5pZmxhZ3MpKQorKyAgICAgICAgYWRpbmxlbiA9IHRkLT5hZGlubGVuIC8gMjsKKysgICAg ZWxzZQorKyAgICAgICAgYWRpbmxlbiA9IHRkLT5hZGlubGVuOworKworKyAgICAvKiBHZW5lcmF0 ZSB3aXRoIG5vIFBSIGFuZCB2ZXJpZnkgb3V0cHV0IG1hdGNoZXMgZXhwZWN0ZWQgZGF0YSAqLwor KyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAw LCB0ZC0+YWRpbiwgYWRpbmxlbikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgaWYgKG1l bWNtcChyYW5kb3V0LCB0ZC0+a2F0LCB0ZC0+a2F0bGVuKSkgeworKyAgICAgICAgRklQU2VycihG SVBTX0ZfRklQU19EUkJHX1NJTkdMRV9LQVQsIEZJUFNfUl9OT1BSX1RFU1QxX0ZBSUxVUkUpOwor KyAgICAgICAgZ290byBlcnIyOworKyAgICB9CisrICAgIC8qIElmIGFiYnJldmlhdGVkIFBPU1Qg ZW5kIG9mIHRlc3QgKi8KKysgICAgaWYgKHF1aWNrKSB7CisrICAgICAgICBydiA9IDE7CisrICAg ICAgICBnb3RvIGVycjsKKysgICAgfQorKyAgICAvKiBSZXNlZWQgRFJCRyB3aXRoIHRlc3QgZW50 cm9weSBhbmQgYWRkaXRpb25hbCBpbnB1dCAqLworKyAgICB0LmVudCA9IHRkLT5lbnRyZXNlZWQ7 CisrICAgIHQuZW50bGVuID0gdGQtPmVudHJlc2VlZGxlbjsKKysKKysgICAgaWYgKCFGSVBTX2Ry YmdfcmVzZWVkKGRjdHgsIHRkLT5hZGlucmVzZWVkLCB0ZC0+YWRpbnJlc2VlZGxlbikpCisrICAg ICAgICBnb3RvIGVycjsKKysKKysgICAgLyogR2VuZXJhdGUgd2l0aCBubyBQUiBhbmQgdmVyaWZ5 IG91dHB1dCBtYXRjaGVzIGV4cGVjdGVkIGRhdGEgKi8KKysgICAgaWYgKCFGSVBTX2RyYmdfZ2Vu ZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdDJsZW4sIDAsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRkLT5hZGluMiwgdGQtPmFkaW4ybGVuKSkKKysgICAgICAgIGdvdG8gZXJyOwor KworKyAgICBpZiAobWVtY21wKHJhbmRvdXQsIHRkLT5rYXQyLCB0ZC0+a2F0MmxlbikpIHsKKysg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19TSU5HTEVfS0FULCBGSVBTX1JfTk9QUl9U RVNUMl9GQUlMVVJFKTsKKysgICAgICAgIGdvdG8gZXJyMjsKKysgICAgfQorKworKyAgICBGSVBT X2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KTsKKysKKysgICAgLyogTm93IHRlc3Qgd2l0aCBQUiAq LworKworKyAgICAvKiBJbnN0YW50aWF0ZSBEUkJHIHdpdGggdGVzdCBlbnRyb3B5LCBub25jZSBh bmQgcGVyc29uYWxpc2F0aW9uCisrICAgICAqIHN0cmluZy4KKysgICAgICovCisrICAgIGlmICgh RklQU19kcmJnX2luaXQoZGN0eCwgdGQtPm5pZCwgdGQtPmZsYWdzKSkKKysgICAgICAgIHJldHVy biAwOworKyAgICBpZiAoIUZJUFNfZHJiZ19zZXRfY2FsbGJhY2tzKGRjdHgsIHRlc3RfZW50cm9w eSwgMCwgMCwgdGVzdF9ub25jZSwgMCkpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgRklQ U19kcmJnX3NldF9hcHBfZGF0YShkY3R4LCAmdCk7CisrCisrICAgIHQuZW50ID0gdGQtPmVudF9w cjsKKysgICAgdC5lbnRsZW4gPSB0ZC0+ZW50bGVuX3ByOworKyAgICB0Lm5vbmNlID0gdGQtPm5v bmNlX3ByOworKyAgICB0Lm5vbmNlbGVuID0gdGQtPm5vbmNlbGVuX3ByOworKyAgICB0LmVudGNu dCA9IDA7CisrICAgIHQubm9uY2VjbnQgPSAwOworKworKyAgICBpZiAoIUZJUFNfZHJiZ19pbnN0 YW50aWF0ZShkY3R4LCB0ZC0+cGVyc19wciwgdGQtPnBlcnNsZW5fcHIpKQorKyAgICAgICAgZ290 byBlcnI7CisrCisrICAgIC8qIE5vdyBnZW5lcmF0ZSB3aXRoIFBSOiB3ZSBuZWVkIHRvIHN1cHBs eSBlbnRyb3B5IGFzIHRoaXMgd2lsbAorKyAgICAgKiBwZXJmb3JtIGEgcmVzZWVkIG9wZXJhdGlv bi4gQ2hlY2sgb3V0cHV0IG1hdGNoZXMgZXhwZWN0ZWQgdmFsdWUuCisrICAgICAqLworKworKyAg ICB0LmVudCA9IHRkLT5lbnRwcl9wcjsKKysgICAgdC5lbnRsZW4gPSB0ZC0+ZW50cHJsZW5fcHI7 CisrCisrICAgIC8qIE5vdGUgZm9yIENUUiB3aXRob3V0IERGIHNvbWUgYWRkaXRpb25hbCBpbnB1 dCB2YWx1ZXMKKysgICAgICogaWdub3JlIGJ5dGVzIGFmdGVyIHRoZSBrZXlsZW5ndGg6IHNvIHJl ZHVjZSBhZGlubGVuCisrICAgICAqIHRvIGhhbGYgdG8gZW5zdXJlIGludmFsaWQgZGF0YSBpcyBm ZWQgaW4uCisrICAgICAqLworKyAgICBpZiAoIWZpcHNfcG9zdF9jb3JydXB0KEZJUFNfVEVTVF9E UkJHLCBkY3R4LT50eXBlLCAmZGN0eC0+aWZsYWdzKSkKKysgICAgICAgIGFkaW5sZW4gPSB0ZC0+ YWRpbmxlbl9wciAvIDI7CisrICAgIGVsc2UKKysgICAgICAgIGFkaW5sZW4gPSB0ZC0+YWRpbmxl bl9wcjsKKysgICAgaWYgKCFGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmth dGxlbl9wciwgMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW5fcHIsIGFk aW5sZW4pKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGlmIChtZW1jbXAocmFuZG91dCwg dGQtPmthdF9wciwgdGQtPmthdGxlbl9wcikpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19TSU5HTEVfS0FULCBGSVBTX1JfUFJfVEVTVDFfRkFJTFVSRSk7CisrICAgICAgICBn b3RvIGVycjI7CisrICAgIH0KKysKKysgICAgLyogTm93IGdlbmVyYXRlIGFnYWluIHdpdGggUFI6 IHN1cHBseSBuZXcgZW50cm9weSBhZ2Fpbi4KKysgICAgICogQ2hlY2sgb3V0cHV0IG1hdGNoZXMg ZXhwZWN0ZWQgdmFsdWUuCisrICAgICAqLworKworKyAgICB0LmVudCA9IHRkLT5lbnRnX3ByOwor KyAgICB0LmVudGxlbiA9IHRkLT5lbnRnbGVuX3ByOworKworKyAgICBpZiAoIUZJUFNfZHJiZ19n ZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0Mmxlbl9wciwgMSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGQtPmFkaW5nX3ByLCB0ZC0+YWRpbmdsZW5fcHIpKQorKyAgICAgICAg Z290byBlcnI7CisrCisrICAgIGlmIChtZW1jbXAocmFuZG91dCwgdGQtPmthdDJfcHIsIHRkLT5r YXQybGVuX3ByKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9L QVQsIEZJUFNfUl9QUl9URVNUMl9GQUlMVVJFKTsKKysgICAgICAgIGdvdG8gZXJyMjsKKysgICAg fQorKyAgICAvKiBBbGwgT0ssIHRlc3QgY29tcGxldGUgKi8KKysgICAgcnYgPSAxOworKworKyBl cnI6CisrICAgIGlmIChydiA9PSAwKQorKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJH X1NJTkdMRV9LQVQsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOworKyBlcnIyOgorKyAgICBGSVBT X2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KTsKKysKKysgICAgcmV0dXJuIHJ2OworKworK30KKysK KysvKiBJbml0aWFsaXNlIGEgRFJCRyBiYXNlZCBvbiBzZWxmdGVzdCBkYXRhICovCisrCisrc3Rh dGljIGludCBkb19kcmJnX2luaXQoRFJCR19DVFggKmRjdHgsIERSQkdfU0VMRlRFU1RfREFUQSAq IHRkLCBURVNUX0VOVCAqIHQpCisreworKworKyAgICBpZiAoIUZJUFNfZHJiZ19pbml0KGRjdHgs IHRkLT5uaWQsIHRkLT5mbGFncykpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgaWYgKCFG SVBTX2RyYmdfc2V0X2NhbGxiYWNrcyhkY3R4LCB0ZXN0X2VudHJvcHksIDAsIDAsIHRlc3Rfbm9u Y2UsIDApKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIEZJUFNfZHJiZ19zZXRfYXBwX2Rh dGEoZGN0eCwgdCk7CisrCisrICAgIHQtPmVudCA9IHRkLT5lbnQ7CisrICAgIHQtPmVudGxlbiA9 IHRkLT5lbnRsZW47CisrICAgIHQtPm5vbmNlID0gdGQtPm5vbmNlOworKyAgICB0LT5ub25jZWxl biA9IHRkLT5ub25jZWxlbjsKKysgICAgdC0+ZW50Y250ID0gMDsKKysgICAgdC0+bm9uY2VjbnQg PSAwOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrLyogSW5pdGlhbGlzZSBhbmQgaW5zdGFudGlh dGUgRFJCRyBiYXNlZCBvbiBzZWxmdGVzdCBkYXRhICovCisrc3RhdGljIGludCBkb19kcmJnX2lu c3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4LCBEUkJHX1NFTEZURVNUX0RBVEEgKiB0ZCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVTVF9FTlQgKiB0KQorK3sKKysgICAgaWYgKCFk b19kcmJnX2luaXQoZGN0eCwgdGQsIHQpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmICgh RklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikpCisrICAg ICAgICByZXR1cm4gMDsKKysKKysgICAgcmV0dXJuIDE7CisrfQorKworKy8qIFRoaXMgZnVuY3Rp b24gcGVyZm9ybXMgZXh0ZW5zaXZlIGVycm9yIGNoZWNraW5nIGFzIHJlcXVpcmVkIGJ5IFNQODAw LTkwLgorKyAqIEluZHVjZSBzZXZlcmFsIGZhaWx1cmUgbW9kZXMgYW5kIGNoZWNrIGFuIGVycm9y IGNvbmRpdGlvbiBpcyBzZXQuCisrICogVGhpcyBmdW5jdGlvbiBhbG9uZyB3aXRoIGZpcHNfZHJi Z19zaW5nbGVfa2F0IHBlZm9ybXMgdGhlIGhlYWx0aCBjaGVja2luZworKyAqIG9wZXJhdGlvbi4K KysgKi8KKysKKytzdGF0aWMgaW50IGZpcHNfZHJiZ19lcnJvcl9jaGVjayhEUkJHX0NUWCAqZGN0 eCwgRFJCR19TRUxGVEVTVF9EQVRBICogdGQpCisreworKyAgICB1bnNpZ25lZCBjaGFyIHJhbmRv dXRbMTAyNF07CisrICAgIFRFU1RfRU5UIHQ7CisrICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25l ZCBpbnQgcmVzZWVkX2NvdW50ZXJfdG1wOworKyAgICB1bnNpZ25lZCBjaGFyICpwID0gKHVuc2ln bmVkIGNoYXIgKilkY3R4OworKworKyAgICAvKiBJbml0aWFsaXNlIERSQkcgKi8KKysKKysgICAg aWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQsICZ0KSkKKysgICAgICAgIGdvdG8gZXJyOworKwor KyAgICAvKiBEb24ndCByZXBvcnQgaW5kdWNlZCBlcnJvcnMgKi8KKysgICAgZGN0eC0+aWZsYWdz IHw9IERSQkdfRkxBR19OT0VSUjsKKysKKysgICAgLyogUGVyc29uYWxpc2F0aW9uIHN0cmluZyB0 ZXN0cyAqLworKworKyAgICAvKiBUZXN0IGRldGVjdGlvbiBvZiB0b28gbGFyZ2UgcGVyc29ubGlz YXRpb24gc3RyaW5nICovCisrCisrICAgIGlmIChGSVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwg dGQtPnBlcnMsIGRjdHgtPm1heF9wZXJzICsgMSkgPiAwKSB7CisrICAgICAgICBGSVBTZXJyKEZJ UFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9QRVJT T05BTElTQVRJT05fRVJST1JfVU5ERVRFQ1RFRCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAg fQorKworKyAgICAvKiBFbnRyb3B5IHNvdXJjZSB0ZXN0cyAqLworKworKyAgICAvKiBUZXN0IGVu dHJvcHkgc291cmNlIGZhaWx1cmUgZGV0ZWNpb246IGkuZS4gcmV0dXJucyBubyBkYXRhICovCisr CisrICAgIHQuZW50bGVuID0gMDsKKysKKysgICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShk Y3R4LCB0ZC0+cGVycywgdGQtPnBlcnNsZW4pID4gMCkgeworKyAgICAgICAgRklQU2VycihGSVBT X0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9Q WV9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAg IC8qIFRyeSB0byBnZW5lcmF0ZSBvdXRwdXQgZnJvbSB1bmluc3RhbnRpYXRlZCBEUkJHICovCisr ICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKSB7Cisr ICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAg ICAgICAgIEZJUFNfUl9HRU5FUkFURV9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAgICAgIGdvdG8g ZXJyOworKyAgICB9CisrCisrICAgIGRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOwor KyAgICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7CisrICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VS Uk9SKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGlmICghZG9fZHJiZ19p bml0KGRjdHgsIHRkLCAmdCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgZGN0eC0+aWZs YWdzIHw9IERSQkdfRkxBR19OT0VSUjsKKysKKysgICAgLyogVGVzdCBpbnN1ZmZpY2llbnQgZW50 cm9weSAqLworKworKyAgICB0LmVudGxlbiA9IGRjdHgtPm1pbl9lbnRyb3B5IC0gMTsKKysKKysg ICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNsZW4p ID4gMCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAor KyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAg ICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFH X05PRVJSOworKyAgICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7CisrICAg ICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RB TlRJQVRFX0VSUk9SKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIC8qIFRl c3QgdG9vIG11Y2ggZW50cm9weSAqLworKworKyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0 ZCwgJnQpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGRjdHgtPmlmbGFncyB8PSBEUkJH X0ZMQUdfTk9FUlI7CisrCisrICAgIHQuZW50bGVuID0gZGN0eC0+bWF4X2VudHJvcHkgKyAxOwor KworKyAgICBpZiAoRklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVy c2xlbikgPiAwKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hF Q0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQpOwor KyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJH X0ZMQUdfTk9FUlI7CisrICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsK KysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VO SU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAg LyogTm9uY2UgdGVzdHMgKi8KKysKKysgICAgLyogVGVzdCB0b28gc21hbGwgbm9uY2UgKi8KKysK KysgICAgaWYgKGRjdHgtPm1pbl9ub25jZSkgeworKworKyAgICAgICAgaWYgKCFkb19kcmJnX2lu aXQoZGN0eCwgdGQsICZ0KSkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysKKysgICAgICAgIGRj dHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdfTk9FUlI7CisrCisrICAgICAgICB0Lm5vbmNlbGVuID0g ZGN0eC0+bWluX25vbmNlIC0gMTsKKysKKysgICAgICAgIGlmIChGSVBTX2RyYmdfaW5zdGFudGlh dGUoZGN0eCwgdGQtPnBlcnMsIHRkLT5wZXJzbGVuKSA+IDApIHsKKysgICAgICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgICAgICBG SVBTX1JfTk9OQ0VfRVJST1JfVU5ERVRFQ1RFRCk7CisrICAgICAgICAgICAgZ290byBlcnI7Cisr ICAgICAgICB9CisrCisrICAgICAgICBkY3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsK KysgICAgICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKKysgICAgICAg ICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RB TlRJQVRFX0VSUk9SKTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysKKysg ICAgfQorKworKyAgICAvKiBUZXN0IHRvbyBsYXJnZSBub25jZSAqLworKworKyAgICBpZiAoZGN0 eC0+bWF4X25vbmNlKSB7CisrCisrICAgICAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwg JnQpKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKworKyAgICAgICAgZGN0eC0+aWZsYWdzIHw9 IERSQkdfRkxBR19OT0VSUjsKKysKKysgICAgICAgIHQubm9uY2VsZW4gPSBkY3R4LT5tYXhfbm9u Y2UgKyAxOworKworKyAgICAgICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+ cGVycywgdGQtPnBlcnNsZW4pID4gMCkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19FUlJPUl9DSEVDSywKKysgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9OT05DRV9F UlJPUl9VTkRFVEVDVEVEKTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysK KysgICAgICAgIGRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOworKyAgICAgICAgaWYg KCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkgeworKyAgICAgICAgICAgIEZJUFNlcnIo RklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1Ip OworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICB9CisrCisrICAg IC8qIEluc3RhbnRpYXRlIHdpdGggdmFsaWQgZGF0YS4gKi8KKysgICAgaWYgKCFkb19kcmJnX2lu c3RhbnRpYXRlKGRjdHgsIHRkLCAmdCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgLyog Q2hlY2sgZ2VuZXJhdGlvbiBpcyBub3cgT0sgKi8KKysgICAgaWYgKCFGSVBTX2RyYmdfZ2VuZXJh dGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAg ICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOworKworKyAgICAvKiBSZXF1ZXN0IHRv byBtdWNoIGRhdGEgZm9yIG9uZSByZXF1ZXN0ICovCisrICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJh dGUoZGN0eCwgcmFuZG91dCwgZGN0eC0+bWF4X3JlcXVlc3QgKyAxLCAwLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRkLT5hZGluLCB0ZC0+YWRpbmxlbikpIHsKKysgICAgICAgIEZJUFNl cnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKKysgICAgICAgICAgICAgICAgRklQU19S X1JFUVVFU1RfTEVOR1RIX0VSUk9SX1VOREVURUNURUQpOworKyAgICAgICAgZ290byBlcnI7Cisr ICAgIH0KKysKKysgICAgLyogVHJ5IHRvbyBsYXJnZSBhZGRpdGlvbmFsIGlucHV0ICovCisrICAg IGlmIChGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+YWRpbiwgZGN0eC0+bWF4X2FkaW4gKyAxKSkg eworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAg ICAgICAgICAgICBGSVBTX1JfQURESVRJT05BTF9JTlBVVF9FUlJPUl9VTkRFVEVDVEVEKTsKKysg ICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIC8qIENoZWNrIHByZWRpY3Rpb24gcmVz aXN0YW5jZSByZXF1ZXN0IGZhaWxzIGlmIGVudHJvcHkgc291cmNlCisrICAgICAqIGZhaWx1cmUu CisrICAgICAqLworKworKyAgICB0LmVudGxlbiA9IDA7CisrCisrICAgIGlmIChGSVBTX2RyYmdf Z2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKSB7CisrICAgICAgICBGSVBTZXJyKEZJ UFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRS T1BZX0VSUk9SX1VOREVURUNURUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysg ICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7CisrICAgIGlmICghRklQU19kcmJn X3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJC R19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgZ290 byBlcnI7CisrICAgIH0KKysKKysgICAgLyogSW5zdGFudGlhdGUgYWdhaW4gd2l0aCB2YWxpZCBk YXRhICovCisrCisrICAgIGlmICghZG9fZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZCwgJnQpKQor KyAgICAgICAgZ290byBlcnI7CisrICAgIC8qIFRlc3QgcmVzZWVkIGNvdW50ZXIgd29ya3MgKi8K KysgICAgLyogU2F2ZSBpbml0aWFsIHJlc2VlZCBjb3VudGVyICovCisrICAgIHJlc2VlZF9jb3Vu dGVyX3RtcCA9IGRjdHgtPnJlc2VlZF9jb3VudGVyOworKyAgICAvKiBTZXQgcmVzZWVkIGNvdW50 ZXIgdG8gYmV5b25kIGludGVydmFsICovCisrICAgIGRjdHgtPnJlc2VlZF9jb3VudGVyID0gZGN0 eC0+cmVzZWVkX2ludGVydmFsOworKworKyAgICAvKiBHZW5lcmF0ZSBvdXRwdXQgYW5kIGNoZWNr IGVudHJvcHkgaGFzIGJlZW4gcmVxdWVzdGVkIGZvciByZXNlZWQgKi8KKysgICAgdC5lbnRjbnQg PSAwOworKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0 bGVuLCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+YWRpbiwgdGQtPmFkaW5s ZW4pKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICh0LmVudGNudCAhPSAxKSB7CisrICAg ICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAg ICAgIEZJUFNfUl9FTlRST1BZX05PVF9SRVFVRVNURURfRk9SX1JFU0VFRCk7CisrICAgICAgICBn b3RvIGVycjsKKysgICAgfQorKyAgICAvKiBDaGVjayByZXNlZWQgY291bnRlciBoYXMgYmVlbiBy ZXNldCAqLworKyAgICBpZiAoZGN0eC0+cmVzZWVkX2NvdW50ZXIgIT0gcmVzZWVkX2NvdW50ZXJf dG1wICsgMSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNL LCBGSVBTX1JfUkVTRUVEX0NPVU5URVJfRVJST1IpOworKyAgICAgICAgZ290byBlcnI7CisrICAg IH0KKysKKysgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7CisrICAgIGlmICgh RklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19G X0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAg ICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyogQ2hlY2sgcHJlZGljdGlvbiByZXNp c3RhbmNlIHJlcXVlc3QgZmFpbHMgaWYgZW50cm9weSBzb3VyY2UKKysgICAgICogZmFpbHVyZS4K KysgICAgICovCisrCisrICAgIHQuZW50bGVuID0gMDsKKysKKysgICAgZGN0eC0+aWZsYWdzIHw9 IERSQkdfRkxBR19OT0VSUjsKKysgICAgaWYgKEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5k b3V0LCB0ZC0+a2F0bGVuLCAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGlu LCB0ZC0+YWRpbmxlbikpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJP Ul9DSEVDSywKKysgICAgICAgICAgICAgICAgRklQU19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RF RCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICBkY3R4LT5pZmxhZ3MgJj0g fkRSQkdfRkxBR19OT0VSUjsKKysKKysgICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShk Y3R4KSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBG SVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQor KworKyAgICBpZiAoIWRvX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQsICZ0KSkKKysgICAgICAg IGdvdG8gZXJyOworKyAgICAvKiBUZXN0IHJlc2VlZCBjb3VudGVyIHdvcmtzICovCisrICAgIC8q IFNhdmUgaW5pdGlhbCByZXNlZWQgY291bnRlciAqLworKyAgICByZXNlZWRfY291bnRlcl90bXAg PSBkY3R4LT5yZXNlZWRfY291bnRlcjsKKysgICAgLyogU2V0IHJlc2VlZCBjb3VudGVyIHRvIGJl eW9uZCBpbnRlcnZhbCAqLworKyAgICBkY3R4LT5yZXNlZWRfY291bnRlciA9IGRjdHgtPnJlc2Vl ZF9pbnRlcnZhbDsKKysKKysgICAgLyogR2VuZXJhdGUgb3V0cHV0IGFuZCBjaGVjayBlbnRyb3B5 IGhhcyBiZWVuIHJlcXVlc3RlZCBmb3IgcmVzZWVkICovCisrICAgIHQuZW50Y250ID0gMDsKKysg ICAgaWYgKCFGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSkKKysg ICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAodC5lbnRjbnQgIT0gMSkgeworKyAgICAgICAgRklQ U2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAgICAgICAgICAgICBGSVBT X1JfRU5UUk9QWV9OT1RfUkVRVUVTVEVEX0ZPUl9SRVNFRUQpOworKyAgICAgICAgZ290byBlcnI7 CisrICAgIH0KKysgICAgLyogQ2hlY2sgcmVzZWVkIGNvdW50ZXIgaGFzIGJlZW4gcmVzZXQgKi8K KysgICAgaWYgKGRjdHgtPnJlc2VlZF9jb3VudGVyICE9IHJlc2VlZF9jb3VudGVyX3RtcCArIDEp IHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19S X1JFU0VFRF9DT1VOVEVSX0VSUk9SKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisr ICAgIGRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOworKyAgICBpZiAoIUZJUFNfZHJi Z191bmluc3RhbnRpYXRlKGRjdHgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RS QkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKKysgICAgICAgIGdv dG8gZXJyOworKyAgICB9CisrCisrICAgIC8qIEV4cGxpY2l0IHJlc2VlZCB0ZXN0cyAqLworKwor KyAgICAvKiBUZXN0IGV4cGxpY2l0IHJlc2VlZCB3aXRoIHRvbyBsYXJnZSBhZGRpdGlvbmFsIGlu cHV0ICovCisrICAgIGlmICghZG9fZHJiZ19pbml0KGRjdHgsIHRkLCAmdCkpCisrICAgICAgICBn b3RvIGVycjsKKysKKysgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKKysKKysg ICAgaWYgKEZJUFNfZHJiZ19yZXNlZWQoZGN0eCwgdGQtPmFkaW4sIGRjdHgtPm1heF9hZGluICsg MSkgPiAwKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ss CisrICAgICAgICAgICAgICAgIEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX0VSUk9SX1VOREVURUNU RUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyogVGVzdCBleHBsaWNp dCByZXNlZWQgd2l0aCBlbnRyb3B5IHNvdXJjZSBmYWlsdXJlICovCisrCisrICAgIHQuZW50bGVu ID0gMDsKKysKKysgICAgaWYgKEZJUFNfZHJiZ19yZXNlZWQoZGN0eCwgdGQtPmFkaW4sIHRkLT5h ZGlubGVuKSA+IDApIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9D SEVDSywKKysgICAgICAgICAgICAgICAgRklQU19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7 CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICBpZiAoIUZJUFNfZHJiZ191bmlu c3RhbnRpYXRlKGRjdHgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJS T1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKKysgICAgICAgIGdvdG8gZXJy OworKyAgICB9CisrCisrICAgIC8qIFRlc3QgZXhwbGljaXQgcmVzZWVkIHdpdGggdG9vIG11Y2gg ZW50cm9weSAqLworKworKyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQorKyAg ICAgICAgZ290byBlcnI7CisrCisrICAgIGRjdHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdfTk9FUlI7 CisrCisrICAgIHQuZW50bGVuID0gZGN0eC0+bWF4X2VudHJvcHkgKyAxOworKworKyAgICBpZiAo RklQU19kcmJnX3Jlc2VlZChkY3R4LCB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pID4gMCkgeworKyAg ICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAgICAgICAg ICAgICBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAgICAgIGdvdG8gZXJy OworKyAgICB9CisrCisrICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsK KysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VO SU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAg LyogVGVzdCBleHBsaWNpdCByZXNlZWQgd2l0aCB0b28gbGl0dGxlIGVudHJvcHkgKi8KKysKKysg ICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQsICZ0KSkKKysgICAgICAgIGdvdG8gZXJyOwor KworKyAgICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOworKworKyAgICB0LmVudGxl biA9IGRjdHgtPm1pbl9lbnRyb3B5IC0gMTsKKysKKysgICAgaWYgKEZJUFNfZHJiZ19yZXNlZWQo ZGN0eCwgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSA+IDApIHsKKysgICAgICAgIEZJUFNlcnIoRklQ U19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKKysgICAgICAgICAgICAgICAgRklQU19SX0VOVFJP UFlfRVJST1JfVU5ERVRFQ1RFRCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAg ICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7CisrICAgICAgICBGSVBTZXJy KEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9S KTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIHAgPSAodW5zaWduZWQgY2hh ciAqKSZkY3R4LT5kOworKyAgICAvKiBTdGFuZGFyZCBzYXlzIHdlIGhhdmUgdG8gY2hlY2sgdW5p bnN0YW50aWF0ZSByZWFsbHkgemVyb2VzCisrICAgICAqIHRoZSBkYXRhLi4uCisrICAgICAqLwor KyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGRjdHgtPmQpOyBpKyspIHsKKysgICAgICAgIGlm ICgqcCAhPSAwKSB7CisrICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9S X0NIRUNLLAorKyAgICAgICAgICAgICAgICAgICAgRklQU19SX1VOSU5TVEFOVElBVEVfWkVST0lT RV9FUlJPUik7CisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9CisrICAgICAgICBw Kys7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDE7CisrCisrIGVycjoKKysgICAgLyogQSByZWFs IGVycm9yIGFzIG9wcG9zZWQgdG8gYW4gaW5kdWNlZCBvbmU6IHVuZGVybHlpbmcgZnVuY3Rpb24g d2lsbAorKyAgICAgKiBpbmRpY2F0ZSB0aGUgZXJyb3IuCisrICAgICAqLworKyAgICBpZiAoIShk Y3R4LT5pZmxhZ3MgJiBEUkJHX0ZMQUdfTk9FUlIpKQorKyAgICAgICAgRklQU2VycihGSVBTX0Zf RklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfRlVOQ1RJT05fRVJST1IpOworKyAgICBGSVBT X2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KTsKKysgICAgcmV0dXJuIDA7CisrCisrfQorKworK2lu dCBmaXBzX2RyYmdfa2F0KERSQkdfQ1RYICpkY3R4LCBpbnQgbmlkLCB1bnNpZ25lZCBpbnQgZmxh Z3MpCisreworKyAgICBEUkJHX1NFTEZURVNUX0RBVEEgKnRkOworKyAgICBmbGFncyB8PSBEUkJH X0ZMQUdfVEVTVDsKKysgICAgZm9yICh0ZCA9IGRyYmdfdGVzdDsgdGQtPm5pZCAhPSAwOyB0ZCsr KSB7CisrICAgICAgICBpZiAodGQtPm5pZCA9PSBuaWQgJiYgdGQtPmZsYWdzID09IGZsYWdzKSB7 CisrICAgICAgICAgICAgaWYgKCFmaXBzX2RyYmdfc2luZ2xlX2thdChkY3R4LCB0ZCwgMCkpCisr ICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgIHJldHVybiBmaXBzX2RyYmdf ZXJyb3JfY2hlY2soZGN0eCwgdGQpOworKyAgICAgICAgfQorKyAgICB9CisrICAgIHJldHVybiAw OworK30KKysKKytpbnQgRklQU19kcmJnX2hlYWx0aF9jaGVjayhEUkJHX0NUWCAqZGN0eCkKKyt7 CisrICAgIGludCBydjsKKysgICAgRFJCR19DVFggKnRjdHggPSBOVUxMOworKyAgICB0Y3R4ID0g RklQU19kcmJnX25ldygwLCAwKTsKKysgICAgZmlwc19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX0RS QkcsIGRjdHgtPnR5cGUsICZkY3R4LT54ZmxhZ3MpOworKyAgICBpZiAoIXRjdHgpCisrICAgICAg ICByZXR1cm4gMDsKKysgICAgcnYgPSBmaXBzX2RyYmdfa2F0KHRjdHgsIGRjdHgtPnR5cGUsIGRj dHgtPnhmbGFncyk7CisrICAgIGlmICh0Y3R4KQorKyAgICAgICAgRklQU19kcmJnX2ZyZWUodGN0 eCk7CisrICAgIGlmIChydikKKysgICAgICAgIGZpcHNfcG9zdF9zdWNjZXNzKEZJUFNfVEVTVF9E UkJHLCBkY3R4LT50eXBlLCAmZGN0eC0+eGZsYWdzKTsKKysgICAgZWxzZQorKyAgICAgICAgZmlw c19wb3N0X2ZhaWxlZChGSVBTX1RFU1RfRFJCRywgZGN0eC0+dHlwZSwgJmRjdHgtPnhmbGFncyk7 CisrICAgIGlmICghcnYpCisrICAgICAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19FUlJP UjsKKysgICAgZWxzZQorKyAgICAgICAgZGN0eC0+aGVhbHRoX2NoZWNrX2NudCA9IDA7CisrICAg IHJldHVybiBydjsKKyt9CisrCisraW50IEZJUFNfc2VsZnRlc3RfZHJiZyh2b2lkKQorK3sKKysg ICAgRFJCR19DVFggKmRjdHg7CisrICAgIERSQkdfU0VMRlRFU1RfREFUQSAqdGQ7CisrICAgIGlu dCBydiA9IDE7CisrICAgIGRjdHggPSBGSVBTX2RyYmdfbmV3KDAsIDApOworKyAgICBpZiAoIWRj dHgpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgZm9yICh0ZCA9IGRyYmdfdGVzdDsgdGQtPm5p ZCAhPSAwOyB0ZCsrKSB7CisrICAgICAgICBpZiAodGQtPnBvc3QgIT0gMSkKKysgICAgICAgICAg ICBjb250aW51ZTsKKysgICAgICAgIGlmICghZmlwc19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX0RS QkcsIHRkLT5uaWQsICZ0ZC0+ZmxhZ3MpKQorKyAgICAgICAgICAgIHJldHVybiAxOworKyAgICAg ICAgaWYgKCFmaXBzX2RyYmdfc2luZ2xlX2thdChkY3R4LCB0ZCwgMSkpIHsKKysgICAgICAgICAg ICBmaXBzX3Bvc3RfZmFpbGVkKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKTsK KysgICAgICAgICAgICBydiA9IDA7CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9 CisrICAgICAgICBpZiAoIWZpcHNfcG9zdF9zdWNjZXNzKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlk LCAmdGQtPmZsYWdzKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBGSVBT X2RyYmdfZnJlZShkY3R4KTsKKysgICAgcmV0dXJuIHJ2OworK30KKysKKytpbnQgRklQU19zZWxm dGVzdF9kcmJnX2FsbCh2b2lkKQorK3sKKysgICAgRFJCR19DVFggKmRjdHg7CisrICAgIERSQkdf U0VMRlRFU1RfREFUQSAqdGQ7CisrICAgIGludCBydiA9IDE7CisrICAgIGRjdHggPSBGSVBTX2Ry YmdfbmV3KDAsIDApOworKyAgICBpZiAoIWRjdHgpCisrICAgICAgICByZXR1cm4gMDsKKysgICAg Zm9yICh0ZCA9IGRyYmdfdGVzdDsgdGQtPm5pZCAhPSAwOyB0ZCsrKSB7CisrICAgICAgICBpZiAo IWZpcHNfcG9zdF9zdGFydGVkKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKSkK KysgICAgICAgICAgICByZXR1cm4gMTsKKysgICAgICAgIGlmICghZmlwc19kcmJnX3NpbmdsZV9r YXQoZGN0eCwgdGQsIDApKSB7CisrICAgICAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RF U1RfRFJCRywgdGQtPm5pZCwgJnRkLT5mbGFncyk7CisrICAgICAgICAgICAgcnYgPSAwOworKyAg ICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFmaXBzX2RyYmdf ZXJyb3JfY2hlY2soZGN0eCwgdGQpKSB7CisrICAgICAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChG SVBTX1RFU1RfRFJCRywgdGQtPm5pZCwgJnRkLT5mbGFncyk7CisrICAgICAgICAgICAgcnYgPSAw OworKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFmaXBz X3Bvc3Rfc3VjY2VzcyhGSVBTX1RFU1RfRFJCRywgdGQtPm5pZCwgJnRkLT5mbGFncykpCisrICAg ICAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgRklQU19kcmJnX2ZyZWUoZGN0eCk7Cisr ICAgIHJldHVybiBydjsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9m aXBzX2RyYmdfc2VsZnRlc3QuaC5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNf ZHJiZ19zZWxmdGVzdC5oCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kcmJn X3NlbGZ0ZXN0LmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NzI0NTc3MyArMDIwMAorKysr IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5oCTIwMTUtMDQt MjIgMTY6MDg6NDAuMjk3MjQ1NzczICswMjAwCitAQCAtMCwwICsxLDE3OTEgQEAKKysvKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxs IHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAq IGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv cHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisr ICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg b3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2lu ZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4g VGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5v dCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Np b24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNz bC1jb3JlLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3 YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wi IGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJt aXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlv bnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICog ICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2Fy ZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhl IE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBB TkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC VVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJ U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICog SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ REVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT IChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9O IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklD VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK KysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg RVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor KyAqCisrICovCisrCisrLyogU2VsZnRlc3QgYW5kIGhlYWx0aCBjaGVjayBkYXRhIGZvciB0aGUg U1A4MDAtOTAgRFJCRyAqLworKworKyNkZWZpbmUgX19maXBzX2NvbnN0c2VnCisrCisrLyogQUVT LTEyOCB1c2UgZGYgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18xMjhfdXNlX2RmX3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDYxLCAw eDUyLCAweDdjLCAweGUzLCAweDIzLCAweDdkLCAweDBhLCAweDA3LCAweDEwLCAweDBjLCAweDUw LCAweDMzLAorKyAgICAweGM4LCAweGRiLCAweGZmLCAweDEyCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfbm9uY2Vb XSA9IHsKKysgICAgMHg1MSwgMHgwZCwgMHg4NSwgMHg3NywgMHhlZCwgMHgyMiwgMHg5NywgMHgy OAorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xMjhfdXNlX2RmX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAw eDU5LCAweDlmLCAweGJiLCAweGNkLCAweGQ1LCAweDI1LCAweDY5LCAweGI1LCAweGNiLCAweGI1 LCAweDAzLCAweGZlLAorKyAgICAweGQ3LCAweGQ3LCAweDAxLCAweDY3CisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2Vf ZGZfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4ZWYsIDB4ODgsIDB4NzYsIDB4MDEs IDB4YWYsIDB4M2MsIDB4ZmUsIDB4OGIsIDB4YWYsIDB4MjYsIDB4MDYsIDB4OWUsCisrICAgIDB4 OWEsIDB4NDcsIDB4MDgsIDB4NzYKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRwcltd ID0geworKyAgICAweGUyLCAweDc2LCAweGY5LCAweGY2LCAweDNhLCAweGJhLCAweDEwLCAweDlm LCAweGJmLCAweDQ3LCAweDBlLCAweDUxLAorKyAgICAweDA5LCAweGZiLCAweGEzLCAweGI2Cisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzEyOF91c2VfZGZfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGQ0LCAweDk4 LCAweDhhLCAweDQ2LCAweDgwLCAweDRjLCAweGRiLCAweGEzLCAweDU5LCAweDAyLCAweDU3LCAw eDUyLAorKyAgICAweDY2LCAweDFjLCAweGVhLCAweDViCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfYWRk aXRpb25hbGlucHV0MltdID0geworKyAgICAweDg4LCAweDhjLCAweDkxLCAweGQ2LCAweGJlLCAw eDU2LCAweDZlLCAweDA4LCAweDlhLCAweDYyLCAweDJiLCAweDExLAorKyAgICAweDNmLCAweDVl LCAweDMxLCAweDA2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Cisr ICAgIDB4YzAsIDB4NWMsIDB4NmIsIDB4OTgsIDB4MDEsIDB4MGQsIDB4NTgsIDB4MTgsIDB4NTEs IDB4MTgsIDB4OTYsIDB4YWUsCisrICAgIDB4YTcsIDB4ZTMsIDB4YTgsIDB4NjcKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9k Zl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhjZiwgMHgwMSwgMHhhYywgMHgyMiwgMHgz MSwgMHgwNiwgMHg4ZSwgMHhmYywgMHhjZSwgMHg1NiwgMHhlYSwgMHgyNCwKKysgICAgMHgwZiwg MHgzOCwgMHg0MywgMHhjNgorK307CisrCisrLyogQUVTLTEyOCB1c2UgZGYgTm8gUFIgICovCisr X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2Rm X2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDFmLCAweDhlLCAweDM0LCAweDgyLCAweDBjLCAw eGI3LCAweGJlLCAweGM1LCAweDAxLCAweDNlLCAweGQwLCAweGEzLAorKyAgICAweDlkLCAweDdk LCAweDFjLCAweDliCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfbm9uY2VbXSA9IHsKKysgICAgMHhkNSwgMHg0ZCwgMHhi ZCwgMHg0YSwgMHg5MywgMHg3ZiwgMHhiOCwgMHg5NgorK307CisrCisrX19maXBzX2NvbnN0c2Vn CisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3BlcnNvbmFs aXphdGlvbnN0cmluZ1tdID0geworKyAgICAweGFiLCAweGQ2LCAweDNmLCAweDA0LCAweGZlLCAw eDI3LCAweDZiLCAweDJkLCAweGQ3LCAweGMzLCAweDFjLCAweGYzLAorKyAgICAweDM4LCAweDY2 LCAweGJhLCAweDFiCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4ZmUs IDB4ZjQsIDB4MDksIDB4YTgsIDB4YjcsIDB4NzMsIDB4MjcsIDB4OWMsIDB4NWYsIDB4YTcsIDB4 ZWEsIDB4NDYsCisrICAgIDB4YjUsIDB4ZTIsIDB4YjIsIDB4NDEKKyt9OworKworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9pbnRfcmV0 dXJuZWRiaXRzW10gPSB7CisrICAgIDB4NDIsIDB4ZTQsIDB4NGUsIDB4N2IsIDB4MjcsIDB4ZGQs IDB4Y2IsIDB4YmMsIDB4MGEsIDB4Y2YsIDB4YTYsIDB4NjcsCisrICAgIDB4ZTcsIDB4NTcsIDB4 MTEsIDB4YjQKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKKysgICAg MHgxNCwgMHgyNiwgMHg2OSwgMHhkOSwgMHhmMywgMHg2NSwgMHgwMywgMHhkNiwgMHg2YiwgMHhi OSwgMHg0NCwgMHgwYiwKKysgICAgMHhjNywgMHhjNCwgMHg5ZSwgMHgzOQorK307CisrCisrX19m aXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNl X2RmX2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0geworKyAgICAweDU1LCAweDJlLCAweDYwLCAw eDlhLCAweDA1LCAweDcyLCAweDhhLCAweGE4LCAweGVmLCAweDIyLCAweDgxLCAweDVhLAorKyAg ICAweGM4LCAweDkzLCAweGZhLCAweDg0CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfYWRkaXRpb25hbGlucHV0MltdID0g eworKyAgICAweDNjLCAweDQwLCAweGM4LCAweGM0LCAweDE2LCAweDBjLCAweDIxLCAweGE0LCAw eDM3LCAweDJjLCAweDhmLCAweGE1LAorKyAgICAweDA2LCAweDBjLCAweDE1LCAweDJjCisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91 c2VfZGZfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4ZTEsIDB4M2UsIDB4OTksIDB4OTgsIDB4 ODYsIDB4NjcsIDB4MGIsIDB4NjMsIDB4N2IsIDB4YmUsIDB4M2YsIDB4ODgsCisrICAgIDB4NDYs IDB4ODEsIDB4YzcsIDB4MTkKKyt9OworKworKy8qIEFFUy0xOTIgdXNlIGRmIFBSICAqLworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9w cl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHgyYiwgMHg0ZSwgMHg4YiwgMHhlMSwgMHhmMSwg MHgzNCwgMHg4MCwgMHg1NiwgMHg4MSwgMHhmOSwgMHg3NCwgMHhlYywKKysgICAgMHgxNywgMHg0 NCwgMHgyYSwgMHhmMSwgMHgxNCwgMHhiMCwgMHhiZiwgMHg5NywgMHgzOSwgMHhiNywgMHgwNCwg MHg3ZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18xOTJfdXNlX2RmX3ByX25vbmNlW10gPSB7CisrICAgIDB4ZDYsIDB4OWQsIDB4ZWIsIDB4 MTQsIDB4NGUsIDB4NmMsIDB4MzAsIDB4MWUsIDB4MzksIDB4NTUsIDB4NzMsIDB4ZDAsCisrICAg IDB4ZDEsIDB4ODAsIDB4NzgsIDB4ZmEKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9wZXJzb25hbGl6YXRp b25zdHJpbmdbXSA9IHsKKysgICAgMHhmYywgMHg0MywgMHg0YSwgMHhmOCwgMHg5YSwgMHg1NSwg MHhiMywgMHg1MywgMHg4MywgMHhlMiwgMHgxOCwgMHgxNiwKKysgICAgMHgwYywgMHhkYywgMHhj ZCwgMHg1ZSwgMHg0ZiwgMHhhMCwgMHgwMywgMHgwMSwgMHgyYiwgMHg5ZiwgMHhlNCwgMHhkNSwK KysgICAgMHg3ZCwgMHg0OSwgMHhmMCwgMHg0MSwgMHg5ZSwgMHgzZCwgMHg5OSwgMHgwNAorK307 CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18xOTJfdXNlX2RmX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDVlLCAweDlmLCAw eDQ5LCAweDZmLCAweDIxLCAweDhiLCAweDFkLCAweDMyLCAweGQ1LCAweDg0LCAweDVjLCAweGFj LAorKyAgICAweGFmLCAweGRmLCAweGU0LCAweDc5LCAweDllLCAweGFmLCAweGE5LCAweDgyLCAw eGQwLCAweGY4LCAweDRmLCAweGNiLAorKyAgICAweDY5LCAweDEwLCAweDBhLCAweDdlLCAweDgx LCAweDU3LCAweGI1LCAweDM2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfcHJfZW50cm9weWlucHV0cHJbXSA9 IHsKKysgICAgMHhkNCwgMHg4MSwgMHgwYywgMHhkNywgMHg2NiwgMHgzOSwgMHhlYywgMHg0Miwg MHg1MywgMHg4NywgMHg0MSwgMHhhNSwKKysgICAgMHgxZSwgMHg3ZCwgMHg4MCwgMHg5MSwgMHg4 ZSwgMHhiYiwgMHhlZCwgMHhhYywgMHgxNCwgMHgwMiwgMHgxYSwgMHhkNQorK307CisrCisrX19m aXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNl X2RmX3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhkZiwgMHgxZCwgMHgzOSwgMHg0 NSwgMHg3YywgMHg5YiwgMHhjNiwgMHgyYiwgMHg3ZCwgMHg4YywgMHg5MywgMHhlOSwKKysgICAg MHgxOSwgMHgzMCwgMHg2YiwgMHg2NworK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX2FkZGl0aW9uYWxpbnB1 dDJbXSA9IHsKKysgICAgMHgwMCwgMHg3MSwgMHgyNywgMHg0ZSwgMHhkMywgMHgxNCwgMHhmMSwg MHgyMCwgMHg3ZiwgMHg0YSwgMHg0MSwgMHgzMiwKKysgICAgMHgyYSwgMHg5NywgMHgxMSwgMHg0 MywgMHg4ZiwgMHg0YSwgMHgxNSwgMHg3YiwgMHg5YiwgMHg1MSwgMHg3OSwgMHhkYSwKKysgICAg MHg0OSwgMHgzZCwgMHhkZSwgMHhlOCwgMHhiYywgMHg5MywgMHg5MSwgMHg5OQorK307CisrCisr X19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJf dXNlX2RmX3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweDkwLCAweGVlLCAweDc2LCAw eGExLCAweDQ1LCAweDhkLCAweGI3LCAweDQwLCAweGIwLCAweDExLCAweGJmLCAweGQwLAorKyAg ICAweDY1LCAweGQ3LCAweDNjLCAweDdjLCAweDRmLCAweDIwLCAweDNmLCAweDRlLCAweDExLCAw eDlkLCAweGIzLCAweDVlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4 MjQsIDB4M2IsIDB4MjAsIDB4YTQsIDB4MzcsIDB4NjYsIDB4YmEsIDB4NzIsIDB4MzksIDB4M2Ys IDB4Y2YsIDB4M2MsCisrICAgIDB4N2UsIDB4MWEsIDB4MmIsIDB4ODMKKyt9OworKworKy8qIEFF Uy0xOTIgdXNlIGRmIE5vIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHg4ZCwg MHg3NCwgMHhhNCwgMHg1MCwgMHgxYSwgMHgwMiwgMHg2OCwgMHgwYywgMHgyYSwgMHg2OSwgMHhj NCwgMHg4MiwKKysgICAgMHgzYiwgMHhiYiwgMHhkYSwgMHgwZSwgMHg3ZiwgMHg3NywgMHhhMywg MHgxNywgMHg3OCwgMHg1NywgMHhiMiwgMHg3YgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX25vbmNlW10gPSB7CisrICAg IDB4NzUsIDB4ZDUsIDB4MWYsIDB4YWMsIDB4YTQsIDB4OGQsIDB4NDIsIDB4NzgsIDB4ZDcsIDB4 NjksIDB4ODYsIDB4OWQsCisrICAgIDB4NzcsIDB4ZDcsIDB4NDEsIDB4MGUKKyt9OworKworK19f Zmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3Vz ZV9kZl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg0ZSwgMHgzMywgMHg0MSwg MHgzYywgMHg5YywgMHhjMiwgMHhkMiwgMHg1MywgMHhhZiwgMHg5MCwgMHhlYSwgMHhjZiwKKysg ICAgMHgxOSwgMHg1MCwgMHgxZSwgMHhlNiwgMHg2ZiwgMHg2MywgMHhjOCwgMHgzMiwgMHgyMiwg MHhkYywgMHgwNywgMHg2NSwKKysgICAgMHg5YywgMHhkMywgMHhmOCwgMHgzMCwgMHg5ZSwgMHhl ZCwgMHgzNSwgMHg3MAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDVk LCAweDhiLCAweDhjLCAweGMxLCAweGRmLCAweDBlLCAweDAyLCAweDc4LCAweGZiLCAweDE5LCAw eGI4LCAweDY5LAorKyAgICAweDc4LCAweDRlLCAweDljLCAweDUyLCAweGJjLCAweGM3LCAweDIw LCAweGM5LCAweGU2LCAweDVlLCAweDc3LCAweDIyLAorKyAgICAweDI4LCAweDNkLCAweDBjLCAw eDllLCAweDY4LCAweGE4LCAweDQ1LCAweGQ3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfaW50X3JldHVybmVkYml0c1td ID0geworKyAgICAweGQ1LCAweGU3LCAweDA4LCAweGM1LCAweDE5LCAweDk5LCAweGQ1LCAweDMx LCAweDAzLCAweDBhLCAweDc0LCAweGI2LAorKyAgICAweGI3LCAweGVkLCAweGU5LCAweGVhCisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzE5Ml91c2VfZGZfZW50cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4OWMsIDB4MjYs IDB4ZGEsIDB4ZjEsIDB4YWMsIDB4ZDksIDB4NWEsIDB4ZDYsIDB4YTgsIDB4NjUsIDB4ZjUsIDB4 MDIsCisrICAgIDB4OGYsIDB4ZGMsIDB4YTIsIDB4MDksIDB4NTQsIDB4YTYsIDB4ZTIsIDB4YTQs IDB4ZGUsIDB4MzIsIDB4ZTAsIDB4MDEKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9hZGRpdGlvbmFsaW5wdXRy ZXNlZWRbXSA9IHsKKysgICAgMHg5YiwgMHg5MCwgMHhiMCwgMHgzYSwgMHgwZSwgMHgzYSwgMHg4 MCwgMHgwNywgMHg0YSwgMHhmNCwgMHhkYSwgMHg3NiwKKysgICAgMHgyOCwgMHgzMCwgMHgzYywg MHhlZSwgMHg1NCwgMHgxYiwgMHg5NCwgMHg1OSwgMHg1MSwgMHg0MywgMHg1NiwgMHg3NywKKysg ICAgMHhhZiwgMHg4OCwgMHhkZCwgMHg2MywgMHg4OSwgMHg0NywgMHgwNiwgMHg2NQorK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNl X2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHgzYywgMHgxMSwgMHg2NCwgMHg3YSwg MHg5NiwgMHhmNSwgMHhkOCwgMHhiOCwgMHhhZSwgMHhkNiwgMHg3MCwgMHg0ZSwKKysgICAgMHgx NiwgMHg5NiwgMHhkZSwgMHhlOSwgMHg2MiwgMHhiYywgMHhlZSwgMHgyOCwgMHgyZiwgMHgyNiwg MHhhNiwgMHhmMCwKKysgICAgMHg1NiwgMHhlZiwgMHhhMywgMHhmMSwgMHg2YiwgMHhhMSwgMHhi MSwgMHg3NworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xOTJfdXNlX2RmX3JldHVybmVkYml0c1tdID0geworKyAgICAweDBiLCAweGUyLCAw eDU2LCAweDAzLCAweDFlLCAweGRiLCAweDJjLCAweDZkLCAweDdmLCAweDFiLCAweDE1LCAweDU4 LAorKyAgICAweDFhLCAweGY5LCAweDEzLCAweDI4CisrfTsKKysKKysvKiBBRVMtMjU2IHVzZSBk ZiBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzI1Nl91c2VfZGZfcHJfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4NjEsIDB4NjgsIDB4ZmMs IDB4MWEsIDB4ZjAsIDB4YjUsIDB4OTUsIDB4NmIsIDB4ODUsIDB4MDksIDB4OWIsIDB4NzQsCisr ICAgIDB4M2YsIDB4MTMsIDB4NzgsIDB4NDksIDB4M2IsIDB4ODUsIDB4ZWMsIDB4OTMsIDB4MTMs IDB4M2IsIDB4YTksIDB4NGYsCisrICAgIDB4OTYsIDB4YWIsIDB4MmMsIDB4ZTQsIDB4YzgsIDB4 OGYsIDB4ZGQsIDB4NmEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9ub25jZVtdID0geworKyAgICAweGFkLCAweGQy LCAweGJiLCAweGJhLCAweGI3LCAweDY1LCAweDg5LCAweGMzLCAweDIxLCAweDZjLCAweDU1LCAw eDMzLAorKyAgICAweDJiLCAweDM2LCAweGZmLCAweGE0CisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfcGVy c29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4NmUsIDB4Y2EsIDB4ZTcsIDB4MjAsIDB4 NzIsIDB4ZDMsIDB4ODQsIDB4NWEsIDB4MzIsIDB4ZDMsIDB4NGIsIDB4MjQsCisrICAgIDB4NzIs IDB4YzQsIDB4NjMsIDB4MmIsIDB4OWQsIDB4MTIsIDB4MjQsIDB4MGMsIDB4MjMsIDB4MjYsIDB4 OGUsIDB4ODMsCisrICAgIDB4MTYsIDB4MzcsIDB4MGIsIDB4ZDEsIDB4MDYsIDB4NGYsIDB4Njgs IDB4NmQKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHg3 ZSwgMHgwOCwgMHg0YSwgMHhiYiwgMHhlMywgMHgyMSwgMHg3YywgMHhjOSwgMHgyMywgMHhkMiwg MHhmOCwgMHhiMCwKKysgICAgMHg3MywgMHg5OCwgMHhiYSwgMHg4NCwgMHg3NCwgMHgyMywgMHhh YiwgMHgwNiwgMHg4YSwgMHhlMiwgMHgyMiwgMHhkMywKKysgICAgMHg3YiwgMHhjZSwgMHg5Yiwg MHhkMiwgMHg0YSwgMHg3NiwgMHhiOCwgMHhkZQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisr ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX2VudHJvcHlp bnB1dHByW10gPSB7CisrICAgIDB4MGIsIDB4MjMsIDB4YWYsIDB4ZGYsIDB4ZjEsIDB4NjIsIDB4 ZDcsIDB4ZDMsIDB4NDMsIDB4OTcsIDB4ZjgsIDB4NzcsCisrICAgIDB4MDQsIDB4YTgsIDB4NDIs IDB4MjAsIDB4YmQsIDB4ZjYsIDB4MGYsIDB4YzEsIDB4MTcsIDB4MmYsIDB4OWYsIDB4NTQsCisr ICAgIDB4YmIsIDB4NTYsIDB4MTcsIDB4ODYsIDB4NjgsIDB4MGUsIDB4YmEsIDB4YTkKKyt9Owor KworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MjU2X3VzZV9kZl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4MzEsIDB4OGUsIDB4 YWQsIDB4YWYsIDB4NDAsIDB4ZWIsIDB4NmIsIDB4NzQsIDB4MzEsIDB4NDYsIDB4ODAsIDB4Yzcs CisrICAgIDB4MTcsIDB4YWIsIDB4M2MsIDB4N2EKKyt9OworKworK19fZmlwc19jb25zdHNlZwor KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9hZGRpdGlv bmFsaW5wdXQyW10gPSB7CisrICAgIDB4OTQsIDB4NmIsIDB4YzksIDB4OWYsIDB4YWIsIDB4OGQs IDB4YzUsIDB4ZWMsIDB4NzEsIDB4ODgsIDB4MWQsIDB4MDAsCisrICAgIDB4OGMsIDB4ODksIDB4 NjgsIDB4ZTQsIDB4YzgsIDB4MDcsIDB4NzcsIDB4MzYsIDB4MTcsIDB4NmQsIDB4NzksIDB4Nzgs CisrICAgIDB4YzcsIDB4MDYsIDB4NGUsIDB4OTksIDB4MDQsIDB4MjgsIDB4MjksIDB4YzMKKyt9 OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMjU2X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKKysgICAgMHhiZiwgMHg2Yywg MHg1OSwgMHgyYSwgMHgwZCwgMHg0NCwgMHgwZiwgMHhhZSwgMHg5YSwgMHg1ZSwgMHgwMywgMHg3 MywKKysgICAgMHhkOCwgMHhhNiwgMHhlMSwgMHhjZiwgMHgyNSwgMHg2MSwgMHgzOCwgMHgyNCwg MHg4NiwgMHg5ZSwgMHg1MywgMHhlOCwKKysgICAgMHhhNCwgMHhkZiwgMHg1NiwgMHhmNCwgMHgw NiwgMHgwNywgMHg5YywgMHgwZgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX3JldHVybmVkYml0c1tdID0geworKyAg ICAweDIyLCAweDRhLCAweGI0LCAweGI4LCAweGI2LCAweGVlLCAweDdkLCAweGIxLCAweDllLCAw eGM5LCAweGY5LCAweGEwLAorKyAgICAweGQ5LCAweGUyLCAweDk3LCAweDAwCisrfTsKKysKKysv KiBBRVMtMjU2IHVzZSBkZiBObyBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4 YTUsIDB4M2UsIDB4MzcsIDB4MTAsIDB4MTcsIDB4NDMsIDB4OTEsIDB4OTMsIDB4NTksIDB4MWUs IDB4NDcsIDB4NTAsCisrICAgIDB4ODcsIDB4YWEsIDB4ZGQsIDB4ZDUsIDB4YzEsIDB4YzMsIDB4 ODYsIDB4Y2QsIDB4Y2EsIDB4MGQsIDB4ZGIsIDB4NjgsCisrICAgIDB4ZTAsIDB4MDIsIDB4ZDgs IDB4MGYsIDB4ZGMsIDB4NDAsIDB4MWEsIDB4NDcKKyt9OworKworK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9ub25jZVtdID0geworKyAg ICAweGE5LCAweDRkLCAweGE1LCAweDVhLCAweGZkLCAweGM1LCAweDBjLCAweGU1LCAweDFjLCAw eDlhLCAweDNiLCAweDhhLAorKyAgICAweDRjLCAweDQ0LCAweDg0LCAweDQwCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91 c2VfZGZfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4OGIsIDB4NTIsIDB4YTIs IDB4NGEsIDB4OTMsIDB4YzMsIDB4NGUsIDB4YTcsIDB4MWUsIDB4MWMsIDB4YTcsIDB4MDUsCisr ICAgIDB4ZWIsIDB4ODIsIDB4OWIsIDB4YTYsIDB4NWQsIDB4ZTQsIDB4ZDQsIDB4ZTAsIDB4N2Ys IDB4YTMsIDB4ZDgsIDB4NmIsCisrICAgIDB4MzcsIDB4ODQsIDB4NWYsIDB4ZjEsIDB4YzcsIDB4 ZDUsIDB4ZjYsIDB4ZDIKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHgy MCwgMHhmNCwgMHgyMiwgMHhlZCwgMHhmOCwgMHg1YywgMHhhMSwgMHg2YSwgMHgwMSwgMHhjZiwg MHhiZSwgMHg1ZiwKKysgICAgMHg4ZCwgMHg2YywgMHg5NCwgMHg3ZiwgMHhhZSwgMHgxMiwgMHhh OCwgMHg1NywgMHhkYiwgMHgyYSwgMHhhOSwgMHhiZiwKKysgICAgMHhjNywgMHhiMywgMHg2NSwg MHg4MSwgMHg4MCwgMHg4ZCwgMHgwZCwgMHg0NgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX2ludF9yZXR1cm5lZGJpdHNb XSA9IHsKKysgICAgMHg0ZSwgMHg0NCwgMHhmZCwgMHhmMywgMHg5ZSwgMHgyOSwgMHhhMiwgMHhi OCwgMHgwZiwgMHg1ZCwgMHg2YywgMHhlMSwKKysgICAgMHgyOCwgMHgwYywgMHgzYiwgMHhjMQor K307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18yNTZfdXNlX2RmX2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAgICAweGRkLCAweDQw LCAweGU1LCAweDk4LCAweDdiLCAweDI3LCAweDE2LCAweDczLCAweDE1LCAweDY4LCAweGQyLCAw eDc2LAorKyAgICAweGJmLCAweDBjLCAweDY3LCAweDE1LCAweDc1LCAweDc5LCAweDAzLCAweGQz LCAweGRlLCAweGRlLCAweDkxLCAweDQ2LAorKyAgICAweDQyLCAweGRkLCAweGQ0LCAweDY3LCAw eGM4LCAweDc5LCAweGM4LCAweDFlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfYWRkaXRpb25hbGlucHV0cmVz ZWVkW10gPSB7CisrICAgIDB4N2YsIDB4ZDgsIDB4MWYsIDB4YmQsIDB4MmEsIDB4YjUsIDB4MWMs IDB4MTEsIDB4NWQsIDB4ODMsIDB4NGUsIDB4OTksCisrICAgIDB4ZjYsIDB4NWMsIDB4YTUsIDB4 NDAsIDB4MjAsIDB4ZWQsIDB4MzgsIDB4OGUsIDB4ZDUsIDB4OWUsIDB4ZTAsIDB4NzUsCisrICAg IDB4OTMsIDB4ZmUsIDB4MTIsIDB4NWUsIDB4NWQsIDB4NzMsIDB4ZmIsIDB4NzUKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9k Zl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4Y2QsIDB4MmMsIDB4ZmYsIDB4MTQsIDB4 NjksIDB4M2UsIDB4NGMsIDB4OWUsIDB4ZmQsIDB4ZmUsIDB4MjYsIDB4MGQsCisrICAgIDB4ZTks IDB4ODYsIDB4MDAsIDB4NDksIDB4MzAsIDB4YmEsIDB4YjEsIDB4YzYsIDB4NTAsIDB4NTcsIDB4 NzcsIDB4MmEsCisrICAgIDB4NjIsIDB4MzksIDB4MmMsIDB4M2IsIDB4NzQsIDB4ZWIsIDB4Yzks IDB4MGQKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMjU2X3VzZV9kZl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg0ZiwgMHg3OCwgMHhi ZSwgMHhiOSwgMHg0ZCwgMHg5NywgMHg4YywgMHhlOSwgMHhkMCwgMHg5NywgMHhmZSwgMHhhZCwK KysgICAgMHhmYSwgMHhmZCwgMHgzNSwgMHg1ZQorK307CisrCisrLyogQUVTLTEyOCBubyBkZiBQ UiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEy OF9ub19kZl9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHg5YSwgMHgyNSwgMHg2NSwgMHgx MCwgMHg2NywgMHhkNSwgMHhiNiwgMHg2YiwgMHg3MCwgMHhhMSwgMHhiMywgMHhhNCwKKysgICAg MHg0MywgMHg5NSwgMHg4MCwgMHhjMCwgMHg4NCwgMHgwYSwgMHg3OSwgMHhiMCwgMHg4OCwgMHg3 NCwgMHhmMiwgMHhiZiwKKysgICAgMHgzMSwgMHg2YywgMHgzMywgMHgzOCwgMHgwYiwgMHgwMCwg MHhiMiwgMHg1YQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfbm9uY2VbXSA9IHsKKysgICAgMHg3OCwgMHg0NywgMHg2 YiwgMHhmNywgMHg5MCwgMHg4ZSwgMHg4NywgMHhmMQorK307CisrCisrX19maXBzX2NvbnN0c2Vn CisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfcGVyc29u YWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4ZjcsIDB4MjIsIDB4MWQsIDB4M2EsIDB4YmUs IDB4MWQsIDB4Y2EsIDB4MzIsIDB4MWIsIDB4YmQsIDB4ODcsIDB4MGMsCisrICAgIDB4NTEsIDB4 MjQsIDB4MTksIDB4ZWUsIDB4YTMsIDB4MjMsIDB4MDksIDB4NjMsIDB4MzMsIDB4M2QsIDB4YTgs IDB4MGMsCisrICAgIDB4MWMsIDB4ZmEsIDB4NDIsIDB4ODksIDB4Y2MsIDB4NmYsIDB4YTAsIDB4 YTgKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBhZXNfMTI4X25vX2RmX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweGM5LCAw eGUwLCAweDgwLCAweGJmLCAweDhjLCAweDQ1LCAweDU4LCAweDM5LCAweGZmLCAweDAwLCAweGFi LCAweDAyLAorKyAgICAweDRjLCAweDNlLCAweDNhLCAweDk1LCAweDliLCAweDgwLCAweGE4LCAw eDIxLCAweDJhLCAweGVlLCAweGJhLCAweDczLAorKyAgICAweGIxLCAweGQ5LCAweGNmLCAweDI4 LCAweGY2LCAweDhmLCAweDliLCAweDEyCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wcl9lbnRyb3B5aW5wdXRwcltdID0g eworKyAgICAweDRjLCAweGE4LCAweGM1LCAweGYwLCAweDU5LCAweDllLCAweGE2LCAweDhkLCAw eDI2LCAweDUzLCAweGQ3LCAweDhhLAorKyAgICAweGE5LCAweGQ4LCAweGY3LCAweGVkLCAweGIy LCAweGY5LCAweDEyLCAweDQyLCAweGUxLCAweGU1LCAweGJkLCAweGU3LAorKyAgICAweGU3LCAw eDFkLCAweDc0LCAweDk5LCAweDAwLCAweDlkLCAweDMxLCAweDNlCisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9w cl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4ZTIsIDB4YWMsIDB4MjAsIDB4ZjAsIDB4 ODAsIDB4ZTcsIDB4YmMsIDB4N2UsIDB4OWMsIDB4N2IsIDB4NjUsIDB4NzEsCisrICAgIDB4YWYs IDB4MTksIDB4MzIsIDB4MTYKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9 IHsKKysgICAgMHgzMiwgMHg3ZiwgMHgzOCwgMHg4YiwgMHg3MywgMHgwYSwgMHg3OCwgMHg4Mywg MHhkYywgMHgzMCwgMHhiZSwgMHg5ZiwKKysgICAgMHgxMCwgMHgxZiwgMHhmNSwgMHgxZiwgMHhj YSwgMHgwMCwgMHhiNSwgMHgwZCwgMHhkNiwgMHg5ZCwgMHg2MCwgMHg4MywKKysgICAgMHg1MSwg MHg1NCwgMHg3ZCwgMHgzOCwgMHgyMywgMHgzYSwgMHg1MiwgMHg1MAorK307CisrCisrX19maXBz X2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZf cHJfZW50cm9weWlucHV0cHIyW10gPSB7CisrICAgIDB4MTgsIDB4NjEsIDB4NTMsIDB4NTYsIDB4 ZWQsIDB4ZWQsIDB4ZDcsIDB4MjAsIDB4ZmIsIDB4NzEsIDB4MDQsIDB4N2EsCisrICAgIDB4YjIs IDB4YWMsIDB4YzEsIDB4MjgsIDB4Y2QsIDB4ZjIsIDB4YzIsIDB4ZmMsIDB4YWEsIDB4YjEsIDB4 MDYsIDB4MDcsCisrICAgIDB4ZTksIDB4NDYsIDB4OTUsIDB4MDIsIDB4NDgsIDB4MDEsIDB4Nzgs IDB4ZjkKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMTI4X25vX2RmX3ByX3JldHVybmVkYml0c1tdID0geworKyAgICAweDI5LCAweGM4LCAw eDFiLCAweDE1LCAweGIxLCAweGQxLCAweGMyLCAweGY2LCAweDcxLCAweDg2LCAweDY4LCAweDMz LAorKyAgICAweDU3LCAweDgyLCAweDMzLCAweGFmCisrfTsKKysKKysvKiBBRVMtMTI4IG5vIGRm IE5vIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMTI4X25vX2RmX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweGM5LCAweGM1LCAweDc5LCAw eGJjLCAweGU4LCAweGM1LCAweDE5LCAweGQ4LCAweGJjLCAweDY2LCAweDczLCAweDY3LAorKyAg ICAweGY2LCAweGQzLCAweDcyLCAweGFhLCAweGE2LCAweDE2LCAweGI4LCAweDUwLCAweGI3LCAw eDQ3LCAweDNhLCAweDQyLAorKyAgICAweGFiLCAweGY0LCAweDE2LCAweGIyLCAweDk2LCAweGQy LCAweGI2LCAweDYwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzEyOF9ub19kZl9ub25jZVtdID0geworKyAgICAweDVmLCAweGJmLCAweDk3 LCAweDBjLCAweDRiLCAweGE0LCAweDg3LCAweDEzCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcK KysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wZXJzb25hbGl6 YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHhjZSwgMHhmYiwgMHg3YiwgMHgzZiwgMHhkNCwgMHg2 YiwgMHgyOSwgMHgwZCwgMHg2OSwgMHgwNiwgMHhmZiwgMHhiYiwKKysgICAgMHhmMiwgMHhlNSwg MHhjNiwgMHg2YywgMHgwYSwgMHgxMCwgMHhhMCwgMHhjZiwgMHgxYSwgMHg0OCwgMHhjNywgMHg4 YiwKKysgICAgMHgzYywgMHgxNiwgMHg4OCwgMHhlZCwgMHg1MCwgMHgxMywgMHg4MSwgMHhjZQor K307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18x Mjhfbm9fZGZfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4NGIsIDB4MjIsIDB4NDYsIDB4 MTgsIDB4MDIsIDB4N2IsIDB4ZDIsIDB4MWIsIDB4MjIsIDB4NDIsIDB4N2MsIDB4MzcsCisrICAg IDB4ZDksIDB4ZjYsIDB4ZTgsIDB4OWIsIDB4MTIsIDB4MzAsIDB4NWYsIDB4ZTksIDB4OTAsIDB4 ZTgsIDB4MDgsIDB4MjQsCisrICAgIDB4NGYsIDB4MDYsIDB4NjYsIDB4ZGIsIDB4MTksIDB4MmIs IDB4MTMsIDB4OTUKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMTI4X25vX2RmX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHgyZSwg MHg5NiwgMHg3MCwgMHg2NCwgMHhmYSwgMHhkZiwgMHhkZiwgMHg1NywgMHhiNSwgMHg4MiwgMHhl ZSwgMHhkNiwKKysgICAgMHhlZCwgMHgzZSwgMHg2NSwgMHhjMgorK307CisrCisrX19maXBzX2Nv bnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfZW50 cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4MjYsIDB4YzAsIDB4NzIsIDB4MTYsIDB4M2Es IDB4NGIsIDB4YjcsIDB4OTksIDB4ZDQsIDB4MDcsIDB4YWYsIDB4NjYsCisrICAgIDB4NjIsIDB4 MzYsIDB4OTYsIDB4YTQsIDB4NTEsIDB4MTcsIDB4ZmEsIDB4MDcsIDB4OGIsIDB4MTcsIDB4NWUs IDB4YTEsCisrICAgIDB4MmYsIDB4M2MsIDB4MTAsIDB4ZTcsIDB4OTAsIDB4ZDAsIDB4NDYsIDB4 MDAKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBhZXNfMTI4X25vX2RmX2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0geworKyAgICAweDgz LCAweDM5LCAweDM3LCAweDdiLCAweDAyLCAweDA2LCAweGQyLCAweDEyLCAweDEzLCAweDhkLCAw eDhiLCAweGYyLAorKyAgICAweGYwLCAweGY2LCAweDI2LCAweGViLCAweGE0LCAweDIyLCAweDdi LCAweGMyLCAweGU3LCAweGJhLCAweDc5LCAweGU0LAorKyAgICAweDNiLCAweDc3LCAweDVkLCAw eDRkLCAweDQ3LCAweGIyLCAweDJkLCAweGI0CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9hZGRpdGlvbmFsaW5wdXQyW10g PSB7CisrICAgIDB4MGIsIDB4YjksIDB4NjcsIDB4MzcsIDB4ZGIsIDB4ODMsIDB4ZGYsIDB4Y2Es IDB4ODEsIDB4OGIsIDB4ZjksIDB4M2YsCisrICAgIDB4ZjEsIDB4MTEsIDB4MWIsIDB4MmYsIDB4 ZjAsIDB4NjEsIDB4YTYsIDB4ZGYsIDB4YmEsIDB4YTMsIDB4YjEsIDB4YWMsCisrICAgIDB4ZDMs IDB4ZTYsIDB4MDksIDB4YjgsIDB4MmMsIDB4NmEsIDB4NjcsIDB4ZDYKKyt9OworKworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3JldHVy bmVkYml0c1tdID0geworKyAgICAweDFlLCAweGE3LCAweGE0LCAweGU0LCAweGUxLCAweGE2LCAw eDdjLCAweDY5LCAweDlhLCAweDQ0LCAweDZjLCAweDM2LAorKyAgICAweDgxLCAweDM3LCAweDE5 LCAweGQ0CisrfTsKKysKKysvKiBBRVMtMTkyIG5vIGRmIFBSICAqLworK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3ByX2VudHJvcHlpbnB1 dFtdID0geworKyAgICAweDlkLCAweDJjLCAweGQyLCAweDU1LCAweDY2LCAweGVhLCAweGUwLCAw eGJlLCAweDE4LCAweGI3LCAweDc2LCAweGU3LAorKyAgICAweDczLCAweDM1LCAweGQ4LCAweDFm LCAweGFkLCAweDNhLCAweGUzLCAweDgxLCAweDBlLCAweDkyLCAweGQwLCAweDYxLAorKyAgICAw eGM5LCAweDEyLCAweDI2LCAweGY2LCAweDFjLCAweGRmLCAweGZlLCAweDQ3LCAweGFhLCAweGZl LCAweDdkLCAweDVhLAorKyAgICAweDE3LCAweDFmLCAweDhkLCAweDlhCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9u b25jZVtdID0geworKyAgICAweDQ0LCAweDgyLCAweGVkLCAweGU4LCAweDRjLCAweDI4LCAweDVh LCAweDE0LCAweGZmLCAweDg4LCAweDhkLCAweDE5LAorKyAgICAweDYxLCAweDVjLCAweGVlLCAw eDBmCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAg MHg0NywgMHhkNywgMHg5YiwgMHg5OSwgMHhhYSwgMHhjYiwgMHhlNywgMHhkMiwgMHg1NywgMHg2 NiwgMHgyYywgMHhlMSwKKysgICAgMHg3OCwgMHhkNiwgMHgyYywgMHhlYSwgMHhhMywgMHgyMywg MHg1ZiwgMHgyYSwgMHhjMSwgMHgzYSwgMHhmMCwgMHhhNCwKKysgICAgMHgyMCwgMHgzYiwgMHhm YSwgMHgwNywgMHhkNSwgMHgwNSwgMHgwMiwgMHhlNCwgMHg1NywgMHgwMSwgMHhiNiwgMHgxMCwK KysgICAgMHg1NywgMHgyZSwgMHhlNywgMHg1NQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisr ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfYWRkaXRpb25h bGlucHV0W10gPSB7CisrICAgIDB4NGIsIDB4NzQsIDB4MGIsIDB4NDAsIDB4Y2UsIDB4NmIsIDB4 YzIsIDB4NmEsIDB4MjQsIDB4YjQsIDB4ZjMsIDB4YWQsCisrICAgIDB4N2EsIDB4YTUsIDB4N2Es IDB4YTIsIDB4MTUsIDB4ZTIsIDB4YzgsIDB4NjEsIDB4MTUsIDB4YzYsIDB4YjcsIDB4ODUsCisr ICAgIDB4NjksIDB4MTEsIDB4YWQsIDB4N2IsIDB4MTQsIDB4ZDIsIDB4ZjYsIDB4MTIsIDB4YTEs IDB4OTUsIDB4NWQsIDB4M2YsCisrICAgIDB4ZTIsIDB4ZDAsIDB4MGMsIDB4MmYKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2Rm X3ByX2VudHJvcHlpbnB1dHByW10gPSB7CisrICAgIDB4MGMsIDB4OWMsIDB4YWQsIDB4MDUsIDB4 ZWUsIDB4YWUsIDB4NDgsIDB4MjMsIDB4ODksIDB4NTksIDB4YTEsIDB4OTQsCisrICAgIDB4ZDcs IDB4ZDgsIDB4NzUsIDB4ZDUsIDB4NTQsIDB4OTMsIDB4YzcsIDB4NGEsIDB4ZDksIDB4MjYsIDB4 ZGUsIDB4ZWIsCisrICAgIDB4YmEsIDB4YjAsIDB4N2UsIDB4MzAsIDB4MWQsIDB4NWYsIDB4Njks IDB4NDAsIDB4OWMsIDB4M2IsIDB4MTcsIDB4NTgsCisrICAgIDB4MWQsIDB4MzAsIDB4YjMsIDB4 NzgKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBhZXNfMTkyX25vX2RmX3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhmNywg MHg5MywgMHhiMCwgMHg2ZCwgMHg3NywgMHg4MywgMHhkNSwgMHgzOCwgMHgwMSwgMHhlMSwgMHg1 MiwgMHg0MCwKKysgICAgMHg3ZSwgMHgzZSwgMHgwYywgMHgyNgorK307CisrCisrX19maXBzX2Nv bnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJf YWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweGJjLCAweDRiLCAweDM3LCAweDQ0LCAweDFj LCAweGM1LCAweDQ1LCAweDVmLCAweDhmLCAweDUxLCAweDYyLCAweDhhLAorKyAgICAweDg1LCAw eDMwLCAweDFkLCAweDdjLCAweGU0LCAweGNmLCAweGY3LCAweDQ0LCAweGNlLCAweDMyLCAweDNl LCAweDU3LAorKyAgICAweDk1LCAweGE0LCAweDJhLCAweGRmLCAweGZkLCAweDllLCAweDM4LCAw eDQxLCAweGIzLCAweGY2LCAweGM1LCAweGVlLAorKyAgICAweDBjLCAweDRiLCAweGVlLCAweDZl CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgYWVzXzE5Ml9ub19kZl9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKKysgICAgMHhlYywgMHhh ZiwgMHhmNiwgMHg0ZiwgMHhiMSwgMHhhMCwgMHg1NCwgMHhiNSwgMHg1YiwgMHhlMywgMHg0Niwg MHhiMCwKKysgICAgMHg3NiwgMHg1YSwgMHg3YywgMHgzZiwgMHg3YiwgMHg5NCwgMHg2OSwgMHgy MSwgMHg1MSwgMHgwMiwgMHhlNSwgMHg5ZiwKKysgICAgMHgwNCwgMHg1OSwgMHgwMiwgMHg5OCwg MHhjNiwgMHg0MywgMHgyYywgMHhjYywgMHgyNiwgMHg0YywgMHg4NywgMHg2YiwKKysgICAgMHg4 ZSwgMHgwYSwgMHg4MywgMHhkZgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAg IDB4NzQsIDB4NDUsIDB4ZmIsIDB4NTMsIDB4ODQsIDB4OTYsIDB4YmUsIDB4ZmYsIDB4MTUsIDB4 Y2MsIDB4NDEsIDB4OTEsCisrICAgIDB4YjksIDB4YTEsIDB4MjEsIDB4NjgKKyt9OworKworKy8q IEFFUy0xOTIgbm8gZGYgTm8gUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4M2Ms IDB4N2QsIDB4YjUsIDB4ZTAsIDB4NTQsIDB4ZDksIDB4NmUsIDB4OGMsIDB4YTksIDB4ODYsIDB4 Y2UsIDB4NGUsCisrICAgIDB4NmIsIDB4YWYsIDB4ZWIsIDB4MmYsIDB4ZTcsIDB4NzUsIDB4ZTAs IDB4OGIsIDB4YTQsIDB4M2IsIDB4MDcsIDB4ZmUsCisrICAgIDB4YmUsIDB4MzMsIDB4NzUsIDB4 OTMsIDB4ODAsIDB4MjcsIDB4YjUsIDB4MjksIDB4NDcsIDB4OGIsIDB4YzcsIDB4MjgsCisrICAg IDB4OTQsIDB4YzMsIDB4NTksIDB4NjMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX25vbmNlW10gPSB7CisrICAgIDB4NDMs IDB4ZjEsIDB4N2QsIDB4YjgsIDB4YzMsIDB4ZmUsIDB4ZDAsIDB4MjMsIDB4NmIsIDB4YjQsIDB4 OTIsIDB4ZGIsCisrICAgIDB4MjksIDB4ZmQsIDB4NDUsIDB4NzEKKyt9OworKworK19fZmlwc19j b25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3Bl cnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDlmLCAweDI0LCAweDI5LCAweDk5LCAw eDllLCAweDAxLCAweGFiLCAweGU5LCAweDE5LCAweGQ4LCAweDIzLCAweDA4LAorKyAgICAweGI3 LCAweGQ2LCAweDdlLCAweDhjLCAweGMwLCAweDllLCAweDdmLCAweDZlLCAweDViLCAweDMzLCAw eDIwLCAweDk2LAorKyAgICAweDBiLCAweDIzLCAweDJjLCAweGE1LCAweDZhLCAweGY4LCAweDFi LCAweDA0LCAweDI2LCAweGRiLCAweDJlLCAweDJiLAorKyAgICAweDNiLCAweDg4LCAweGNlLCAw eDM1CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzE5Ml9ub19kZl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHg5NCwgMHhlOSwgMHg3 YywgMHgzZCwgMHhhNywgMHhkYiwgMHg2MCwgMHg4MywgMHgxZiwgMHg5OCwgMHgzZiwgMHgwYiwK KysgICAgMHg4OCwgMHg1OSwgMHg1NywgMHg1MSwgMHg4OCwgMHg5ZiwgMHg3NiwgMHg0OSwgMHg5 ZiwgMHhhNiwgMHhkYSwgMHg3MSwKKysgICAgMHgxZCwgMHgwZCwgMHg0NywgMHgxNiwgMHg2Mywg MHhjNSwgMHg2OCwgMHhlNCwgMHg1ZCwgMHgzOSwgMHg2OSwgMHhiMywKKysgICAgMHgzZSwgMHhi ZSwgMHhkNCwgMHg4ZQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18xOTJfbm9fZGZfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGY5 LCAweGQ3LCAweGFkLCAweDY5LCAweGFiLCAweDhmLCAweDIzLCAweDU2LCAweDcwLCAweDE3LCAw eDRmLCAweDJhLAorKyAgICAweDQ1LCAweGU3LCAweDRhLCAweGM1CisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9l bnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHhhNiwgMHg3MSwgMHg2YSwgMHgzZCwgMHhi YSwgMHhkMSwgMHhlOCwgMHg2NiwgMHhhNiwgMHhlZiwgMHhiMiwgMHgwZSwKKysgICAgMHhhOCwg MHg5YywgMHhhYSwgMHg0ZSwgMHhhZiwgMHgxNywgMHg4OSwgMHg1MCwgMHgwMCwgMHhkYSwgMHhh MSwgMHhiMSwKKysgICAgMHgwYiwgMHhhNCwgMHhkOSwgMHgzNSwgMHg4OSwgMHhjOCwgMHhlNSwg MHhiMCwgMHhkOSwgMHhiNywgMHhjNCwgMHgzMywKKysgICAgMHg5YiwgMHhjYiwgMHg3ZSwgMHg3 NQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xOTJfbm9fZGZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4Mjcs IDB4MjEsIDB4ZmMsIDB4YzIsIDB4YmQsIDB4ZjMsIDB4M2MsIDB4Y2UsIDB4YzMsIDB4Y2EsIDB4 YzEsIDB4MDEsCisrICAgIDB4ZTAsIDB4ZmYsIDB4OTMsIDB4MTIsIDB4N2QsIDB4NTQsIDB4NDIs IDB4ZTMsIDB4OWYsIDB4MDMsIDB4ZGYsIDB4MjcsCisrICAgIDB4MDQsIDB4MDcsIDB4M2MsIDB4 NTMsIDB4N2YsIDB4YTgsIDB4NjYsIDB4YzgsIDB4OTcsIDB4NGIsIDB4NjEsIDB4NDAsCisrICAg IDB4NWQsIDB4N2EsIDB4MjUsIDB4NzkKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsK KysgICAgMHgyZCwgMHg4ZSwgMHgxNiwgMHg1ZCwgMHgwYiwgMHg5ZiwgMHhlYiwgMHhhYSwgMHhk NiwgMHhlYywgMHgyOCwgMHg3MSwKKysgICAgMHg3YywgMHgwYiwgMHhjMSwgMHgxZCwgMHhkNCwg MHg0NCwgMHgxOSwgMHg0NywgMHhmZCwgMHgxZCwgMHg3YywgMHhlNSwKKysgICAgMHhmMywgMHgy NywgMHhlMSwgMHhiNiwgMHg3MiwgMHgwYSwgMHhlMCwgMHhlYywgMHgwZSwgMHhjZCwgMHhlZiwg MHgxYSwKKysgICAgMHg5MSwgMHg2YSwgMHhlMywgMHg1ZgorK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcmV0dXJuZWRiaXRz W10gPSB7CisrICAgIDB4ZTUsIDB4ZGEsIDB4YjgsIDB4ZTAsIDB4NjMsIDB4NTksIDB4NWEsIDB4 Y2MsIDB4M2QsIDB4ZGMsIDB4OWYsIDB4ZTgsCisrICAgIDB4NjYsIDB4NjcsIDB4MmMsIDB4OTIK Kyt9OworKworKy8qIEFFUy0yNTYgbm8gZGYgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfZW50cm9weWlucHV0W10gPSB7 CisrICAgIDB4MTUsIDB4YzcsIDB4NWQsIDB4Y2IsIDB4NDEsIDB4NGIsIDB4MTYsIDB4MDEsIDB4 M2EsIDB4ZDEsIDB4NDQsIDB4ZTgsCisrICAgIDB4MjIsIDB4MzIsIDB4YzYsIDB4OWMsIDB4M2Ys IDB4ZTcsIDB4NDMsIDB4ZjUsIDB4OWEsIDB4ZDMsIDB4ZWEsIDB4ZjIsCisrICAgIDB4ZDcsIDB4 NGUsIDB4NmUsIDB4NmEsIDB4NTUsIDB4NzMsIDB4NDAsIDB4ZWYsIDB4ODksIDB4YWQsIDB4MGQs IDB4MDMsCisrICAgIDB4OTYsIDB4N2UsIDB4NzgsIDB4ODEsIDB4MmYsIDB4OTEsIDB4MWIsIDB4 NDQsIDB4YjAsIDB4MDIsIDB4YmEsIDB4MWMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3ByX25vbmNlW10gPSB7CisrICAg IDB4ZGMsIDB4ZTQsIDB4ZDQsIDB4MjcsIDB4N2EsIDB4OTAsIDB4ZDcsIDB4OTksIDB4NDMsIDB4 YTEsIDB4M2MsIDB4MzAsCisrICAgIDB4Y2MsIDB4NGIsIDB4ZWUsIDB4MmUKKyt9OworKworK19f Zmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25v X2RmX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweGUzLCAweGU2LCAweGI5 LCAweDExLCAweGU0LCAweDdhLCAweGE0LCAweDQwLCAweDZiLCAweGY4LCAweDczLCAweGY3LAor KyAgICAweDdlLCAweGVjLCAweGM3LCAweGI5LCAweDk3LCAweGJmLCAweGY4LCAweDI1LCAweDdi LCAweGJlLCAweDExLCAweDliLAorKyAgICAweDViLCAweDZhLCAweDBjLCAweDJlLCAweDJiLCAw eDAxLCAweDUxLCAweGNkLCAweDQxLCAweDRiLCAweDZiLCAweGFjLAorKyAgICAweDMxLCAweGE4 LCAweDBiLCAweGY3LCAweGU2LCAweDU5LCAweDQyLCAweGI4LCAweDAzLCAweDBjLCAweGY4LCAw eDA2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHg2YSwg MHg5ZiwgMHgwMCwgMHg5MSwgMHhhZSwgMHhmZSwgMHhjZiwgMHg4NCwgMHg5OSwgMHhjZSwgMHhi MSwgMHg0MCwKKysgICAgMHg2ZCwgMHg1ZCwgMHgzMywgMHgyOCwgMHg4NCwgMHhmNCwgMHg4Yywg MHg2MywgMHg0YywgMHg3ZSwgMHhiZCwgMHgyYywKKysgICAgMHg4MCwgMHg3NiwgMHhlZSwgMHg1 YSwgMHhhYSwgMHgxNSwgMHgwNywgMHgzMSwgMHhkOCwgMHhiYiwgMHg4YywgMHg2OSwKKysgICAg MHg5ZCwgMHg5ZCwgMHhiYywgMHg3ZSwgMHg0OSwgMHhhZSwgMHhlYywgMHgzOSwgMHg2YiwgMHhk MSwgMHgxZiwgMHg3ZQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHhm MywgMHhiOSwgMHg3NSwgMHg5YywgMHhiZCwgMHg4OCwgMHhlYSwgMHhhMiwgMHg1MCwgMHhhZCwg MHhkNiwgMHgxNiwKKysgICAgMHgxYSwgMHgxMiwgMHgzYywgMHg4NiwgMHg2OCwgMHhhZiwgMHg2 ZiwgMHhiZSwgMHgxOSwgMHhmMiwgMHhlZSwgMHhjYywKKysgICAgMHhhNSwgMHg3MCwgMHg4NCwg MHg1MywgMHg1MCwgMHhjYiwgMHg5ZiwgMHgxNCwgMHhhOSwgMHhlNSwgMHhlZSwgMHhiOSwKKysg ICAgMHg0OCwgMHg0NSwgMHg0MCwgMHhlMiwgMHhjNywgMHhjOSwgMHg5YSwgMHg3NCwgMHhmZiwg MHg4YywgMHg5OSwgMHgxZgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfaW50X3JldHVybmVkYml0c1tdID0g eworKyAgICAweDJlLCAweGYyLCAweDQ1LCAweDRjLCAweDYyLCAweDJlLCAweDBhLCAweGI5LCAw eDZiLCAweGEyLCAweGZkLCAweDU2LAorKyAgICAweDc5LCAweDYwLCAweDkzLCAweGNmCisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzI1Nl9ub19kZl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4YWYsIDB4NjksIDB4 MjAsIDB4ZTksIDB4M2IsIDB4MzcsIDB4OWQsIDB4M2YsIDB4YjQsIDB4ODAsIDB4MDIsIDB4N2Es CisrICAgIDB4MjUsIDB4N2QsIDB4YjgsIDB4ZGUsIDB4NzEsIDB4YzUsIDB4MDYsIDB4MGMsIDB4 YjQsIDB4ZTIsIDB4OGYsIDB4MzUsCisrICAgIDB4ZDgsIDB4MTQsIDB4MGQsIDB4N2YsIDB4NzYs IDB4NjMsIDB4NGUsIDB4YjUsIDB4ZWUsIDB4ZTksIDB4NmYsIDB4MzQsCisrICAgIDB4YzcsIDB4 NWYsIDB4NTYsIDB4MTQsIDB4NGEsIDB4ZTgsIDB4NzMsIDB4OTUsIDB4NWIsIDB4MWMsIDB4Yjks IDB4Y2IKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMjU2X25vX2RmX3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweGU1 LCAweGIwLCAweDJlLCAweDdlLCAweDUyLCAweDMwLCAweGUzLCAweDYzLCAweDgyLCAweGI2LCAw eDQ0LCAweGQzLAorKyAgICAweDI1LCAweDE5LCAweDA1LCAweDI0LCAweDlhLCAweDlmLCAweDVm LCAweDI3LCAweDZhLCAweDI5LCAweGFiLCAweGZhLAorKyAgICAweDA3LCAweGEyLCAweDQyLCAw eDBmLCAweGM1LCAweGE4LCAweDk0LCAweDdjLCAweDE3LCAweDdiLCAweDg1LCAweDgzLAorKyAg ICAweDBjLCAweDI1LCAweDBlLCAweDYzLCAweDBiLCAweGU5LCAweDEyLCAweDYwLCAweGNkLCAw eGVmLCAweDgwLCAweDBmCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg1 ZSwgMHhmMiwgMHgyNiwgMHhlZiwgMHg5ZiwgMHg1OCwgMHg1ZCwgMHhkNSwgMHg0YSwgMHgxMCwg MHhmZSwgMHhhNywKKysgICAgMHgyZCwgMHg1ZiwgMHg0YSwgMHg0NgorK307CisrCisrLyogQUVT LTI1NiBubyBkZiBObyBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHhmYiwgMHhj ZiwgMHgxYiwgMHg2MSwgMHgxNiwgMHg4OSwgMHg3OCwgMHgyMywgMHhmNSwgMHhkOCwgMHg5Niwg MHhlMywKKysgICAgMHg0ZSwgMHg2NCwgMHgwYiwgMHgyOSwgMHg5YSwgMHgzZiwgMHhmOCwgMHhh NSwgMHhlZCwgMHhmMiwgMHhmZSwgMHhkYiwKKysgICAgMHgxNiwgMHhjYSwgMHg3ZiwgMHgxMCwg MHhmYSwgMHg1ZSwgMHgxOCwgMHg3NiwgMHgyYywgMHg2MywgMHg1ZSwgMHg5NiwKKysgICAgMHhj ZiwgMHhiMywgMHhkNiwgMHhmYywgMHhhZiwgMHg5OSwgMHgzOSwgMHgyOCwgMHg5YywgMHg2MSwg MHhlOCwgMHhiMworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18yNTZfbm9fZGZfbm9uY2VbXSA9IHsKKysgICAgMHgxMiwgMHg5NiwgMHhmMCwg MHg1MiwgMHhmMywgMHg4ZCwgMHg4MSwgMHhjZiwgMHhkZSwgMHg4NiwgMHhmMiwgMHg5OSwKKysg ICAgMHg0MywgMHg5NiwgMHhiOSwgMHhmMAorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAg IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcGVyc29uYWxpemF0aW9u c3RyaW5nW10gPSB7CisrICAgIDB4NjMsIDB4MGQsIDB4NzgsIDB4ZjUsIDB4OTAsIDB4OGUsIDB4 MzIsIDB4NDcsIDB4YjAsIDB4NGQsIDB4MzcsIDB4NjAsCisrICAgIDB4MDksIDB4OTYsIDB4YmMs IDB4YmYsIDB4OTcsIDB4N2EsIDB4NjIsIDB4MTQsIDB4NDUsIDB4YmQsIDB4OGQsIDB4Y2MsCisr ICAgIDB4NjksIDB4ZmIsIDB4MDMsIDB4ZTEsIDB4ODAsIDB4MWMsIDB4YzcsIDB4ZTIsIDB4MmEs IDB4ZjksIDB4MzcsIDB4M2YsCisrICAgIDB4NjYsIDB4NGQsIDB4NjIsIDB4ZDksIDB4MTAsIDB4 ZTAsIDB4YWQsIDB4YzgsIDB4OWEsIDB4ZjAsIDB4YTgsIDB4NmQKKyt9OworKworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX2FkZGl0aW9u YWxpbnB1dFtdID0geworKyAgICAweDM2LCAweGM2LCAweDEzLCAweDYwLCAweGJiLCAweDE0LCAw eGFkLCAweDIyLCAweGIwLCAweDM4LCAweGFjLCAweGE2LAorKyAgICAweDE4LCAweDE2LCAweDkz LCAweDI1LCAweDg2LCAweGI3LCAweGRjLCAweGRjLCAweDM2LCAweDk4LCAweDJiLCAweGY5LAor KyAgICAweDY4LCAweDMzLCAweGQzLCAweGM2LCAweGZmLCAweGNlLCAweDhkLCAweDE1LCAweDU5 LCAweDgyLCAweDc2LCAweGVkLAorKyAgICAweDZmLCAweDhkLCAweDQ5LCAweDc0LCAweDJmLCAw eGRhLCAweGRjLCAweDFmLCAweDE3LCAweGQwLCAweGRlLCAweDE3CisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9pbnRfcmV0 dXJuZWRiaXRzW10gPSB7CisrICAgIDB4MTYsIDB4MmYsIDB4OGUsIDB4M2YsIDB4MjEsIDB4N2Es IDB4MWMsIDB4MjAsIDB4NTYsIDB4ZDEsIDB4OTIsIDB4ZjYsCisrICAgIDB4ZDIsIDB4MjUsIDB4 NzUsIDB4MGUKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMjU2X25vX2RmX2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAgICAw eDkxLCAweDc5LCAweDc2LCAweGVlLCAweGUwLCAweGNmLCAweDllLCAweGMyLCAweGQ1LCAweGQ0 LCAweDIzLCAweDliLAorKyAgICAweDEyLCAweDhjLCAweDdlLCAweDBhLCAweGI3LCAweGQyLCAw eDhiLCAweGQ2LCAweDdjLCAweGEzLCAweGM2LCAweGU1LAorKyAgICAweDBlLCAweGFhLCAweGM3 LCAweDZiLCAweGFlLCAweDBkLCAweGZhLCAweDUzLCAweDA2LCAweDc5LCAweGExLCAweGVkLAor KyAgICAweDRkLCAweDZhLCAweDBlLCAweGQ4LCAweDlkLCAweGJlLCAweDFiLCAweDMxLCAweDkz LCAweDdiLCAweGVjLCAweGZiCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRb XSA9IHsKKysgICAgMHhkMiwgMHg0NiwgMHg1MCwgMHgyMiwgMHgxMCwgMHgxNCwgMHg2MywgMHhm NywgMHhlYSwgMHgwZiwgMHhiOSwgMHg3ZSwKKysgICAgMHgwZCwgMHhlMSwgMHg5NCwgMHgwNywg MHhhZiwgMHgwOSwgMHg0NCwgMHgzMSwgMHhlYSwgMHg2NCwgMHhhNCwgMHgxOCwKKysgICAgMHg1 YiwgMHhmOSwgMHhkOCwgMHhjMiwgMHhmYSwgMHgwMywgMHg0NywgMHhjNSwgMHgzOSwgMHg0Mywg MHhkNSwgMHgzYiwKKysgICAgMHg2MiwgMHg4NiwgMHg2NCwgMHhlYSwgMHgyYywgMHg3MywgMHg4 YywgMHhhZSwgMHg5ZCwgMHg5OCwgMHg5OCwgMHgyOQorK307CisrCisrX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfYWRkaXRpb25hbGlucHV0 MltdID0geworKyAgICAweDhjLCAweGFiLCAweDE4LCAweGY4LCAweGMzLCAweGVjLCAweDE4LCAw eDVjLCAweGIzLCAweDFlLCAweDlkLCAweGJlLAorKyAgICAweDNmLCAweDAzLCAweGI0LCAweDAw LCAweDk4LCAweDlkLCAweGFlLCAweGViLCAweGY0LCAweDk0LCAweGY4LCAweDQyLAorKyAgICAw eDhmLCAweGUzLCAweDM5LCAweDA3LCAweGUxLCAweGM5LCAweGFkLCAweDBiLCAweDFmLCAweGVk LCAweGMwLCAweGJhLAorKyAgICAweGY2LCAweGQxLCAweGVjLCAweDI3LCAweDg2LCAweDdiLCAw eGQ2LCAweDU1LCAweDliLCAweDYwLCAweGE1LCAweGM2CisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9yZXR1cm5lZGJpdHNb XSA9IHsKKysgICAgMHhlZiwgMHhkMiwgMHhkOCwgMHg1YywgMHhkYywgMHg2MiwgMHgyNSwgMHg5 ZiwgMHhhYSwgMHgxZSwgMHgyYywgMHg2NywKKysgICAgMHhmNiwgMHgwMiwgMHgzMiwgMHhlMgor K307CisrCisrLyogU0hBLTEgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTFfcHJfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4ZDIsIDB4MzYs IDB4YTUsIDB4MjcsIDB4MzEsIDB4NzMsIDB4ZGQsIDB4MTEsIDB4NGYsIDB4OTMsIDB4YmQsIDB4 ZTIsCisrICAgIDB4MzEsIDB4YTUsIDB4OTEsIDB4MTMKKyt9OworKworK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX25vbmNlW10gPSB7CisrICAgIDB4 YjUsIDB4YjMsIDB4NjAsIDB4ZWYsIDB4ZjcsIDB4NjMsIDB4MzEsIDB4ZjMKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX3BlcnNvbmFs aXphdGlvbnN0cmluZ1tdID0geworKyAgICAweGQ0LCAweGJiLCAweDAyLCAweDEwLCAweGIyLCAw eDcxLCAweGRiLCAweDgxLCAweGQ2LCAweGYwLCAweDQyLCAweDYwLAorKyAgICAweGRhLCAweGVh LCAweDc3LCAweDUyCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgc2hhMV9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHg0ZCwgMHhkMiwg MHg2YywgMHg4NywgMHhmYiwgMHgyYywgMHg0ZiwgMHhhNiwgMHg4ZCwgMHgxNiwgMHg2MywgMHgy MiwKKysgICAgMHg2YSwgMHg1MSwgMHhlMywgMHhmOAorK307CisrCisrX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfZW50cm9weWlucHV0cHJbXSA9IHsK KysgICAgMHhjOSwgMHg4MywgMHg5ZSwgMHgxNiwgMHhmNiwgMHgxYywgMHgwZiwgMHhiMiwgMHhl YywgMHg2MCwgMHgzMSwgMHhhOSwKKysgICAgMHhjYiwgMHhhOSwgMHgzNiwgMHg3YQorK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfaW50 X3JldHVybmVkYml0c1tdID0geworKyAgICAweGE4LCAweDEzLCAweDRmLCAweGY0LCAweDMxLCAw eDAyLCAweDQ0LCAweGUzLCAweGQzLCAweDNkLCAweDYxLCAweDllLAorKyAgICAweGU1LCAweGM2 LCAweDNlLCAweDg5LCAweGI1LCAweDliLCAweDBmLCAweDM1CisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9wcl9hZGRpdGlvbmFsaW5wdXQy W10gPSB7CisrICAgIDB4ZjksIDB4ZTgsIDB4ZDIsIDB4NzIsIDB4MTMsIDB4MzQsIDB4OTUsIDB4 NmYsIDB4MTUsIDB4NDksIDB4NDcsIDB4OTksCisrICAgIDB4MTYsIDB4MDMsIDB4MTksIDB4NDcK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEx X3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweDRlLCAweDhjLCAweDQ5LCAweDliLCAw eDRhLCAweDVjLCAweDliLCAweDljLCAweDNhLCAweGVlLCAweGZiLCAweGQyLAorKyAgICAweGFl LCAweGNkLCAweDhjLCAweGM0CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMV9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg1MCwgMHhi NCwgMHhiNCwgMHhjZCwgMHg2OCwgMHg1NywgMHhmYywgMHgyZSwgMHhjMSwgMHg1MiwgMHhjYywg MHhmNiwKKysgICAgMHg2OCwgMHhhNCwgMHg4MSwgMHhlZCwgMHg3ZSwgMHhlNCwgMHgxZCwgMHg4 NworK307CisrCisrLyogU0hBLTEgTm8gUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4YTksIDB4 NDcsIDB4MWIsIDB4MjksIDB4MmQsIDB4MWMsIDB4MDUsIDB4ZGYsIDB4NzYsIDB4ZDAsIDB4NjIs IDB4ZjksCisrICAgIDB4ZTIsIDB4N2YsIDB4NGMsIDB4N2IKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX25vbmNlW10gPSB7CisrICAgIDB4 NTMsIDB4MjMsIDB4MjQsIDB4ZTMsIDB4ZWMsIDB4MGMsIDB4NTQsIDB4MTQKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3BlcnNvbmFsaXph dGlvbnN0cmluZ1tdID0geworKyAgICAweDdhLCAweDg3LCAweGExLCAweGFjLCAweDFjLCAweGZk LCAweGFiLCAweGFlLCAweGY3LCAweGQ2LCAweGZiLCAweDc2LAorKyAgICAweDI4LCAweGVjLCAw eDZkLCAweGNhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhMV9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHhmYywgMHg5MiwgMHgzNSwg MHhkNiwgMHg3ZSwgMHhiNywgMHgyNCwgMHg2NSwgMHhmZCwgMHgxMiwgMHgyNywgMHgzNSwKKysg ICAgMHhjMCwgMHg3MiwgMHhjYSwgMHgyOAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAw eDU3LCAweDg4LCAweDgyLCAweGU1LCAweDI1LCAweGE1LCAweDJjLCAweDRhLCAweDA2LCAweDIw LCAweDZjLCAweDcyLAorKyAgICAweDU1LCAweDYxLCAweGRkLCAweDkwLCAweDcxLCAweDlmLCAw eDk1LCAweGVhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhMV9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHg2OSwgMHhhNSwgMHg0 MCwgMHg2MiwgMHg5OCwgMHg0NywgMHg1NiwgMHg3MywgMHg0YSwgMHg4ZiwgMHg2MCwgMHg5NiwK KysgICAgMHhkNiwgMHg5OSwgMHgyNywgMHhlZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7 CisrICAgIDB4ZTUsIDB4NDAsIDB4NGUsIDB4YmQsIDB4NTAsIDB4MDAsIDB4ZjUsIDB4MTUsIDB4 YTYsIDB4ZWUsIDB4NDUsIDB4ZGEsCisrICAgIDB4ODQsIDB4M2QsIDB4ZDQsIDB4YzAKKyt9Owor KworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX2FkZGl0 aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHgxMSwgMHg1MSwgMHgxNCwgMHhmMCwgMHgwOSwgMHgx YiwgMHg0ZSwgMHg1NiwgMHgwZCwgMHhlOSwgMHhmNiwgMHgxZSwKKysgICAgMHg1MiwgMHg2NSwg MHhjZCwgMHg5NgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTFfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4YTEsIDB4OWMsIDB4OTQsIDB4 NmUsIDB4MjksIDB4ZTEsIDB4MzMsIDB4MGQsIDB4MzIsIDB4ZDYsIDB4YWEsIDB4Y2UsCisrICAg IDB4NzEsIDB4M2YsIDB4NTIsIDB4NzIsIDB4OGIsIDB4NDIsIDB4YTgsIDB4ZDcKKyt9OworKwor Ky8qIFNIQS0yMjQgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTIyNF9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHgxMiwgMHg2OSwgMHgz MiwgMHg0ZiwgMHg4MywgMHhhNiwgMHhmNSwgMHgxNCwgMHhlMywgMHg0OSwgMHgzZSwgMHg3NSwK KysgICAgMHgzZSwgMHhkZSwgMHhhZCwgMHhhMSwgMHgyOSwgMHhjMywgMHhmMywgMHgxOSwgMHgy MCwgMHhiNSwgMHg0YywgMHhkOQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9ub25jZVtdID0geworKyAgICAweDZhLCAweDc4LCAw eGQwLCAweGViLCAweGJiLCAweDVhLCAweGYwLCAweGVlLCAweGU4LCAweGMzLCAweGJhLCAweDcx CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hh MjI0X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweGQ1LCAweGI4LCAweGI2 LCAweGJjLCAweGMxLCAweDViLCAweDYwLCAweDMxLCAweDNjLCAweGY1LCAweGU1LCAweGMwLAor KyAgICAweDhlLCAweDUyLCAweDdhLCAweGJkLCAweGVhLCAweDQ3LCAweGE5LCAweDVmLCAweDhm LCAweGY5LCAweDhiLCAweGFlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDFm LCAweDU1LCAweGVjLCAweGFlLCAweDE2LCAweDEyLCAweDg0LCAweGJhLCAweDg0LCAweDE2LCAw eDE5LCAweDg4LAorKyAgICAweDhlLCAweGI4LCAweDMzLCAweDI1LCAweDU0LCAweGZmLCAweGNh LCAweDc5LCAweGFmLCAweDA3LCAweDI1LCAweDUwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX2VudHJvcHlpbnB1dHByW10gPSB7 CisrICAgIDB4OTIsIDB4YTMsIDB4MzIsIDB4YTgsIDB4OWEsIDB4MGEsIDB4NTgsIDB4N2MsIDB4 MWQsIDB4NWEsIDB4N2UsIDB4ZTEsCisrICAgIDB4YjIsIDB4NzMsIDB4YWIsIDB4MGUsIDB4MTYs IDB4NzksIDB4MjMsIDB4ZDMsIDB4MjksIDB4ODksIDB4ODEsIDB4ZTEKKyt9OworKworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcHJfaW50X3JldHVy bmVkYml0c1tdID0geworKyAgICAweGYzLCAweDM4LCAweDkxLCAweDQwLCAweDM3LCAweDdhLCAw eDUxLCAweDcyLCAweDQyLCAweDc0LCAweDc4LCAweDBhLAorKyAgICAweDY5LCAweGZkLCAweGE2 LCAweDQ0LCAweDQzLCAweDQ1LCAweDZjLCAweDBjLCAweDVhLCAweDE5LCAweGZmLCAweGYxLAor KyAgICAweDU0LCAweDYwLCAweGVlLCAweDZhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsK KysgICAgMHg3NSwgMHhmMywgMHgwNCwgMHgyNSwgMHhkZCwgMHgzNiwgMHhhOCwgMHgzNywgMHg0 NiwgMHhhZSwgMHgwYywgMHg1MiwKKysgICAgMHgwNSwgMHg3OSwgMHg0YywgMHgyNiwgMHhkYiwg MHhlOSwgMHg3MSwgMHgxNiwgMHg0YywgMHgwYSwgMHhmMiwgMHg2MAorK307CisrCisrX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9lbnRyb3B5aW5w dXRwcjJbXSA9IHsKKysgICAgMHhlYSwgMHhjNSwgMHgwMywgMHgwYSwgMHg0ZiwgMHhiMCwgMHgz OCwgMHg4ZCwgMHgyMywgMHhkNCwgMHhjOCwgMHg3NywKKysgICAgMHhlMiwgMHg2ZCwgMHg5Yywg MHgwYiwgMHg0NCwgMHhmNywgMHgyZCwgMHg1YiwgMHhiZiwgMHg1ZCwgMHgyYSwgMHgxMQorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9w cl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg2MCwgMHg1MCwgMHgyYiwgMHhlNywgMHg4Niwg MHhkOCwgMHgyNiwgMHg3MywgMHhlMywgMHgxZCwgMHg5NSwgMHgyMCwKKysgICAgMHhiMywgMHgy YywgMHgzMiwgMHgxYywgMHhmNSwgMHhjZSwgMHg1NywgMHhhNiwgMHg2NywgMHgyYiwgMHhkYywg MHg0ZSwKKysgICAgMHhkZCwgMHgxMSwgMHg0YywgMHhjNAorK307CisrCisrLyogU0hBLTIyNCBO byBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hh MjI0X2VudHJvcHlpbnB1dFtdID0geworKyAgICAweGIyLCAweDFjLCAweDc3LCAweDRkLCAweGY2 LCAweGQzLCAweGI2LCAweDQwLCAweGI3LCAweDMwLCAweDNlLCAweDI5LAorKyAgICAweGIwLCAw eDg1LCAweDFjLCAweGJlLCAweDRhLCAweGVhLCAweDZiLCAweDVhLCAweGI1LCAweDhhLCAweDk3 LCAweGViCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgc2hhMjI0X25vbmNlW10gPSB7CisrICAgIDB4NDIsIDB4MDIsIDB4MGEsIDB4MWMsIDB4OTgs IDB4OWEsIDB4NzcsIDB4OWUsIDB4OWYsIDB4ODAsIDB4YmEsIDB4ZTAKKyt9OworKworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcGVyc29uYWxpemF0 aW9uc3RyaW5nW10gPSB7CisrICAgIDB4OTgsIDB4YjgsIDB4MDQsIDB4NDEsIDB4ZmMsIDB4YzEs IDB4NWQsIDB4YzUsIDB4ZTksIDB4YjksIDB4MDgsIDB4ZGEsCisrICAgIDB4ZjksIDB4ZmEsIDB4 MGQsIDB4OTAsIDB4Y2UsIDB4ZGYsIDB4MWQsIDB4MTAsIDB4YTksIDB4OGQsIDB4NTAsIDB4MGMK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEy MjRfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4OWEsIDB4OGQsIDB4MzksIDB4NDksIDB4 NDIsIDB4ZDUsIDB4MGIsIDB4YWUsIDB4ZTEsIDB4YWYsIDB4YjcsIDB4MDAsCisrICAgIDB4MDIs IDB4ZmEsIDB4OTYsIDB4YjEsIDB4YTUsIDB4MWQsIDB4MmQsIDB4MjUsIDB4NzgsIDB4ZWUsIDB4 ODMsIDB4M2YKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBzaGEyMjRfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGU0LCAweGY1LCAweDUz LCAweDc5LCAweDVhLCAweDk3LCAweDU4LCAweDA2LCAweDA4LCAweGJhLCAweDdiLCAweGZhLAor KyAgICAweGYwLCAweDgzLCAweDA1LCAweDhjLCAweDIyLCAweGMwLCAweGM5LCAweGRiLCAweDE1 LCAweGU3LCAweGRlLCAweDIwLAorKyAgICAweDU1LCAweDIyLCAweDlhLCAweGFkCisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2VudHJv cHlpbnB1dHJlc2VlZFtdID0geworKyAgICAweDY3LCAweDA5LCAweDQ4LCAweGFhLCAweDA3LCAw eDE2LCAweDk5LCAweDg5LCAweDdmLCAweDZkLCAweGEwLCAweGU1LAorKyAgICAweDhmLCAweGRm LCAweGJjLCAweGRiLCAweGZlLCAweGU1LCAweDZjLCAweDdhLCAweDk1LCAweDRhLCAweDY2LCAw eDE3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMjI0X2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0geworKyAgICAweDBmLCAweDRiLCAweDFj LCAweDZmLCAweGI3LCAweGUzLCAweDQ3LCAweGU1LCAweDVkLCAweDdkLCAweDM4LCAweGQ2LAor KyAgICAweDI4LCAweDliLCAweGViLCAweDU1LCAweDYzLCAweDA5LCAweDNlLCAweDdjLCAweDU2 LCAweGVhLCAweGY4LCAweDE5CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHgyZCwg MHgyNiwgMHg3YywgMHgzNywgMHhlNCwgMHg3YSwgMHgyOCwgMHg1ZSwgMHg1YSwgMHgzYywgMHhh ZiwgMHgzZCwKKysgICAgMHg1YSwgMHg4ZSwgMHg1NSwgMHhhMiwgMHgxYSwgMHg2ZSwgMHhjMCwg MHhlNSwgMHhmNiwgMHgyMSwgMHhkMywgMHhmNgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAg MHg0ZCwgMHg4MywgMHgzNSwgMHhkZiwgMHg2NywgMHhhOSwgMHhmYywgMHgxNywgMHhkYSwgMHg3 MCwgMHhjYywgMHg4YiwKKysgICAgMHg3ZiwgMHg3NywgMHhhZSwgMHhhMiwgMHg1ZiwgMHhiOSwg MHg3ZSwgMHg3NCwgMHg0YywgMHgyNiwgMHhjMSwgMHg3YSwKKysgICAgMHgzYiwgMHhhNywgMHg1 YywgMHg5MworK307CisrCisrLyogU0hBLTI1NiBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX2VudHJvcHlpbnB1dFtdID0geworKyAg ICAweGNlLCAweDQ5LCAweDAwLCAweDdhLCAweDU2LCAweGUzLCAweDY3LCAweDhmLCAweGUxLCAw eGI2LCAweGE3LCAweGQ0LAorKyAgICAweDRmLCAweDA4LCAweDdhLCAweDFiLCAweDAxLCAweGY0 LCAweGZhLCAweDZiLCAweGVmLCAweGI3LCAweGU1LCAweGViLAorKyAgICAweDA3LCAweDNkLCAw eDExLCAweDBkLCAweGM4LCAweGVhLCAweDJiLCAweGZlCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX25vbmNlW10gPSB7CisrICAg IDB4NzMsIDB4NDEsIDB4YzgsIDB4OTIsIDB4OTQsIDB4ZTIsIDB4YzUsIDB4NWYsIDB4OTMsIDB4 ZmQsIDB4MzksIDB4NWQsCisrICAgIDB4MmIsIDB4OTEsIDB4NGQsIDB4MzgKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfcGVyc29u YWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4NTAsIDB4NmQsIDB4MDEsIDB4MDEsIDB4MDcs IDB4NWEsIDB4ODAsIDB4MzUsIDB4N2EsIDB4NTYsIDB4MWEsIDB4NTYsCisrICAgIDB4MmYsIDB4 OWEsIDB4MGIsIDB4MzUsIDB4YjIsIDB4YjEsIDB4YzksIDB4ZTUsIDB4Y2EsIDB4NjksIDB4NjEs IDB4NDgsCisrICAgIDB4ZmYsIDB4ZmIsIDB4MGYsIDB4ZDksIDB4NGIsIDB4NzksIDB4MWQsIDB4 YmEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz aGEyNTZfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4MjAsIDB4YjgsIDB4ZGYsIDB4 NDQsIDB4NzcsIDB4NWEsIDB4YjgsIDB4ZDMsIDB4YmYsIDB4ZjYsIDB4Y2YsIDB4YWMsCisrICAg IDB4NWUsIDB4YTYsIDB4OTYsIDB4NjIsIDB4NzMsIDB4NDQsIDB4NDAsIDB4NGEsIDB4MzAsIDB4 ZmIsIDB4MzgsIDB4YTUsCisrICAgIDB4N2IsIDB4MGQsIDB4ZTQsIDB4MGQsIDB4YzYsIDB4ZTQs IDB4OWEsIDB4MWYKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGEyNTZfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHgwNCwgMHhjNCwg MHg2NSwgMHhmNCwgMHhkMywgMHhiZiwgMHg4MywgMHg0YiwgMHhhYiwgMHhjOCwgMHg0MSwgMHhh OCwKKysgICAgMHhjMiwgMHhlMCwgMHg0NCwgMHg2MywgMHg3NywgMHg0YywgMHg2ZiwgMHg2Yywg MHg0OSwgMHg0NiwgMHhmZiwgMHg5NCwKKysgICAgMHgxNywgMHhlYSwgMHhlNiwgMHgxYSwgMHg5 ZCwgMHg1ZSwgMHg2NiwgMHg3OAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4 MDcsIDB4NGQsIDB4YWMsIDB4OWIsIDB4ODYsIDB4Y2EsIDB4NGEsIDB4YWEsIDB4NmUsIDB4N2Es IDB4MDMsIDB4YTIsCisrICAgIDB4NWQsIDB4MTAsIDB4ZWEsIDB4MGIsIDB4ZjksIDB4ODMsIDB4 Y2MsIDB4ZDEsIDB4ZmMsIDB4ZTIsIDB4MDcsIDB4YzcsCisrICAgIDB4MDYsIDB4MzQsIDB4NjAs IDB4NmYsIDB4ODMsIDB4OTQsIDB4OTksIDB4NzYKKyt9OworKworK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0MltdID0g eworKyAgICAweDg5LCAweDRlLCAweDQ1LCAweDhjLCAweDExLCAweGY5LCAweGJjLCAweDViLCAw eGFjLCAweDc0LCAweDhiLCAweDRiLAorKyAgICAweDVmLCAweGY3LCAweDE5LCAweGYzLCAweGY1 LCAweDI0LCAweDU0LCAweDE0LCAweGQxLCAweDE1LCAweGIxLCAweDQzLAorKyAgICAweDEyLCAw eGE0LCAweDVmLCAweGQ0LCAweGVjLCAweGZjLCAweGNkLCAweDA5CisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX2VudHJvcHlpbnB1 dHByMltdID0geworKyAgICAweDBlLCAweGViLCAweDFmLCAweGQ3LCAweGZjLCAweGQxLCAweDlk LCAweGQ0LCAweDA1LCAweDM2LCAweDhiLCAweGIyLAorKyAgICAweGZiLCAweGU0LCAweGY0LCAw eDUxLCAweDBjLCAweDg3LCAweDliLCAweDAyLCAweDQ0LCAweGQ1LCAweDkyLCAweDRkLAorKyAg ICAweDQ0LCAweGZlLCAweDFhLCAweDAzLCAweDQzLCAweDU2LCAweGJkLCAweDg2CisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX3Jl dHVybmVkYml0c1tdID0geworKyAgICAweDAyLCAweGFhLCAweGI2LCAweDFkLCAweDdlLCAweDJh LCAweDQwLCAweDAzLCAweDY5LCAweDJkLCAweDQ5LCAweGEzLAorKyAgICAweDQxLCAweGU3LCAw eDQ0LCAweDBiLCAweGFmLCAweDdiLCAweDg1LCAweGU0LCAweDVmLCAweDUzLCAweDNiLCAweDY0 LAorKyAgICAweGJjLCAweDg5LCAweGM4LCAweDgyLCAweGQ0LCAweDc4LCAweDM3LCAweGEyCisr fTsKKysKKysvKiBTSEEtMjU2IE5vIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGEyNTZfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4NWIsIDB4 MWIsIDB4ZWMsIDB4NGQsIDB4YTksIDB4MzgsIDB4NzQsIDB4NWEsIDB4MzQsIDB4MGIsIDB4N2Is IDB4YzUsCisrICAgIDB4ZTUsIDB4ZDcsIDB4NjYsIDB4N2MsIDB4YmMsIDB4ODIsIDB4YjksIDB4 MGUsIDB4MmQsIDB4MWYsIDB4OTIsIDB4ZDcsCisrICAgIDB4YzEsIDB4YmMsIDB4NjcsIDB4Njks IDB4ZWMsIDB4NmIsIDB4MDMsIDB4M2MKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfbm9uY2VbXSA9IHsKKysgICAgMHhhNCwgMHgwYywg MHhkOCwgMHg5YywgMHg2MSwgMHhkOCwgMHhjMywgMHg1NCwgMHhmZSwgMHg1MywgMHhjOSwgMHhl NSwKKysgICAgMHg1ZCwgMHg2ZiwgMHg2ZCwgMHgzNQorK307CisrCisrX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9wZXJzb25hbGl6YXRpb25zdHJpbmdb XSA9IHsKKysgICAgMHgyMiwgMHg1ZSwgMHg2MiwgMHg5MywgMHg0MiwgMHg4MywgMHg3OCwgMHgy NCwgMHhkOCwgMHg0MCwgMHg4YywgMHhkZSwKKysgICAgMHg2ZiwgMHhmOSwgMHhhNCwgMHg3YSwg MHhjNSwgMHhhNywgMHgzYiwgMHg4OCwgMHhhMywgMHhlZSwgMHg0MiwgMHgyMCwKKysgICAgMHhm ZCwgMHg2MSwgMHg1NiwgMHhjNiwgMHg0YywgMHgxMywgMHg0MSwgMHg5YworK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9hZGRpdGlvbmFs aW5wdXRbXSA9IHsKKysgICAgMHhiZiwgMHg3NCwgMHg1YiwgMHhmNiwgMHhjNSwgMHg2NCwgMHg1 ZSwgMHg5OSwgMHgzNCwgMHg4ZiwgMHhiYywgMHhhNCwKKysgICAgMHhlMiwgMHhiZCwgMHhkOCwg MHg4NSwgMHgyNiwgMHgzNywgMHhlYSwgMHhiYSwgMHg0ZiwgMHhmMiwgMHg5YSwgMHg5YSwKKysg ICAgMHg2NiwgMHhmYywgMHhkZiwgMHg2MywgMHgyNiwgMHgyNiwgMHgxOSwgMHg4NworK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9pbnRf cmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4YjMsIDB4YzYsIDB4MDcsIDB4MDcsIDB4ZDYsIDB4 NzUsIDB4ZjYsIDB4MmIsIDB4ZDYsIDB4MjEsIDB4OTYsIDB4ZjEsCisrICAgIDB4YWUsIDB4ZGIs IDB4MmIsIDB4YWMsIDB4MjUsIDB4MmEsIDB4YWUsIDB4YWUsIDB4NDEsIDB4NzIsIDB4MDMsIDB4 NWUsCisrICAgIDB4YmYsIDB4ZDMsIDB4NjQsIDB4YmMsIDB4NTksIDB4ZjksIDB4YzAsIDB4NzYK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEy NTZfZW50cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4YmYsIDB4MjAsIDB4MzMsIDB4NTYs IDB4MjksIDB4YTgsIDB4MzcsIDB4MDQsIDB4MWYsIDB4NzgsIDB4MzQsIDB4M2QsCisrICAgIDB4 ODEsIDB4MmEsIDB4YzksIDB4ODYsIDB4YzYsIDB4N2EsIDB4MmYsIDB4ODgsIDB4NWUsIDB4ZDUs IDB4YmUsIDB4MzQsCisrICAgIDB4NDYsIDB4MjAsIDB4YTQsIDB4MzUsIDB4ZWIsIDB4YzcsIDB4 ZTIsIDB4OWQKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBzaGEyNTZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4OWIsIDB4YWUs IDB4MmQsIDB4MmQsIDB4NjEsIDB4YTQsIDB4ODksIDB4ZWIsIDB4NDMsIDB4NDYsIDB4YTcsIDB4 ZGEsCisrICAgIDB4ZWYsIDB4NDAsIDB4Y2EsIDB4NGEsIDB4OTksIDB4MTEsIDB4NDEsIDB4ZGMs IDB4NWMsIDB4OTQsIDB4ZTksIDB4YWMsCisrICAgIDB4ZDQsIDB4ZDAsIDB4ZTYsIDB4YmQsIDB4 ZmIsIDB4MDMsIDB4OWMsIDB4YTgKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGEyNTZfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDIz LCAweGFhLCAweDBjLCAweGJkLCAweDI4LCAweDMzLCAweGUyLCAweDUxLCAweGZjLCAweDcxLCAw eGQyLCAweDE1LAorKyAgICAweDFmLCAweDc2LCAweGZkLCAweDBkLCAweGUwLCAweGI3LCAweGI1 LCAweDg0LCAweDc1LCAweDViLCAweGJlLCAweGYzLAorKyAgICAweDVjLCAweGNhLCAweGM1LCAw eDMwLCAweGYyLCAweDc1LCAweDFmLCAweGRhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3JldHVybmVkYml0c1tdID0geworKyAgICAw eDkwLCAweDNjLCAweGMxLCAweDEwLCAweDhjLCAweDEyLCAweDAxLCAweGM2LCAweGE2LCAweDNh LCAweDBmLCAweDRkLAorKyAgICAweGI2LCAweDNhLCAweDRmLCAweDQxLCAweDljLCAweDYxLCAw eDc1LCAweDg0LCAweGU5LCAweDc0LCAweDc1LCAweGZkLAorKyAgICAweGZlLCAweGYyLCAweDFm LCAweDQzLCAweGQ4LCAweDVlLCAweDI0LCAweGEzCisrfTsKKysKKysvKiBTSEEtMzg0IFBSICAq LworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJf ZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4NzEsIDB4OWQsIDB4YjIsIDB4NWEsIDB4NzEsIDB4 NmQsIDB4MDQsIDB4ZTksIDB4MWUsIDB4YzcsIDB4OTIsIDB4MjQsCisrICAgIDB4NmUsIDB4MTIs IDB4MzMsIDB4YTksIDB4NTIsIDB4NjQsIDB4MzEsIDB4ZWYsIDB4NzEsIDB4ZWIsIDB4MjIsIDB4 NTUsCisrICAgIDB4MjgsIDB4OTcsIDB4MDYsIDB4NmEsIDB4YzAsIDB4MGMsIDB4YTAsIDB4N2UK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEz ODRfcHJfbm9uY2VbXSA9IHsKKysgICAgMHhmNSwgMHgwZCwgMHhmYSwgMHhiMCwgMHhlYywgMHg2 YSwgMHg3YywgMHhkNiwgMHhiZCwgMHg5YiwgMHgwNSwgMHhmZCwKKysgICAgMHgzOCwgMHgzZSwg MHgyZSwgMHg1NgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTM4NF9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg3NCwg MHhhYywgMHg3ZSwgMHg2ZCwgMHhiMSwgMHhhNCwgMHhlNywgMHgyMSwgMHhkMSwgMHgxZSwgMHg2 ZSwgMHg5NiwKKysgICAgMHg2ZCwgMHg0ZCwgMHg1MywgMHg0NiwgMHg4MiwgMHg5NiwgMHg2ZSwg MHhjZiwgMHhhYSwgMHg4MSwgMHg4ZCwgMHg3ZCwKKysgICAgMHg5ZSwgMHhlMSwgMHgwZiwgMHgx NSwgMHhlYSwgMHg0MSwgMHhiZiwgMHhlMworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysg ICAgMHhkYSwgMHg5NSwgMHhkNCwgMHhkMCwgMHhiOCwgMHgxMSwgMHhkMywgMHg0OSwgMHgyNywg MHg1ZCwgMHhhOSwgMHgzOSwKKysgICAgMHg2OCwgMHhmMywgMHhhOCwgMHhlOSwgMHg1ZCwgMHgx OSwgMHg4YSwgMHgyYiwgMHg2NiwgMHhlOCwgMHg2OSwgMHgwNiwKKysgICAgMHg3YywgMHg5ZSwg MHgwMywgMHhhMSwgMHg4YiwgMHgyNiwgMHgyZCwgMHg2ZQorK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9wcl9lbnRyb3B5aW5wdXRwcltd ID0geworKyAgICAweDQ5LCAweGRmLCAweDQ0LCAweDAwLCAweGU0LCAweDFjLCAweDc1LCAweDBi LCAweDI2LCAweDVhLCAweDU5LCAweDY0LAorKyAgICAweDFmLCAweDRlLCAweGIxLCAweGIyLCAw eDEzLCAweGYxLCAweDIyLCAweDRlLCAweGI0LCAweDZkLCAweDlhLCAweGNjLAorKyAgICAweGEw LCAweDQ4LCAweGU2LCAweGNmLCAweDFkLCAweGQxLCAweDkyLCAweDBkCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX2ludF9yZXR1 cm5lZGJpdHNbXSA9IHsKKysgICAgMHhjOCwgMHg1MiwgMHhhZSwgMHhiZiwgMHgwNCwgMHgzYywg MHgyNywgMHhiNywgMHg3OCwgMHgxOCwgMHhhYSwgMHg4ZiwKKysgICAgMHhmZiwgMHhjZiwgMHhh NCwgMHhmMSwgMHhjYywgMHhlNywgMHg2OCwgMHhmYSwgMHgyMiwgMHhhMiwgMHgxMywgMHg0NSwK KysgICAgMHhlOCwgMHhkZCwgMHg4NywgMHhlNiwgMHhmMiwgMHg2ZSwgMHhkZCwgMHhjNywgMHg1 MiwgMHg5MCwgMHg5ZiwgMHg3YiwKKysgICAgMHhmYSwgMHg2MSwgMHgyZCwgMHg5ZCwgMHg5ZSwg MHhjZiwgMHg5OCwgMHhhYywgMHg1MiwgMHg0MCwgMHhjZSwgMHhhZgorK307CisrCisrX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9wcl9hZGRpdGlvbmFs aW5wdXQyW10gPSB7CisrICAgIDB4NjEsIDB4N2MsIDB4MDMsIDB4OWEsIDB4M2UsIDB4NTAsIDB4 NTcsIDB4NjAsIDB4YzUsIDB4ODMsIDB4YzksIDB4YjIsCisrICAgIDB4ZDEsIDB4ODcsIDB4ODUs IDB4NjYsIDB4OTIsIDB4NWQsIDB4ODQsIDB4MGUsIDB4NTMsIDB4ZmIsIDB4NzAsIDB4MDMsCisr ICAgIDB4NzIsIDB4ZmQsIDB4YmEsIDB4YWUsIDB4OWMsIDB4OGYsIDB4ZjgsIDB4MTgKKyt9Owor KworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJf ZW50cm9weWlucHV0cHIyW10gPSB7CisrICAgIDB4ZjgsIDB4ZWIsIDB4ODksIDB4YjEsIDB4OGQs IDB4NzgsIDB4YmUsIDB4MjEsIDB4ZTAsIDB4YmIsIDB4OWQsIDB4YjcsCisrICAgIDB4OTUsIDB4 MGUsIDB4ZDksIDB4NDYsIDB4MGMsIDB4OGMsIDB4ZTIsIDB4NjMsIDB4YjcsIDB4OWQsIDB4Njcs IDB4OTAsCisrICAgIDB4YmQsIDB4YzcsIDB4MGIsIDB4YTUsIDB4Y2UsIDB4YjIsIDB4NjUsIDB4 ODEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz aGEzODRfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4ZTYsIDB4OWYsIDB4ZmUsIDB4Njgs IDB4ZDYsIDB4YjUsIDB4NzksIDB4ZjEsIDB4MDYsIDB4NWYsIDB4YTMsIDB4YmIsCisrICAgIDB4 MjMsIDB4ODUsIDB4ZDgsIDB4ZjAsIDB4MjksIDB4NWEsIDB4NjgsIDB4OWUsIDB4ZjUsIDB4ZjQs IDB4YTYsIDB4MTIsCisrICAgIDB4ZTAsIDB4OWEsIDB4ZTIsIDB4YWMsIDB4MDAsIDB4MWQsIDB4 OTgsIDB4MjYsIDB4ZmMsIDB4NTMsIDB4OTUsIDB4NTMsCisrICAgIDB4ZTQsIDB4M2UsIDB4MTcs IDB4ZDUsIDB4MDgsIDB4MGIsIDB4NzAsIDB4M2QsIDB4NjcsIDB4OTksIDB4YWMsIDB4NjYKKyt9 OworKworKy8qIFNIQS0zODQgTm8gUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHgwNywgMHgx NSwgMHgyNywgMHgyYSwgMHhhZiwgMHg3NCwgMHgyNCwgMHgzNywgMHhiYywgMHhkNSwgMHgxNCwg MHg2OSwKKysgICAgMHhjZSwgMHgxMSwgMHhmZiwgMHhhMiwgMHg2YiwgMHhiOCwgMHgwNSwgMHg2 NywgMHgzNCwgMHhmOCwgMHhiZCwgMHg2ZCwKKysgICAgMHg2YSwgMHhjYywgMHhjZCwgMHg2MCwg MHhhMywgMHg2OCwgMHhjYSwgMHhmNAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9ub25jZVtdID0geworKyAgICAweDcwLCAweDE3LCAw eGMyLCAweDViLCAweDVkLCAweDIyLCAweDBiLCAweDA2LCAweDE1LCAweDU0LCAweDc4LCAweDc3 LAorKyAgICAweDQ0LCAweGFmLCAweDJmLCAweDA5CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3BlcnNvbmFsaXphdGlvbnN0cmluZ1td ID0geworKyAgICAweDg5LCAweDM5LCAweDI4LCAweGIwLCAweDYwLCAweGViLCAweDNkLCAweGRj LCAweDU1LCAweDc1LCAweDg2LCAweGViLAorKyAgICAweGFlLCAweGEyLCAweDhmLCAweGJjLCAw eDFiLCAweDc1LCAweGQ0LCAweGUxLCAweDBmLCAweGFhLCAweDM4LCAweGNhLAorKyAgICAweDYy LCAweDhiLCAweGNiLCAweDJjLCAweDI2LCAweGY2LCAweGJjLCAweGIxCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X2FkZGl0aW9uYWxp bnB1dFtdID0geworKyAgICAweDMwLCAweDJiLCAweDQyLCAweDM1LCAweGVmLCAweGRhLCAweDQw LCAweDU1LCAweDI4LCAweGM2LCAweDk1LCAweGZiLAorKyAgICAweDU0LCAweDAxLCAweDYyLCAw eGQ3LCAweDg3LCAweDE0LCAweDQ4LCAweDZkLCAweDkwLCAweDRjLCAweGE5LCAweDAyLAorKyAg ICAweDU0LCAweDQwLCAweDIyLCAweGM4LCAweDY2LCAweGE1LCAweDQ4LCAweDQ4CisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X2ludF9y ZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg4MiwgMHhjNCwgMHhhMSwgMHg5YywgMHgyMSwgMHhk MiwgMHhlNywgMHhhNSwgMHhhNiwgMHhmNiwgMHg1ZiwgMHgwNCwKKysgICAgMHg1YywgMHhjNywg MHgzMSwgMHg5ZCwgMHg4ZCwgMHg1OSwgMHg3NCwgMHg1MCwgMHgxOSwgMHg4OSwgMHgyZiwgMHg2 MywKKysgICAgMHhkNSwgMHhiNywgMHg3ZSwgMHhlYiwgMHgxNSwgMHhlMywgMHg3MCwgMHg4Mywg MHhhMSwgMHgyNCwgMHg1OSwgMHhmYSwKKysgICAgMHgyYywgMHg1NiwgMHhmNiwgMHg4OCwgMHgz YSwgMHg5MiwgMHg5MywgMHhhMSwgMHhmYiwgMHg3OSwgMHhjMSwgMHg3YQorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9lbnRyb3B5aW5w dXRyZXNlZWRbXSA9IHsKKysgICAgMHgzOSwgMHhhNiwgMHhlOCwgMHg1YywgMHg4MiwgMHgxNywg MHg3MSwgMHgyNiwgMHg1NywgMHg0ZiwgMHg5ZiwgMHhjMiwKKysgICAgMHg1NSwgMHhmZiwgMHg1 YywgMHg5YiwgMHg1MywgMHgxYSwgMHhkMSwgMHg1ZiwgMHhiYywgMHg2MiwgMHhlNCwgMHgyNywK KysgICAgMHgyZCwgMHgzMiwgMHhmMCwgMHhlNCwgMHg1MiwgMHg4YywgMHhjNSwgMHgwYworK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9h ZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHg4ZCwgMHhjYiwgMHg4ZCwgMHhjZSwg MHgwOCwgMHhlYSwgMHg4MCwgMHhlOCwgMHg5YiwgMHg2MSwgMHhhOCwgMHgwZiwKKysgICAgMHhh ZiwgMHg0OSwgMHgyMCwgMHg5ZSwgMHg3NCwgMHhjYiwgMHg1NywgMHg4MCwgMHg0MiwgMHhiMCwg MHg4NCwgMHg1ZSwKKysgICAgMHgzMCwgMHgyYSwgMHg2NywgMHgwOCwgMHhmNCwgMHhlMywgMHg0 MCwgMHgyMgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHNoYTM4NF9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4N2MsIDB4OGYsIDB4YzIs IDB4YWUsIDB4MjIsIDB4NGEsIDB4ZDYsIDB4ZjYsIDB4MDUsIDB4YTQsIDB4N2EsIDB4ZWEsCisr ICAgIDB4YmIsIDB4MjUsIDB4ZDAsIDB4YjcsIDB4NWEsIDB4ZDYsIDB4Y2YsIDB4OWQsIDB4ZjMs IDB4NmMsIDB4ZTIsIDB4YjIsCisrICAgIDB4NGUsIDB4YjQsIDB4YmQsIDB4ZjQsIDB4ZTUsIDB4 NDAsIDB4ODAsIDB4OTQKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBzaGEzODRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4OWUsIDB4N2UsIDB4 ZmIsIDB4NTksIDB4YmIsIDB4YWEsIDB4M2MsIDB4ZjcsIDB4ZTEsIDB4ZjgsIDB4NzYsIDB4ZGQs CisrICAgIDB4NjMsIDB4NWYsIDB4YWYsIDB4MjMsIDB4ZDYsIDB4NjQsIDB4NjEsIDB4YzAsIDB4 OWEsIDB4MDksIDB4NDcsIDB4YzksCisrICAgIDB4MzMsIDB4ZGYsIDB4NmQsIDB4NTUsIDB4OTEs IDB4MzQsIDB4NzksIDB4NzAsIDB4YzQsIDB4OTksIDB4NmUsIDB4NTQsCisrICAgIDB4MDksIDB4 NjQsIDB4MjEsIDB4MWEsIDB4YmQsIDB4MWUsIDB4ODAsIDB4NDAsIDB4MzQsIDB4YWQsIDB4ZmEs IDB4ZDcKKyt9OworKworKy8qIFNIQS01MTIgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAg MHgxMywgMHhmNywgMHg2MSwgMHg3NSwgMHg2NSwgMHgyOCwgMHhhMiwgMHg1OSwgMHgxMywgMHg1 YSwgMHg0YSwgMHg0ZiwKKysgICAgMHg1NiwgMHg2MCwgMHg4YywgMHg1MywgMHg3ZCwgMHhiMCwg MHhiZCwgMHgwNiwgMHg0ZiwgMHhlZCwgMHhjYywgMHhkMiwKKysgICAgMHhhMiwgMHhiNSwgMHhm ZCwgMHg1YiwgMHgzYSwgMHhhYiwgMHhlYywgMHgyOAorK307CisrCisrX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9ub25jZVtdID0geworKyAgICAw eGJlLCAweGEzLCAweDkxLCAweDkzLCAweDFkLCAweGMzLCAweDMxLCAweDNhLCAweDIzLCAweDMz LCAweDUwLCAweDY3LAorKyAgICAweDg4LCAweGM3LCAweGEyLCAweGM0CisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX3BlcnNvbmFs aXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDFmLCAweDU5LCAweDRkLCAweDdiLCAweGU2LCAw eDQ2LCAweDkxLCAweDQ4LCAweGMxLCAweDI1LCAweGZhLCAweGZmLAorKyAgICAweDg5LCAweDEy LCAweDc3LCAweDM1LCAweGRmLCAweDNlLCAweGY0LCAweDgwLCAweDVmLCAweGQ5LCAweGIwLCAw eDA3LAorKyAgICAweDIyLCAweDQxLCAweGRkLCAweDQ4LCAweDc4LCAweDZiLCAweDc3LCAweDJi CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hh NTEyX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDMwLCAweGZmLCAweDYzLCAweDZm LCAweGFjLCAweGQ5LCAweDg0LCAweDM5LCAweDZmLCAweGU0LCAweDk5LCAweGNlLAorKyAgICAw eDkxLCAweDdkLCAweDdlLCAweGM4LCAweDU4LCAweGYyLCAweDEyLCAweGMzLCAweGI2LCAweGFk LCAweGRhLCAweDIyLAorKyAgICAweDA0LCAweGEwLCAweGQyLCAweDIxLCAweGZlLCAweGYyLCAw eDk1LCAweDFkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhNTEyX3ByX2VudHJvcHlpbnB1dHByW10gPSB7CisrICAgIDB4NjQsIDB4NTQsIDB4 MTMsIDB4ZWMsIDB4NGYsIDB4NzcsIDB4ZGEsIDB4YjIsIDB4OTIsIDB4MmUsIDB4NTIsIDB4ODAs CisrICAgIDB4MTEsIDB4MTAsIDB4YzIsIDB4ZjgsIDB4ZTYsIDB4YTcsIDB4Y2QsIDB4NGIsIDB4 ZmMsIDB4MzIsIDB4MmUsIDB4OWUsCisrICAgIDB4ZWIsIDB4YmIsIDB4YjEsIDB4YmYsIDB4MTUs IDB4NWMsIDB4NzMsIDB4MDgKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGE1MTJfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGVm LCAweDFlLCAweGRjLCAweDBhLCAweGE0LCAweDM2LCAweDkxLCAweDljLCAweDNkLCAweDI3LCAw eDk3LCAweDUwLAorKyAgICAweDhkLCAweDM2LCAweDI5LCAweDhkLCAweGNlLCAweDZhLCAweDBj LCAweGY3LCAweDIxLCAweGMwLCAweDkxLCAweGFlLAorKyAgICAweDBjLCAweDk2LCAweDcyLCAw eGJkLCAweDUyLCAweDgxLCAweDU4LCAweGZjLCAweDZkLCAweGU1LCAweGY3LCAweGE1LAorKyAg ICAweGZkLCAweDVkLCAweGE3LCAweDU4LCAweDY4LCAweGM4LCAweDk5LCAweDU4LCAweDhlLCAw eGM4LCAweGNlLCAweDk1LAorKyAgICAweDAxLCAweDdkLCAweGZmLCAweGE0LCAweGM4LCAweGY3 LCAweDYzLCAweGZlLCAweDVmLCAweDY5LCAweDgzLCAweDUzLAorKyAgICAweGUyLCAweGM2LCAw eDhiLCAweGMzCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhNTEyX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHhlNiwgMHg5Yiwg MHhjNCwgMHg4OCwgMHgzNCwgMHhjYSwgMHhlYSwgMHgyOSwgMHgyZiwgMHg5OCwgMHgwNSwgMHhh NCwKKysgICAgMHhkMywgMHhjMCwgMHg3YiwgMHgxMSwgMHhlOCwgMHhiYiwgMHg3NSwgMHhmMiwg MHhiZCwgMHgyOSwgMHhiNywgMHg0MCwKKysgICAgMHgyNSwgMHg3ZiwgMHhjMSwgMHhiNywgMHhi MSwgMHhmMSwgMHgyNSwgMHg2MQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKKysgICAgMHgy MywgMHg2ZCwgMHhmZiwgMHhkZSwgMHhmYiwgMHhkMSwgMHhiYSwgMHgzMywgMHgxOCwgMHhlNiwg MHhiZSwgMHhiNSwKKysgICAgMHg0OCwgMHg3NywgMHg2ZCwgMHg3ZiwgMHhhNywgMHhlMSwgMHg0 ZCwgMHg0OCwgMHgxZSwgMHgzYywgMHhhNywgMHgzNCwKKysgICAgMHgxYSwgMHhjOCwgMHg2MCwg MHhkYiwgMHg4ZiwgMHg5OSwgMHgxNSwgMHg5OQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysg ICAgMHg3MCwgMHgyNywgMHgzMSwgMHhkYiwgMHg5MiwgMHg3MCwgMHgyMSwgMHhmZSwgMHgxNiwg MHhiNiwgMHhjOCwgMHg1MSwKKysgICAgMHgzNCwgMHg4NywgMHg2NSwgMHhkMCwgMHg0ZSwgMHhm ZCwgMHhmZSwgMHg2OCwgMHhlYywgMHhhYywgMHhkYywgMHg5MywKKysgICAgMHg0MSwgMHgzOCwg MHg5MiwgMHg5MCwgMHhiNCwgMHg5NCwgMHhmOSwgMHgwZCwgMHhhNCwgMHhmNywgMHg0ZSwgMHg4 MCwKKysgICAgMHg5MiwgMHg2NywgMHg0OCwgMHg0MCwgMHhhNywgMHgwOCwgMHhjNywgMHhiYywg MHg2NiwgMHgwMCwgMHhmZCwgMHhmNywKKysgICAgMHg0YywgMHg4YiwgMHgxNywgMHg2ZSwgMHhk MSwgMHg4ZiwgMHg5YiwgMHhmMywgMHg2ZiwgMHhmNiwgMHgzNCwgMHhkZCwKKysgICAgMHg2Nywg MHhmNywgMHg2OCwgMHhkZAorK307CisrCisrLyogU0hBLTUxMiBObyBQUiAgKi8KKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX2VudHJvcHlpbnB1dFtd ID0geworKyAgICAweGI2LCAweDBiLCAweGI3LCAweGJjLCAweDg0LCAweDU2LCAweGY2LCAweDEy LCAweGFmLCAweDQ1LCAweDY3LCAweDE3LAorKyAgICAweDdjLCAweGQxLCAweGIyLCAweDc4LCAw eDJiLCAweGEwLCAweGYyLCAweGJlLCAweGI2LCAweDZkLCAweDhiLCAweDU2LAorKyAgICAweGM2 LCAweGJjLCAweDRkLCAweGUxLCAweGY3LCAweGJlLCAweGNlLCAweGJkCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX25vbmNlW10gPSB7 CisrICAgIDB4OWQsIDB4ZWQsIDB4YzAsIDB4ZTUsIDB4NWEsIDB4OTgsIDB4NmEsIDB4Y2IsIDB4 NTEsIDB4N2QsIDB4NzYsIDB4MzEsCisrICAgIDB4NWEsIDB4NjQsIDB4ZjAsIDB4ZjcKKyt9Owor KworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcGVy c29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4YzIsIDB4NmQsIDB4YTMsIDB4YzMsIDB4 MDYsIDB4NzQsIDB4ZTUsIDB4MDEsIDB4NWMsIDB4MTAsIDB4MTcsIDB4YzcsCisrICAgIDB4YWYs IDB4ODMsIDB4OWQsIDB4NTksIDB4OGQsIDB4MmQsIDB4MjksIDB4MzgsIDB4YzUsIDB4NTksIDB4 NzAsIDB4OGIsCisrICAgIDB4NDYsIDB4NDgsIDB4MmQsIDB4Y2YsIDB4MzYsIDB4N2QsIDB4NTks IDB4YzAKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBzaGE1MTJfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4ZWMsIDB4OGMsIDB4ZDQsIDB4 ZjcsIDB4NjEsIDB4NmUsIDB4MGQsIDB4OTUsIDB4NzksIDB4YjcsIDB4MjgsIDB4YWQsCisrICAg IDB4NWYsIDB4NjksIDB4NzQsIDB4NWYsIDB4MmQsIDB4MzYsIDB4MDYsIDB4OGEsIDB4NmIsIDB4 YWMsIDB4NTQsIDB4OTcsCisrICAgIDB4YzQsIDB4YTEsIDB4MTIsIDB4ODUsIDB4MGEsIDB4ZGYs IDB4NGIsIDB4MzQKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGE1MTJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDg0LCAweDJmLCAw eDFmLCAweDY4LCAweDZhLCAweGEzLCAweGFkLCAweDFlLCAweGZiLCAweGY0LCAweDE1LCAweGJk LAorKyAgICAweGRlLCAweDM4LCAweGQ0LCAweDMwLCAweDgwLCAweDUxLCAweGU5LCAweGQzLCAw eGM3LCAweDIwLCAweDg4LCAweGU5LAorKyAgICAweGY1LCAweGNjLCAweGRmLCAweDU3LCAweDVj LCAweDQ3LCAweDJmLCAweDU3LCAweDNjLCAweDVmLCAweDEzLCAweDU2LAorKyAgICAweGNjLCAw eGM1LCAweDRmLCAweDg0LCAweGY4LCAweDEwLCAweDQxLCAweGQ1LCAweDdlLCAweDU4LCAweDZl LCAweDE5LAorKyAgICAweDE5LCAweDllLCAweGFmLCAweGMyLCAweDIyLCAweDU4LCAweDQxLCAw eDUwLCAweDc5LCAweGMyLCAweGQ4LCAweDA0LAorKyAgICAweDI4LCAweGQ0LCAweDM5LCAweDlh CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hh NTEyX2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAgICAweGZhLCAweDdmLCAweDQ2LCAweDUx LCAweDgzLCAweDYyLCAweDk4LCAweDE2LCAweDlhLCAweDE5LCAweGEyLCAweDQ5LAorKyAgICAw eGE5LCAweGU2LCAweDRhLCAweGQ4LCAweDg1LCAweGU3LCAweGQ0LCAweDNiLCAweDJjLCAweDgy LCAweGM1LCAweDgyLAorKyAgICAweGJmLCAweDExLCAweGY5LCAweDllLCAweGJjLCAweGQwLCAw eDAxLCAweGVlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhNTEyX2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0geworKyAgICAweGI5LCAweDEy LCAweGUwLCAweDRmLCAweGY3LCAweGE3LCAweGM0LCAweGQ4LCAweGQwLCAweDhlLCAweDk5LCAw eDI5LAorKyAgICAweDdjLCAweDlhLCAweGU5LCAweGNmLCAweGM0LCAweDZjLCAweGY4LCAweGMz LCAweGE3LCAweDQxLCAweDgzLCAweGQ2LAorKyAgICAweDJlLCAweGZhLCAweGI4LCAweDVlLCAw eDhlLCAweDZiLCAweDc4LCAweDIwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHhk NywgMHgwNywgMHg1MiwgMHhiOSwgMHg4MywgMHgyYywgMHgwMywgMHg3MSwgMHhlZSwgMHhjOSwg MHhjMCwgMHg4NSwKKysgICAgMHhlMSwgMHg1NywgMHhiMiwgMHhjZCwgMHgzYSwgMHhmMCwgMHhj OSwgMHgzNCwgMHgyNCwgMHg0MSwgMHgxYywgMHg0MiwKKysgICAgMHg5OSwgMHhiMiwgMHg4NCwg MHhlOSwgMHgxNywgMHhkMiwgMHg3NiwgMHg5MgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAg MHgzNiwgMHgxNywgMHg1ZCwgMHg5OCwgMHgyYiwgMHg2NSwgMHgyNSwgMHg4ZSwgMHhjOCwgMHgy OSwgMHhkZiwgMHgyNywKKysgICAgMHgwNSwgMHgzNiwgMHgyNiwgMHgxMiwgMHg4YSwgMHg2OCwg MHg3NCwgMHgyNywgMHgzNywgMHhkNCwgMHg3ZiwgMHgzMiwKKysgICAgMHhiMSwgMHgxMiwgMHhk NiwgMHg4NSwgMHg4MywgMHhlYiwgMHgyZSwgMHhhMCwgMHhlZCwgMHg0YiwgMHhiNSwgMHg3YiwK KysgICAgMHg2ZiwgMHgzOSwgMHgzYywgMHg3MSwgMHg3NywgMHgwMiwgMHgxMiwgMHhjYywgMHgy YywgMHgzYSwgMHg4ZSwgMHg2MywKKysgICAgMHhkZiwgMHg0YSwgMHhiZCwgMHg2ZiwgMHg2ZSwg MHgyZSwgMHhlZCwgMHgwYSwgMHg4NSwgMHhhNSwgMHgyZiwgMHhhMiwKKysgICAgMHg2OCwgMHhk ZSwgMHg0MiwgMHhiNQorK307CisrCisrLyogSE1BQyBTSEEtMSBQUiAgKi8KKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX2VudHJvcHlpbnB1 dFtdID0geworKyAgICAweDI2LCAweDVmLCAweDM2LCAweDE0LCAweGZmLCAweDNkLCAweDgzLCAw eGZhLCAweDczLCAweDVlLCAweDc1LCAweGRjLAorKyAgICAweDJjLCAweDE4LCAweDE3LCAweDFi CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGExX3ByX25vbmNlW10gPSB7CisrICAgIDB4YzgsIDB4ZTMsIDB4NTcsIDB4YTUsIDB4N2Is IDB4NzQsIDB4ODYsIDB4NmUKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10g PSB7CisrICAgIDB4NmUsIDB4ZGIsIDB4MGQsIDB4ZmUsIDB4N2QsIDB4YWMsIDB4NzksIDB4ZDAs IDB4YTUsIDB4M2EsIDB4NDgsIDB4ODUsCisrICAgIDB4ODAsIDB4ZTIsIDB4N2YsIDB4MmEKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTFfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4MzEsIDB4Y2QsIDB4NWUsIDB4NDMs IDB4ZGMsIDB4ZmIsIDB4N2EsIDB4NzksIDB4Y2EsIDB4ODgsIDB4ZGUsIDB4MWYsCisrICAgIDB4 ZDcsIDB4YmIsIDB4NDIsIDB4MDkKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAg MHg3YywgMHgyMywgMHg5NSwgMHgzOCwgMHgwMCwgMHg5NSwgMHhjMSwgMHg3OCwgMHgxZiwgMHg4 ZiwgMHhkNywgMHg2MywKKysgICAgMHgyMywgMHg4NywgMHgyYSwgMHhlZAorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wcl9pbnRf cmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4YmIsIDB4MzQsIDB4ZTcsIDB4OTMsIDB4YTMsIDB4 MDIsIDB4MmMsIDB4NGEsIDB4ZDAsIDB4ODksIDB4ZGEsIDB4N2YsCisrICAgIDB4ZWQsIDB4ZjQs IDB4NGMsIDB4ZGUsIDB4MTcsIDB4ZWMsIDB4ZTUsIDB4NmMKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcHJfYWRkaXRpb25hbGlu cHV0MltdID0geworKyAgICAweDQ5LCAweGJjLCAweDJkLCAweDJjLCAweGI3LCAweDMyLCAweGNi LCAweDIwLCAweGRmLCAweGY1LCAweDc3LCAweDU4LAorKyAgICAweGEwLCAweDRiLCAweDkzLCAw eDZlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGExX3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweDNjLCAweGFhLCAweGIw LCAweDIxLCAweDQyLCAweGIwLCAweGRkLCAweDM0LCAweGYwLCAweDE2LCAweDdmLCAweDBjLAor KyAgICAweDBmLCAweGZmLCAweDJlLCAweGFmCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX3JldHVybmVkYml0c1tdID0gewor KyAgICAweDhlLCAweGNiLCAweGEzLCAweDY0LCAweGIyLCAweGI4LCAweDMzLCAweDZjLCAweDY0 LCAweDNiLCAweDc4LCAweDE2LAorKyAgICAweDk5LCAweDM1LCAweGM4LCAweDMwLCAweGNiLCAw eDNlLCAweGEwLCAweGQ4CisrfTsKKysKKysvKiBITUFDIFNIQS0xIE5vIFBSICAqLworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfZW50cm9weWlu cHV0W10gPSB7CisrICAgIDB4MzIsIDB4OWEsIDB4MmEsIDB4ODcsIDB4N2IsIDB4ODksIDB4N2Ms IDB4ZjYsIDB4Y2IsIDB4OTUsIDB4ZDUsIDB4NDAsCisrICAgIDB4MTcsIDB4ZmUsIDB4NDcsIDB4 NzAKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBo bWFjX3NoYTFfbm9uY2VbXSA9IHsKKysgICAgMHgxNiwgMHhkOCwgMHhlMCwgMHhjNywgMHg1Miwg MHhjZiwgMHg0YSwgMHgyNQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAg MHgzNSwgMHgzNSwgMHhhOSwgMHhhNSwgMHg0MCwgMHhiZSwgMHg5YiwgMHhkMSwgMHg1NiwgMHhk ZCwgMHg0NCwgMHgwMCwKKysgICAgMHg3MiwgMHhmNywgMHhkMywgMHg1ZQorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9hZGRpdGlv bmFsaW5wdXRbXSA9IHsKKysgICAgMHgxYiwgMHgyYywgMHg4NCwgMHgyZCwgMHg0YSwgMHg4OSwg MHg4ZiwgMHg2OSwgMHgxOSwgMHhmMSwgMHhmMywgMHhkYiwKKysgICAgMHhiYiwgMHhlMywgMHhh YSwgMHhlYQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMV9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4Y2YsIDB4ZmEsIDB4 N2QsIDB4NzIsIDB4MGYsIDB4ZTYsIDB4YzcsIDB4OTYsIDB4YTAsIDB4NjksIDB4MzEsIDB4MTEs CisrICAgIDB4OWIsIDB4MGIsIDB4MWEsIDB4MjAsIDB4MWYsIDB4M2YsIDB4YWEsIDB4ZDEKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTFfZW50cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4OTAsIDB4NzUsIDB4MTUsIDB4MDQs IDB4OTUsIDB4ZjEsIDB4YmEsIDB4ODEsIDB4MGMsIDB4MzcsIDB4OTQsIDB4NmYsCisrICAgIDB4 ODYsIDB4NTIsIDB4NmQsIDB4OWMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7Cisr ICAgIDB4NWIsIDB4NDAsIDB4YmEsIDB4NWYsIDB4MTcsIDB4NzAsIDB4ZjAsIDB4NGIsIDB4ZGYs IDB4YzksIDB4OTcsIDB4OTIsCisrICAgIDB4NzksIDB4YzUsIDB4ODIsIDB4MjgKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfYWRk aXRpb25hbGlucHV0MltdID0geworKyAgICAweDk3LCAweGM4LCAweDgwLCAweDkwLCAweGIzLCAw eGFhLCAweDZlLCAweDYwLCAweGVhLCAweDgzLCAweDdhLCAweGUzLAorKyAgICAweDhhLCAweGNh LCAweGE0LCAweDdmCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGExX3JldHVybmVkYml0c1tdID0geworKyAgICAweDkwLCAweGJkLCAw eDA1LCAweDU2LCAweDZkLCAweGI1LCAweDIyLCAweGQ1LCAweGI5LCAweDVhLCAweDI5LCAweDJk LAorKyAgICAweGU5LCAweDBiLCAweGUxLCAweGFjLCAweGRlLCAweDI3LCAweDBiLCAweGIwCisr fTsKKysKKysvKiBITUFDIFNIQS0yMjQgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X3ByX2VudHJvcHlpbnB1dFtdID0geworKyAg ICAweDE3LCAweDMyLCAweDJiLCAweDJlLCAweDZmLCAweDFiLCAweDljLCAweDZkLCAweDMxLCAw eGUwLCAweDM0LCAweDA3LAorKyAgICAweGNmLCAweGVkLCAweGY2LCAweGI2LCAweDVhLCAweDc2 LCAweDRjLCAweGJjLCAweDYyLCAweDg1LCAweDAxLCAweDkwCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfbm9uY2VbXSA9 IHsKKysgICAgMHgzOCwgMHhiZiwgMHg1ZiwgMHgyMCwgMHhiMywgMHg2OCwgMHgyZiwgMHg0Mywg MHg2MSwgMHgwNSwgMHg4ZiwgMHgyMworK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X3ByX3BlcnNvbmFsaXphdGlvbnN0 cmluZ1tdID0geworKyAgICAweGMwLCAweGM5LCAweDQ1LCAweGFjLCAweDhkLCAweDI3LCAweDc3 LCAweDA4LCAweDBiLCAweDE3LCAweDZkLCAweGVkLAorKyAgICAweGMxLCAweDdkLCAweGQ1LCAw eDA3LCAweDlkLCAweDZlLCAweGY4LCAweDIzLCAweDJhLCAweDIyLCAweDEzLCAweGJkCisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEy MjRfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4YTQsIDB4M2MsIDB4ZTcsIDB4M2Is IDB4ZWEsIDB4MTksIDB4NDUsIDB4MzIsIDB4YzIsIDB4ODMsIDB4NmQsIDB4MjEsCisrICAgIDB4 OGEsIDB4YzAsIDB4ZWUsIDB4NjcsIDB4NDUsIDB4ZGUsIDB4MTMsIDB4N2QsIDB4OWQsIDB4NjEs IDB4MDAsIDB4M2IKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTIyNF9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAweDE1LCAw eDA1LCAweDc0LCAweDRhLCAweDdmLCAweDhkLCAweDVjLCAweDYwLCAweDE2LCAweGU1LCAweDdi LCAweGFkLAorKyAgICAweGY1LCAweDQxLCAweDhmLCAweDU1LCAweDYwLCAweGM0LCAweDA5LCAw eGVlLCAweDFlLCAweDExLCAweDgxLCAweGFiCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfaW50X3JldHVybmVkYml0c1td ID0geworKyAgICAweDZmLCAweGY1LCAweDlhLCAweGUyLCAweDU0LCAweDUzLCAweDMwLCAweDNk LCAweDVhLCAweDI3LCAweDI5LCAweDM4LAorKyAgICAweDI3LCAweGYyLCAweDBkLCAweDA1LCAw eGU5LCAweDI2LCAweGNiLCAweDE2LCAweGMzLCAweDUxLCAweDVmLCAweDEzLAorKyAgICAweDQx LCAweGZlLCAweDk5LCAweGYyCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAg ICAweDczLCAweDgxLCAweDg4LCAweDg0LCAweDhmLCAweGVkLCAweDZmLCAweDEwLCAweDlmLCAw eDkzLCAweGJmLCAweDE3LAorKyAgICAweDM1LCAweDdjLCAweGVmLCAweGQ1LCAweDhkLCAweDI2 LCAweGE2LCAweDdhLCAweGU4LCAweDA5LCAweDM2LCAweDRmCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfZW50cm9weWlu cHV0cHIyW10gPSB7CisrICAgIDB4ZTYsIDB4Y2YsIDB4Y2YsIDB4N2UsIDB4MTIsIDB4ZTUsIDB4 NDMsIDB4ZDIsIDB4MzgsIDB4ZDgsIDB4MjQsIDB4NmYsCisrICAgIDB4NWEsIDB4MzcsIDB4Njgs IDB4YmYsIDB4NGYsIDB4YTAsIDB4ZmYsIDB4ZDUsIDB4NjEsIDB4OGEsIDB4OTMsIDB4ZTAKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTIyNF9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhhZiwgMHhmOSwgMHhkOCwgMHgxOSwg MHg5MSwgMHgzMCwgMHg4MiwgMHg2ZiwgMHhhOSwgMHgxZSwgMHg5ZCwgMHhkNywKKysgICAgMHhm MywgMHg1MCwgMHhlMCwgMHhjNywgMHhkNSwgMHg2NCwgMHg5NiwgMHg3ZCwgMHg0YywgMHg0ZCwg MHg3OCwgMHgwMywKKysgICAgMHg2ZCwgMHhkOCwgMHg5ZSwgMHg3MgorK307CisrCisrLyogSE1B QyBTSEEtMjI0IE5vIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTIyNF9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHgxMSwgMHg4Miwg MHhmZCwgMHhkOSwgMHg0MiwgMHhmNCwgMHhmYSwgMHhjOCwgMHhmMiwgMHg0MSwgMHhlNiwgMHg1 NCwKKysgICAgMHgwMSwgMHhhZSwgMHgyMiwgMHg2ZSwgMHhjNiwgMHhhZiwgMHhhZiwgMHhkMCwg MHhhNiwgMHhiMiwgMHhlMiwgMHg2ZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X25vbmNlW10gPSB7CisrICAgIDB4YTksIDB4 NDgsIDB4ZDcsIDB4OTIsIDB4MzksIDB4N2UsIDB4MmEsIDB4ZGMsIDB4MzAsIDB4MWYsIDB4MGUs IDB4MmIKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTIyNF9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHgx MSwgMHhkNSwgMHhmNCwgMHhiZCwgMHg2NywgMHg4YywgMHgzMSwgMHhjZiwgMHhhMywgMHgzZiwg MHgxZSwgMHg2YiwKKysgICAgMHhhOCwgMHgwNywgMHgwMiwgMHgwYiwgMHhjOCwgMHgyZSwgMHg2 YywgMHg2NCwgMHg0MSwgMHg1YiwgMHhjOCwgMHgzNworK307CisrCisrX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X2FkZGl0aW9uYWxpbnB1dFtd ID0geworKyAgICAweDY4LCAweDE4LCAweGMyLCAweDA2LCAweGViLCAweDNlLCAweDA0LCAweDk1 LCAweDQ0LCAweDVlLCAweGZiLCAweGU2LAorKyAgICAweDQxLCAweGMxLCAweDVjLCAweGNjLCAw eDQwLCAweDJmLCAweGI3LCAweGQyLCAweDBmLCAweGYzLCAweDZiLCAweGU3CisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfaW50 X3JldHVybmVkYml0c1tdID0geworKyAgICAweDdmLCAweDQ1LCAweGM3LCAweDVkLCAweDMyLCAw eGU2LCAweDE3LCAweDYwLCAweGJhLCAweGRjLCAweGI4LCAweDQyLAorKyAgICAweDFiLCAweDlj LCAweGYxLCAweGZhLCAweDNiLCAweDRkLCAweDI5LCAweDU0LCAweGM2LCAweDkwLCAweGZmLCAw eDVjLAorKyAgICAweGNkLCAweGQ2LCAweGE5LCAweGNjCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfZW50cm9weWlucHV0cmVz ZWVkW10gPSB7CisrICAgIDB4YzQsIDB4OGUsIDB4MzcsIDB4OTUsIDB4NjksIDB4NTMsIDB4Mjgs IDB4ZDcsIDB4MzcsIDB4YmIsIDB4NzAsIDB4OTUsCisrICAgIDB4MWMsIDB4MDcsIDB4MWQsIDB4 ZDksIDB4YjcsIDB4ZTYsIDB4MWIsIDB4YmIsIDB4ZmUsIDB4NDEsIDB4ZWIsIDB4YzkKKyt9Owor KworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTIyNF9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHg1MywgMHgxNywgMHhh MSwgMHg2YSwgMHhmYSwgMHg3NywgMHg0NywgMHhiMCwgMHg5NSwgMHg1NiwgMHg5YSwgMHgyMCwK KysgICAgMHg1NywgMHhkZSwgMHg1YywgMHg4OSwgMHg5ZiwgMHg3ZiwgMHhlMiwgMHhkZSwgMHgx NywgMHgzYSwgMHg1MCwgMHgyMworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAg MHgzYSwgMHgzMiwgMHhmOSwgMHg4NSwgMHgwYywgMHhjMSwgMHhlZCwgMHg3NiwgMHgyZCwgMHhk ZiwgMHg0MCwgMHhjMywKKysgICAgMHgwNiwgMHgyMiwgMHg2NiwgMHhkNCwgMHg5YSwgMHg5YSwg MHhmZiwgMHg1YSwgMHg3ZSwgMHg3YSwgMHhmMywgMHg5NgorK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X3JldHVybmVkYml0c1td ID0geworKyAgICAweDQzLCAweGI0LCAweDU3LCAweDVjLCAweDM4LCAweDI1LCAweDlkLCAweGFl LCAweGVjLCAweDk2LCAweGQxLCAweDg1LAorKyAgICAweDNhLCAweDg0LCAweDhkLCAweGZlLCAw eDY4LCAweGQ1LCAweDBlLCAweDVjLCAweDhmLCAweDY1LCAweGE1LCAweDRlLAorKyAgICAweDQ1 LCAweDg0LCAweGE4LCAweDk0CisrfTsKKysKKysvKiBITUFDIFNIQS0yNTYgUFIgICovCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3ByX2Vu dHJvcHlpbnB1dFtdID0geworKyAgICAweDRkLCAweGIwLCAweDQzLCAweGQ4LCAweDM0LCAweDRi LCAweDEwLCAweDcwLCAweGIxLCAweDhiLCAweGVkLCAweGVhLAorKyAgICAweDA3LCAweDkyLCAw eDlmLCAweDZjLCAweDc5LCAweDMxLCAweGFmLCAweDgxLCAweDI5LCAweGViLCAweDZlLCAweGNh LAorKyAgICAweDMyLCAweDQ4LCAweDI4LCAweGU3LCAweDAyLCAweDVkLCAweGE2LCAweGE2Cisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19z aGEyNTZfcHJfbm9uY2VbXSA9IHsKKysgICAgMHgzYSwgMHhhZSwgMHgxNSwgMHhhOSwgMHg5OSwg MHhkYywgMHhlNCwgMHg2NywgMHgzNCwgMHgzYiwgMHg3MCwgMHgxNSwKKysgICAgMHhhYSwgMHhk MywgMHgzMCwgMHg5YQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0g eworKyAgICAweDEzLCAweDFkLCAweDI0LCAweDA0LCAweGIwLCAweDE4LCAweDgxLCAweDE1LCAw eDIxLCAweDUxLCAweDJhLCAweDI0LAorKyAgICAweDUyLCAweDYxLCAweGJlLCAweDY0LCAweDgy LCAweDZiLCAweDU1LCAweDJmLCAweGUyLCAweGYxLCAweDQwLCAweDdkLAorKyAgICAweDcxLCAw eGQ4LCAweDAxLCAweDg2LCAweDE1LCAweGI3LCAweDhiLCAweGI1CisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfYWRkaXRp b25hbGlucHV0W10gPSB7CisrICAgIDB4OGYsIDB4YTYsIDB4NTQsIDB4NWYsIDB4YjEsIDB4ZDAs IDB4ZDgsIDB4YzMsIDB4ZTcsIDB4MGMsIDB4MTUsIDB4YTksCisrICAgIDB4MjMsIDB4NmUsIDB4 ZmUsIDB4ZmIsIDB4OTMsIDB4ZjcsIDB4M2EsIDB4YmQsIDB4NTksIDB4MDEsIDB4ZmEsIDB4MTgs CisrICAgIDB4OGUsIDB4ZTksIDB4MWEsIDB4YTksIDB4NzgsIDB4ZmMsIDB4NzksIDB4MGIKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTI1Nl9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAweGNmLCAweDI0LCAweGI5LCAweGVi LCAweGIzLCAweGQ0LCAweGNkLCAweDE3LCAweDM3LCAweDM4LCAweDc1LCAweDc5LAorKyAgICAw eDE1LCAweGNiLCAweDJkLCAweDc1LCAweDUxLCAweGYxLCAweGNjLCAweGFhLCAweDMyLCAweGE0 LCAweGE3LCAweDM2LAorKyAgICAweDdjLCAweDVjLCAweGU0LCAweDQ3LCAweGYxLCAweDNlLCAw eDFkLCAweGU1CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEyNTZfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDUyLCAw eDQyLCAweGZhLCAweGViLCAweDg1LCAweGUwLCAweDMwLCAweDIyLCAweDc5LCAweDAwLCAweDE2 LCAweGIyLAorKyAgICAweDg4LCAweDJmLCAweDE0LCAweDZhLCAweGI3LCAweGZjLCAweGI3LCAw eDUzLCAweGRjLCAweDRhLCAweDEyLCAweGVmLAorKyAgICAweDU0LCAweGQ2LCAweDMzLCAweGU5 LCAweDIwLCAweGQ2LCAweGZkLCAweDU2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0MltdID0g eworKyAgICAweGY0LCAweGY2LCAweDQ5LCAweGExLCAweDJkLCAweDY0LCAweDJiLCAweDMwLCAw eDU4LCAweGY4LCAweGJkLCAweGI4LAorKyAgICAweDc1LCAweGViLCAweGJiLCAweDVlLCAweDFj LCAweDliLCAweDgxLCAweDZhLCAweGRhLCAweDE0LCAweDg2LCAweDZlLAorKyAgICAweGQwLCAw eGRhLCAweDE4LCAweGI3LCAweDg4LCAweGZiLCAweDU5LCAweGYzCisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfZW50cm9w eWlucHV0cHIyW10gPSB7CisrICAgIDB4MjEsIDB4Y2QsIDB4NmUsIDB4NDYsIDB4YWQsIDB4OTks IDB4MDcsIDB4MTcsIDB4YjQsIDB4M2QsIDB4NzYsIDB4MGEsCisrICAgIDB4ZmYsIDB4NWIsIDB4 NTIsIDB4NTAsIDB4NzgsIDB4ZGYsIDB4MWYsIDB4MjQsIDB4MDYsIDB4MGQsIDB4M2YsIDB4NzQs CisrICAgIDB4YTksIDB4YzksIDB4MzcsIDB4Y2YsIDB4ZDgsIDB4MjYsIDB4MjUsIDB4OTEKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTI1Nl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhhNywgMHhhZiwgMHgyZiwgMHgyOSwg MHhlMCwgMHgzYSwgMHg3MiwgMHg5NSwgMHg5NiwgMHgxYywgMHhhOSwgMHhmMCwKKysgICAgMHg0 YSwgMHgxNywgMHg0ZCwgMHg2NiwgMHgwNiwgMHgxMCwgMHhiZiwgMHgzOSwgMHg4OSwgMHg4OCwg MHhiOCwgMHg5MSwKKysgICAgMHgzNywgMHgxOCwgMHg5OSwgMHhjZiwgMHg4YywgMHg1MywgMHgz YiwgMHg3ZQorK307CisrCisrLyogSE1BQyBTSEEtMjU2IE5vIFBSICAqLworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9lbnRyb3B5aW5wdXRb XSA9IHsKKysgICAgMHg5NiwgMHhiNywgMHg1MywgMHgyMiwgMHgxZSwgMHg1MiwgMHgyYSwgMHg5 NiwgMHhiMSwgMHgxNSwgMHgzYywgMHgzNSwKKysgICAgMHg1YSwgMHg4YiwgMHhkMywgMHg0YSwg MHhhNiwgMHg2YywgMHg4MywgMHgwYSwgMHg3ZCwgMHhhMywgMHgyMywgMHgzZCwKKysgICAgMHg0 MywgMHhhMSwgMHgwNywgMHgyYywgMHgyZCwgMHhlMywgMHg4MSwgMHhjYworK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X25vbmNl W10gPSB7CisrICAgIDB4ZjEsIDB4YWMsIDB4OTcsIDB4Y2IsIDB4NWUsIDB4MDYsIDB4NDgsIDB4 ZDIsIDB4OTQsIDB4YmUsIDB4MTUsIDB4MmUsCisrICAgIDB4YzcsIDB4ZmMsIDB4YzIsIDB4MDEK Kyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBobWFjX3NoYTI1Nl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg5OCwgMHhj NSwgMHgxZSwgMHgzNSwgMHg1ZSwgMHg4OSwgMHgwZCwgMHhjZSwgMHg2NCwgMHg2ZCwgMHgxOCwg MHhhNywKKysgICAgMHg1YSwgMHhjNiwgMHhmMywgMHhlNywgMHhkNiwgMHg5ZSwgMHhjMCwgMHhl YSwgMHhiNywgMHgzYSwgMHg4ZCwgMHg2NSwKKysgICAgMHhiOCwgMHhlYiwgMHgxMCwgMHhkNywg MHg1NywgMHgxOCwgMHhhMCwgMHgzMgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAg ICAweDFiLCAweDEwLCAweGFmLCAweGFjLCAweGQwLCAweDY1LCAweDk1LCAweGFkLCAweDA0LCAw eGFkLCAweDAzLCAweDFjLAorKyAgICAweGUwLCAweDQwLCAweGQ2LCAweDNlLCAweDFjLCAweDQ2 LCAweDUzLCAweDM5LCAweDdjLCAweGUyLCAweGJjLCAweGRhLAorKyAgICAweDhjLCAweGEyLCAw eDMzLCAweGE3LCAweDlhLCAweDI2LCAweGQzLCAweDI3CisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfaW50X3JldHVybmVkYml0 c1tdID0geworKyAgICAweGJhLCAweDYxLCAweDBlLCAweDU1LCAweGZlLCAweDExLCAweDhhLCAw eDllLCAweDBmLCAweDgwLCAweGRmLCAweDFkLAorKyAgICAweDAzLCAweDBhLCAweGZlLCAweDE1 LCAweDk0LCAweDI4LCAweDRiLCAweGJhLCAweGY0LCAweDlmLCAweDUxLCAweDI1LAorKyAgICAw eDg4LCAweGU1LCAweDRlLCAweGZiLCAweGFmLCAweGNlLCAweDY5LCAweDkwCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfZW50 cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4NjIsIDB4N2YsIDB4MWUsIDB4NmIsIDB4ZTgs IDB4OGUsIDB4ZTEsIDB4MzUsIDB4N2QsIDB4OWIsIDB4NGYsIDB4YzcsCisrICAgIDB4ZWMsIDB4 YzgsIDB4YWMsIDB4ZWYsIDB4NmIsIDB4MTMsIDB4OWUsIDB4MDUsIDB4NTYsIDB4YzEsIDB4MDgs IDB4ZjksCisrICAgIDB4MmYsIDB4MGYsIDB4MjcsIDB4OWMsIDB4ZDQsIDB4MTUsIDB4ZWQsIDB4 MmQKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTI1Nl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHhjNywg MHg3NiwgMHg2ZSwgMHhhOSwgMHhkMiwgMHhiMiwgMHg3NiwgMHg0MCwgMHg4MiwgMHgyNSwgMHgy YywgMHhiMywKKysgICAgMHg2ZiwgMHhhYywgMHhlOSwgMHg3NCwgMHhlZiwgMHg4ZiwgMHgzYywg MHg4ZSwgMHhjZCwgMHhmMSwgMHhiZiwgMHhiMywKKysgICAgMHg0OSwgMHg3NywgMHgzNCwgMHg4 OCwgMHg1MiwgMHgzNiwgMHhlNiwgMHgyZQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsK KysgICAgMHg4ZCwgMHhiOCwgMHgwYywgMHhkMSwgMHhiZiwgMHg3MCwgMHhmNiwgMHgxOSwgMHhj MywgMHg0MSwgMHg4MCwgMHg5ZiwKKysgICAgMHhlMSwgMHhhNSwgMHhhNCwgMHgxZiwgMHgyYywg MHgyNiwgMHhiMSwgMHhlNSwgMHhkOCwgMHhlYiwgMHhiZSwgMHhmOCwKKysgICAgMHhkZiwgMHg4 OCwgMHg2YSwgMHg4OSwgMHhkNiwgMHgwNSwgMHhkOCwgMHg5ZAorK307CisrCisrX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3JldHVybmVkYml0 c1tdID0geworKyAgICAweDQzLCAweDEyLCAweDJhLCAweDJjLCAweDQwLCAweDUzLCAweDJlLCAw eDdjLCAweDY2LCAweDM0LCAweGFjLCAweGMzLAorKyAgICAweDQzLCAweGUzLCAweGUwLCAweDZh LCAweGZjLCAweGZhLCAweGVhLCAweDg3LCAweDIxLCAweDFmLCAweGUyLCAweDI2LAorKyAgICAw eGM0LCAweGY5LCAweDA5LCAweDlhLCAweDBkLCAweDZlLCAweDdmLCAweGUwCisrfTsKKysKKysv KiBITUFDIFNIQS0zODQgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDY5LCAw eDgxLCAweDk4LCAweDg4LCAweDQ0LCAweGY1LCAweGQ2LCAweDJlLCAweDAwLCAweDA4LCAweDNi LCAweGM1LAorKyAgICAweGZiLCAweGQ3LCAweDhlLCAweDZmLCAweDIzLCAweGY4LCAweDZkLCAw eDA5LCAweGQ2LCAweDg1LCAweDQ5LCAweGQxLAorKyAgICAweGY4LCAweDZkLCAweGE0LCAweDU4 LCAweDU0LCAweGZkLCAweDg4LCAweGE5CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfbm9uY2VbXSA9IHsKKysgICAgMHg2 ZSwgMHgzOCwgMHg4MSwgMHhjYSwgMHhiNywgMHhlOCwgMHg2ZSwgMHg2NiwgMHg0OSwgMHg4YSwg MHhiMiwgMHg1OSwKKysgICAgMHhlZSwgMHgxNiwgMHhjOSwgMHhkZQorK307CisrCisrX19maXBz X2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3By X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweGZlLCAweDRjLCAweGQ5LCAweGY0 LCAweDc4LCAweDNiLCAweDA4LCAweDQxLCAweDhkLCAweDhmLCAweDU1LCAweGM0LAorKyAgICAw eDQzLCAweDU2LCAweGI2LCAweDEyLCAweDM2LCAweDZiLCAweDMwLCAweGI3LCAweDVlLCAweGUx LCAweGI5LCAweDQ3LAorKyAgICAweDA0LCAweGIxLCAweDRlLCAweGE5LCAweDAwLCAweGExLCAw eDUyLCAweGExCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEzODRfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4ODksIDB4 ZTksIDB4Y2MsIDB4OGYsIDB4MjcsIDB4M2MsIDB4MjYsIDB4ZDEsIDB4OTUsIDB4YzgsIDB4N2Qs IDB4MGYsCisrICAgIDB4NWIsIDB4MWEsIDB4ZjAsIDB4NzgsIDB4MzksIDB4NTYsIDB4NmYsIDB4 YTQsIDB4MjMsIDB4ZTcsIDB4ZDEsIDB4ZGEsCisrICAgIDB4N2MsIDB4NjYsIDB4MzMsIDB4YTAs IDB4OTAsIDB4YzksIDB4OTIsIDB4ODgKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9wcl9lbnRyb3B5aW5wdXRwcltdID0gewor KyAgICAweGJlLCAweDNkLCAweDdjLCAweDBkLCAweGNhLCAweGRhLCAweDdjLCAweDQ5LCAweGI4 LCAweDEyLCAweDM2LCAweGMwLAorKyAgICAweGRiLCAweGFkLCAweDM1LCAweGE4LCAweGM3LCAw eDBiLCAweDJhLCAweDJjLCAweDY5LCAweDZkLCAweDI1LCAweDU2LAorKyAgICAweDYzLCAweDgy LCAweDExLCAweDNlLCAweGE3LCAweDMzLCAweDcwLCAweDcyCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfaW50X3JldHVy bmVkYml0c1tdID0geworKyAgICAweDgyLCAweDNkLCAweGU2LCAweDU0LCAweDgwLCAweDQyLCAw eGY4LCAweGJhLCAweDkwLCAweDRmLCAweDA2LCAweGE2LAorKyAgICAweGQyLCAweDdmLCAweGJm LCAweDc5LCAweDdjLCAweDEyLCAweDdkLCAweGE2LCAweGEyLCAweDY2LCAweGU4LCAweGE2LAor KyAgICAweGMwLCAweGQ2LCAweDRhLCAweDU1LCAweGJmLCAweGQ4LCAweDBhLCAweGM1LCAweGY4 LCAweDAzLCAweDg4LCAweGRkLAorKyAgICAweDhlLCAweDg3LCAweGQxLCAweDVhLCAweDQ4LCAw eDI2LCAweDcyLCAweDJhLCAweDhlLCAweGNmLCAweGVlLCAweGJhCisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfYWRkaXRp b25hbGlucHV0MltdID0geworKyAgICAweDhmLCAweGZmLCAweGQ5LCAweDg0LCAweGJiLCAweDg1 LCAweDNhLCAweDY2LCAweGExLCAweDIxLCAweGNlLCAweGIyLAorKyAgICAweDNhLCAweDNhLCAw eDE3LCAweDIyLCAweDE5LCAweGFlLCAweGM3LCAweGI2LCAweDYzLCAweDgxLCAweGQ1LCAweGZm LAorKyAgICAweDBkLCAweGM4LCAweGUxLCAweGFmLCAweDU3LCAweGQyLCAweGNiLCAweDYwCisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19z aGEzODRfcHJfZW50cm9weWlucHV0cHIyW10gPSB7CisrICAgIDB4ZDcsIDB4ZmIsIDB4YzksIDB4 ZTgsIDB4ZTIsIDB4ZjIsIDB4YWEsIDB4NGMsIDB4YjgsIDB4NTEsIDB4MmYsIDB4ZTEsCisrICAg IDB4MjIsIDB4YmEsIDB4ZjMsIDB4ZGEsIDB4MGEsIDB4MTksIDB4NzYsIDB4NzEsIDB4NTcsIDB4 YjIsIDB4MWQsIDB4OTQsCisrICAgIDB4MDksIDB4NjksIDB4NmMsIDB4ZDMsIDB4OTcsIDB4NTEs IDB4ODEsIDB4ODcKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTM4NF9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhlNiwgMHgx OSwgMHgyOCwgMHhhOCwgMHgyMSwgMHhjZSwgMHg1ZSwgMHhkYiwgMHgyNCwgMHg3OSwgMHg4Yywg MHg3NiwKKysgICAgMHg1ZCwgMHg3MywgMHhiMiwgMHhkZiwgMHhhYywgMHhlZiwgMHg4NSwgMHhh NywgMHgzYiwgMHgxOSwgMHgwOSwgMHg4YiwKKysgICAgMHg3ZiwgMHg5OCwgMHgyOCwgMHhhOSwg MHg5MywgMHhkOCwgMHg3YSwgMHhhZCwgMHg1NSwgMHg4YiwgMHgyNCwgMHg5ZCwKKysgICAgMHhl NiwgMHg5OCwgMHhmZSwgMHg0NywgMHhkNSwgMHg0OCwgMHhjMSwgMHgyMywgMHhkOCwgMHgxZCwg MHg2MiwgMHg3NQorK307CisrCisrLyogSE1BQyBTSEEtMzg0IE5vIFBSICAqLworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9lbnRyb3B5aW5w dXRbXSA9IHsKKysgICAgMHhjMywgMHg1NiwgMHgyYiwgMHgxZCwgMHhjMiwgMHhiYiwgMHhhOCwg MHhmMCwgMHhhZSwgMHgxYiwgMHgwZCwgMHhkMywKKysgICAgMHg1YSwgMHg2YywgMHhkYSwgMHg1 NywgMHg4ZSwgMHhhNSwgMHg4YSwgMHgwZCwgMHg2YywgMHg0YiwgMHgxOCwgMHhiMSwKKysgICAg MHgwNCwgMHgzZSwgMHhiNCwgMHg5OSwgMHgzNSwgMHhjNCwgMHhjMCwgMHg1ZgorK307CisrCisr X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X25v bmNlW10gPSB7CisrICAgIDB4YzUsIDB4NDksIDB4MWUsIDB4NjYsIDB4MjcsIDB4OTIsIDB4YmUs IDB4ZWMsIDB4YjUsIDB4MWUsIDB4NGIsIDB4YjEsCisrICAgIDB4MzgsIDB4ZTMsIDB4ZWIsIDB4 NjIKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTM4NF9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHhiZSwg MHhlNywgMHg2YiwgMHg1NywgMHhkZSwgMHg4OCwgMHgxMSwgMHg5NiwgMHg5YiwgMHg2ZSwgMHhl YSwgMHhlNSwKKysgICAgMHg2MywgMHg4MywgMHg0YywgMHhiNiwgMHg4ZCwgMHg2NiwgMHhhYSwg MHgxZiwgMHg4YiwgMHg1NCwgMHhlNywgMHg2MiwKKysgICAgMHg2ZCwgMHg1YSwgMHhmYywgMHhi ZiwgMHg5NywgMHhiYSwgMHhjZCwgMHg3NworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X2FkZGl0aW9uYWxpbnB1dFtdID0gewor KyAgICAweGU1LCAweDI4LCAweDVmLCAweDQzLCAweGY1LCAweDgzLCAweDZlLCAweDBhLCAweDgz LCAweDVjLCAweGUzLCAweDgxLAorKyAgICAweDAzLCAweGYyLCAweGY4LCAweDc4LCAweDAwLCAw eDdjLCAweDk1LCAweDg3LCAweDE2LCAweGQ2LCAweDZjLCAweDU4LAorKyAgICAweDMzLCAweDZj LCAweDUzLCAweDM1LCAweDBkLCAweDY2LCAweGUzLCAweGNlCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfaW50X3JldHVybmVk Yml0c1tdID0geworKyAgICAweGUyLCAweDFmLCAweGYzLCAweGRhLCAweDBkLCAweDE5LCAweDk5 LCAweDg3LCAweGM0LCAweDkwLCAweGEyLCAweDMxLAorKyAgICAweGNhLCAweDJhLCAweDg5LCAw eDU4LCAweDQzLCAweDQ0LCAweGI4LCAweGRlLCAweGNmLCAweGE0LCAweGJlLCAweDNiLAorKyAg ICAweDUzLCAweDI2LCAweDIyLCAweDMxLCAweDc2LCAweDQxLCAweDIyLCAweGI1LCAweGE4LCAw eDcwLCAweDJmLCAweDRiLAorKyAgICAweDY0LCAweDk1LCAweDRkLCAweDQ4LCAweDk2LCAweDM1 LCAweGU2LCAweGJkLCAweDNjLCAweDM0LCAweGRiLCAweDFiCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfZW50cm9weWlucHV0 cmVzZWVkW10gPSB7CisrICAgIDB4NzcsIDB4NjEsIDB4YmEsIDB4YmMsIDB4ZjIsIDB4YzEsIDB4 ZjMsIDB4NGIsIDB4ODYsIDB4NjUsIDB4ZmQsIDB4NDgsCisrICAgIDB4MGUsIDB4M2MsIDB4MDIs IDB4NWUsIDB4YTIsIDB4N2EsIDB4NmIsIDB4N2MsIDB4ZWQsIDB4MjEsIDB4NWUsIDB4ZjksCisr ICAgIDB4Y2QsIDB4Y2QsIDB4NzcsIDB4MDcsIDB4MmIsIDB4YmUsIDB4YzUsIDB4NWMKKyt9Owor KworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTM4NF9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHgxOCwgMHgyNCwgMHg1 ZiwgMHhjNiwgMHg4NCwgMHhkMSwgMHg2NywgMHhjMywgMHg5YSwgMHgxMSwgMHhhNSwgMHg4YywK KysgICAgMHgwNywgMHgzOSwgMHgyMSwgMHg4MywgMHg0ZCwgMHgwNCwgMHhjNCwgMHg2YSwgMHgy OCwgMHgxOSwgMHhjZiwgMHg5MiwKKysgICAgMHgyMSwgMHhkOSwgMHg5ZSwgMHg0MSwgMHg3Miwg MHg2YywgMHg5ZSwgMHg2MworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg5 NiwgMHg2NywgMHg0MSwgMHgyOCwgMHg5YiwgMHhiNywgMHg5MiwgMHg4ZCwgMHg2NCwgMHgzYiwg MHhlNCwgMHhjZiwKKysgICAgMHg3ZSwgMHhhYSwgMHgxZSwgMHhiMSwgMHg0YiwgMHgxZCwgMHgw OSwgMHg1NiwgMHg2NywgMHg5YywgMHhjNiwgMHg2ZCwKKysgICAgMHgzYiwgMHhlOCwgMHg5MSwg MHg5ZCwgMHhlMSwgMHg4YSwgMHhiNywgMHgzMgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3JldHVybmVkYml0c1tdID0gewor KyAgICAweGUzLCAweDU5LCAweDYxLCAweDM4LCAweDkyLCAweGVjLCAweGUyLCAweDNjLCAweGZm LCAweGI3LCAweGRiLCAweDE5LAorKyAgICAweDBmLCAweDViLCAweDkzLCAweDY4LCAweDBkLCAw eGE0LCAweDk0LCAweDQwLCAweDcyLCAweDBiLCAweGUwLCAweGVkLAorKyAgICAweDRkLCAweGNk LCAweDY4LCAweGEwLCAweDFlLCAweGZlLCAweDY3LCAweGIyLCAweGZhLCAweDIxLCAweDU2LCAw eDc0LAorKyAgICAweGE0LCAweGFkLCAweGNmLCAweGI3LCAweDYwLCAweDY2LCAweDJlLCAweDQw LCAweGRlLCAweDgyLCAweGNhLCAweGZiCisrfTsKKysKKysvKiBITUFDIFNIQS01MTIgUFIgICov CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEy X3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweGFhLCAweDllLCAweDQ1LCAweDY3LCAweDBl LCAweDAwLCAweDJhLCAweDY3LCAweDk4LCAweGQ2LCAweGRhLCAweDBiLAorKyAgICAweDBmLCAw eDE3LCAweDdlLCAweGFjLCAweGZkLCAweDI3LCAweGM0LCAweGNhLCAweDg0LCAweGRmLCAweGRl LCAweGJhLAorKyAgICAweDg1LCAweGQ5LCAweGJlLCAweDhmLCAweGYzLCAweGZmLCAweDkxLCAw eDRkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGE1MTJfcHJfbm9uY2VbXSA9IHsKKysgICAgMHg4YywgMHg0OSwgMHgyZiwgMHg1OCwg MHgxZSwgMHg3YSwgMHhkYSwgMHg0YiwgMHg3ZSwgMHg4YSwgMHgzMCwgMHg3YiwKKysgICAgMHg4 NiwgMHhlYSwgMHhhZiwgMHhhMgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3ByX3BlcnNvbmFsaXphdGlvbnN0cmlu Z1tdID0geworKyAgICAweDcxLCAweGUxLCAweGJiLCAweGFkLCAweGE3LCAweDRiLCAweDJlLCAw eDMxLCAweDNiLCAweDBiLCAweGVjLCAweDI0LAorKyAgICAweDk5LCAweDM4LCAweGJjLCAweGFh LCAweDA1LCAweDRjLCAweDQ2LCAweDQ0LCAweGZhLCAweGFkLCAweDhlLCAweDAyLAorKyAgICAw eGMxLCAweDdlLCAweGFkLCAweGVjLCAweDU0LCAweGE2LCAweGQwLCAweGFkCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJf YWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4M2QsIDB4NmUsIDB4YTYsIDB4YTgsIDB4Mjks IDB4MmEsIDB4YjIsIDB4ZjUsIDB4OTgsIDB4NDIsIDB4ZTQsIDB4OTIsCisrICAgIDB4NzgsIDB4 MjIsIDB4NjcsIDB4ZmQsIDB4MWIsIDB4MTUsIDB4MWUsIDB4MjksIDB4YWEsIDB4NzEsIDB4M2Ms IDB4M2MsCisrICAgIDB4ZTcsIDB4MDUsIDB4MjAsIDB4YTksIDB4MjksIDB4YzYsIDB4NzUsIDB4 NzEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBo bWFjX3NoYTUxMl9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAweGFiLCAweGI5LCAweDE2 LCAweGQ4LCAweDU1LCAweDM1LCAweDU0LCAweGI3LCAweDk3LCAweDNmLCAweDk0LCAweGJjLAor KyAgICAweDJmLCAweDdjLCAweDcwLCAweGM3LCAweGQwLCAweGVkLCAweGI3LCAweDRiLCAweGY3 LCAweGY2LCAweDZjLCAweDAzLAorKyAgICAweDBjLCAweGIwLCAweDAzLCAweGQ4LCAweGJiLCAw eDcxLCAweGQ5LCAweDEwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAw eDhlLCAweGQzLCAweGZkLCAweDUyLCAweDllLCAweDgzLCAweDA4LCAweDQ5LCAweDE4LCAweDZl LCAweDIzLCAweDU2LAorKyAgICAweDVjLCAweDQ1LCAweDkzLCAweDM0LCAweDA1LCAweGUyLCAw eDk4LCAweDhmLCAweDBjLCAweGQ0LCAweDMyLCAweDBjLAorKyAgICAweGZkLCAweGRhLCAweDVm LCAweDkyLCAweDNhLCAweDhjLCAweDgxLCAweGJkLCAweGY2LCAweDZjLCAweDU1LCAweGZkLAor KyAgICAweGI4LCAweDIwLCAweGNlLCAweDhkLCAweDk3LCAweDI3LCAweGU4LCAweGU4LCAweGUw LCAweGIzLCAweDg1LCAweDUwLAorKyAgICAweGEyLCAweGMyLCAweGIyLCAweDk1LCAweDFkLCAw eDQ4LCAweGQzLCAweDdiLCAweDRiLCAweDc4LCAweDEzLCAweDM1LAorKyAgICAweDA1LCAweDE3 LCAweGJlLCAweDBkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweGMz LCAweGZjLCAweDk1LCAweGFhLCAweDY5LCAweDA2LCAweGFlLCAweDU5LCAweDQxLCAweGNlLCAw eDI2LCAweDA4LAorKyAgICAweDI5LCAweDZkLCAweDQ1LCAweGRhLCAweGU4LCAweGIzLCAweDZj LCAweDk1LCAweDYwLCAweDBmLCAweDcwLCAweDJjLAorKyAgICAweDEwLCAweGJhLCAweDM4LCAw eDhjLCAweGNmLCAweDI5LCAweDk5LCAweGFhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfZW50cm9weWlucHV0cHIyW10g PSB7CisrICAgIDB4M2IsIDB4OWEsIDB4MjUsIDB4Y2UsIDB4ZDcsIDB4ZjksIDB4NWMsIDB4ZDEs IDB4M2EsIDB4M2UsIDB4YWEsIDB4NzEsCisrICAgIDB4MTQsIDB4M2UsIDB4MTksIDB4ZTgsIDB4 Y2UsIDB4ZTYsIDB4ZmUsIDB4NTEsIDB4ODQsIDB4ZTksIDB4MWIsIDB4ZmUsCisrICAgIDB4M2Ys IDB4YTcsIDB4ZjIsIDB4ZmQsIDB4NzYsIDB4NWYsIDB4NmEsIDB4ZTcKKyt9OworKworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9yZXR1 cm5lZGJpdHNbXSA9IHsKKysgICAgMHhiNywgMHg4MiwgMHhhOSwgMHg1NywgMHg4MSwgMHg2Nywg MHg1MywgMHhiNSwgMHhhMSwgMHhlOSwgMHgzZCwgMHgzNSwKKysgICAgMHhmOSwgMHhlNCwgMHg5 NywgMHhiZSwgMHhhNiwgMHhjYSwgMHhmMSwgMHgwMSwgMHgxMywgMHgwOSwgMHhlNywgMHgyMSwK KysgICAgMHhjMCwgMHhlZCwgMHg5MywgMHg1ZCwgMHg0YiwgMHhmNCwgMHhlYiwgMHg4ZCwgMHg1 MywgMHgyNSwgMHg4YSwgMHhjNCwKKysgICAgMHhiMSwgMHg2ZiwgMHg2ZSwgMHgzNywgMHhjZCwg MHgyZSwgMHhhYywgMHgzOSwgMHhiMiwgMHhiNiwgMHg5OSwgMHhhMywKKysgICAgMHg4MiwgMHgw MCwgMHhiMCwgMHgyMSwgMHhmMCwgMHhjNywgMHgyZiwgMHg0YywgMHg3MywgMHg5MiwgMHhmZCwg MHgwMCwKKysgICAgMHhiNiwgMHhhZiwgMHhiYywgMHhkMworK307CisrCisrLyogSE1BQyBTSEEt NTEyIE5vIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBobWFjX3NoYTUxMl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHg2ZSwgMHg4NSwgMHhlNiwg MHgyNSwgMHg5NiwgMHgyOSwgMHhhNywgMHg1MiwgMHg1YiwgMHg2MCwgMHhiYSwgMHhhYSwKKysg ICAgMHhkZSwgMHhkYiwgMHgzNiwgMHgwYSwgMHg1MSwgMHg5YSwgMHgxNSwgMHhhZSwgMHg2ZSwg MHgxOCwgMHhkMywgMHhmZSwKKysgICAgMHgzOSwgMHhiOSwgMHg0YSwgMHg5NiwgMHhmOCwgMHg3 NywgMHhjYiwgMHg5NQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhNTEyX25vbmNlW10gPSB7CisrICAgIDB4ZTAsIDB4YTYsIDB4NWQs IDB4MDgsIDB4YzMsIDB4N2MsIDB4YWUsIDB4MjUsIDB4MmUsIDB4ODAsIDB4ZDEsIDB4M2UsCisr ICAgIDB4ZDksIDB4YWYsIDB4NDMsIDB4M2MKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAg ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wZXJzb25hbGl6YXRpb25z dHJpbmdbXSA9IHsKKysgICAgMHg1MywgMHg5OSwgMHg1MiwgMHg1ZiwgMHgxMSwgMHhhOSwgMHg2 NCwgMHg2NiwgMHgyMCwgMHg1ZSwgMHgxYiwgMHg1ZiwKKysgICAgMHg0MiwgMHhiMywgMHhmNCwg MHhkYSwgMHhlZCwgMHhiYiwgMHg2MywgMHhjMSwgMHgyMywgMHhhZiwgMHhkMCwgMHgwMSwKKysg ICAgMHg5MCwgMHgzYiwgMHhkMCwgMHg3OCwgMHhlNCwgMHgwYiwgMHhhNywgMHgyMAorK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEy X2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDg1LCAweDkwLCAweDgwLCAweGQzLCAweDk4 LCAweGYxLCAweDUzLCAweDZkLCAweDY4LCAweDE1LCAweDhmLCAweGU1LAorKyAgICAweDYwLCAw eDNmLCAweDE3LCAweDI5LCAweDU1LCAweDhkLCAweDMzLCAweGIxLCAweDQ1LCAweDY0LCAweDY0 LCAweDhkLAorKyAgICAweDUwLCAweDIxLCAweDg5LCAweGFlLCAweGY2LCAweGZkLCAweDMyLCAw eDczCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGE1MTJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDI4LCAweDU2LCAweDMw LCAweDZmLCAweGY0LCAweGExLCAweDQ4LCAweGUwLCAweGM5LCAweGY1LCAweDc1LCAweDkwLAor KyAgICAweGNjLCAweGZiLCAweGRmLCAweGRmLCAweDcxLCAweDNkLCAweDBhLCAweDlhLCAweDAz LCAweDY1LCAweDNiLCAweDE4LAorKyAgICAweDYxLCAweGUzLCAweGQxLCAweGRhLCAweGNjLCAw eDRhLCAweGZlLCAweDU1LCAweDM4LCAweGY4LCAweDIxLCAweDZiLAorKyAgICAweGZhLCAweDE4 LCAweDAxLCAweDQyLCAweDM5LCAweDJmLCAweDk5LCAweDUzLCAweDM4LCAweDE1LCAweDgyLCAw eDM0LAorKyAgICAweGM1LCAweDkzLCAweDkyLCAweGJjLCAweDRkLCAweDc1LCAweDFhLCAweDVm LCAweDIxLCAweDI3LCAweGNjLCAweGExLAorKyAgICAweGIxLCAweDU3LCAweDY5LCAweGU4Cisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19z aGE1MTJfZW50cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4OGMsIDB4NTIsIDB4N2UsIDB4 NzcsIDB4NzIsIDB4M2YsIDB4YTMsIDB4MDQsIDB4OTcsIDB4MTAsIDB4OWIsIDB4NDEsCisrICAg IDB4YmQsIDB4ZTgsIDB4ZmYsIDB4ODksIDB4ZWQsIDB4ODAsIDB4ZTMsIDB4YmQsIDB4YWEsIDB4 MTIsIDB4MmQsIDB4Y2EsCisrICAgIDB4NzUsIDB4ODIsIDB4MzYsIDB4NzcsIDB4ODgsIDB4Y2Qs IDB4YTYsIDB4NzMKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKKysg ICAgMHg3ZSwgMHgzMiwgMHhlMywgMHg2OSwgMHg2OSwgMHgwNywgMHgzNCwgMHhhMiwgMHgxNiwg MHhhMiwgMHg1ZCwgMHgxYSwKKysgICAgMHgxMCwgMHg5MSwgMHhkMywgMHhlMiwgMHgyMSwgMHhh MiwgMHhhMywgMHhkZCwgMHhjZCwgMHgwYywgMHgwOSwgMHg4NiwKKysgICAgMHgxMSwgMHhlMSwg MHg1MCwgMHhmZiwgMHg1YywgMHhiNywgMHhlYiwgMHg1YworK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX2FkZGl0aW9uYWxpbnB1 dDJbXSA9IHsKKysgICAgMHg3ZiwgMHg3OCwgMHg2NiwgMHhkOCwgMHhmYiwgMHg2NywgMHhjZiwg MHg4ZCwgMHg4YywgMHgwOCwgMHgzMCwgMHhhNSwKKysgICAgMHhmOCwgMHg3ZCwgMHhjZiwgMHg0 NCwgMHg1OSwgMHhjZSwgMHhmOCwgMHhkZiwgMHg1OCwgMHhkMywgMHg2MCwgMHhjYiwKKysgICAg MHhhOCwgMHg2MCwgMHhiOSwgMHgwNywgMHhjNCwgMHhiMSwgMHg5NSwgMHg0OAorK307CisrCisr X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3Jl dHVybmVkYml0c1tdID0geworKyAgICAweGRmLCAweGE3LCAweDM2LCAweGQ0LCAweGRjLCAweDVk LCAweDRkLCAweDMxLCAweGFkLCAweDY5LCAweDQ2LCAweDlmLAorKyAgICAweGYxLCAweDdjLCAw eGQ3LCAweDNiLCAweDRmLCAweDU1LCAweGYyLCAweGQ3LCAweGI5LCAweDlkLCAweGFkLCAweDdh LAorKyAgICAweDc5LCAweDA4LCAweDU5LCAweGE1LCAweGRjLCAweDc0LCAweGY1LCAweDliLCAw eDczLCAweGQyLCAweDEzLCAweDI1LAorKyAgICAweDBiLCAweDgxLCAweDA4LCAweDA4LCAweDI1 LCAweGZiLCAweDM5LCAweGYyLCAweGYwLCAweGEzLCAweGE0LCAweDhkLAorKyAgICAweGVmLCAw eDA1LCAweDllLCAweGI4LCAweGM3LCAweDUyLCAweGU0LCAweDBlLCAweDQyLCAweGFhLCAweDdj LCAweDc5LAorKyAgICAweGMyLCAweGQ2LCAweGZkLCAweGE1CisrfTsKK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHNhX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZmlwcy9maXBzX2RzYV9zZWxmdGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2ZpcHMvZmlwc19kc2Ffc2VsZnRlc3QuYy5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAu Mjk3MjQ1NzczICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kc2Ff c2VsZnRlc3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NzI0NTc3MyArMDIwMAorQEAgLTAsMCAr MSwxOTIgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3Bl blNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0 aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp bmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAg ICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1l bnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRp c3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0 IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICog ICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9y Zy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNT TCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3Rl IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlv ciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250 YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wi CisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQg cHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4K KysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3Qg cmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9q ZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9w ZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBP cGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElF RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1Q TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI RSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICog TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikK KysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9T U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5n Lmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZHNh Lmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5o PgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Cisr I2luY2x1ZGUgImZpcHNfbG9jbC5oIgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKytzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBkc2FfdGVzdF8yMDQ4X3BbXSA9IHsKKysgICAgMHhhOCwg MHg1MywgMHg3OCwgMHhkOCwgMHhmZCwgMHgzZiwgMHg4ZCwgMHg3MiwgMHhlYywgMHg3NCwgMHgx OCwgMHgwOCwKKysgICAgMHgwZCwgMHhhMiwgMHgxMywgMHgxNywgMHhlNCwgMHgzZSwgMHhjNCwg MHhiNiwgMHgyYiwgMHhhOCwgMHhjOCwgMHg2MiwKKysgICAgMHgzYiwgMHg3ZSwgMHg0ZCwgMHgw NCwgMHg0NCwgMHgxZCwgMHhkMSwgMHhhMCwgMHg2NSwgMHg4NiwgMHg2MiwgMHg1OSwKKysgICAg MHg2NCwgMHg5MywgMHhjYSwgMHg4ZSwgMHg5ZSwgMHg4ZiwgMHhiYiwgMHg3ZSwgMHgzNCwgMHhh YSwgMHhkZCwgMHhiNiwKKysgICAgMHgyZSwgMHg1ZCwgMHg2NywgMHhiNiwgMHhkMCwgMHg5YSwg MHg2ZSwgMHg2MSwgMHhiNywgMHg2OSwgMHhlNywgMHhjMywKKysgICAgMHg1MiwgMHhhYSwgMHgy YiwgMHgxMCwgMHhlMiwgMHgwYywgMHhhMCwgMHg2MywgMHg2OSwgMHg2MywgMHhiNSwgMHg1MiwK KysgICAgMHgzZSwgMHg4NiwgMHg0NywgMHgwZCwgMHhlYywgMHhiYiwgMHhlZCwgMHhhMCwgMHgy NywgMHhlNywgMHg5NywgMHhlNywKKysgICAgMHhiNiwgMHg3NiwgMHgzNSwgMHhkNCwgMHhkNCwg MHg5YywgMHgzMCwgMHg3MCwgMHgwZSwgMHg3NCwgMHhhZiwgMHg4YSwKKysgICAgMHgwZiwgMHhm MSwgMHg1NiwgMHhhOCwgMHgwMSwgMHhhZiwgMHg1NywgMHhhMiwgMHg2ZSwgMHg3MCwgMHg3OCwg MHhmMSwKKysgICAgMHhkOCwgMHgyZiwgMHg3NCwgMHg5MCwgMHg4ZSwgMHhjYiwgMHg2ZCwgMHgw NywgMHhlNywgMHgwYiwgMHgzNSwgMHgwMywKKysgICAgMHhlZSwgMHhkOSwgMHg0ZiwgMHhhMywg MHgyYywgMHhmMSwgMHg3YSwgMHg3ZiwgMHhjMywgMHhkNiwgMHhjZiwgMHg0MCwKKysgICAgMHhk YywgMHg3YiwgMHgwMCwgMHg4MywgMHgwZSwgMHg2YSwgMHgyNSwgMHg2NiwgMHhkYywgMHgwNywg MHgzZSwgMHgzNCwKKysgICAgMHgzMywgMHgxMiwgMHg1MSwgMHg3YywgMHg2YSwgMHhhNSwgMHgx NSwgMHgyYiwgMHg0YiwgMHhmZSwgMHhjZCwgMHgyZSwKKysgICAgMHg1NSwgMHgxZiwgMHhlZSwg MHgzNCwgMHg2MywgMHgxOCwgMHhhMSwgMHg1MywgMHg0MiwgMHgzYywgMHg5OSwgMHg2YiwKKysg ICAgMHgwZCwgMHg1ZCwgMHhjYiwgMHg5MSwgMHgwMiwgMHhhZSwgMHhkZCwgMHgzOCwgMHg3OSwg MHg4NiwgMHgxNiwgMHhmMSwKKysgICAgMHhmMSwgMHhlMCwgMHhkNiwgMHhjNCwgMHgwMywgMHg1 MiwgMHg1YiwgMHgxZiwgMHg5YiwgMHgzZCwgMHg0ZCwgMHhjNywKKysgICAgMHg2NiwgMHhkZSwg MHgyZCwgMHhmYywgMHg0YSwgMHg1NiwgMHhkNywgMHhiOCwgMHhiYSwgMHg1OSwgMHg2MywgMHhk NiwKKysgICAgMHgwZiwgMHgzZSwgMHgxNiwgMHgzMSwgMHg4OCwgMHg3MCwgMHhhZCwgMHg0Mywg MHg2OSwgMHg1MiwgMHhlNSwgMHg1NywKKysgICAgMHg2NSwgMHgzNywgMHg0ZSwgMHhhYiwgMHg4 NSwgMHhlOCwgMHhlYywgMHgxNywgMHhkNiwgMHhiOSwgMHhhNCwgMHg1NCwKKysgICAgMHg3Yiwg MHg5YiwgMHg1ZiwgMHgyNywgMHg1MiwgMHhmMywgMHgxMCwgMHg1YiwgMHhlOCwgMHgwOSwgMHhi MiwgMHgzYSwKKysgICAgMHgyYywgMHg4ZCwgMHg3NCwgMHg2OSwgMHhkYiwgMHgwMiwgMHhlMiwg MHg0ZCwgMHg1OSwgMHgyMywgMHg5NCwgMHhhNywKKysgICAgMHhkYiwgMHhhMCwgMHg2OSwgMHhl OQorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9xW10g PSB7CisrICAgIDB4ZDIsIDB4NzcsIDB4MDQsIDB4NGUsIDB4NTAsIDB4ZjUsIDB4YTQsIDB4ZTMs IDB4ZjUsIDB4MTAsIDB4YTUsIDB4MGEsCisrICAgIDB4MGIsIDB4ODQsIDB4ZmQsIDB4ZmYsIDB4 YmMsIDB4YTAsIDB4NDcsIDB4ZWQsIDB4MjcsIDB4NjAsIDB4MjAsIDB4NTYsCisrICAgIDB4NzQs IDB4NDEsIDB4YTAsIDB4YTUKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRz YV90ZXN0XzIwNDhfZ1tdID0geworKyAgICAweDEzLCAweGQ3LCAweDU0LCAweGUyLCAweDFmLCAw eGQyLCAweDQxLCAweDY1LCAweDVkLCAweGE4LCAweDkxLCAweGM1LAorKyAgICAweDIyLCAweGE2 LCAweDVhLCAweDcyLCAweGE4LCAweDliLCAweGRjLCAweDY0LCAweGVjLCAweDliLCAweDU0LCAw eGE4LAorKyAgICAweDIxLCAweGVkLCAweDRhLCAweDg5LCAweDhiLCAweDQ5LCAweDBlLCAweDBj LCAweDRmLCAweGNiLCAweDcyLCAweDE5LAorKyAgICAweDJhLCAweDRhLCAweDIwLCAweGY1LCAw eDQxLCAweGYzLCAweGYyLCAweDkyLCAweDUzLCAweDk5LCAweGYwLCAweGJhLAorKyAgICAweGVj LCAweGY5LCAweDI5LCAweGFhLCAweGZiLCAweGY3LCAweDlkLCAweGZlLCAweDQzLCAweDMyLCAw eDM5LCAweDNiLAorKyAgICAweDMyLCAweGNkLCAweDJlLCAweDJmLCAweGNmLCAweDI3LCAweDJm LCAweDMyLCAweGE2LCAweDI3LCAweDQzLCAweDRhLAorKyAgICAweDBkLCAweGYyLCAweDQyLCAw eGI3LCAweDViLCAweDQxLCAweDRkLCAweGYzLCAweDcyLCAweDEyLCAweDFlLCAweDUzLAorKyAg ICAweGE1LCAweDUzLCAweGYyLCAweDIyLCAweGY4LCAweDM2LCAweGIwLCAweDAwLCAweGYwLCAw eDE2LCAweDQ4LCAweDViLAorKyAgICAweDZiLCAweGQwLCAweDg5LCAweDg0LCAweDUxLCAweDgw LCAweDFkLCAweGNkLCAweDhkLCAweGU2LCAweDRjLCAweGQ1LAorKyAgICAweDM2LCAweDU2LCAw eDk2LCAweGZmLCAweGM1LCAweDMyLCAweGQ1LCAweDI4LCAweGM1LCAweDA2LCAweDYyLCAweDBh LAorKyAgICAweDk0LCAweDJhLCAweDAzLCAweDA1LCAweDA0LCAweDZkLCAweDhmLCAweDE4LCAw eDc2LCAweDM0LCAweDFmLCAweDFlLAorKyAgICAweDU3LCAweDBiLCAweGMzLCAweDk3LCAweDRi LCAweGE2LCAweGI5LCAweGE0LCAweDM4LCAweGU5LCAweDcwLCAweDIzLAorKyAgICAweDAyLCAw eGEyLCAweGU2LCAweGU2LCAweDdiLCAweGZkLCAweDA2LCAweGQzLCAweDJiLCAweGM2LCAweDc5 LCAweDk2LAorKyAgICAweDIyLCAweDcxLCAweGQ3LCAweGI0LCAweDBjLCAweGQ3LCAweDJmLCAw eDM4LCAweDZlLCAweDY0LCAweGUwLCAweGQ3LAorKyAgICAweGVmLCAweDg2LCAweGNhLCAweDhj LCAweGE1LCAweGQxLCAweDQyLCAweDI4LCAweGRjLCAweDJhLCAweDRmLCAweDE2LAorKyAgICAw eGUzLCAweDE4LCAweDk4LCAweDg2LCAweGI1LCAweDk5LCAweDA2LCAweDc0LCAweGY0LCAweDIw LCAweDBmLCAweDNhLAorKyAgICAweDRjLCAweGY2LCAweDVhLCAweDNmLCAweDBkLCAweGRiLCAw eGExLCAweGZhLCAweDY3LCAweDJkLCAweGZmLCAweDJmLAorKyAgICAweDVlLCAweDE0LCAweDNk LCAweDEwLCAweGU0LCAweGU5LCAweDdhLCAweGU4LCAweDRmLCAweDZkLCAweGEwLCAweDk1LAor KyAgICAweDM1LCAweGQ1LCAweGI5LCAweGRmLCAweDI1LCAweDkxLCAweDgxLCAweGE3LCAweDli LCAweDYzLCAweGIwLCAweDY5LAorKyAgICAweGU5LCAweDQ5LCAweDk3LCAweDJiLCAweDAyLCAw eGJhLCAweDM2LCAweGIzLCAweDU4LCAweDZhLCAweGFiLCAweDdlLAorKyAgICAweDQ1LCAweGYz LCAweDIyLCAweGY4LCAweDJlLCAweDRlLCAweDg1LCAweGNhLCAweDNhLCAweGI4LCAweDU1LCAw eDkxLAorKyAgICAweGIzLCAweGMyLCAweGE5LCAweDY2CisrfTsKKysKKytzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBkc2FfdGVzdF8yMDQ4X3B1Yl9rZXlbXSA9IHsKKysgICAgMHgyNCwgMHg1 MiwgMHhmMywgMHhjYywgMHhiZSwgMHg5ZSwgMHhkNSwgMHhjYSwgMHg3ZCwgMHhjNywgMHg0Yywg MHg2MCwKKysgICAgMHgyYiwgMHg5OSwgMHgyMiwgMHg2ZSwgMHg4ZiwgMHgyZiwgMHhhYiwgMHgz OCwgMHhlNywgMHhkNywgMHhkZCwgMHhmYiwKKysgICAgMHg3NSwgMHg1MywgMHg5YiwgMHgxNywg MHgxNSwgMHg1ZSwgMHg5ZiwgMHhjZiwgMHhkMSwgMHhhYiwgMHhhNSwgMHg2NCwKKysgICAgMHhl YiwgMHg4NSwgMHgzNSwgMHhkOCwgMHgxMiwgMHhjOSwgMHhjMiwgMHhkYywgMHhmOSwgMHg3Miwg MHg4NCwgMHg0NCwKKysgICAgMHgxYiwgMHhjNCwgMHg4MiwgMHgyNCwgMHgzNiwgMHgyNCwgMHhj NywgMHhmNCwgMHg1NywgMHg1OCwgMHgwYywgMHgxYywKKysgICAgMHgzOCwgMHhhNSwgMHg3Yywg MHg0NiwgMHhjNCwgMHg1NywgMHgzOSwgMHgyNCwgMHg3MCwgMHhlZCwgMHhiNSwgMHgyYywKKysg ICAgMHhiNSwgMHhhNiwgMHhlMCwgMHgzZiwgMHhlNiwgMHgyOCwgMHg3YiwgMHhiNiwgMHhmNCwg MHg5YSwgMHg0MiwgMHhhMiwKKysgICAgMHgwNiwgMHg1YSwgMHgwNSwgMHg0ZiwgMHgwMywgMHgw OCwgMHgzOSwgMHhkZiwgMHgxZiwgMHhkMywgMHgxNCwgMHg5YywKKysgICAgMHg0YywgMHhhMCwg MHg1MywgMHgxZCwgMHhkOCwgMHhjYSwgMHg4YSwgMHhhYSwgMHg5YywgMHhjNywgMHgzMywgMHg3 MSwKKysgICAgMHg5MywgMHgzOCwgMHg3MywgMHg0OCwgMHgzMywgMHg2MSwgMHgxOCwgMHgyMiwg MHg0NSwgMHg0NSwgMHhlOCwgMHg4YywKKysgICAgMHg4MCwgMHhmZiwgMHhkOCwgMHg3NiwgMHg1 ZCwgMHg3NCwgMHgzNiwgMHgwMywgMHgzMywgMHhjYywgMHhhYiwgMHg5OSwKKysgICAgMHg3Miwg MHg3NywgMHg5YiwgMHg2NSwgMHgyNSwgMHhhNiwgMHg1YiwgMHhkZCwgMHgwZCwgMHgxMCwgMHhj NiwgMHg3NSwKKysgICAgMHhjMSwgMHgwOSwgMHhiYiwgMHhkMywgMHhlNSwgMHhiZSwgMHg0ZCwg MHg3MiwgMHhlZiwgMHg2ZSwgMHhiYSwgMHg2ZSwKKysgICAgMHg0MywgMHg4ZCwgMHg1MiwgMHgy NiwgMHgyMywgMHg3ZCwgMHhiOCwgMHg4OCwgMHgzNywgMHg5YywgMHg1ZiwgMHhjYywKKysgICAg MHg0NywgMHhhMywgMHg4NCwgMHg3ZiwgMHhmNiwgMHgzNywgMHgxMSwgMHhiYSwgMHhlZCwgMHg2 ZCwgMHgwMywgMHhhZiwKKysgICAgMHhlOCwgMHgxZSwgMHg2OSwgMHg0YSwgMHg0MSwgMHgzYiwg MHg2OCwgMHgwYiwgMHhkMywgMHg4YSwgMHhiNCwgMHg5MCwKKysgICAgMHgzZiwgMHg4MywgMHg3 MCwgMHhhNywgMHgwNywgMHhlZiwgMHg1NSwgMHgxZCwgMHg0OSwgMHg0MSwgMHgwMiwgMHg2ZCwK KysgICAgMHg5NSwgMHg3OSwgMHhkNiwgMHg5MSwgMHhkZSwgMHg4ZSwgMHhkYSwgMHhhMSwgMHg2 MSwgMHgwNSwgMHhlYiwgMHg5ZCwKKysgICAgMHhiYSwgMHgzYywgMHgyZiwgMHg0YywgMHgxYiwg MHhlYywgMHg1MCwgMHg4MiwgMHg3NSwgMHhhYSwgMHgwMiwgMHgwNywKKysgICAgMHhlMiwgMHg1 MSwgMHhiNSwgMHhlYywgMHhjYiwgMHgyOCwgMHg2YSwgMHg0YiwgMHgwMSwgMHhkNCwgMHg0OSwg MHhkMywKKysgICAgMHgwYSwgMHhjYiwgMHg2NywgMHgzNywgMHgxNywgMHhhMCwgMHhkMiwgMHhm YiwgMHgzYiwgMHg1MCwgMHhjOCwgMHg5MywKKysgICAgMHhmNywgMHhkYSwgMHhiMSwgMHg0Zgor K307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9wcml2X2tl eVtdID0geworKyAgICAweDBjLCAweDRiLCAweDMwLCAweDg5LCAweGQxLCAweGI4LCAweDYyLCAw eGNiLCAweDNjLCAweDQzLCAweDY0LCAweDkxLAorKyAgICAweGYwLCAweDkxLCAweDU0LCAweDcw LCAweGM1LCAweDI3LCAweDk2LCAweGUzLCAweGFjLCAweGJlLCAweGU4LCAweDAwLAorKyAgICAw eGVjLCAweDU1LCAweGY2LCAweGNjCisrfTsKKysKKytzdGF0aWMgaW50IGNvcnJ1cHRfZHNhOwor KworK3ZvaWQgRklQU19jb3JydXB0X2RzYSgpCisreworKyAgICBjb3JydXB0X2RzYSA9IDE7Cisr fQorKworK2ludCBGSVBTX3NlbGZ0ZXN0X2RzYSgpCisreworKyAgICBEU0EgKmRzYSA9IE5VTEw7 CisrICAgIEVWUF9QS0VZICpwayA9IE5VTEw7CisrICAgIGludCByZXQgPSAwOworKworKyAgICBk c2EgPSBEU0FfbmV3KCk7CisrCisrICAgIGlmIChkc2EgPT0gTlVMTCkKKysgICAgICAgIGdvdG8g ZXJyOworKworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChkc2EsIHAsIGRzYV90ZXN0XzIw NDgpOworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChkc2EsIHEsIGRzYV90ZXN0XzIwNDgp OworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChkc2EsIGcsIGRzYV90ZXN0XzIwNDgpOwor KyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChkc2EsIHB1Yl9rZXksIGRzYV90ZXN0XzIwNDgp OworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChkc2EsIHByaXZfa2V5LCBkc2FfdGVzdF8y MDQ4KTsKKysKKysgICAgaWYgKGNvcnJ1cHRfZHNhKQorKyAgICAgICAgQk5fc2V0X2JpdChkc2Et PnB1Yl9rZXksIDIwNDcpOworKworKyAgICBpZiAoKHBrID0gRVZQX1BLRVlfbmV3KCkpID09IE5V TEwpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgRVZQX1BLRVlfYXNzaWduX0RTQShwaywg ZHNhKTsKKysKKysgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIE5VTEwsIDAs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIEVWUF9zaGEyNTYo KSwgMCwgIkRTQSBTSEEyNTYiKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICByZXQgPSAxOwor KworKyBlcnI6CisrICAgIGlmIChwaykKKysgICAgICAgIEVWUF9QS0VZX2ZyZWUocGspOworKyAg ICBlbHNlIGlmIChkc2EpCisrICAgICAgICBEU0FfZnJlZShkc2EpOworKyAgICByZXR1cm4gcmV0 OworK30KKysjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNf ZW5jLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2VuYy5jCistLS0gb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19lbmMuYy5maXBzCTIwMTUtMDQtMjIgMTY6MDg6 NDAuMjk3MjQ1NzczICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19l bmMuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NzI0NTc3MyArMDIwMAorQEAgLTAsMCArMSwxODkg QEAKKysvKiBmaXBlL2V2cC9maXBzX2VuYy5jICovCisrLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5 OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pCisrICogQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKysgKgorKyAqIFRoaXMgcGFja2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRl bgorKyAqIGJ5IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKS4KKysgKiBUaGUgaW1wbGVt ZW50YXRpb24gd2FzIHdyaXR0ZW4gc28gYXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wu CisrICogCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1j b21tZXJjaWFsIHVzZSBhcyBsb25nIGFzCisrICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy ZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXBwbHkgdG8gYWxs IGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKKysg KiBsaGFzaCwgREVTLCBldGMuLCBjb2RlOyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NM IGRvY3VtZW50YXRpb24KKysgKiBpbmNsdWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNv dmVyZWQgYnkgdGhlIHNhbWUgY29weXJpZ2h0IHRlcm1zCisrICogZXhjZXB0IHRoYXQgdGhlIGhv bGRlciBpcyBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuCisrICogCisrICogQ29weXJp Z2h0IHJlbWFpbnMgRXJpYyBZb3VuZydzLCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGlj ZXMgaW4KKysgKiB0aGUgY29kZSBhcmUgbm90IHRvIGJlIHJlbW92ZWQuCisrICogSWYgdGhpcyBw YWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9kdWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBh dHRyaWJ1dGlvbgorKyAqIGFzIHRoZSBhdXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5 IHVzZWQuCisrICogVGhpcyBjYW4gYmUgaW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2Ug YXQgcHJvZ3JhbSBzdGFydHVwIG9yCisrICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRl eHR1YWwpIHByb3ZpZGVkIHdpdGggdGhlIHBhY2thZ2UuCisrICogCisrICogUmVkaXN0cmlidXRp b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisr ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv cHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqIDMuIEFs bCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp cyBzb2Z0d2FyZQorKyAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdl bWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdh cmUgd3JpdHRlbiBieQorKyAqICAgICBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCisr ICogICAgVGhlIHdvcmQgJ2NyeXB0b2dyYXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91 aW5lcyBmcm9tIHRoZSBsaWJyYXJ5CisrICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dy YXBoaWMgcmVsYXRlZCA6LSkuCisrICogNC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3Bl Y2lmaWMgY29kZSAob3IgYSBkZXJpdmF0aXZlIHRoZXJlb2YpIGZyb20gCisrICogICAgdGhlIGFw cHMgZGlyZWN0b3J5IChhcHBsaWNhdGlvbiBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25v d2xlZGdlbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0 ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pIgorKyAqIAorKyAqIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECisrICogQU5ZIEVY UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU TywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKysgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5P IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorKyAqIEZP UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP UiBDT05TRVFVRU5USUFMCisrICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKysgKiBPUiBTRVJWSUNFUzsgTE9T UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysg KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsIFNUUklDVAorKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKysgKiBPVVQgT0YgVEhF IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ IE9GCisrICogU1VDSCBEQU1BR0UuCisrICogCisrICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1 dGlvbiB0ZXJtcyBmb3IgYW55IHB1YmxpY2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKKysgKiBk ZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBjYW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2Rl IGNhbm5vdCBzaW1wbHkgYmUKKysgKiBjb3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3Ry aWJ1dGlvbiBsaWNlbmNlCisrICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0K KysgKi8KKysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2lu Y2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2luY2x1 ZGUgPG9wZW5zc2wvZmlwcy5oPgorKworK2NvbnN0IEVWUF9DSVBIRVIgKkZJUFNfZ2V0X2NpcGhl cmJ5bmlkKGludCBuaWQpCisreworKyAgICBzd2l0Y2ggKG5pZCkgeworKyAgICBjYXNlIE5JRF9h ZXNfMTI4X2NiYzoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF9jYmMoKTsKKysKKysgICAg Y2FzZSBOSURfYWVzXzEyOF9jY206CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfY2NtKCk7 CisrCisrICAgIGNhc2UgTklEX2Flc18xMjhfY2ZiMToKKysgICAgICAgIHJldHVybiBFVlBfYWVz XzEyOF9jZmIxKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xMjhfY2ZiMTI4OgorKyAgICAgICAg cmV0dXJuIEVWUF9hZXNfMTI4X2NmYjEyOCgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMTI4X2Nm Yjg6CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfY2ZiOCgpOworKworKyAgICBjYXNlIE5J RF9hZXNfMTI4X2N0cjoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF9jdHIoKTsKKysKKysg ICAgY2FzZSBOSURfYWVzXzEyOF9lY2I6CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfZWNi KCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xMjhfZ2NtOgorKyAgICAgICAgcmV0dXJuIEVWUF9h ZXNfMTI4X2djbSgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMTI4X29mYjEyODoKKysgICAgICAg IHJldHVybiBFVlBfYWVzXzEyOF9vZmIoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzEyOF94dHM6 CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfeHRzKCk7CisrCisrICAgIGNhc2UgTklEX2Fl c18xOTJfY2JjOgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTkyX2NiYygpOworKworKyAgICBj YXNlIE5JRF9hZXNfMTkyX2NjbToKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzE5Ml9jY20oKTsK KysKKysgICAgY2FzZSBOSURfYWVzXzE5Ml9jZmIxOgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNf MTkyX2NmYjEoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzE5Ml9jZmIxMjg6CisrICAgICAgICBy ZXR1cm4gRVZQX2Flc18xOTJfY2ZiMTI4KCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xOTJfY2Zi ODoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzE5Ml9jZmI4KCk7CisrCisrICAgIGNhc2UgTklE X2Flc18xOTJfY3RyOgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTkyX2N0cigpOworKworKyAg ICBjYXNlIE5JRF9hZXNfMTkyX2VjYjoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzE5Ml9lY2Io KTsKKysKKysgICAgY2FzZSBOSURfYWVzXzE5Ml9nY206CisrICAgICAgICByZXR1cm4gRVZQX2Fl c18xOTJfZ2NtKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xOTJfb2ZiMTI4OgorKyAgICAgICAg cmV0dXJuIEVWUF9hZXNfMTkyX29mYigpOworKworKyAgICBjYXNlIE5JRF9hZXNfMjU2X2NiYzoK KysgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9jYmMoKTsKKysKKysgICAgY2FzZSBOSURfYWVz XzI1Nl9jY206CisrICAgICAgICByZXR1cm4gRVZQX2Flc18yNTZfY2NtKCk7CisrCisrICAgIGNh c2UgTklEX2Flc18yNTZfY2ZiMToKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9jZmIxKCk7 CisrCisrICAgIGNhc2UgTklEX2Flc18yNTZfY2ZiMTI4OgorKyAgICAgICAgcmV0dXJuIEVWUF9h ZXNfMjU2X2NmYjEyOCgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMjU2X2NmYjg6CisrICAgICAg ICByZXR1cm4gRVZQX2Flc18yNTZfY2ZiOCgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMjU2X2N0 cjoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9jdHIoKTsKKysKKysgICAgY2FzZSBOSURf YWVzXzI1Nl9lY2I6CisrICAgICAgICByZXR1cm4gRVZQX2Flc18yNTZfZWNiKCk7CisrCisrICAg IGNhc2UgTklEX2Flc18yNTZfZ2NtOgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMjU2X2djbSgp OworKworKyAgICBjYXNlIE5JRF9hZXNfMjU2X29mYjEyODoKKysgICAgICAgIHJldHVybiBFVlBf YWVzXzI1Nl9vZmIoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzI1Nl94dHM6CisrICAgICAgICBy ZXR1cm4gRVZQX2Flc18yNTZfeHRzKCk7CisrCisrICAgIGNhc2UgTklEX2Rlc19lZGVfZWNiOgor KyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlKCk7CisrCisrICAgIGNhc2UgTklEX2Rlc19lZGUz X2VjYjoKKysgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZTMoKTsKKysKKysgICAgY2FzZSBOSURf ZGVzX2VkZTNfY2JjOgorKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlM19jYmMoKTsKKysKKysg ICAgY2FzZSBOSURfZGVzX2VkZTNfY2ZiMToKKysgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZTNf Y2ZiMSgpOworKworKyAgICBjYXNlIE5JRF9kZXNfZWRlM19jZmI2NDoKKysgICAgICAgIHJldHVy biBFVlBfZGVzX2VkZTNfY2ZiNjQoKTsKKysKKysgICAgY2FzZSBOSURfZGVzX2VkZTNfY2ZiODoK KysgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZTNfY2ZiOCgpOworKworKyAgICBjYXNlIE5JRF9k ZXNfZWRlM19vZmI2NDoKKysgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZTNfb2ZiKCk7CisrCisr ICAgIGNhc2UgTklEX2Rlc19lZGVfY2JjOgorKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlX2Ni YygpOworKworKyAgICBjYXNlIE5JRF9kZXNfZWRlX2NmYjY0OgorKyAgICAgICAgcmV0dXJuIEVW UF9kZXNfZWRlX2NmYjY0KCk7CisrCisrICAgIGNhc2UgTklEX2Rlc19lZGVfb2ZiNjQ6CisrICAg ICAgICByZXR1cm4gRVZQX2Rlc19lZGVfb2ZiKCk7CisrCisrICAgIGRlZmF1bHQ6CisrICAgICAg ICByZXR1cm4gTlVMTDsKKysKKysgICAgfQorK30KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHMuaC5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuaAor LS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuaC5maXBzCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMjk3MjQ1NzczICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlw cy5oCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk3MjQ1NzczICswMjAwCitAQCAtMCwwICsxLDI3OCBA QAorKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAyMDAzIFRoZSBPcGVuU1NMIFBy b2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysg KgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3Ry aWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmlu ZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0 aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisr ICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2pl Y3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysg KiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAg ICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3 cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisr ICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4g dGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5v cmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wg UFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK KysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5T U0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9G IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhP V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD T05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElU WSBPRiBTVUNIIERBTUFHRS4KKysgKgorKyAqLworKworKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5z c2xjb25mLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+CisrI2luY2x1ZGUgPHN0ZGFy Zy5oPgorKworKyNpZm5kZWYgT1BFTlNTTF9GSVBTCisrIyBlcnJvciBGSVBTIGlzIGRpc2FibGVk LgorKyNlbmRpZgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKysjIGlmZGVmICBfX2NwbHVz cGx1cworK2V4dGVybiAiQyIgeworKyMgZW5kaWYKKysKKysgICAgc3RydWN0IGRzYV9zdDsKKysg ICAgc3RydWN0IHJzYV9zdDsKKysgICAgc3RydWN0IGV2cF9wa2V5X3N0OworKyAgICBzdHJ1Y3Qg ZW52X21kX3N0OworKyAgICBzdHJ1Y3QgZW52X21kX2N0eF9zdDsKKysgICAgc3RydWN0IGV2cF9j aXBoZXJfc3Q7CisrICAgIHN0cnVjdCBldnBfY2lwaGVyX2N0eF9zdDsKKysgICAgc3RydWN0IGRo X21ldGhvZDsKKysgICAgc3RydWN0IENNQUNfQ1RYX3N0OworKyAgICBzdHJ1Y3QgaG1hY19jdHhf c3Q7CisrCisrICAgIGludCBGSVBTX21vZHVsZV9tb2RlX3NldChpbnQgb25vZmYsIGNvbnN0IGNo YXIgKmF1dGgpOworKyAgICBpbnQgRklQU19tb2R1bGVfbW9kZSh2b2lkKTsKKysgICAgY29uc3Qg dm9pZCAqRklQU19yYW5kX2NoZWNrKHZvaWQpOworKyAgICBpbnQgRklQU19zZWxmdGVzdCh2b2lk KTsKKysgICAgaW50IEZJUFNfc2VsZnRlc3RfZmFpbGVkKHZvaWQpOworKyAgICB2b2lkIEZJUFNf Y29ycnVwdF9zaGExKHZvaWQpOworKyAgICBpbnQgRklQU19zZWxmdGVzdF9zaGExKHZvaWQpOwor KyAgICBpbnQgRklQU19zZWxmdGVzdF9zaGEyKHZvaWQpOworKyAgICB2b2lkIEZJUFNfY29ycnVw dF9hZXModm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2Flc19jY20odm9pZCk7CisrICAg IGludCBGSVBTX3NlbGZ0ZXN0X2Flc19nY20odm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0 X2Flc194dHModm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2Flcyh2b2lkKTsKKysgICAg dm9pZCBGSVBTX2NvcnJ1cHRfZGVzKHZvaWQpOworKyAgICBpbnQgRklQU19zZWxmdGVzdF9kZXMo dm9pZCk7CisrICAgIHZvaWQgRklQU19jb3JydXB0X3JzYSh2b2lkKTsKKysgICAgdm9pZCBGSVBT X2NvcnJ1cHRfcnNhX2tleWdlbih2b2lkKTsKKysgICAgaW50IEZJUFNfc2VsZnRlc3RfcnNhKHZv aWQpOworKyAgICB2b2lkIEZJUFNfY29ycnVwdF9kc2Eodm9pZCk7CisrICAgIHZvaWQgRklQU19j b3JydXB0X2RzYV9rZXlnZW4odm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2RzYSh2b2lk KTsKKysgICAgdm9pZCBGSVBTX2NvcnJ1cHRfcm5nKHZvaWQpOworKyAgICB2b2lkIEZJUFNfcm5n X3N0aWNrKHZvaWQpOworKyAgICB2b2lkIEZJUFNfeDkzMV9zdGljayhpbnQgb25vZmYpOworKyAg ICB2b2lkIEZJUFNfZHJiZ19zdGljayhpbnQgb25vZmYpOworKyAgICBpbnQgRklQU19zZWxmdGVz dF9ybmcodm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X3g5MzEodm9pZCk7CisrICAgIGlu dCBGSVBTX3NlbGZ0ZXN0X2htYWModm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2RyYmco dm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2RyYmdfYWxsKHZvaWQpOworKyAgICBpbnQg RklQU19zZWxmdGVzdF9jbWFjKHZvaWQpOworKworKyAgICB2b2lkIEZJUFNfZ2V0X3RpbWV2ZWMo dW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nICpwY3RyKTsKKysKKysjIGRlZmluZSBG SVBTX0VSUk9SX0lHTk9SRUQoYWxnKSBPcGVuU1NMRGllKF9fRklMRV9fLCBfX0xJTkVfXywgXAor KyAgICAgICAgICAgICAgICBhbGcgIiBwcmV2aW91cyBGSVBTIGZvcmJpZGRlbiBhbGdvcml0aG0g ZXJyb3IgaWdub3JlZCIpOworKworKyAgICBpbnQgZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHN0 cnVjdCBldnBfcGtleV9zdCAqcGtleSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICp0YnMsIGludCB0YnNsZW4sCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2F0LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBrYXRsZW4sCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGVudl9tZF9zdCAqZGlnZXN0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtZF9mbGFncywgY29u c3QgY2hhciAqZmFpbF9zdHIpOworKworKyAgICBpbnQgZmlwc19jaXBoZXJfdGVzdChzdHJ1Y3Qg ZXZwX2NpcGhlcl9jdHhfc3QgKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGV2cF9jaXBoZXJfc3QgKmNpcGhlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyICppdiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqcGxhaW50ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1 bnNpZ25lZCBjaGFyICpjaXBoZXJ0ZXh0LCBpbnQgbGVuKTsKKysKKysgICAgdm9pZCBmaXBzX3Nl dF9zZWxmdGVzdF9mYWlsKHZvaWQpOworKworKyAgICBjb25zdCBzdHJ1Y3QgZW52X21kX3N0ICpG SVBTX2dldF9kaWdlc3RieW5pZChpbnQgbmlkKTsKKysKKysgICAgY29uc3Qgc3RydWN0IGV2cF9j aXBoZXJfc3QgKkZJUFNfZ2V0X2NpcGhlcmJ5bmlkKGludCBuaWQpOworKworKy8qIEJFR0lOIEVS Uk9SIENPREVTICovCisrLyogVGhlIGZvbGxvd2luZyBsaW5lcyBhcmUgYXV0byBnZW5lcmF0ZWQg YnkgdGhlIHNjcmlwdCBta2Vyci5wbC4gQW55IGNoYW5nZXMKKysgKiBtYWRlIGFmdGVyIHRoaXMg cG9pbnQgbWF5IGJlIG92ZXJ3cml0dGVuIHdoZW4gdGhlIHNjcmlwdCBpcyBuZXh0IHJ1bi4KKysg Ki8KKysgICAgdm9pZCBFUlJfbG9hZF9GSVBTX3N0cmluZ3Modm9pZCk7CisrCisrLyogRXJyb3Ig Y29kZXMgZm9yIHRoZSBGSVBTIGZ1bmN0aW9ucy4gKi8KKysKKysvKiBGdW5jdGlvbiBjb2Rlcy4g Ki8KKysjIGRlZmluZSBGSVBTX0ZfREhfQlVJTFRJTl9HRU5QQVJBTVMgICAgICAgICAgICAgICAg ICAgICAgMTAwCisrIyBkZWZpbmUgRklQU19GX0RIX0lOSVQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDE0OAorKyMgZGVmaW5lIEZJUFNfRl9EUkJHX1JFU0VFRCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxNjIKKysjIGRlZmluZSBGSVBTX0ZfRFNBX0JVSUxUSU5fUEFS QU1HRU4gICAgICAgICAgICAgICAgICAgICAgMTAxCisrIyBkZWZpbmUgRklQU19GX0RTQV9CVUlM VElOX1BBUkFNR0VOMiAgICAgICAgICAgICAgICAgICAgIDEwNworKyMgZGVmaW5lIEZJUFNfRl9E U0FfRE9fU0lHTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDIKKysjIGRlZmluZSBG SVBTX0ZfRFNBX0RPX1ZFUklGWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzCisrIyBk ZWZpbmUgRklQU19GX0VDREhfQ09NUFVURV9LRVkgICAgICAgICAgICAgICAgICAgICAgICAgIDE2 MworKyMgZGVmaW5lIEZJUFNfRl9FQ0RTQV9ET19TSUdOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxNjQKKysjIGRlZmluZSBGSVBTX0ZfRUNEU0FfRE9fVkVSSUZZICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTY1CisrIyBkZWZpbmUgRklQU19GX0VDX0tFWV9HRU5FUkFURV9LRVkgICAg ICAgICAgICAgICAgICAgICAgIDE2NgorKyMgZGVmaW5lIEZJUFNfRl9FVlBfQ0lQSEVSSU5JVF9F WCAgICAgICAgICAgICAgICAgICAgICAgICAxMjQKKysjIGRlZmluZSBGSVBTX0ZfRVZQX0RJR0VT VElOSVRfRVggICAgICAgICAgICAgICAgICAgICAgICAgMTI1CisrIyBkZWZpbmUgRklQU19GX0ZJ UFNfQ0hFQ0tfRFNBICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNAorKyMgZGVmaW5lIEZJ UFNfRl9GSVBTX0NIRUNLX0RTQV9QUk5HICAgICAgICAgICAgICAgICAgICAgICAxNTEKKysjIGRl ZmluZSBGSVBTX0ZfRklQU19DSEVDS19FQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQy CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfRUNfUFJORyAgICAgICAgICAgICAgICAgICAg ICAgIDE1MgorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0NIRUNLX0lOQ09SRV9GSU5HRVJQUklOVCAg ICAgICAgICAgICAxMDUKKysjIGRlZmluZSBGSVBTX0ZfRklQU19DSEVDS19SU0EgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMTA2CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfUlNBX1BS TkcgICAgICAgICAgICAgICAgICAgICAgIDE1MAorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0NJUEhF UiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjAKKysjIGRlZmluZSBGSVBTX0ZfRklQ U19DSVBIRVJJTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQzCisrIyBkZWZpbmUgRklQ U19GX0ZJUFNfQ0lQSEVSX0NUWF9DVFJMICAgICAgICAgICAgICAgICAgICAgIDE2MQorKyMgZGVm aW5lIEZJUFNfRl9GSVBTX0RJR0VTVEZJTkFMICAgICAgICAgICAgICAgICAgICAgICAgICAxNTgK KysjIGRlZmluZSBGSVBTX0ZfRklQU19ESUdFU1RJTklUICAgICAgICAgICAgICAgICAgICAgICAg ICAgMTI4CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfRElHRVNUVVBEQVRFICAgICAgICAgICAgICAg ICAgICAgICAgIDE1OQorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfQllURVMgICAgICAgICAg ICAgICAgICAgICAgICAgICAxMzEKKysjIGRlZmluZSBGSVBTX0ZfRklQU19EUkJHX0NIRUNLICAg ICAgICAgICAgICAgICAgICAgICAgICAgMTQ2CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19D UFJOR19URVNUICAgICAgICAgICAgICAgICAgICAgIDEzMgorKyMgZGVmaW5lIEZJUFNfRl9GSVBT X0RSQkdfRVJST1JfQ0hFQ0sgICAgICAgICAgICAgICAgICAgICAxMzYKKysjIGRlZmluZSBGSVBT X0ZfRklQU19EUkJHX0dFTkVSQVRFICAgICAgICAgICAgICAgICAgICAgICAgMTM0CisrIyBkZWZp bmUgRklQU19GX0ZJUFNfRFJCR19JTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNQor KyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFOVElBVEUgICAgICAgICAgICAgICAgICAg ICAxMzgKKysjIGRlZmluZSBGSVBTX0ZfRklQU19EUkJHX05FVyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMTM5CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19SRVNFRUQgICAgICAgICAg ICAgICAgICAgICAgICAgIDE0MAorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tB VCAgICAgICAgICAgICAgICAgICAgICAxNDEKKysjIGRlZmluZSBGSVBTX0ZfRklQU19EU0FfQ0hF Q0sgICAgICAgICAgIC8qIHVudXNlZCAqLyAgICAgMTA3CisrIyBkZWZpbmUgRklQU19GX0ZJUFNf RFNBX1NJR05fRElHRVNUICAgICAgICAgICAgICAgICAgICAgIDE1NAorKyMgZGVmaW5lIEZJUFNf Rl9GSVBTX0RTQV9WRVJJRllfRElHRVNUICAgICAgICAgICAgICAgICAgICAxNTUKKysjIGRlZmlu ZSBGSVBTX0ZfRklQU19HRVRfRU5UUk9QWSAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ3Cisr IyBkZWZpbmUgRklQU19GX0ZJUFNfTU9ERV9TRVQgICAgICAgICAgICAvKiB1bnVzZWQgKi8gICAg IDEwOAorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCAgICAgICAgICAgICAg ICAgICAgICAxMDgKKysjIGRlZmluZSBGSVBTX0ZfRklQU19QS0VZX1NJR05BVFVSRV9URVNUICAg ICAgICAgICAgICAgICAgMTA5CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfUkFORF9BREQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDEzNworKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1JBTkRfQllU RVMgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjIKKysjIGRlZmluZSBGSVBTX0ZfRklQU19S QU5EX1BTRVVET19CWVRFUyAgICAgICAgICAgICAgICAgICAgMTY3CisrIyBkZWZpbmUgRklQU19G X0ZJUFNfUkFORF9TRUVEICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2OAorKyMgZGVmaW5l IEZJUFNfRl9GSVBTX1JBTkRfU0VUX01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAxMjYKKysj IGRlZmluZSBGSVBTX0ZfRklQU19SQU5EX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAg MTI3CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfUlNBX1NJR05fRElHRVNUICAgICAgICAgICAgICAg ICAgICAgIDE1NgorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1JTQV9WRVJJRllfRElHRVNUICAgICAg ICAgICAgICAgICAgICAxNTcKKysjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9BRVMgICAg ICAgICAgICAgICAgICAgICAgICAgMTEwCisrIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1Rf QUVTX0NDTSAgICAgICAgICAgICAgICAgICAgIDE0NQorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NF TEZURVNUX0FFU19HQ00gICAgICAgICAgICAgICAgICAgICAxMjkKKysjIGRlZmluZSBGSVBTX0Zf RklQU19TRUxGVEVTVF9BRVNfWFRTICAgICAgICAgICAgICAgICAgICAgMTQ0CisrIyBkZWZpbmUg RklQU19GX0ZJUFNfU0VMRlRFU1RfQ01BQyAgICAgICAgICAgICAgICAgICAgICAgIDEzMAorKyMg ZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0RFUyAgICAgICAgICAgICAgICAgICAgICAgICAx MTEKKysjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9EU0EgICAgICAgICAgICAgICAgICAg ICAgICAgMTEyCisrIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfRUNEU0EgICAgICAgICAg ICAgICAgICAgICAgIDEzMworKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0hNQUMgICAg ICAgICAgICAgICAgICAgICAgICAxMTMKKysjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9S TkcgICAgICAgIC8qIHVudXNlZCAqLyAgICAgMTE0CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VM RlRFU1RfU0hBMSAgICAgICAgICAgICAgICAgICAgICAgIDExNQorKyMgZGVmaW5lIEZJUFNfRl9G SVBTX1NFTEZURVNUX1g5MzEgICAgICAgICAgICAgICAgICAgICAgICAxMTQKKysjIGRlZmluZSBG SVBTX0ZfRklQU19TRVRfUFJOR19LRVkgICAgICAgICAgICAgICAgICAgICAgICAgMTUzCisrIyBk ZWZpbmUgRklQU19GX0hBU0hfRklOQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEy MworKyMgZGVmaW5lIEZJUFNfRl9SU0FfQlVJTFRJTl9LRVlHRU4gICAgICAgICAgICAgICAgICAg ICAgICAxMTYKKysjIGRlZmluZSBGSVBTX0ZfUlNBX0VBWV9JTklUICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTQ5CisrIyBkZWZpbmUgRklQU19GX1JTQV9FQVlfUFJJVkFURV9ERUNSWVBU ICAgICAgICAgICAgICAgICAgIDExNworKyMgZGVmaW5lIEZJUFNfRl9SU0FfRUFZX1BSSVZBVEVf RU5DUllQVCAgICAgICAgICAgICAgICAgICAxMTgKKysjIGRlZmluZSBGSVBTX0ZfUlNBX0VBWV9Q VUJMSUNfREVDUllQVCAgICAgICAgICAgICAgICAgICAgMTE5CisrIyBkZWZpbmUgRklQU19GX1JT QV9FQVlfUFVCTElDX0VOQ1JZUFQgICAgICAgICAgICAgICAgICAgIDEyMAorKyMgZGVmaW5lIEZJ UFNfRl9SU0FfWDkzMV9HRU5FUkFURV9LRVlfRVggICAgICAgICAgICAgICAgICAxMjEKKysjIGRl ZmluZSBGSVBTX0ZfU1NMRUFZX1JBTkRfQllURVMgICAgICAgIC8qIHVudXNlZCAqLyAgICAgMTIy CisrCisrLyogUmVhc29uIGNvZGVzLiAqLworKyMgZGVmaW5lIEZJUFNfUl9BRERJVElPTkFMX0lO UFVUX0VSUk9SX1VOREVURUNURUQgICAgICAgICAxNTAKKysjIGRlZmluZSBGSVBTX1JfQURESVRJ T05BTF9JTlBVVF9UT09fTE9ORyAgICAgICAgICAgICAgICAgMTI1CisrIyBkZWZpbmUgRklQU19S X0FMUkVBRFlfSU5TVEFOVElBVEVEICAgICAgICAgICAgICAgICAgICAgIDEzNAorKyMgZGVmaW5l IEZJUFNfUl9BVVRIRU5USUNBVElPTl9GQUlMVVJFICAgICAgICAgICAgICAgICAgICAxNTEKKysj IGRlZmluZSBGSVBTX1JfQ0FOTk9UX1JFQURfRVhFICAgICAgICAgIC8qIHVudXNlZCAqLyAgICAg MTAzCisrIyBkZWZpbmUgRklQU19SX0NBTk5PVF9SRUFEX0VYRV9ESUdFU1QgICAvKiB1bnVzZWQg Ki8gICAgIDEwNAorKyMgZGVmaW5lIEZJUFNfUl9DT05UUkFESUNUSU5HX0VWSURFTkNFICAgICAg ICAgICAgICAgICAgICAxMTQKKysjIGRlZmluZSBGSVBTX1JfRFJCR19OT1RfSU5JVElBTElTRUQg ICAgICAgICAgICAgICAgICAgICAgMTUyCisrIyBkZWZpbmUgRklQU19SX0RSQkdfU1RVQ0sgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMworKyMgZGVmaW5lIEZJUFNfUl9FTlRST1BZ X0VSUk9SX1VOREVURUNURUQgICAgICAgICAgICAgICAgICAxMDQKKysjIGRlZmluZSBGSVBTX1Jf RU5UUk9QWV9OT1RfUkVRVUVTVEVEX0ZPUl9SRVNFRUQgICAgICAgICAgMTA1CisrIyBkZWZpbmUg RklQU19SX0VOVFJPUFlfU09VUkNFX1NUVUNLICAgICAgICAgICAgICAgICAgICAgIDE0MgorKyMg ZGVmaW5lIEZJUFNfUl9FUlJPUl9JTklUSUFMSVNJTkdfRFJCRyAgICAgICAgICAgICAgICAgICAx MTUKKysjIGRlZmluZSBGSVBTX1JfRVJST1JfSU5TVEFOVElBVElOR19EUkJHICAgICAgICAgICAg ICAgICAgMTI3CisrIyBkZWZpbmUgRklQU19SX0VSUk9SX1JFVFJJRVZJTkdfQURESVRJT05BTF9J TlBVVCAgICAgICAgIDEyNAorKyMgZGVmaW5lIEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX0VOVFJP UFkgICAgICAgICAgICAgICAgICAxMjIKKysjIGRlZmluZSBGSVBTX1JfRVJST1JfUkVUUklFVklO R19OT05DRSAgICAgICAgICAgICAgICAgICAgMTQwCisrIyBkZWZpbmUgRklQU19SX0VYRV9ESUdF U1RfRE9FU19OT1RfTUFUQ0ggICAvKiB1bnVzZWQgKi8gIDEwNQorKyMgZGVmaW5lIEZJUFNfUl9G SU5HRVJQUklOVF9ET0VTX05PVF9NQVRDSCAgICAgICAgICAgICAgICAxMTAKKysjIGRlZmluZSBG SVBTX1JfRklOR0VSUFJJTlRfRE9FU19OT1RfTUFUQ0hfTk9OUElDX1JFTE9DQVRFRCAxMTEKKysj IGRlZmluZSBGSVBTX1JfRklOR0VSUFJJTlRfRE9FU19OT1RfTUFUQ0hfU0VHTUVOVF9BTElBU0lO RyAxMTIKKysjIGRlZmluZSBGSVBTX1JfRklQU19NT0RFX0FMUkVBRFlfU0VUICAgICAgICAgICAg ICAgICAgICAgMTAyCisrIyBkZWZpbmUgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEICAgICAg ICAgICAgICAgICAgICAgIDEwNgorKyMgZGVmaW5lIEZJUFNfUl9GVU5DVElPTl9FUlJPUiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxMTYKKysjIGRlZmluZSBGSVBTX1JfR0VORVJBVEVfRVJS T1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM3CisrIyBkZWZpbmUgRklQU19SX0dFTkVS QVRFX0VSUk9SX1VOREVURUNURUQgICAgICAgICAgICAgICAgIDExOAorKyMgZGVmaW5lIEZJUFNf Ul9JTlNUQU5USUFURV9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAxMTkKKysjIGRlZmlu ZSBGSVBTX1JfSU5TVUZGSUNJRU5UX1NFQ1VSSVRZX1NUUkVOR1RIICAgICAgICAgICAgMTIwCisr IyBkZWZpbmUgRklQU19SX0lOVEVSTkFMX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgICAg IDEyMQorKyMgZGVmaW5lIEZJUFNfUl9JTlZBTElEX0tFWV9MRU5HVEggICAgICAgICAgICAgICAg ICAgICAgICAxMDkKKysjIGRlZmluZSBGSVBTX1JfSU5WQUxJRF9QQVJBTUVURVJTICAgICAgICAg ICAgICAgICAgICAgICAgMTQ0CisrIyBkZWZpbmUgRklQU19SX0lOX0VSUk9SX1NUQVRFICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDEyMworKyMgZGVmaW5lIEZJUFNfUl9LRVlfVE9PX1NIT1JU ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDgKKysjIGRlZmluZSBGSVBTX1JfTk9OQ0Vf RVJST1JfVU5ERVRFQ1RFRCAgICAgICAgICAgICAgICAgICAgMTQ5CisrIyBkZWZpbmUgRklQU19S X05PTl9GSVBTX01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMAorKyMgZGVmaW5l IEZJUFNfUl9OT1BSX1RFU1QxX0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAxNDUKKysj IGRlZmluZSBGSVBTX1JfTk9QUl9URVNUMl9GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAg MTQ2CisrIyBkZWZpbmUgRklQU19SX05PVF9JTlNUQU5USUFURUQgICAgICAgICAgICAgICAgICAg ICAgICAgIDEyNgorKyMgZGVmaW5lIEZJUFNfUl9QQUlSV0lTRV9URVNUX0ZBSUxFRCAgICAgICAg ICAgICAgICAgICAgICAxMDcKKysjIGRlZmluZSBGSVBTX1JfUEVSU09OQUxJU0FUSU9OX0VSUk9S X1VOREVURUNURUQgICAgICAgICAgMTI4CisrIyBkZWZpbmUgRklQU19SX1BFUlNPTkFMSVNBVElP Tl9TVFJJTkdfVE9PX0xPTkcgICAgICAgICAgIDEyOQorKyMgZGVmaW5lIEZJUFNfUl9QUk5HX1NU UkVOR1RIX1RPT19MT1cgICAgICAgICAgICAgICAgICAgICAxNDMKKysjIGRlZmluZSBGSVBTX1Jf UFJfVEVTVDFfRkFJTFVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ3CisrIyBkZWZpbmUg RklQU19SX1BSX1RFU1QyX0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAgIDE0OAorKyMg ZGVmaW5lIEZJUFNfUl9SRVFVRVNUX0xFTkdUSF9FUlJPUl9VTkRFVEVDVEVEICAgICAgICAgICAx MzAKKysjIGRlZmluZSBGSVBTX1JfUkVRVUVTVF9UT09fTEFSR0VfRk9SX0RSQkcgICAgICAgICAg ICAgICAgMTMxCisrIyBkZWZpbmUgRklQU19SX1JFU0VFRF9DT1VOVEVSX0VSUk9SICAgICAgICAg ICAgICAgICAgICAgIDEzMgorKyMgZGVmaW5lIEZJUFNfUl9SRVNFRURfRVJST1IgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxMzMKKysjIGRlZmluZSBGSVBTX1JfUlNBX0RFQ1JZUFRfRVJS T1IgICAgICAgIC8qIHVudXNlZCAqLyAgICAgMTE1CisrIyBkZWZpbmUgRklQU19SX1JTQV9FTkNS WVBUX0VSUk9SICAgICAgICAvKiB1bnVzZWQgKi8gICAgIDExNgorKyMgZGVmaW5lIEZJUFNfUl9T RUxGVEVTVF9GQUlMRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDEKKysjIGRlZmluZSBG SVBTX1JfU0VMRlRFU1RfRkFJTFVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgMTM1CisrIyBk ZWZpbmUgRklQU19SX1NUUkVOR1RIX0VSUk9SX1VOREVURUNURUQgICAgICAgICAgICAgICAgIDEz NgorKyMgZGVmaW5lIEZJUFNfUl9URVNUX0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxMTcKKysjIGRlZmluZSBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUiAgICAgICAgICAg ICAgICAgICAgICAgMTQxCisrIyBkZWZpbmUgRklQU19SX1VOSU5TVEFOVElBVEVfWkVST0lTRV9F UlJPUiAgICAgICAgICAgICAgIDEzOAorKyMgZGVmaW5lIEZJUFNfUl9VTlNVUFBPUlRFRF9EUkJH X1RZUEUgICAgICAgICAgICAgICAgICAgICAxMzkKKysjIGRlZmluZSBGSVBTX1JfVU5TVVBQT1JU RURfUExBVEZPUk0gICAgICAgICAgICAgICAgICAgICAgMTEzCisrCisrIyBpZmRlZiAgX19jcGx1 c3BsdXMKKyt9CisrIyBlbmRpZgorKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2ZpcHMvZmlwc19obWFjX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v Zmlwcy9maXBzX2htYWNfc2VsZnRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBz L2ZpcHNfaG1hY19zZWxmdGVzdC5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTcyNDU3NzMg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2htYWNfc2VsZnRlc3Qu YwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NzI0NTc3MyArMDIwMAorQEAgLTAsMCArMSwxMzQgQEAK KysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwNSBUaGUgT3BlblNTTCBQcm9q ZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoK KysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmli dXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcg ZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhl IGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVz IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVz ZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAq CisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0 IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVu IHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICog ICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZl ZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAg bm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3Jp dHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAq IDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRo ZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0 IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICog ICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3Jn LykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBS T0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisr ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NM IFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBV U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dF VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O VFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkg T0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2lu Y2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8 b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisrI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgorKwor KyNpZmRlZiBPUEVOU1NMX0ZJUFMKKyt0eXBlZGVmIHN0cnVjdCB7CisrICAgIGNvbnN0IEVWUF9N RCAqKCphbGcpICh2b2lkKTsKKysgICAgY29uc3QgY2hhciAqa2V5LCAqaXY7CisrICAgIHVuc2ln bmVkIGNoYXIga2F2YWxbRVZQX01BWF9NRF9TSVpFXTsKKyt9IEhNQUNfS0FUOworKworK3N0YXRp YyBjb25zdCBITUFDX0tBVCB2ZWN0b3JbXSA9IHsKKysgICAge0VWUF9zaGExLAorKyAgICAgLyog ZnJvbSBodHRwOi8vY3NyYy5uaXN0Lmdvdi9wdWJsaWNhdGlvbnMvZmlwcy9maXBzMTk4L2ZpcHMt MTk4YS5wZGYgKi8KKysgICAgICIwMTIzNDU2Nzg5Ojs8PT4/QEFCQyIsCisrICAgICAiU2FtcGxl ICMyIiwKKysgICAgIHsweDA5LCAweDIyLCAweGQzLCAweDQwLCAweDVmLCAweGFhLCAweDNkLCAw eDE5LAorKyAgICAgIDB4NGYsIDB4ODIsIDB4YTQsIDB4NTgsIDB4MzAsIDB4NzMsIDB4N2QsIDB4 NWMsCisrICAgICAgMHhjNiwgMHhjNywgMHg1ZCwgMHgyNH0KKysgICAgIH0sCisrICAgIHtFVlBf c2hhMjI0LAorKyAgICAgLyoganVzdCBrZWVwIGV4dGVuZGluZyB0aGUgYWJvdmUuLi4gKi8KKysg ICAgICIwMTIzNDU2Nzg5Ojs8PT4/QEFCQyIsCisrICAgICAiU2FtcGxlICMyIiwKKysgICAgIHsw eGRkLCAweGVmLCAweDBhLCAweDQwLCAweGNiLCAweDdkLCAweDUwLCAweGZiLAorKyAgICAgIDB4 NmUsIDB4ZTYsIDB4Y2UsIDB4YTEsIDB4MjAsIDB4YmEsIDB4MjYsIDB4YWEsCisrICAgICAgMHgw OCwgMHhmMywgMHgwNywgMHg3NSwgMHg4NywgMHhiOCwgMHhhZCwgMHgxYiwKKysgICAgICAweDhj LCAweDhkLCAweDEyLCAweGM3fQorKyAgICAgfSwKKysgICAge0VWUF9zaGEyNTYsCisrICAgICAi MDEyMzQ1Njc4OTo7PD0+P0BBQkMiLAorKyAgICAgIlNhbXBsZSAjMiIsCisrICAgICB7MHhiOCwg MHhmMiwgMHgwZCwgMHhiNSwgMHg0MSwgMHhlYSwgMHg0MywgMHgwOSwKKysgICAgICAweGNhLCAw eDRlLCAweGE5LCAweDM4LCAweDBjLCAweGQwLCAweGU4LCAweDM0LAorKyAgICAgIDB4ZjcsIDB4 MWYsIDB4YmUsIDB4OTEsIDB4NzQsIDB4YTIsIDB4NjEsIDB4MzgsCisrICAgICAgMHgwZCwgMHhj MSwgMHg3ZSwgMHhhZSwgMHg2YSwgMHgzNCwgMHg1MSwgMHhkOX0KKysgICAgIH0sCisrICAgIHtF VlBfc2hhMzg0LAorKyAgICAgIjAxMjM0NTY3ODk6Ozw9Pj9AQUJDIiwKKysgICAgICJTYW1wbGUg IzIiLAorKyAgICAgezB4MDgsIDB4YmMsIDB4YjAsIDB4ZGEsIDB4NDksIDB4MWUsIDB4ODcsIDB4 YWQsCisrICAgICAgMHg5YSwgMHgxZCwgMHg2YSwgMHhjZSwgMHgyMywgMHhjNSwgMHgwYiwgMHhm NiwKKysgICAgICAweGI3LCAweDE4LCAweDA2LCAweGE1LCAweDc3LCAweGNkLCAweDQ5LCAweDA0 LAorKyAgICAgIDB4ODksIDB4ZjEsIDB4ZTYsIDB4MjMsIDB4NDQsIDB4NTEsIDB4NTEsIDB4OWYs CisrICAgICAgMHg4NSwgMHg1NiwgMHg4MCwgMHg3OSwgMHgwYywgMHhiZCwgMHg0ZCwgMHg1MCwK KysgICAgICAweGE0LCAweDVmLCAweDI5LCAweGUzLCAweDkzLCAweGYwLCAweGU4LCAweDdmfQor KyAgICAgfSwKKysgICAge0VWUF9zaGE1MTIsCisrICAgICAiMDEyMzQ1Njc4OTo7PD0+P0BBQkMi LAorKyAgICAgIlNhbXBsZSAjMiIsCisrICAgICB7MHg4MCwgMHg5ZCwgMHg0NCwgMHgwNSwgMHg3 YywgMHg1YiwgMHg5NSwgMHg0MSwKKysgICAgICAweDA1LCAweGJkLCAweDA0LCAweDEzLCAweDE2 LCAweGRiLCAweDBmLCAweGFjLAorKyAgICAgIDB4NDQsIDB4ZDUsIDB4YTQsIDB4ZDUsIDB4ZDAs IDB4ODksIDB4MmIsIDB4ZDAsCisrICAgICAgMHg0ZSwgMHg4NiwgMHg2NCwgMHgxMiwgMHhjMCwg MHg5MCwgMHg3NywgMHg2OCwKKysgICAgICAweGYxLCAweDg3LCAweGI3LCAweDdjLCAweDRmLCAw eGFlLCAweDJjLCAweDJmLAorKyAgICAgIDB4MjEsIDB4YTUsIDB4YjUsIDB4NjUsIDB4OWEsIDB4 NGYsIDB4NGIsIDB4YTcsCisrICAgICAgMHg0NywgMHgwMiwgMHhhMywgMHhkZSwgMHg5YiwgMHg1 MSwgMHhmMSwgMHg0NSwKKysgICAgICAweGJkLCAweDRmLCAweDI1LCAweDI3LCAweDQyLCAweDk4 LCAweDk5LCAweDA1fQorKyAgICAgfSwKKyt9OworKworK2ludCBGSVBTX3NlbGZ0ZXN0X2htYWMo KQorK3sKKysgICAgaW50IG47CisrICAgIHVuc2lnbmVkIGludCBvdXRsZW47CisrICAgIHVuc2ln bmVkIGNoYXIgb3V0W0VWUF9NQVhfTURfU0laRV07CisrICAgIGNvbnN0IEVWUF9NRCAqbWQ7Cisr ICAgIGNvbnN0IEhNQUNfS0FUICp0OworKworKyAgICBmb3IgKG4gPSAwLCB0ID0gdmVjdG9yOyBu IDwgc2l6ZW9mKHZlY3RvcikgLyBzaXplb2YodmVjdG9yWzBdKTsgbisrLCB0KyspIHsKKysgICAg ICAgIG1kID0gKCp0LT5hbGcpICgpOworKyAgICAgICAgSE1BQyhtZCwgdC0+a2V5LCBzdHJsZW4o dC0+a2V5KSwKKysgICAgICAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKil0LT5pdiwgc3Ry bGVuKHQtPml2KSwgb3V0LCAmb3V0bGVuKTsKKysKKysgICAgICAgIGlmIChtZW1jbXAob3V0LCB0 LT5rYXZhbCwgb3V0bGVuKSkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VM RlRFU1RfSE1BQywgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICAgICAgcmV0dXJu IDA7CisrICAgICAgICB9CisrICAgIH0KKysgICAgcmV0dXJuIDE7CisrfQorKyNlbmRpZgorZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19sb2NsLmguZmlwcyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2xvY2wuaAorLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9maXBzL2ZpcHNfbG9jbC5oLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTcyNDU3NzMgKzAy MDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2xvY2wuaAkyMDE1LTA0LTIy IDE2OjA4OjQwLjI5NzI0NTc3MyArMDIwMAorQEAgLTAsMCArMSw3MSBAQAorKy8qID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisrICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmln aHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUg cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJl IG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlz dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp Z2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgor KyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1 c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFj a25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVu U1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiA0LiBUaGUg bmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJl IHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t IHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4g Rm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBvcGVuc3NsLWNv cmVAb3BlbnNzbC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz b2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVu U1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAg cGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmli dXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwor KyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGlu IHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAq IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElT JycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFS RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgor KyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN QUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFO RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBT VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ U0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB UkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH RS4KKysgKgorKyAqLworKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKysjIGlmZGVmICBfX2Nw bHVzcGx1cworK2V4dGVybiAiQyIgeworKyMgZW5kaWYKKysKKysjIGRlZmluZSBGSVBTX01BWF9D SVBIRVJfVEVTVF9TSVpFICAgICAgIDMyCisrIyBkZWZpbmUgZmlwc19sb2FkX2tleV9jb21wb25l bnQoa2V5LCBjb21wLCBwcmUpIFwKKysgICAgICAgIGtleS0+Y29tcCA9IEJOX2JpbjJibihwcmUj I18jI2NvbXAsIHNpemVvZihwcmUjI18jI2NvbXApLCBrZXktPmNvbXApOyBcCisrICAgICAgICBp ZiAoIWtleS0+Y29tcCkgXAorKyAgICAgICAgICAgICAgICBnb3RvIGVycgorKworKyMgZGVmaW5l IGZpcHNfcG9zdF9zdGFydGVkKGlkLCBzdWJpZCwgZXgpIDEKKysjIGRlZmluZSBmaXBzX3Bvc3Rf c3VjY2VzcyhpZCwgc3ViaWQsIGV4KSAxCisrIyBkZWZpbmUgZmlwc19wb3N0X2ZhaWxlZChpZCwg c3ViaWQsIGV4KSAxCisrIyBkZWZpbmUgZmlwc19wb3N0X2NvcnJ1cHQoaWQsIHN1YmlkLCBleCkg MQorKyMgZGVmaW5lIGZpcHNfcG9zdF9zdGF0dXMoKSAxCisrCisrIyBpZmRlZiAgX19jcGx1c3Bs dXMKKyt9CisrIyBlbmRpZgorKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2ZpcHMvZmlwc19tZC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19tZC5j CistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19tZC5jLmZpcHMJMjAxNS0wNC0y MiAxNjowODo0MC4yOTgyNDU3OTYgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlw cy9maXBzX21kLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTgyNDU3OTYgKzAyMDAKK0BAIC0wLDAg KzEsMTQ0IEBACisrLyogZmlwcy9ldnAvZmlwc19tZC5jICovCisrLyogQ29weXJpZ2h0IChDKSAx OTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pCisrICogQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKysgKgorKyAqIFRoaXMgcGFja2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24g d3JpdHRlbgorKyAqIGJ5IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKS4KKysgKiBUaGUg aW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gc28gYXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBl cyBTU0wuCisrICogCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5k IG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFzCisrICogdGhlIGZvbGxvd2luZyBjb25kaXRp b25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXBwbHkg dG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJT QSwKKysgKiBsaGFzaCwgREVTLCBldGMuLCBjb2RlOyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBU aGUgU1NMIGRvY3VtZW50YXRpb24KKysgKiBpbmNsdWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9u IGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29weXJpZ2h0IHRlcm1zCisrICogZXhjZXB0IHRoYXQg dGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuCisrICogCisrICog Q29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3VuZydzLCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0 IG5vdGljZXMgaW4KKysgKiB0aGUgY29kZSBhcmUgbm90IHRvIGJlIHJlbW92ZWQuCisrICogSWYg dGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9kdWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBn aXZlbiBhdHRyaWJ1dGlvbgorKyAqIGFzIHRoZSBhdXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBs aWJyYXJ5IHVzZWQuCisrICogVGhpcyBjYW4gYmUgaW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1l c3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCisrICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5l IG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhlIHBhY2thZ2UuCisrICogCisrICogUmVkaXN0 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv bGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysg KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi b3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFu ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAq IDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ug b2YgdGhpcyBzb2Z0d2FyZQorKyAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25v d2xlZGdlbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMg c29mdHdhcmUgd3JpdHRlbiBieQorKyAqICAgICBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNv bSkiCisrICogICAgVGhlIHdvcmQgJ2NyeXB0b2dyYXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0 aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5CisrICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNy eXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCisrICogNC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRv d3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJpdmF0aXZlIHRoZXJlb2YpIGZyb20gCisrICogICAg dGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlvbiBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFu IGFja25vd2xlZGdlbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pIgorKyAqIAorKyAqIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECisrICog QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKysgKiBBUkUgRElTQ0xBSU1FRC4g IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQor KyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMCisrICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKysgKiBPUiBTRVJWSUNF UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKysgKiBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ QklMSVRZIE9GCisrICogU1VDSCBEQU1BR0UuCisrICogCisrICogVGhlIGxpY2VuY2UgYW5kIGRp c3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1YmxpY2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IK KysgKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBjYW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhp cyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKKysgKiBjb3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVy IGRpc3RyaWJ1dGlvbiBsaWNlbmNlCisrICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNl bmNlLl0KKysgKi8KKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAx IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisr ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAg dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo ZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRl cmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJl IG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlz IHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2pl Y3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9w ZW5zc2wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5k ICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9y IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAq ICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxl YXNlIGNvbnRhY3QKKysgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisrICoKKysgKiA1 LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAi T3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMg d2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQ cm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2 ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAq ICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVu U1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6 Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK KysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg U0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElB QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBO T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF UzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS VVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZ IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9G IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqCisr ICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBi eSBFcmljIFlvdW5nCisrICogKGVheUBjcnlwdHNvZnQuY29tKS4gIFRoaXMgcHJvZHVjdCBpbmNs dWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQorKyAqIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5j b20pLgorKyAqCisrICovCisrCisrLyogTWluaW1hbCBzdGFuZGFsb25lIEZJUFMgdmVyc2lvbnMg b2YgRGlnZXN0IG9wZXJhdGlvbnMgKi8KKysKKysjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQorKwor KyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9vYmplY3RzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvZXJyLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKworK2NvbnN0IEVWUF9N RCAqRklQU19nZXRfZGlnZXN0YnluaWQoaW50IG5pZCkKKyt7CisrICAgIHN3aXRjaCAobmlkKSB7 CisrICAgIGNhc2UgTklEX3NoYTE6CisrICAgICAgICByZXR1cm4gRVZQX3NoYTEoKTsKKysKKysg ICAgY2FzZSBOSURfc2hhMjI0OgorKyAgICAgICAgcmV0dXJuIEVWUF9zaGEyMjQoKTsKKysKKysg ICAgY2FzZSBOSURfc2hhMjU2OgorKyAgICAgICAgcmV0dXJuIEVWUF9zaGEyNTYoKTsKKysKKysg ICAgY2FzZSBOSURfc2hhMzg0OgorKyAgICAgICAgcmV0dXJuIEVWUF9zaGEzODQoKTsKKysKKysg ICAgY2FzZSBOSURfc2hhNTEyOgorKyAgICAgICAgcmV0dXJuIEVWUF9zaGE1MTIoKTsKKysKKysg ICAgZGVmYXVsdDoKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisrfQorZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19wb3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBz L2ZpcHNfcG9zdC5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTgyNDU3OTYgKzAyMDAKKysr KyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYwkyMDE1LTA0LTIyIDE2OjA4 OjQwLjI5ODI0NTc5NiArMDIwMAorQEAgLTAsMCArMSwyMDEgQEAKKysvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor KyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6 CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAz LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m IHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVz ICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2Vk IHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3 cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9w ZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh cmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIg YXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1p c3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9u cyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAg ICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFO RCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJ VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE RU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg KElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNU IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisr ICoKKysgKi8KKysKKysjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQorKworKyNpbmNsdWRlIDxvcGVu c3NsL2NyeXB0by5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9maXBzX3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8 b3BlbnNzbC9iaW8uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvcnNhLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZHNhLmg+CisrI2luY2x1ZGUgPHN0cmlu Zy5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisr LyogUG93ZXIgb24gc2VsZiB0ZXN0IChQT1NUKSBzdXBwb3J0IGZ1bmN0aW9ucyAqLworKworKyMg aW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrIyBpbmNsdWRlICJmaXBzX2xvY2wuaCIKKysKKysv KiBSdW4gYWxsIHNlbGZ0ZXN0cyAqLworK2ludCBGSVBTX3NlbGZ0ZXN0KHZvaWQpCisreworKyAg ICBpbnQgcnYgPSAxOworKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfZHJiZygpKQorKyAgICAgICAg cnYgPSAwOworKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfeDkzMSgpKQorKyAgICAgICAgcnYgPSAw OworKyAgICBpZiAoIUZJUFNfc2VsZnRlc3Rfc2hhMSgpKQorKyAgICAgICAgcnYgPSAwOworKyAg ICBpZiAoIUZJUFNfc2VsZnRlc3Rfc2hhMigpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAo IUZJUFNfc2VsZnRlc3RfaG1hYygpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNf c2VsZnRlc3RfY21hYygpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNfc2VsZnRl c3RfYWVzKCkpCisrICAgICAgICBydiA9IDA7CisrICAgIGlmICghRklQU19zZWxmdGVzdF9hZXNf Y2NtKCkpCisrICAgICAgICBydiA9IDA7CisrICAgIGlmICghRklQU19zZWxmdGVzdF9hZXNfZ2Nt KCkpCisrICAgICAgICBydiA9IDA7CisrICAgIGlmICghRklQU19zZWxmdGVzdF9hZXNfeHRzKCkp CisrICAgICAgICBydiA9IDA7CisrICAgIGlmICghRklQU19zZWxmdGVzdF9kZXMoKSkKKysgICAg ICAgIHJ2ID0gMDsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X3JzYSgpKQorKyAgICAgICAgcnYg PSAwOworKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfZHNhKCkpCisrICAgICAgICBydiA9IDA7Cisr ICAgIHJldHVybiBydjsKKyt9CisrCisrLyogR2VuZXJhbGl6ZWQgcHVibGljIGtleSB0ZXN0IHJv dXRpbmUuIFNpZ25zIGFuZCB2ZXJpZmllcyB0aGUgZGF0YQorKyAqIHN1cHBsaWVkIGluIHRicyB1 c2luZyBtZXNhZ2UgZGlnZXN0IG1kIGFuZCBzZXR0aW5nIG9wdGlvbiBkaWdlc3QKKysgKiBmbGFn cyBtZF9mbGFncy4gSWYgdGhlICdrYXQnIHBhcmFtZXRlciBpcyBub3QgTlVMTCBpdCB3aWxsCisr ICogYWRkaXRpb25hbGx5IGNoZWNrIHRoZSBzaWduYXR1cmUgbWF0Y2hlcyBpdDogYSBrbm93biBh bnN3ZXIgdGVzdAorKyAqIFRoZSBzdHJpbmcgImZhaWxfc3RyIiBpcyB1c2VkIGZvciBpZGVudGlm aWNhdGlvbiBwdXJwb3NlcyBpbiBjYXNlCisrICogb2YgZmFpbHVyZS4gSWYgInBrZXkiIGlzIE5V TEwganVzdCBwZXJmb3JtIGEgbWVzc2FnZSBkaWdlc3QgY2hlY2suCisrICovCisrCisraW50IGZp cHNfcGtleV9zaWduYXR1cmVfdGVzdChFVlBfUEtFWSAqcGtleSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRicywgaW50IHRic2xlbiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmthdCwgdW5zaWdu ZWQgaW50IGthdGxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9N RCAqZGlnZXN0LCB1bnNpZ25lZCBpbnQgbWRfZmxhZ3MsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpmYWlsX3N0cikKKyt7CisrICAgIGludCByZXQgPSAwOworKyAg ICB1bnNpZ25lZCBjaGFyIHNpZ3RtcFsyNTZdLCAqc2lnID0gc2lndG1wOworKyAgICB1bnNpZ25l ZCBpbnQgc2lnbGVuOworKyAgICBFVlBfTURfQ1RYIG1jdHg7CisrICAgIEVWUF9NRF9DVFhfaW5p dCgmbWN0eCk7CisrCisrICAgIGlmIChkaWdlc3QgPT0gTlVMTCkKKysgICAgICAgIGRpZ2VzdCA9 IEVWUF9zaGEyNTYoKTsKKysKKysgICAgaWYgKChwa2V5LT50eXBlID09IEVWUF9QS0VZX1JTQSkK KysgICAgICAgICYmIChSU0Ffc2l6ZShwa2V5LT5wa2V5LnJzYSkgPiBzaXplb2Yoc2lndG1wKSkp IHsKKysgICAgICAgIHNpZyA9IE9QRU5TU0xfbWFsbG9jKFJTQV9zaXplKHBrZXktPnBrZXkucnNh KSk7CisrICAgICAgICBpZiAoIXNpZykgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfUEtFWV9TSUdOQVRVUkVfVEVTVCwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworKyAgICAgICAg ICAgIHJldHVybiAwOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGlmICh0YnNsZW4gPT0g LTEpCisrICAgICAgICB0YnNsZW4gPSBzdHJsZW4oKGNoYXIgKil0YnMpOworKworKyAgICBpZiAo bWRfZmxhZ3MpCisrICAgICAgICBFVlBfTURfQ1RYX3NldF9mbGFncygmbWN0eCwgbWRfZmxhZ3Mp OworKworKyAgICBpZiAoIUVWUF9TaWduSW5pdF9leCgmbWN0eCwgZGlnZXN0LCBOVUxMKSkKKysg ICAgICAgIGdvdG8gZXJyb3I7CisrICAgIGlmICghRVZQX1NpZ25VcGRhdGUoJm1jdHgsIHRicywg dGJzbGVuKSkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrICAgIGlmICghRVZQX1NpZ25GaW5hbCgm bWN0eCwgc2lnLCAmc2lnbGVuLCBwa2V5KSkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrCisrICAg IGlmIChrYXQgJiYgKChzaWdsZW4gIT0ga2F0bGVuKSB8fCBtZW1jbXAoa2F0LCBzaWcsIGthdGxl bikpKQorKyAgICAgICAgZ290byBlcnJvcjsKKysKKysgICAgaWYgKCFFVlBfVmVyaWZ5SW5pdF9l eCgmbWN0eCwgZGlnZXN0LCBOVUxMKSkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrICAgIGlmICgh RVZQX1ZlcmlmeVVwZGF0ZSgmbWN0eCwgdGJzLCB0YnNsZW4pKQorKyAgICAgICAgZ290byBlcnJv cjsKKysgICAgcmV0ID0gRVZQX1ZlcmlmeUZpbmFsKCZtY3R4LCBzaWcsIHNpZ2xlbiwgcGtleSk7 CisrCisrIGVycm9yOgorKyAgICBpZiAoc2lnICE9IHNpZ3RtcCkKKysgICAgICAgIE9QRU5TU0xf ZnJlZShzaWcpOworKyAgICBFVlBfTURfQ1RYX2NsZWFudXAoJm1jdHgpOworKyAgICBpZiAocmV0 ICE9IDEpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUEtFWV9TSUdOQVRVUkVfVEVT VCwgRklQU19SX1RFU1RfRkFJTFVSRSk7CisrICAgICAgICBpZiAoZmFpbF9zdHIpCisrICAgICAg ICAgICAgRVJSX2FkZF9lcnJvcl9kYXRhKDIsICJUeXBlPSIsIGZhaWxfc3RyKTsKKysgICAgICAg IHJldHVybiAwOworKyAgICB9CisrICAgIHJldHVybiAxOworK30KKysKKysvKiBHZW5lcmFsaXpl ZCBzeW1tZXRyaWMgY2lwaGVyIHRlc3Qgcm91dGluZS4gRW5jcnlwdCBkYXRhLCB2ZXJpZnkgcmVz dWx0CisrICogYWdhaW5zdCBrbm93biBhbnN3ZXIsIGRlY3J5cHQgYW5kIGNvbXBhcmUgd2l0aCBv cmlnaW5hbCBwbGFpbnRleHQuCisrICovCisrCisraW50IGZpcHNfY2lwaGVyX3Rlc3QoRVZQX0NJ UEhFUl9DVFggKmN0eCwgY29uc3QgRVZQX0NJUEhFUiAqY2lwaGVyLAorKyAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKKysgICAgICAgICAgICAgICAgICAgICBj b25zdCB1bnNpZ25lZCBjaGFyICppdiwKKysgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp Z25lZCBjaGFyICpwbGFpbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqY2lwaGVydGV4dCwgaW50IGxlbikKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIgcGx0 bXBbRklQU19NQVhfQ0lQSEVSX1RFU1RfU0laRV07CisrICAgIHVuc2lnbmVkIGNoYXIgY2l0bXBb RklQU19NQVhfQ0lQSEVSX1RFU1RfU0laRV07CisrCisrICAgIE9QRU5TU0xfYXNzZXJ0KGxlbiA8 PSBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFKTsKKysgICAgbWVtc2V0KHBsdG1wLCAwLCBGSVBT X01BWF9DSVBIRVJfVEVTVF9TSVpFKTsKKysgICAgbWVtc2V0KGNpdG1wLCAwLCBGSVBTX01BWF9D SVBIRVJfVEVTVF9TSVpFKTsKKysKKysgICAgaWYgKEVWUF9DaXBoZXJJbml0X2V4KGN0eCwgY2lw aGVyLCBOVUxMLCBrZXksIGl2LCAxKSA8PSAwKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlm IChFVlBfQ2lwaGVyKGN0eCwgY2l0bXAsIHBsYWludGV4dCwgbGVuKSA8PSAwKQorKyAgICAgICAg cmV0dXJuIDA7CisrICAgIGlmIChtZW1jbXAoY2l0bXAsIGNpcGhlcnRleHQsIGxlbikpCisrICAg ICAgICByZXR1cm4gMDsKKysgICAgaWYgKEVWUF9DaXBoZXJJbml0X2V4KGN0eCwgY2lwaGVyLCBO VUxMLCBrZXksIGl2LCAwKSA8PSAwKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChFVlBf Q2lwaGVyKGN0eCwgcGx0bXAsIGNpdG1wLCBsZW4pIDw9IDApCisrICAgICAgICByZXR1cm4gMDsK KysgICAgaWYgKG1lbWNtcChwbHRtcCwgcGxhaW50ZXh0LCBsZW4pKQorKyAgICAgICAgcmV0dXJu IDA7CisrICAgIHJldHVybiAxOworK30KKysjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9maXBzL2ZpcHNfcmFuZC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMv Zmlwc19yYW5kLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmQuYy5m aXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk4MjQ1Nzk2ICswMjAwCisrKysgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2ZpcHMvZmlwc19yYW5kLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTgyNDU3OTYg KzAyMDAKK0BAIC0wLDAgKzEsNDI4IEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQg KGMpIDIwMDcgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoK KysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3 aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4K KysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk IHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlz aW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAg c29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICog ICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5T U0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6 Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29s a2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVu ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo b3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNz aW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysg KgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUg Y2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVp ciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBP cGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0g d2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21l bnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkg dGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtp dCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQ UkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO TyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9S UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQ RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV VAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S IFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9S IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElO IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE CisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisr LyoKKysgKiBUaGlzIGlzIGEgRklQUyBhcHByb3ZlZCBBRVMgUFJORyBiYXNlZCBvbiBBTlNJIFg5 LjMxIEEuMi40LgorKyAqLworKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRl ICJlX29zLmgiCisrCisrLyogSWYgd2UgZG9uJ3QgZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5E RUQsIHN0cnVjdCB0aW1ldmFsIHdvbid0CisrICAgYmUgZGVmaW5lZCBhbmQgZ2V0dGltZW9mZGF5 KCkgd29uJ3QgYmUgZGVjbGFyZWQgd2l0aCBzdHJpY3QgY29tcGlsZXJzCisrICAgbGlrZSBERUMg QyBpbiBBTlNJIEMgbW9kZS4gICovCisrI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisr IyBkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAxCisrI2VuZGlmCisrCisrI2luY2x1ZGUg PG9wZW5zc2wvcmFuZC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgorKyNpbmNsdWRlIDxv cGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgorKyNpZiAhKGRl ZmluZWQoT1BFTlNTTF9TWVNfV0lOMzIpIHx8IGRlZmluZWQoT1BFTlNTTF9TWVNfVlhXT1JLUykp CisrIyBpbmNsdWRlIDxzeXMvdGltZS5oPgorKyNlbmRpZgorKyNpZiBkZWZpbmVkKE9QRU5TU0xf U1lTX1ZYV09SS1MpCisrIyBpbmNsdWRlIDx0aW1lLmg+CisrI2VuZGlmCisrI2luY2x1ZGUgPGFz c2VydC5oPgorKyNpZm5kZWYgT1BFTlNTTF9TWVNfV0lOMzIKKysjIGlmZGVmIE9QRU5TU0xfVU5J U1RECisrIyAgaW5jbHVkZSBPUEVOU1NMX1VOSVNURAorKyMgZWxzZQorKyMgIGluY2x1ZGUgPHVu aXN0ZC5oPgorKyMgZW5kaWYKKysjZW5kaWYKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1 ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNpbmNsdWRlICJmaXBzX2xvY2wuaCIKKysKKysjaWZkZWYg T1BFTlNTTF9GSVBTCisrCisrdm9pZCAqT1BFTlNTTF9zdGRlcnIodm9pZCk7CisrCisrIyBkZWZp bmUgQUVTX0JMT0NLX0xFTkdUSCAgICAgICAgMTYKKysKKysvKiBBRVMgRklQUyBQUk5HIGltcGxl bWVudGF0aW9uICovCisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKyAgICBpbnQgc2VlZGVkOworKyAg ICBpbnQga2V5ZWQ7CisrICAgIGludCB0ZXN0X21vZGU7CisrICAgIGludCBzZWNvbmQ7CisrICAg IGludCBlcnJvcjsKKysgICAgdW5zaWduZWQgbG9uZyBjb3VudGVyOworKyAgICBBRVNfS0VZIGtz OworKyAgICBpbnQgdnBvczsKKysgICAgLyogVGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGtleSBpZiBp dCBlcXVhbHMgc2VlZCBsZW5ndGggKi8KKysgICAgdW5zaWduZWQgY2hhciB0bXBfa2V5W0FFU19C TE9DS19MRU5HVEhdOworKyAgICB1bnNpZ25lZCBjaGFyIFZbQUVTX0JMT0NLX0xFTkdUSF07Cisr ICAgIHVuc2lnbmVkIGNoYXIgRFRbQUVTX0JMT0NLX0xFTkdUSF07CisrICAgIHVuc2lnbmVkIGNo YXIgbGFzdFtBRVNfQkxPQ0tfTEVOR1RIXTsKKyt9IEZJUFNfUFJOR19DVFg7CisrCisrc3RhdGlj IEZJUFNfUFJOR19DVFggc2N0eDsKKysKKytzdGF0aWMgaW50IGZpcHNfcHJuZ19mYWlsID0gMDsK KysKKyt2b2lkIEZJUFNfeDkzMV9zdGljayhpbnQgb25vZmYpCisreworKyAgICBmaXBzX3Bybmdf ZmFpbCA9IG9ub2ZmOworK30KKysKKyt2b2lkIEZJUFNfcm5nX3N0aWNrKHZvaWQpCisreworKyAg ICBGSVBTX3g5MzFfc3RpY2soMSk7CisrfQorKworK3N0YXRpYyB2b2lkIGZpcHNfcmFuZF9wcm5n X3Jlc2V0KEZJUFNfUFJOR19DVFggKiBjdHgpCisreworKyAgICBjdHgtPnNlZWRlZCA9IDA7Cisr ICAgIGN0eC0+a2V5ZWQgPSAwOworKyAgICBjdHgtPnRlc3RfbW9kZSA9IDA7CisrICAgIGN0eC0+ Y291bnRlciA9IDA7CisrICAgIGN0eC0+c2Vjb25kID0gMDsKKysgICAgY3R4LT5lcnJvciA9IDA7 CisrICAgIGN0eC0+dnBvcyA9IDA7CisrICAgIE9QRU5TU0xfY2xlYW5zZShjdHgtPlYsIEFFU19C TE9DS19MRU5HVEgpOworKyAgICBPUEVOU1NMX2NsZWFuc2UoJmN0eC0+a3MsIHNpemVvZihBRVNf S0VZKSk7CisrfQorKworK3N0YXRpYyBpbnQgZmlwc19zZXRfcHJuZ19rZXkoRklQU19QUk5HX0NU WCAqIGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKmtleSwgdW5zaWduZWQgaW50IGtleWxlbikKKyt7CisrICAgIGlmIChGSVBTX3NlbGZ0ZXN0 X2ZhaWxlZCgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX1NFVF9QUk5HX0tFWSwg RklQU19SX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAg ICBpZiAoa2V5bGVuICE9IDE2ICYmIGtleWxlbiAhPSAyNCAmJiBrZXlsZW4gIT0gMzIpIHsKKysg ICAgICAgIC8qIGVycm9yOiBpbnZhbGlkIGtleSBzaXplICovCisrICAgICAgICByZXR1cm4gMDsK KysgICAgfQorKyAgICBBRVNfc2V0X2VuY3J5cHRfa2V5KGtleSwga2V5bGVuIDw8IDMsICZjdHgt PmtzKTsKKysgICAgaWYgKGtleWxlbiA9PSAxNikgeworKyAgICAgICAgbWVtY3B5KGN0eC0+dG1w X2tleSwga2V5LCAxNik7CisrICAgICAgICBjdHgtPmtleWVkID0gMjsKKysgICAgfSBlbHNlCisr ICAgICAgICBjdHgtPmtleWVkID0gMTsKKysgICAgY3R4LT5zZWVkZWQgPSAwOworKyAgICBjdHgt PnNlY29uZCA9IDA7CisrICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IGZpcHNfc2V0 X3Bybmdfc2VlZChGSVBTX1BSTkdfQ1RYICogY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWQsIHVuc2lnbmVkIGludCBzZWVkbGVuKQor K3sKKysgICAgdW5zaWduZWQgaW50IGk7CisrICAgIGlmICghY3R4LT5rZXllZCkKKysgICAgICAg IHJldHVybiAwOworKyAgICAvKiBJbiB0ZXN0IG1vZGUgc2VlZCBpcyBqdXN0IHN1cHBsaWVkIGRh dGEgKi8KKysgICAgaWYgKGN0eC0+dGVzdF9tb2RlKSB7CisrICAgICAgICBpZiAoc2VlZGxlbiAh PSBBRVNfQkxPQ0tfTEVOR1RIKQorKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgbWVt Y3B5KGN0eC0+Viwgc2VlZCwgQUVTX0JMT0NLX0xFTkdUSCk7CisrICAgICAgICBjdHgtPnNlZWRl ZCA9IDE7CisrICAgICAgICByZXR1cm4gMTsKKysgICAgfQorKyAgICAvKiBPdXRzaWRlIHRlc3Qg bW9kZSBYT1Igc3VwcGxpZWQgZGF0YSB3aXRoIGV4aXN0aW5nIHNlZWQgKi8KKysgICAgZm9yIChp ID0gMDsgaSA8IHNlZWRsZW47IGkrKykgeworKyAgICAgICAgY3R4LT5WW2N0eC0+dnBvcysrXSBe PSBzZWVkW2ldOworKyAgICAgICAgaWYgKGN0eC0+dnBvcyA9PSBBRVNfQkxPQ0tfTEVOR1RIKSB7 CisrICAgICAgICAgICAgY3R4LT52cG9zID0gMDsKKysgICAgICAgICAgICAvKiBTcGVjaWFsIGNh c2UgaWYgZmlyc3Qgc2VlZCBhbmQga2V5IGxlbmd0aCBlcXVhbHMKKysgICAgICAgICAgICAgKiBi bG9jayBzaXplIGNoZWNrIGtleSBhbmQgc2VlZCBkbyBub3QgbWF0Y2guCisrICAgICAgICAgICAg ICovCisrICAgICAgICAgICAgaWYgKGN0eC0+a2V5ZWQgPT0gMikgeworKyAgICAgICAgICAgICAg ICBpZiAoIW1lbWNtcChjdHgtPnRtcF9rZXksIGN0eC0+ViwgMTYpKSB7CisrICAgICAgICAgICAg ICAgICAgICBSQU5EZXJyKFJBTkRfRl9GSVBTX1NFVF9QUk5HX1NFRUQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJBTkRfUl9QUk5HX1NFRURfTVVTVF9OT1RfTUFUQ0hfS0VZKTsKKysg ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgICAgICB9CisrICAgICAg ICAgICAgICAgIE9QRU5TU0xfY2xlYW5zZShjdHgtPnRtcF9rZXksIDE2KTsKKysgICAgICAgICAg ICAgICAgY3R4LT5rZXllZCA9IDE7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGN0eC0+ c2VlZGVkID0gMTsKKysgICAgICAgIH0KKysgICAgfQorKyAgICByZXR1cm4gMTsKKyt9CisrCisr c3RhdGljIGludCBmaXBzX3NldF90ZXN0X21vZGUoRklQU19QUk5HX0NUWCAqIGN0eCkKKyt7Cisr ICAgIGlmIChjdHgtPmtleWVkKSB7CisrICAgICAgICBSQU5EZXJyKFJBTkRfRl9GSVBTX1NFVF9U RVNUX01PREUsIFJBTkRfUl9QUk5HX0tFWUVEKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9 CisrICAgIGN0eC0+dGVzdF9tb2RlID0gMTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCBG SVBTX3g5MzFfdGVzdF9tb2RlKHZvaWQpCisreworKyAgICByZXR1cm4gZmlwc19zZXRfdGVzdF9t b2RlKCZzY3R4KTsKKyt9CisrCisraW50IEZJUFNfcmFuZF90ZXN0X21vZGUodm9pZCkKKyt7Cisr ICAgIHJldHVybiBmaXBzX3NldF90ZXN0X21vZGUoJnNjdHgpOworK30KKysKKytpbnQgRklQU194 OTMxX3NldF9kdCh1bnNpZ25lZCBjaGFyICpkdCkKKyt7CisrICAgIGlmICghc2N0eC50ZXN0X21v ZGUpIHsKKysgICAgICAgIFJBTkRlcnIoUkFORF9GX0ZJUFNfWDkzMV9TRVRfRFQsIFJBTkRfUl9O T1RfSU5fVEVTVF9NT0RFKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIG1lbWNw eShzY3R4LkRULCBkdCwgQUVTX0JMT0NLX0xFTkdUSCk7CisrICAgIHJldHVybiAxOworK30KKysK KytpbnQgRklQU19yYW5kX3NldF9kdCh1bnNpZ25lZCBjaGFyICpkdCkKKyt7CisrICAgIGlmICgh c2N0eC50ZXN0X21vZGUpIHsKKysgICAgICAgIFJBTkRlcnIoUkFORF9GX0ZJUFNfUkFORF9TRVRf RFQsIFJBTkRfUl9OT1RfSU5fVEVTVF9NT0RFKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9 CisrICAgIG1lbWNweShzY3R4LkRULCBkdCwgQUVTX0JMT0NLX0xFTkdUSCk7CisrICAgIHJldHVy biAxOworK30KKysKKyt2b2lkIEZJUFNfZ2V0X3RpbWV2ZWModW5zaWduZWQgY2hhciAqYnVmLCB1 bnNpZ25lZCBsb25nICpwY3RyKQorK3sKKysjIGlmZGVmIE9QRU5TU0xfU1lTX1dJTjMyCisrICAg IEZJTEVUSU1FIGZ0OworKyMgZWxpZiBkZWZpbmVkKE9QRU5TU0xfU1lTX1ZYV09SS1MpCisrICAg IHN0cnVjdCB0aW1lc3BlYyB0czsKKysjIGVsc2UKKysgICAgc3RydWN0IHRpbWV2YWwgdHY7Cisr IyBlbmRpZgorKworKyMgaWZuZGVmIEdFVFBJRF9JU19NRUFOSU5HTEVTUworKyAgICB1bnNpZ25l ZCBsb25nIHBpZDsKKysjIGVuZGlmCisrCisrIyBpZmRlZiBPUEVOU1NMX1NZU19XSU4zMgorKyAg ICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmZnQpOworKyAgICBidWZbMF0gPSAodW5zaWduZWQg Y2hhcikoZnQuZHdIaWdoRGF0ZVRpbWUgJiAweGZmKTsKKysgICAgYnVmWzFdID0gKHVuc2lnbmVk IGNoYXIpKChmdC5kd0hpZ2hEYXRlVGltZSA+PiA4KSAmIDB4ZmYpOworKyAgICBidWZbMl0gPSAo dW5zaWduZWQgY2hhcikoKGZ0LmR3SGlnaERhdGVUaW1lID4+IDE2KSAmIDB4ZmYpOworKyAgICBi dWZbM10gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3SGlnaERhdGVUaW1lID4+IDI0KSAmIDB4ZmYp OworKyAgICBidWZbNF0gPSAodW5zaWduZWQgY2hhcikoZnQuZHdMb3dEYXRlVGltZSAmIDB4ZmYp OworKyAgICBidWZbNV0gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3TG93RGF0ZVRpbWUgPj4gOCkg JiAweGZmKTsKKysgICAgYnVmWzZdID0gKHVuc2lnbmVkIGNoYXIpKChmdC5kd0xvd0RhdGVUaW1l ID4+IDE2KSAmIDB4ZmYpOworKyAgICBidWZbN10gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3TG93 RGF0ZVRpbWUgPj4gMjQpICYgMHhmZik7CisrIyBlbGlmIGRlZmluZWQoT1BFTlNTTF9TWVNfVlhX T1JLUykKKysgICAgY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKTsKKysgICAgYnVm WzBdID0gKHVuc2lnbmVkIGNoYXIpKHRzLnR2X3NlYyAmIDB4ZmYpOworKyAgICBidWZbMV0gPSAo dW5zaWduZWQgY2hhcikoKHRzLnR2X3NlYyA+PiA4KSAmIDB4ZmYpOworKyAgICBidWZbMl0gPSAo dW5zaWduZWQgY2hhcikoKHRzLnR2X3NlYyA+PiAxNikgJiAweGZmKTsKKysgICAgYnVmWzNdID0g KHVuc2lnbmVkIGNoYXIpKCh0cy50dl9zZWMgPj4gMjQpICYgMHhmZik7CisrICAgIGJ1Zls0XSA9 ICh1bnNpZ25lZCBjaGFyKSh0cy50dl9uc2VjICYgMHhmZik7CisrICAgIGJ1Zls1XSA9ICh1bnNp Z25lZCBjaGFyKSgodHMudHZfbnNlYyA+PiA4KSAmIDB4ZmYpOworKyAgICBidWZbNl0gPSAodW5z aWduZWQgY2hhcikoKHRzLnR2X25zZWMgPj4gMTYpICYgMHhmZik7CisrICAgIGJ1Zls3XSA9ICh1 bnNpZ25lZCBjaGFyKSgodHMudHZfbnNlYyA+PiAyNCkgJiAweGZmKTsKKysjIGVsc2UKKysgICAg Z2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CisrICAgIGJ1ZlswXSA9ICh1bnNpZ25lZCBjaGFyKSh0 di50dl9zZWMgJiAweGZmKTsKKysgICAgYnVmWzFdID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl9z ZWMgPj4gOCkgJiAweGZmKTsKKysgICAgYnVmWzJdID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl9z ZWMgPj4gMTYpICYgMHhmZik7CisrICAgIGJ1ZlszXSA9ICh1bnNpZ25lZCBjaGFyKSgodHYudHZf c2VjID4+IDI0KSAmIDB4ZmYpOworKyAgICBidWZbNF0gPSAodW5zaWduZWQgY2hhcikodHYudHZf dXNlYyAmIDB4ZmYpOworKyAgICBidWZbNV0gPSAodW5zaWduZWQgY2hhcikoKHR2LnR2X3VzZWMg Pj4gOCkgJiAweGZmKTsKKysgICAgYnVmWzZdID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl91c2Vj ID4+IDE2KSAmIDB4ZmYpOworKyAgICBidWZbN10gPSAodW5zaWduZWQgY2hhcikoKHR2LnR2X3Vz ZWMgPj4gMjQpICYgMHhmZik7CisrIyBlbmRpZgorKyAgICBidWZbOF0gPSAodW5zaWduZWQgY2hh cikoKnBjdHIgJiAweGZmKTsKKysgICAgYnVmWzldID0gKHVuc2lnbmVkIGNoYXIpKCgqcGN0ciA+ PiA4KSAmIDB4ZmYpOworKyAgICBidWZbMTBdID0gKHVuc2lnbmVkIGNoYXIpKCgqcGN0ciA+PiAx NikgJiAweGZmKTsKKysgICAgYnVmWzExXSA9ICh1bnNpZ25lZCBjaGFyKSgoKnBjdHIgPj4gMjQp ICYgMHhmZik7CisrCisrICAgICgqcGN0cikrKzsKKysKKysjIGlmbmRlZiBHRVRQSURfSVNfTUVB TklOR0xFU1MKKysgICAgcGlkID0gKHVuc2lnbmVkIGxvbmcpZ2V0cGlkKCk7CisrICAgIGJ1Zlsx Ml0gPSAodW5zaWduZWQgY2hhcikocGlkICYgMHhmZik7CisrICAgIGJ1ZlsxM10gPSAodW5zaWdu ZWQgY2hhcikoKHBpZCA+PiA4KSAmIDB4ZmYpOworKyAgICBidWZbMTRdID0gKHVuc2lnbmVkIGNo YXIpKChwaWQgPj4gMTYpICYgMHhmZik7CisrICAgIGJ1ZlsxNV0gPSAodW5zaWduZWQgY2hhciko KHBpZCA+PiAyNCkgJiAweGZmKTsKKysjIGVuZGlmCisrfQorKworK3N0YXRpYyBpbnQgZmlwc19y YW5kKEZJUFNfUFJOR19DVFggKiBjdHgsCisrICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg Y2hhciAqb3V0LCB1bnNpZ25lZCBpbnQgb3V0bGVuKQorK3sKKysgICAgdW5zaWduZWQgY2hhciBS W0FFU19CTE9DS19MRU5HVEhdLCBJW0FFU19CTE9DS19MRU5HVEhdOworKyAgICB1bnNpZ25lZCBj aGFyIHRtcFtBRVNfQkxPQ0tfTEVOR1RIXTsKKysgICAgaW50IGk7CisrICAgIGlmIChjdHgtPmVy cm9yKSB7CisrICAgICAgICBSQU5EZXJyKFJBTkRfRl9GSVBTX1JBTkQsIFJBTkRfUl9QUk5HX0VS Uk9SKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIGlmICghY3R4LT5rZXllZCkg eworKyAgICAgICAgUkFORGVycihSQU5EX0ZfRklQU19SQU5ELCBSQU5EX1JfTk9fS0VZX1NFVCk7 CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBpZiAoIWN0eC0+c2VlZGVkKSB7Cisr ICAgICAgICBSQU5EZXJyKFJBTkRfRl9GSVBTX1JBTkQsIFJBTkRfUl9QUk5HX05PVF9TRUVERUQp OworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgZm9yICg7OykgeworKyAgICAgICAg aWYgKCFjdHgtPnRlc3RfbW9kZSkKKysgICAgICAgICAgICBGSVBTX2dldF90aW1ldmVjKGN0eC0+ RFQsICZjdHgtPmNvdW50ZXIpOworKyAgICAgICAgQUVTX2VuY3J5cHQoY3R4LT5EVCwgSSwgJmN0 eC0+a3MpOworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IEFFU19CTE9DS19MRU5HVEg7IGkrKykK KysgICAgICAgICAgICB0bXBbaV0gPSBJW2ldIF4gY3R4LT5WW2ldOworKyAgICAgICAgQUVTX2Vu Y3J5cHQodG1wLCBSLCAmY3R4LT5rcyk7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQUVTX0JM T0NLX0xFTkdUSDsgaSsrKQorKyAgICAgICAgICAgIHRtcFtpXSA9IFJbaV0gXiBJW2ldOworKyAg ICAgICAgQUVTX2VuY3J5cHQodG1wLCBjdHgtPlYsICZjdHgtPmtzKTsKKysgICAgICAgIC8qIENv bnRpbnVvdXMgUFJORyB0ZXN0ICovCisrICAgICAgICBpZiAoY3R4LT5zZWNvbmQpIHsKKysgICAg ICAgICAgICBpZiAoZmlwc19wcm5nX2ZhaWwpCisrICAgICAgICAgICAgICAgIG1lbWNweShjdHgt Pmxhc3QsIFIsIEFFU19CTE9DS19MRU5HVEgpOworKyAgICAgICAgICAgIGlmICghbWVtY21wKFIs IGN0eC0+bGFzdCwgQUVTX0JMT0NLX0xFTkdUSCkpIHsKKysgICAgICAgICAgICAgICAgUkFORGVy cihSQU5EX0ZfRklQU19SQU5ELCBSQU5EX1JfUFJOR19TVFVDSyk7CisrICAgICAgICAgICAgICAg IGN0eC0+ZXJyb3IgPSAxOworKyAgICAgICAgICAgICAgICBmaXBzX3NldF9zZWxmdGVzdF9mYWls KCk7CisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgIH0KKysgICAgICAg IH0KKysgICAgICAgIG1lbWNweShjdHgtPmxhc3QsIFIsIEFFU19CTE9DS19MRU5HVEgpOworKyAg ICAgICAgaWYgKCFjdHgtPnNlY29uZCkgeworKyAgICAgICAgICAgIGN0eC0+c2Vjb25kID0gMTsK KysgICAgICAgICAgICBpZiAoIWN0eC0+dGVzdF9tb2RlKQorKyAgICAgICAgICAgICAgICBjb250 aW51ZTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChvdXRsZW4gPD0gQUVTX0JMT0NLX0xF TkdUSCkgeworKyAgICAgICAgICAgIG1lbWNweShvdXQsIFIsIG91dGxlbik7CisrICAgICAgICAg ICAgYnJlYWs7CisrICAgICAgICB9CisrCisrICAgICAgICBtZW1jcHkob3V0LCBSLCBBRVNfQkxP Q0tfTEVOR1RIKTsKKysgICAgICAgIG91dCArPSBBRVNfQkxPQ0tfTEVOR1RIOworKyAgICAgICAg b3V0bGVuIC09IEFFU19CTE9DS19MRU5HVEg7CisrICAgIH0KKysgICAgcmV0dXJuIDE7CisrfQor KworK2ludCBGSVBTX3g5MzFfc2V0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIGludCBr ZXlsZW4pCisreworKyAgICBpbnQgcmV0OworKyAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NL X1JBTkQpOworKyAgICByZXQgPSBmaXBzX3NldF9wcm5nX2tleSgmc2N0eCwga2V5LCBrZXlsZW4p OworKyAgICBDUllQVE9fd191bmxvY2soQ1JZUFRPX0xPQ0tfUkFORCk7CisrICAgIHJldHVybiBy ZXQ7CisrfQorKworK2ludCBGSVBTX3JhbmRfc2V0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICpr ZXksIEZJUFNfUkFORF9TSVpFX1Qga2V5bGVuKQorK3sKKysgICAgcmV0dXJuIEZJUFNfeDkzMV9z ZXRfa2V5KGtleSwga2V5bGVuKTsKKyt9CisrCisraW50IEZJUFNfeDkzMV9zZWVkKGNvbnN0IHZv aWQgKnNlZWQsIGludCBzZWVkbGVuKQorK3sKKysgICAgaW50IHJldDsKKysgICAgQ1JZUFRPX3df bG9jayhDUllQVE9fTE9DS19SQU5EKTsKKysgICAgcmV0ID0gZmlwc19zZXRfcHJuZ19zZWVkKCZz Y3R4LCBzZWVkLCBzZWVkbGVuKTsKKysgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JB TkQpOworKyAgICByZXR1cm4gcmV0OworK30KKysKKytpbnQgRklQU194OTMxX2J5dGVzKHVuc2ln bmVkIGNoYXIgKm91dCwgaW50IGNvdW50KQorK3sKKysgICAgaW50IHJldDsKKysgICAgQ1JZUFRP X3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKKysgICAgcmV0ID0gZmlwc19yYW5kKCZzY3R4LCBv dXQsIGNvdW50KTsKKysgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOworKyAg ICByZXR1cm4gcmV0OworK30KKysKKytpbnQgRklQU194OTMxX3N0YXR1cyh2b2lkKQorK3sKKysg ICAgaW50IHJldDsKKysgICAgQ1JZUFRPX3JfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKKysgICAg cmV0ID0gc2N0eC5zZWVkZWQ7CisrICAgIENSWVBUT19yX3VubG9jayhDUllQVE9fTE9DS19SQU5E KTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrdm9pZCBGSVBTX3g5MzFfcmVzZXQodm9pZCkK Kyt7CisrICAgIENSWVBUT193X2xvY2soQ1JZUFRPX0xPQ0tfUkFORCk7CisrICAgIGZpcHNfcmFu ZF9wcm5nX3Jlc2V0KCZzY3R4KTsKKysgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JB TkQpOworK30KKysKKytzdGF0aWMgaW50IGZpcHNfZG9fcmFuZF9zZWVkKGNvbnN0IHZvaWQgKnNl ZWQsIGludCBzZWVkbGVuKQorK3sKKysgICAgRklQU194OTMxX3NlZWQoc2VlZCwgc2VlZGxlbik7 CisrICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IGZpcHNfZG9fcmFuZF9hZGQoY29u c3Qgdm9pZCAqc2VlZCwgaW50IHNlZWRsZW4sIGRvdWJsZSBhZGRfZW50cm9weSkKKyt7CisrICAg IEZJUFNfeDkzMV9zZWVkKHNlZWQsIHNlZWRsZW4pOworKyAgICByZXR1cm4gMTsKKyt9CisrCisr c3RhdGljIGNvbnN0IFJBTkRfTUVUSE9EIHJhbmRfeDkzMV9tZXRoID0geworKyAgICBmaXBzX2Rv X3JhbmRfc2VlZCwKKysgICAgRklQU194OTMxX2J5dGVzLAorKyAgICBGSVBTX3g5MzFfcmVzZXQs CisrICAgIGZpcHNfZG9fcmFuZF9hZGQsCisrICAgIEZJUFNfeDkzMV9ieXRlcywKKysgICAgRklQ U194OTMxX3N0YXR1cworK307CisrCisrY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfeDkzMV9tZXRo b2Qodm9pZCkKKyt7CisrICAgIHJldHVybiAmcmFuZF94OTMxX21ldGg7CisrfQorKworKyNlbmRp ZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yYW5kLmguZmlwcyBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmQuaAorLS0tIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9maXBzL2ZpcHNfcmFuZC5oLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTgyNDU3 OTYgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmQuaAkyMDE1 LTA0LTIyIDE2OjA4OjQwLjI5ODI0NTc5NiArMDIwMAorQEAgLTAsMCArMSwxNjMgQEAKKysvKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAg QWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlv biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor KyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24u CisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVy ZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxv d2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3 YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0 aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICog NC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0 IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2 ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1p c3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3Bl bnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9t IHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1h eSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgor KyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJl ZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xs b3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1 ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9y IHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisr ICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1Qg YGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVS UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pF Q1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E SVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVN RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERB VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENB VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs CisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig T1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD SCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaWZuZGVmIEhFQURFUl9GSVBTX1JBTkRfSAorKyMg ZGVmaW5lIEhFQURFUl9GSVBTX1JBTkRfSAorKworKyMgaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4K KysjIGluY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrIyBpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4K KysjIGluY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgorKworKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisr CisrIyAgaWZkZWYgIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrIyAgZW5kaWYKKysKKysg ICAgaW50IEZJUFNfeDkzMV9zZXRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwgaW50IGtl eWxlbik7CisrICAgIGludCBGSVBTX3g5MzFfc2VlZChjb25zdCB2b2lkICpidWYsIGludCBudW0p OworKyAgICBpbnQgRklQU194OTMxX2J5dGVzKHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IG91dGxl bik7CisrCisrICAgIGludCBGSVBTX3g5MzFfdGVzdF9tb2RlKHZvaWQpOworKyAgICB2b2lkIEZJ UFNfeDkzMV9yZXNldCh2b2lkKTsKKysgICAgaW50IEZJUFNfeDkzMV9zZXRfZHQodW5zaWduZWQg Y2hhciAqZHQpOworKworKyAgICBpbnQgRklQU194OTMxX3N0YXR1cyh2b2lkKTsKKysKKysgICAg Y29uc3QgUkFORF9NRVRIT0QgKkZJUFNfeDkzMV9tZXRob2Qodm9pZCk7CisrCisrICAgIHR5cGVk ZWYgc3RydWN0IGRyYmdfY3R4X3N0IERSQkdfQ1RYOworKy8qIERSQkcgZXh0ZXJuYWwgZmxhZ3Mg Ki8KKysvKiBGbGFnIGZvciBDVFIgbW9kZSBvbmx5OiB1c2UgZGVyaXZhdGlvbiBmdW5jdGlvbiBj dHJfZGYgKi8KKysjICBkZWZpbmUgRFJCR19GTEFHX0NUUl9VU0VfREYgICAgICAgICAgICAweDEK KysvKiBQUk5HIGlzIGluIHRlc3Qgc3RhdGUgKi8KKysjICBkZWZpbmUgRFJCR19GTEFHX1RFU1Qg ICAgICAgICAgICAgICAgICAweDIKKysKKysgICAgRFJCR19DVFggKkZJUFNfZHJiZ19uZXcoaW50 IHR5cGUsIHVuc2lnbmVkIGludCBmbGFncyk7CisrICAgIGludCBGSVBTX2RyYmdfaW5pdChEUkJH X0NUWCAqZGN0eCwgaW50IHR5cGUsIHVuc2lnbmVkIGludCBmbGFncyk7CisrICAgIGludCBGSVBT X2RyYmdfaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcGVycywgc2l6ZV90IHBlcnNsZW4pOworKyAg ICBpbnQgRklQU19kcmJnX3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwgY29uc3QgdW5zaWduZWQgY2hh ciAqYWRpbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFkaW5sZW4pOworKyAg ICBpbnQgRklQU19kcmJnX2dlbmVyYXRlKERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICpv dXQsIHNpemVfdCBvdXRsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByZWRp Y3Rpb25fcmVzaXN0YW5jZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp Z25lZCBjaGFyICphZGluLCBzaXplX3QgYWRpbmxlbik7CisrCisrICAgIGludCBGSVBTX2RyYmdf dW5pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCk7CisrICAgIHZvaWQgRklQU19kcmJnX2ZyZWUo RFJCR19DVFggKmRjdHgpOworKworKyAgICBpbnQgRklQU19kcmJnX3NldF9jYWxsYmFja3MoRFJC R19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKCpn ZXRfZW50cm9weSkgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwb3V0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50 cm9weSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IG1pbl9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfbGVuKSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKCpjbGVhbnVwX2VudHJvcHkpIChEUkJHX0NUWCAqY3R4LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKm91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2xlbiksCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgZW50cm9weV9ibG9ja2xlbiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCAoKmdldF9ub25jZSkgKERSQkdfQ1RYICpjdHgsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBjaGFyICoqcG91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBlbnRyb3B5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1pbl9sZW4sCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4X2xlbiksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqY2xlYW51cF9ub25jZSkgKERS QkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9sZW4pKTsKKysKKysgICAg aW50IEZJUFNfZHJiZ19zZXRfcmFuZF9jYWxsYmFja3MoRFJCR19DVFggKmRjdHgsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAoKmdldF9hZGluKSAoRFJCR19D VFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBjaGFyCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKipwb3V0KSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdm9pZCAoKmNsZWFudXBfYWRpbikgKERSQkdfQ1RYICpjdHgsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBjaGFyICpvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2xlbiksCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAoKnJhbmRfc2VlZF9jYikgKERSQkdfQ1RYICpjdHgs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHZvaWQgKmJ1ZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bSksCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAoKnJhbmRfYWRkX2NiKSAoRFJCR19DVFggKmN0eCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB2b2lkICpidWYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IG51bSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZW50cm9weSkpOworKworKyAgICB2b2lk ICpGSVBTX2RyYmdfZ2V0X2FwcF9kYXRhKERSQkdfQ1RYICpjdHgpOworKyAgICB2b2lkIEZJUFNf ZHJiZ19zZXRfYXBwX2RhdGEoRFJCR19DVFggKmN0eCwgdm9pZCAqYXBwX2RhdGEpOworKyAgICBz aXplX3QgRklQU19kcmJnX2dldF9ibG9ja2xlbmd0aChEUkJHX0NUWCAqZGN0eCk7CisrICAgIGlu dCBGSVBTX2RyYmdfZ2V0X3N0cmVuZ3RoKERSQkdfQ1RYICpkY3R4KTsKKysgICAgdm9pZCBGSVBT X2RyYmdfc2V0X2NoZWNrX2ludGVydmFsKERSQkdfQ1RYICpkY3R4LCBpbnQgaW50ZXJ2YWwpOwor KyAgICB2b2lkIEZJUFNfZHJiZ19zZXRfcmVzZWVkX2ludGVydmFsKERSQkdfQ1RYICpkY3R4LCBp bnQgaW50ZXJ2YWwpOworKworKyAgICBpbnQgRklQU19kcmJnX2hlYWx0aF9jaGVjayhEUkJHX0NU WCAqZGN0eCk7CisrCisrICAgIERSQkdfQ1RYICpGSVBTX2dldF9kZWZhdWx0X2RyYmcodm9pZCk7 CisrICAgIGNvbnN0IFJBTkRfTUVUSE9EICpGSVBTX2RyYmdfbWV0aG9kKHZvaWQpOworKworKyAg ICBpbnQgRklQU19yYW5kX3NldF9tZXRob2QoY29uc3QgUkFORF9NRVRIT0QgKm1ldGgpOworKyAg ICBjb25zdCBSQU5EX01FVEhPRCAqRklQU19yYW5kX2dldF9tZXRob2Qodm9pZCk7CisrCisrICAg IHZvaWQgRklQU19yYW5kX3NldF9iaXRzKGludCBuYml0cyk7CisrCisrICAgIGludCBGSVBTX3Jh bmRfc3RyZW5ndGgodm9pZCk7CisrCisrLyogMS4wLjAgY29tcGF0IGZ1bmN0aW9ucyAqLworKyAg ICBpbnQgRklQU19yYW5kX3NldF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LCBGSVBTX1JB TkRfU0laRV9UIGtleWxlbik7CisrICAgIGludCBGSVBTX3JhbmRfc2VlZChjb25zdCB2b2lkICpi dWYsIEZJUFNfUkFORF9TSVpFX1QgbnVtKTsKKysgICAgaW50IEZJUFNfcmFuZF9ieXRlcyh1bnNp Z25lZCBjaGFyICpvdXQsIEZJUFNfUkFORF9TSVpFX1Qgb3V0bGVuKTsKKysgICAgaW50IEZJUFNf cmFuZF90ZXN0X21vZGUodm9pZCk7CisrICAgIHZvaWQgRklQU19yYW5kX3Jlc2V0KHZvaWQpOwor KyAgICBpbnQgRklQU19yYW5kX3NldF9kdCh1bnNpZ25lZCBjaGFyICpkdCk7CisrICAgIGludCBG SVBTX3JhbmRfc3RhdHVzKHZvaWQpOworKyAgICBjb25zdCBSQU5EX01FVEhPRCAqRklQU19yYW5k X21ldGhvZCh2b2lkKTsKKysKKysjICBpZmRlZiAgX19jcGx1c3BsdXMKKyt9CisrIyAgZW5kaWYK KysjIGVuZGlmCisrI2VuZGlmCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9m aXBzX3JhbmRfbGNsLmguZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmRf bGNsLmgKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmRfbGNsLmguZmlw cwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5ODI0NTc5NiArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9maXBzL2ZpcHNfcmFuZF9sY2wuaAkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5ODI0NTc5 NiArMDIwMAorQEAgLTAsMCArMSwyMTMgQEAKKysvKiBmaXBzL3JhbmQvZmlwc19yYW5kX2xjbC5o ICovCisrLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9y ZykgZm9yIHRoZSBPcGVuU1NMCisrICogcHJvamVjdC4KKysgKi8KKysvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor KyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6 CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAz LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m IHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVz ICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2Vk IHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3 cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgbGljZW5zaW5nQE9wZW5T U0wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg bWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBw ZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Np b24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBv ZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBh Y2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl dmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3Bl blNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNP RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBB TlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xB SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMg Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAq IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKysgKi8KKysKKyt0eXBlZGVmIHN0cnVjdCBkcmJnX2hhc2hfY3R4X3N0IERS QkdfSEFTSF9DVFg7CisrdHlwZWRlZiBzdHJ1Y3QgZHJiZ19obWFjX2N0eF9zdCBEUkJHX0hNQUNf Q1RYOworK3R5cGVkZWYgc3RydWN0IGRyYmdfY3RyX2N0eF9zdCBEUkJHX0NUUl9DVFg7CisrCisr LyogODg4IGJpdHMgZnJvbSAxMC4xIHRhYmxlIDIgKi8KKysjZGVmaW5lIEhBU0hfUFJOR19NQVhf U0VFRExFTiAgIDExMQorKworK3N0cnVjdCBkcmJnX2hhc2hfY3R4X3N0IHsKKysgICAgY29uc3Qg RVZQX01EICptZDsKKysgICAgRVZQX01EX0NUWCBtY3R4OworKyAgICB1bnNpZ25lZCBjaGFyIFZb SEFTSF9QUk5HX01BWF9TRUVETEVOXTsKKysgICAgdW5zaWduZWQgY2hhciBDW0hBU0hfUFJOR19N QVhfU0VFRExFTl07CisrICAgIC8qIFRlbXBvcmFyeSB2YWx1ZSBzdG9yYWdlOiBzaG91bGQgYWx3 YXlzIGV4Y2VlZCBtYXggZGlnZXN0IGxlbmd0aCAqLworKyAgICB1bnNpZ25lZCBjaGFyIHZ0bXBb SEFTSF9QUk5HX01BWF9TRUVETEVOXTsKKyt9OworKworK3N0cnVjdCBkcmJnX2htYWNfY3R4X3N0 IHsKKysgICAgY29uc3QgRVZQX01EICptZDsKKysgICAgSE1BQ19DVFggaGN0eDsKKysgICAgdW5z aWduZWQgY2hhciBLW0VWUF9NQVhfTURfU0laRV07CisrICAgIHVuc2lnbmVkIGNoYXIgVltFVlBf TUFYX01EX1NJWkVdOworK307CisrCisrc3RydWN0IGRyYmdfY3RyX2N0eF9zdCB7CisrICAgIEFF U19LRVkga3M7CisrICAgIHNpemVfdCBrZXlsZW47CisrICAgIHVuc2lnbmVkIGNoYXIgS1szMl07 CisrICAgIHVuc2lnbmVkIGNoYXIgVlsxNl07CisrICAgIC8qIFRlbXAgdmFyaWFibGVzIHVzZWQg YnkgZGVyaXZhdGlvbiBmdW5jdGlvbiAqLworKyAgICBBRVNfS0VZIGRmX2tzOworKyAgICBBRVNf S0VZIGRmX2t4a3M7CisrICAgIC8qIFRlbXBvcmFyeSBibG9jayBzdG9yYWdlIHVzZWQgYnkgY3Ry X2RmICovCisrICAgIHVuc2lnbmVkIGNoYXIgYmx0bXBbMTZdOworKyAgICBzaXplX3QgYmx0bXBf cG9zOworKyAgICB1bnNpZ25lZCBjaGFyIEtYWzQ4XTsKKyt9OworKworKy8qIERSQkcgaW50ZXJu YWwgZmxhZ3MgKi8KKysKKysvKiBGdW5jdGlvbnMgc2hvdWxkbid0IGNhbGwgZXJyIGxpYnJhcnkg Ki8KKysjZGVmaW5lIERSQkdfRkxBR19OT0VSUiAgICAgICAgICAgICAgICAgMHgxCisrLyogQ3Vz dG9tIHJlc2VlZCBjaGVja2luZyAqLworKyNkZWZpbmUgRFJCR19DVVNUT01fUkVTRUVEICAgICAg ICAgICAgICAweDIKKysKKysvKiBEUkJHIHN0YXR1cyB2YWx1ZXMgKi8KKysvKiBub3QgaW5pdGlh bGlzZWQgKi8KKysjZGVmaW5lIERSQkdfU1RBVFVTX1VOSU5JVElBTElTRUQgICAgICAgMAorKy8q IG9rIGFuZCByZWFkeSB0byBnZW5lcmF0ZSByYW5kb20gYml0cyAqLworKyNkZWZpbmUgRFJCR19T VEFUVVNfUkVBRFkgICAgICAgICAgICAgICAxCisrLyogcmVzZWVkIHJlcXVpcmVkICovCisrI2Rl ZmluZSBEUkJHX1NUQVRVU19SRVNFRUQgICAgICAgICAgICAgIDIKKysvKiBmYXRhbCBlcnJvciBj b25kaXRpb24gKi8KKysjZGVmaW5lIERSQkdfU1RBVFVTX0VSUk9SICAgICAgICAgICAgICAgMwor KworKy8qIEEgZGVmYXVsdCBtYXhpbXVtIGxlbmd0aDogbGFyZ2VyIHRoYW4gYW55IHJlYXNvbmFi bGUgdmFsdWUgdXNlZCBpbiBwcmF0aWNlICovCisrCisrI2RlZmluZSBEUkJHX01BWF9MRU5HVEgg ICAgICAgICAgICAgICAgIDB4N2ZmZmZmZjAKKysvKiBNYXhpbXVtIERSQkcgYmxvY2sgbGVuZ3Ro OiBhbGwgbWQgc2l6ZXMgYXJlIGJpZ2dlciB0aGFuIGNpcGhlciBibG9ja3Mgc2l6ZXMKKysgKiBz byB1c2UgbWF4IGRpZ2VzdCBsZW5ndGguCisrICovCisrI2RlZmluZSBEUkJHX01BWF9CTE9DSyAg ICAgICAgICAgICAgICAgIEVWUF9NQVhfTURfU0laRQorKworKyNkZWZpbmUgRFJCR19IRUFMVEhf SU5URVJWQUwgICAgICAgICAgICAoMSA8PCAyNCkKKysKKysvKiBEUkJHIGNvbnRleHQgc3RydWN0 dXJlICovCisrCisrc3RydWN0IGRyYmdfY3R4X3N0IHsKKysgICAgLyogRmlyc3QgdHlwZXMgY29t bW9uIHRvIGFsbCBpbXBsZW1lbnRhdGlvbnMgKi8KKysgICAgLyogRFJCRyB0eXBlOiBhIE5JRCBm b3IgdGhlIHVuZGVybHlpbmcgYWxnb3JpdGhtICovCisrICAgIGludCB0eXBlOworKyAgICAvKiBW YXJpb3VzIGV4dGVybmFsIGZsYWdzICovCisrICAgIHVuc2lnbmVkIGludCB4ZmxhZ3M7CisrICAg IC8qIFZhcmlvdXMgaW50ZXJuYWwgdXNlIG9ubHkgZmxhZ3MgKi8KKysgICAgdW5zaWduZWQgaW50 IGlmbGFnczsKKysgICAgLyogVXNlZCBmb3IgcGVyaW9kaWMgaGVhbHRoIGNoZWNrcyAqLworKyAg ICBpbnQgaGVhbHRoX2NoZWNrX2NudCwgaGVhbHRoX2NoZWNrX2ludGVydmFsOworKworKyAgICAv KiBUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIHNldHVwIGJ5IG1lY2hhbmlzbSBkcmJnX2lu aXQoKSBjYWxsICovCisrICAgIGludCBzdHJlbmd0aDsKKysgICAgc2l6ZV90IGJsb2NrbGVuZ3Ro OworKyAgICBzaXplX3QgbWF4X3JlcXVlc3Q7CisrCisrICAgIHNpemVfdCBtaW5fZW50cm9weSwg bWF4X2VudHJvcHk7CisrICAgIHNpemVfdCBtaW5fbm9uY2UsIG1heF9ub25jZTsKKysgICAgc2l6 ZV90IG1heF9wZXJzLCBtYXhfYWRpbjsKKysgICAgdW5zaWduZWQgaW50IHJlc2VlZF9jb3VudGVy OworKyAgICB1bnNpZ25lZCBpbnQgcmVzZWVkX2ludGVydmFsOworKyAgICBzaXplX3Qgc2VlZGxl bjsKKysgICAgaW50IHN0YXR1czsKKysgICAgLyogQXBwbGljYXRpb24gZGF0YTogdHlwaWNhbGx5 IHVzZWQgYnkgdGVzdCBnZXRfZW50cm9weSAqLworKyAgICB2b2lkICphcHBfZGF0YTsKKysgICAg LyogSW1wbGVtZW50YXRpb24gc3BlY2lmaWMgc3RydWN0dXJlcyAqLworKyAgICB1bmlvbiB7Cisr ICAgICAgICBEUkJHX0hBU0hfQ1RYIGhhc2g7CisrICAgICAgICBEUkJHX0hNQUNfQ1RYIGhtYWM7 CisrICAgICAgICBEUkJHX0NUUl9DVFggY3RyOworKyAgICB9IGQ7CisrICAgIC8qIEluaXRpYWxp YXNlIFBSTkcgYW5kIHNldHVwIGNhbGxiYWNrcyBiZWxvdyAqLworKyAgICBpbnQgKCppbml0KSAo RFJCR19DVFggKmN0eCwgaW50IG5pZCwgaW50IHNlY3VyaXR5LCB1bnNpZ25lZCBpbnQgZmxhZ3Mp OworKyAgICAvKiBJbnRhbnRpYXRlIFBSTkcgKi8KKysgICAgaW50ICgqaW5zdGFudGlhdGUpIChE UkJHX0NUWCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKmVudCwgc2l6ZV90IGVudGxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1 bnNpZ25lZCBjaGFyICpub25jZSwgc2l6ZV90IG5vbmNlbGVuLAorKyAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBlcnMsIHNpemVfdCBwZXJzbGVuKTsKKysgICAg LyogcmVzZWVkICovCisrICAgIGludCAoKnJlc2VlZCkgKERSQkdfQ1RYICpjdHgsCisrICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudGxlbiwKKysg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5s ZW4pOworKyAgICAvKiBnZW5lcmF0IG91dHB1dCAqLworKyAgICBpbnQgKCpnZW5lcmF0ZSkgKERS QkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBz aXplX3Qgb3V0bGVuLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KmFkaW4sIHNpemVfdCBhZGlubGVuKTsKKysgICAgLyogdW5pbnN0YW50aWF0ZSAqLworKyAgICBp bnQgKCp1bmluc3RhbnRpYXRlKSAoRFJCR19DVFggKmN0eCk7CisrCisrICAgIC8qIEVudHJvcHkg c291cmNlIGJsb2NrIGxlbmd0aCAqLworKyAgICBzaXplX3QgZW50cm9weV9ibG9ja2xlbjsKKysK KysgICAgLyogZW50cm9weSBnYXRoZXJpbmcgZnVuY3Rpb24gKi8KKysgICAgc2l6ZV90ICgqZ2V0 X2VudHJvcHkpIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91dCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBt YXhfbGVuKTsKKysgICAgLyogSW5kaWNhdGVzIHdlIGhhdmUgZmluaXNoZWQgd2l0aCBlbnRyb3B5 IGJ1ZmZlciAqLworKyAgICB2b2lkICgqY2xlYW51cF9lbnRyb3B5KSAoRFJCR19DVFggKmN0eCwg dW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb2xlbik7CisrCisrICAgIC8qIG5vbmNlIGdhdGhl cmluZyBmdW5jdGlvbiAqLworKyAgICBzaXplX3QgKCpnZXRfbm9uY2UpIChEUkJHX0NUWCAqY3R4 LCB1bnNpZ25lZCBjaGFyICoqcG91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVu dHJvcHksIHNpemVfdCBtaW5fbGVuLCBzaXplX3QgbWF4X2xlbik7CisrICAgIC8qIEluZGljYXRl cyB3ZSBoYXZlIGZpbmlzaGVkIHdpdGggbm9uY2UgYnVmZmVyICovCisrICAgIHZvaWQgKCpjbGVh bnVwX25vbmNlKSAoRFJCR19DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb2xl bik7CisrCisrICAgIC8qIENvbnRpbnVvdXMgcmFuZG9tIG51bWJlciB0ZXN0IHRlbXBvcmFyeSBh cmVhICovCisrICAgIC8qIExhc3QgYmxvY2sgKi8KKysgICAgdW5zaWduZWQgY2hhciBsYltFVlBf TUFYX01EX1NJWkVdOworKyAgICAvKiBzZXQgaWYgbGIgaXMgdmFsaWQgKi8KKysgICAgaW50IGxi X3ZhbGlkOworKworKyAgICAvKiBDYWxsYmFja3MgdXNlZCB3aGVuIGNhbGxlZCB0aHJvdWdoIFJB TkQgaW50ZXJmYWNlICovCisrICAgIC8qIEdldCBhbnkgYWRkaXRpb25hbCBpbnB1dCBmb3IgZ2Vu ZXJhdGUgKi8KKysgICAgc2l6ZV90ICgqZ2V0X2FkaW4pIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25l ZCBjaGFyICoqcG91dCk7CisrICAgIHZvaWQgKCpjbGVhbnVwX2FkaW4pIChEUkJHX0NUWCAqY3R4 LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvbGVuKTsKKysgICAgLyogQ2FsbGJhY2sgZm9y IFJBTkRfc2VlZCgpLCBSQU5EX2FkZCgpICovCisrICAgIGludCAoKnJhbmRfc2VlZF9jYikgKERS QkdfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKmJ1ZiwgaW50IG51bSk7CisrICAgIGludCAoKnJhbmRf YWRkX2NiKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2 b2lkICpidWYsIGludCBudW0sIGRvdWJsZSBlbnRyb3B5KTsKKyt9OworKworK2ludCBmaXBzX2Ry YmdfY3RyX2luaXQoRFJCR19DVFggKmRjdHgpOworK2ludCBmaXBzX2RyYmdfaGFzaF9pbml0KERS QkdfQ1RYICpkY3R4KTsKKytpbnQgZmlwc19kcmJnX2htYWNfaW5pdChEUkJHX0NUWCAqZGN0eCk7 CisraW50IGZpcHNfZHJiZ19rYXQoRFJCR19DVFggKmRjdHgsIGludCBuaWQsIHVuc2lnbmVkIGlu dCBmbGFncyk7CisraW50IGZpcHNfZHJiZ19jcHJuZ190ZXN0KERSQkdfQ1RYICpkY3R4LCBjb25z dCB1bnNpZ25lZCBjaGFyICpvdXQpOworKworK2NvbnN0IHN0cnVjdCBlbnZfbWRfc3QgKkZJUFNf Z2V0X2RpZ2VzdGJ5bmlkKGludCBuaWQpOworKworK2NvbnN0IHN0cnVjdCBldnBfY2lwaGVyX3N0 ICpGSVBTX2dldF9jaXBoZXJieW5pZChpbnQgbmlkKTsKKysKKysjZGVmaW5lIEZJUFNfZGlnZXN0 aW5pdCBFVlBfRGlnZXN0SW5pdAorKyNkZWZpbmUgRklQU19kaWdlc3R1cGRhdGUgRVZQX0RpZ2Vz dFVwZGF0ZQorKyNkZWZpbmUgRklQU19kaWdlc3RmaW5hbCBFVlBfRGlnZXN0RmluYWwKKysjZGVm aW5lIE1fRVZQX01EX3NpemUgRVZQX01EX3NpemUKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHNfcmFuZF9saWIuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBz L2ZpcHNfcmFuZF9saWIuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcmFu ZF9saWIuYy5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk5MjQ1ODIwICswMjAwCisrKysgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX2xpYi5jCTIwMTUtMDQtMjIgMTY6MDg6 NDAuMjk5MjQ1ODIwICswMjAwCitAQCAtMCwwICsxLDE4MSBAQAorKy8qID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisr ICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJl c2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0 dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoK KysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0 aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisr ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMu IEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2Yg dGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xl ZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRv b2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMg Ik9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQg dG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdy aXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBvcGVuc3NsLWNvcmVAb3Bl bnNzbC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy ZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBh cHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlz c2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25z IG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAg IGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBP cGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIFRISVMg U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5E IEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVND TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElU UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF TlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo SU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1Qg TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisr ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW RU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysg KgorKyAqLworKworKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRlIDxvcGVu c3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNz bC9maXBzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUgImVf b3MuaCIKKysKKysvKiBGSVBTIEFQSSBmb3IgUFJORyB1c2UuIFNpbWlsYXIgdG8gUkFORCBmdW5j dGlvbmFsaXR5IGJ1dCB3aXRob3V0CisrICogRU5HSU5FIGFuZCBhZGRpdGlvbmFsIGNoZWNraW5n IGZvciBub24tRklQUyByYW5kIG1ldGhvZHMuCisrICovCisrCisrc3RhdGljIGNvbnN0IFJBTkRf TUVUSE9EICpmaXBzX3JhbmRfbWV0aCA9IE5VTEw7Cisrc3RhdGljIGludCBmaXBzX2FwcHJvdmVk X3JhbmRfbWV0aCA9IDA7Cisrc3RhdGljIGludCBmaXBzX3JhbmRfYml0cyA9IDA7CisrCisrLyog QWxsb3dzIGFwcGxpY2F0aW9uIHRvIG92ZXJyaWRlIG51bWJlciBvZiBiaXRzIGFuZCB1c2VzIG5v bi1GSVBTIG1ldGhvZHMgKi8KKyt2b2lkIEZJUFNfcmFuZF9zZXRfYml0cyhpbnQgbmJpdHMpCisr eworKyAgICBmaXBzX3JhbmRfYml0cyA9IG5iaXRzOworK30KKysKKytpbnQgRklQU19yYW5kX3Nl dF9tZXRob2QoY29uc3QgUkFORF9NRVRIT0QgKm1ldGgpCisreworKyAgICBpZiAoIWZpcHNfcmFu ZF9iaXRzKSB7CisrICAgICAgICBpZiAobWV0aCA9PSBGSVBTX2RyYmdfbWV0aG9kKCkpCisrICAg ICAgICAgICAgZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPSAxOworKyAgICAgICAgZWxzZSBpZiAo bWV0aCA9PSBGSVBTX3g5MzFfbWV0aG9kKCkpCisrICAgICAgICAgICAgZmlwc19hcHByb3ZlZF9y YW5kX21ldGggPSAyOworKyAgICAgICAgZWxzZSB7CisrICAgICAgICAgICAgZmlwc19hcHByb3Zl ZF9yYW5kX21ldGggPSAwOworKyAgICAgICAgICAgIGlmIChGSVBTX21vZHVsZV9tb2RlKCkpIHsK KysgICAgICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19SQU5EX1NFVF9NRVRIT0QsIEZJ UFNfUl9OT05fRklQU19NRVRIT0QpOworKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAg ICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysgICAgZmlwc19yYW5kX21ldGggPSBtZXRo OworKyAgICByZXR1cm4gMTsKKyt9CisrCisrY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfcmFuZF9n ZXRfbWV0aG9kKHZvaWQpCisreworKyAgICByZXR1cm4gZmlwc19yYW5kX21ldGg7CisrfQorKwor K2NvbnN0IFJBTkRfTUVUSE9EICpGSVBTX3JhbmRfbWV0aG9kKHZvaWQpCisreworKyAgICByZXR1 cm4gRklQU19yYW5kX2dldF9tZXRob2QoKTsKKyt9CisrCisrdm9pZCBGSVBTX3JhbmRfcmVzZXQo dm9pZCkKKyt7CisrICAgIGlmIChmaXBzX3JhbmRfbWV0aCAmJiBmaXBzX3JhbmRfbWV0aC0+Y2xl YW51cCkKKysgICAgICAgIGZpcHNfcmFuZF9tZXRoLT5jbGVhbnVwKCk7CisrfQorKworK2ludCBG SVBTX3JhbmRfc2VlZChjb25zdCB2b2lkICpidWYsIEZJUFNfUkFORF9TSVpFX1QgbnVtKQorK3sK KysgICAgaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkp IHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9TRUVELCBGSVBTX1JfTk9OX0ZJ UFNfTUVUSE9EKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIGlmIChmaXBzX3Jh bmRfbWV0aCAmJiBmaXBzX3JhbmRfbWV0aC0+c2VlZCkKKysgICAgICAgIGZpcHNfcmFuZF9tZXRo LT5zZWVkKGJ1ZiwgbnVtKTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3ZvaWQgRklQU19yYW5k X2FkZChjb25zdCB2b2lkICpidWYsIGludCBudW0sIGRvdWJsZSBlbnRyb3B5KQorK3sKKysgICAg aWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9BREQsIEZJUFNfUl9OT05fRklQU19NRVRI T0QpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIGlmIChmaXBzX3JhbmRfbWV0aCAm JiBmaXBzX3JhbmRfbWV0aC0+YWRkKQorKyAgICAgICAgZmlwc19yYW5kX21ldGgtPmFkZChidWYs IG51bSwgZW50cm9weSk7CisrfQorKworK2ludCBGSVBTX3JhbmRfYnl0ZXModW5zaWduZWQgY2hh ciAqYnVmLCBGSVBTX1JBTkRfU0laRV9UIG51bSkKKyt7CisrICAgIGlmICghZmlwc19hcHByb3Zl ZF9yYW5kX21ldGggJiYgRklQU19tb2R1bGVfbW9kZSgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJ UFNfRl9GSVBTX1JBTkRfQllURVMsIEZJUFNfUl9OT05fRklQU19NRVRIT0QpOworKyAgICAgICAg cmV0dXJuIDA7CisrICAgIH0KKysgICAgaWYgKGZpcHNfcmFuZF9tZXRoICYmIGZpcHNfcmFuZF9t ZXRoLT5ieXRlcykKKysgICAgICAgIHJldHVybiBmaXBzX3JhbmRfbWV0aC0+Ynl0ZXMoYnVmLCBu dW0pOworKyAgICByZXR1cm4gMDsKKyt9CisrCisraW50IEZJUFNfcmFuZF9wc2V1ZG9fYnl0ZXMo dW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbnVtKQorK3sKKysgICAgaWYgKCFmaXBzX2FwcHJvdmVk X3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQ U19GX0ZJUFNfUkFORF9QU0VVRE9fQllURVMsIEZJUFNfUl9OT05fRklQU19NRVRIT0QpOworKyAg ICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgaWYgKGZpcHNfcmFuZF9tZXRoICYmIGZpcHNf cmFuZF9tZXRoLT5wc2V1ZG9yYW5kKQorKyAgICAgICAgcmV0dXJuIGZpcHNfcmFuZF9tZXRoLT5w c2V1ZG9yYW5kKGJ1ZiwgbnVtKTsKKysgICAgcmV0dXJuIC0xOworK30KKysKKytpbnQgRklQU19y YW5kX3N0YXR1cyh2b2lkKQorK3sKKysgICAgaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAm JiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUkFO RF9TVEFUVVMsIEZJUFNfUl9OT05fRklQU19NRVRIT0QpOworKyAgICAgICAgcmV0dXJuIDA7Cisr ICAgIH0KKysgICAgaWYgKGZpcHNfcmFuZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5zdGF0dXMp CisrICAgICAgICByZXR1cm4gZmlwc19yYW5kX21ldGgtPnN0YXR1cygpOworKyAgICByZXR1cm4g MDsKKyt9CisrCisrLyogUmV0dXJuIGluc3RhbnRpYXRlZCBzdHJlbmd0aCBvZiBQUk5HLiBGb3Ig RFJCRyB0aGlzIGlzIGFuIGludGVybmFsCisrICogcGFyYW1ldGVyLiBGb3IgWDkuMzEgUFJORyBp dCBpcyA4MCBiaXRzIChmcm9tIFNQODAwLTEzMSkuIEFueSBvdGhlcgorKyAqIHR5cGUgb2YgUFJO RyBpcyBub3QgYXBwcm92ZWQgYW5kIHJldHVybnMgMCBpbiBGSVBTIG1vZGUgYW5kIG1heGltdW0K KysgKiAyNTYgb3V0c2lkZSBGSVBTIG1vZGUuCisrICovCisrCisraW50IEZJUFNfcmFuZF9zdHJl bmd0aCh2b2lkKQorK3sKKysgICAgaWYgKGZpcHNfcmFuZF9iaXRzKQorKyAgICAgICAgcmV0dXJu IGZpcHNfcmFuZF9iaXRzOworKyAgICBpZiAoZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMSkK KysgICAgICAgIHJldHVybiBGSVBTX2RyYmdfZ2V0X3N0cmVuZ3RoKEZJUFNfZ2V0X2RlZmF1bHRf ZHJiZygpKTsKKysgICAgZWxzZSBpZiAoZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMikKKysg ICAgICAgIHJldHVybiA4MDsKKysgICAgZWxzZSBpZiAoZmlwc19hcHByb3ZlZF9yYW5kX21ldGgg PT0gMCkgeworKyAgICAgICAgaWYgKEZJUFNfbW9kdWxlX21vZGUoKSkKKysgICAgICAgICAgICBy ZXR1cm4gMDsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4gMjU2OworKyAgICB9 CisrICAgIHJldHVybiAwOworK30KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBz L2ZpcHNfcmFuZF9zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlw c19yYW5kX3NlbGZ0ZXN0LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3Jh bmRfc2VsZnRlc3QuYy5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk5MjQ1ODIwICswMjAwCisr Kysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX3NlbGZ0ZXN0LmMJMjAxNS0w NC0yMiAxNjowODo0MC4yOTkyNDU4MjAgKzAyMDAKK0BAIC0wLDAgKzEsMTc2IEBACisrLyogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFs bCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24s IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysg KiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11 c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4g UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj b3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgor KyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVz IG9yIHVzZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dp bmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2Fy ZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhl IE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQu IFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBu b3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNz aW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5z c2wtY29yZUBvcGVuc3NsLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkg Ik9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysg KiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRp c3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93 aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1 c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAq CisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBg QVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBP U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNU IE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS RUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRB LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVT RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAor KyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg REFNQUdFLgorKyAqCisrICovCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxv cGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9yYW5kLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUg ImZpcHNfbG9jbC5oIgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKyt0eXBlZGVmIHN0cnVj dCB7CisrICAgIHVuc2lnbmVkIGNoYXIgRFRbMTZdOworKyAgICB1bnNpZ25lZCBjaGFyIFZbMTZd OworKyAgICB1bnNpZ25lZCBjaGFyIFJbMTZdOworK30gQUVTX1BSTkdfVFY7CisrCisrLyogVGhl IGZvbGxvd2luZyB0ZXN0IHZlY3RvcnMgYXJlIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIFJHTlZT IHNwZWMgKi8KKysKKytzdGF0aWMgdW5zaWduZWQgY2hhciBhZXNfMTI4X2tleVsxNl0gPQorKyAg ICB7IDB4ZjMsIDB4YjEsIDB4NjYsIDB4NmQsIDB4MTMsIDB4NjAsIDB4NzIsIDB4NDIsCisrICAg IDB4ZWQsIDB4MDYsIDB4MWMsIDB4YWIsIDB4YjgsIDB4ZDQsIDB4NjIsIDB4MDIKKyt9OworKwor K3N0YXRpYyBBRVNfUFJOR19UViBhZXNfMTI4X3R2ID0geworKyAgICAvKiBEVCAqLworKyAgICB7 MHhlNiwgMHhiMywgMHhiZSwgMHg3OCwgMHgyYSwgMHgyMywgMHhmYSwgMHg2MiwKKysgICAgIDB4 ZDcsIDB4MWQsIDB4NGEsIDB4ZmIsIDB4YjAsIDB4ZTksIDB4MjIsIDB4Zjl9LAorKyAgICAvKiBW ICovCisrICAgIHsweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LAorKyAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH0s CisrICAgIC8qIFIgKi8KKysgICAgezB4NTksIDB4NTMsIDB4MWUsIDB4ZDEsIDB4M2IsIDB4YjAs IDB4YzAsIDB4NTUsCisrICAgICAweDg0LCAweDc5LCAweDY2LCAweDg1LCAweGMxLCAweDJmLCAw eDc2LCAweDQxfQorK307CisrCisrc3RhdGljIHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9rZXlbMjRd ID0KKysgICAgeyAweDE1LCAweGQ4LCAweDc4LCAweDBkLCAweDYyLCAweGQzLCAweDI1LCAweDZl LAorKyAgICAweDQ0LCAweDY0LCAweDEwLCAweDEzLCAweDYwLCAweDJiLCAweGE5LCAweGJjLAor KyAgICAweDRhLCAweGZiLCAweGNhLCAweGViLCAweDRjLCAweDhiLCAweDk5LCAweDNiCisrfTsK KysKKytzdGF0aWMgQUVTX1BSTkdfVFYgYWVzXzE5Ml90diA9IHsKKysgICAgLyogRFQgKi8KKysg ICAgezB4M2YsIDB4ZDgsIDB4ZmYsIDB4ZTgsIDB4ODAsIDB4NjksIDB4OGIsIDB4YzEsCisrICAg ICAweGJmLCAweDk5LCAweDdkLCAweGE0LCAweDI0LCAweDc4LCAweGYzLCAweDRifSwKKysgICAg LyogViAqLworKyAgICB7MHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwKKysgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDB9LAorKyAgICAvKiBSICovCisrICAgIHsweDE3LCAweDA3LCAweGQ1LCAweDI4LCAweDE5LCAw eDc5LCAweDFlLCAweGVmLAorKyAgICAgMHhhNSwgMHgwYywgMHhiZiwgMHgyNSwgMHhlNSwgMHg1 NiwgMHhiNCwgMHg5M30KKyt9OworKworK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGFlc18yNTZfa2V5 WzMyXSA9CisrICAgIHsgMHg2ZCwgMHgxNCwgMHgwNiwgMHg2YywgMHhiNiwgMHhkOCwgMHgyMSwg MHgyZCwKKysgICAgMHg4MiwgMHg4ZCwgMHhmYSwgMHhmMiwgMHg3YSwgMHgwMywgMHhiNywgMHg5 ZiwKKysgICAgMHgwYywgMHhjNywgMHgzZSwgMHhjZCwgMHg3NiwgMHhlYiwgMHhlZSwgMHhiNSwK KysgICAgMHgyMSwgMHgwNSwgMHg4YywgMHg0ZiwgMHgzMSwgMHg3YSwgMHg4MCwgMHhiYgorK307 CisrCisrc3RhdGljIEFFU19QUk5HX1RWIGFlc18yNTZfdHYgPSB7CisrICAgIC8qIERUICovCisr ICAgIHsweGRhLCAweDNhLCAweDQxLCAweGVjLCAweDFkLCAweGEzLCAweGIwLCAweGQ1LAorKyAg ICAgMHhmMiwgMHhhOSwgMHg0ZSwgMHgzNCwgMHg3NCwgMHg4ZSwgMHg5ZSwgMHg4OH0sCisrICAg IC8qIFYgKi8KKysgICAgezB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsCisrICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwfSwKKysgICAgLyogUiAqLworKyAgICB7MHgzNSwgMHhjNywgMHhlZiwgMHhhNywgMHg3OCwg MHg0ZCwgMHgyOSwgMHhiYywKKysgICAgIDB4ODIsIDB4NzksIDB4OTksIDB4ZmIsIDB4ZDAsIDB4 YjMsIDB4M2IsIDB4NzJ9CisrfTsKKysKKyt2b2lkIEZJUFNfY29ycnVwdF9ybmcoKQorK3sKKysg ICAgYWVzXzE5Ml90di5WWzBdKys7CisrfQorKworKyMgZGVmaW5lIGZpcHNfeDkzMV90ZXN0KGtl eSwgdHYpIFwKKysgICAgICAgIGRvX3g5MzFfdGVzdChrZXksIHNpemVvZiBrZXksICZ0dikKKysK KytzdGF0aWMgaW50IGRvX3g5MzFfdGVzdCh1bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4s IEFFU19QUk5HX1RWICogdHYpCisreworKyAgICB1bnNpZ25lZCBjaGFyIFJbMTZdLCBWWzE2XTsK KysgICAgaW50IHJ2ID0gMTsKKysgICAgbWVtY3B5KFYsIHR2LT5WLCBzaXplb2YoVikpOworKyAg ICBpZiAoIUZJUFNfeDkzMV9zZXRfa2V5KGtleSwga2V5bGVuKSkKKysgICAgICAgIHJldHVybiAw OworKyAgICBpZiAoIWZpcHNfcG9zdF9zdGFydGVkKEZJUFNfVEVTVF9YOTMxLCBrZXlsZW4sIE5V TEwpKQorKyAgICAgICAgcmV0dXJuIDE7CisrICAgIGlmICghZmlwc19wb3N0X2NvcnJ1cHQoRklQ U19URVNUX1g5MzEsIGtleWxlbiwgTlVMTCkpCisrICAgICAgICBWWzBdKys7CisrICAgIEZJUFNf eDkzMV9zZWVkKFYsIDE2KTsKKysgICAgRklQU194OTMxX3NldF9kdCh0di0+RFQpOworKyAgICBG SVBTX3g5MzFfYnl0ZXMoUiwgMTYpOworKyAgICBpZiAobWVtY21wKFIsIHR2LT5SLCAxNikpIHsK KysgICAgICAgIGZpcHNfcG9zdF9mYWlsZWQoRklQU19URVNUX1g5MzEsIGtleWxlbiwgTlVMTCk7 CisrICAgICAgICBydiA9IDA7CisrICAgIH0gZWxzZSBpZiAoIWZpcHNfcG9zdF9zdWNjZXNzKEZJ UFNfVEVTVF9YOTMxLCBrZXlsZW4sIE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIHJl dHVybiBydjsKKyt9CisrCisraW50IEZJUFNfc2VsZnRlc3RfeDkzMSgpCisreworKyAgICBpbnQg cnYgPSAxOworKyAgICBGSVBTX3g5MzFfcmVzZXQoKTsKKysgICAgaWYgKCFGSVBTX3g5MzFfdGVz dF9tb2RlKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfWDkzMSwg RklQU19SX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAg ICBpZiAoIWZpcHNfeDkzMV90ZXN0KGFlc18xMjhfa2V5LCBhZXNfMTI4X3R2KSkKKysgICAgICAg IHJ2ID0gMDsKKysgICAgaWYgKCFmaXBzX3g5MzFfdGVzdChhZXNfMTkyX2tleSwgYWVzXzE5Ml90 dikpCisrICAgICAgICBydiA9IDA7CisrICAgIGlmICghZmlwc194OTMxX3Rlc3QoYWVzXzI1Nl9r ZXksIGFlc18yNTZfdHYpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBGSVBTX3g5MzFfcmVzZXQo KTsKKysgICAgaWYgKCFydikKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1Rf WDkzMSwgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgIHJldHVybiBydjsKKyt9CisrCisr aW50IEZJUFNfc2VsZnRlc3Rfcm5nKHZvaWQpCisreworKyAgICByZXR1cm4gRklQU19zZWxmdGVz dF94OTMxKCk7CisrfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2ZpcHMvZmlwc19yYW5kdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlw c19yYW5kdGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yYW5kdGVz dC5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTkyNDU4MjAgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmR0ZXN0LmMJMjAxNS0wNC0yMiAxNjowODo0MC4y OTkyNDU4MjAgKzAyMDAKK0BAIC0wLDAgKzEsMjQ3IEBACisrLyogQ29weXJpZ2h0IChDKSAxOTk1 LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pCisrICogQWxsIHJpZ2h0cyByZXNl cnZlZC4KKysgKgorKyAqIFRoaXMgcGFja2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3Jp dHRlbgorKyAqIGJ5IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKS4KKysgKiBUaGUgaW1w bGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gc28gYXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBT U0wuCisrICogCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5v bi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFzCisrICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25z IGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXBwbHkgdG8g YWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwK KysgKiBsaGFzaCwgREVTLCBldGMuLCBjb2RlOyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUg U1NMIGRvY3VtZW50YXRpb24KKysgKiBpbmNsdWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlz IGNvdmVyZWQgYnkgdGhlIHNhbWUgY29weXJpZ2h0IHRlcm1zCisrICogZXhjZXB0IHRoYXQgdGhl IGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuCisrICogCisrICogQ29w eXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3VuZydzLCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5v dGljZXMgaW4KKysgKiB0aGUgY29kZSBhcmUgbm90IHRvIGJlIHJlbW92ZWQuCisrICogSWYgdGhp cyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9kdWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZl biBhdHRyaWJ1dGlvbgorKyAqIGFzIHRoZSBhdXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJy YXJ5IHVzZWQuCisrICogVGhpcyBjYW4gYmUgaW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3Nh Z2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCisrICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9y IHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhlIHBhY2thZ2UuCisrICogCisrICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv d2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqIDMu IEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2Yg dGhpcyBzb2Z0d2FyZQorKyAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xl ZGdlbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29m dHdhcmUgd3JpdHRlbiBieQorKyAqICAgICBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSki CisrICogICAgVGhlIHdvcmQgJ2NyeXB0b2dyYXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUg cm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5CisrICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0 b2dyYXBoaWMgcmVsYXRlZCA6LSkuCisrICogNC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mg c3BlY2lmaWMgY29kZSAob3IgYSBkZXJpdmF0aXZlIHRoZXJlb2YpIGZyb20gCisrICogICAgdGhl IGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlvbiBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFj a25vd2xlZGdlbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdy aXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pIgorKyAqIAorKyAqIFRISVMg U09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECisrICogQU5Z IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF RCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKysgKiBBUkUgRElTQ0xBSU1FRC4gIElO IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorKyAq IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMCisrICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKysgKiBPUiBTRVJWSUNFUzsg TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikK KysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKysgKiBPVVQgT0Yg VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM SVRZIE9GCisrICogU1VDSCBEQU1BR0UuCisrICogCisrICogVGhlIGxpY2VuY2UgYW5kIGRpc3Ry aWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1YmxpY2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKKysg KiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBjYW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBj b2RlIGNhbm5vdCBzaW1wbHkgYmUKKysgKiBjb3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRp c3RyaWJ1dGlvbiBsaWNlbmNlCisrICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNl Ll0KKysgKi8KKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3Bl blNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0 aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp bmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAg ICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1l bnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRp c3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0 IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICog ICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9y Zy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNT TCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3Rl IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlv ciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250 YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wi CisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQg cHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4K KysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3Qg cmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9q ZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9w ZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBP cGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElF RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1Q TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI RSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICog TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikK KysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9T U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RkaW8u aD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRl IDxjdHlwZS5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNz bC9maXBzX3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9ibi5oPgorKworKyNpbmNsdWRlICJlX29zLmgiCisrCisrI2lmbmRlZiBPUEVOU1NMX0ZJ UFMKKytpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorK3sKKysgICAgcHJpbnRmKCJO byBGSVBTIFJBTkQgc3VwcG9ydFxuIik7CisrICAgIHJldHVybiAoMCk7CisrfQorKworKyNlbHNl CisrCisrIyBpbmNsdWRlICJmaXBzX3V0bC5oIgorKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+ CisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKyAgICB1bnNpZ25lZCBjaGFyIERUWzE2XTsKKysgICAg dW5zaWduZWQgY2hhciBWWzE2XTsKKysgICAgdW5zaWduZWQgY2hhciBSWzE2XTsKKyt9IEFFU19Q Uk5HX01DVDsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X21jdF9rZXlb MTZdID0KKysgICAgeyAweDlmLCAweDViLCAweDUxLCAweDIwLCAweDBiLCAweGYzLCAweDM0LCAw eGI1LAorKyAgICAweGQ4LCAweDJiLCAweGU4LCAweGMzLCAweDcyLCAweDU1LCAweGM4LCAweDQ4 CisrfTsKKysKKytzdGF0aWMgY29uc3QgQUVTX1BSTkdfTUNUIGFlc18xMjhfbWN0X3R2ID0gewor KyAgICAvKiBEVCAqLworKyAgICB7MHg2MywgMHg3NiwgMHhiYiwgMHhlNSwgMHgyOSwgMHgwMiwg MHhiYSwgMHgzYiwKKysgICAgIDB4NjcsIDB4YzksIDB4MjUsIDB4ZmEsIDB4NzAsIDB4MWYsIDB4 MTEsIDB4YWN9LAorKyAgICAvKiBWICovCisrICAgIHsweDU3LCAweDJjLCAweDhlLCAweDc2LCAw eDg3LCAweDI2LCAweDQ3LCAweDk3LAorKyAgICAgMHg3ZSwgMHg3NCwgMHhmYiwgMHhkZCwgMHhj NCwgMHg5NSwgMHgwMSwgMHhkMX0sCisrICAgIC8qIFIgKi8KKysgICAgezB4NDgsIDB4ZTksIDB4 YmQsIDB4MGQsIDB4MDYsIDB4ZWUsIDB4MTgsIDB4ZmIsCisrICAgICAweGU0LCAweDU3LCAweDkw LCAweGQ1LCAweGMzLCAweGZjLCAweDliLCAweDczfQorK307CisrCisrc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzE5Ml9tY3Rfa2V5WzI0XSA9CisrICAgIHsgMHhiNywgMHg2YywgMHgz NCwgMHhkMSwgMHgwOSwgMHg2NywgMHhhYiwgMHg3MywKKysgICAgMHg0ZCwgMHg1YSwgMHhkNSwg MHgzNCwgMHg5OCwgMHgxNiwgMHgwYiwgMHg5MSwKKysgICAgMHhiYywgMHgzNSwgMHg1MSwgMHgx NiwgMHg2YiwgMHhhZSwgMHg5MywgMHg4YQorK307CisrCisrc3RhdGljIGNvbnN0IEFFU19QUk5H X01DVCBhZXNfMTkyX21jdF90diA9IHsKKysgICAgLyogRFQgKi8KKysgICAgezB4ODQsIDB4Y2Us IDB4MjIsIDB4N2QsIDB4OTEsIDB4NWEsIDB4YTMsIDB4YzksCisrICAgICAweDg0LCAweDNjLCAw eDBhLCAweGIzLCAweGE5LCAweDYzLCAweDE1LCAweDUyfSwKKysgICAgLyogViAqLworKyAgICB7 MHhiNiwgMHhhZiwgMHhlNiwgMHg4ZiwgMHg5OSwgMHg5ZSwgMHg5MCwgMHg2NCwKKysgICAgIDB4 ZGQsIDB4YzcsIDB4N2EsIDB4YzEsIDB4YmIsIDB4OTAsIDB4M2EsIDB4NmR9LAorKyAgICAvKiBS ICovCisrICAgIHsweGZjLCAweDg1LCAweDYwLCAweDlhLCAweDI5LCAweDZmLCAweGVmLCAweDIx LAorKyAgICAgMHhkZCwgMHg4NiwgMHgyMCwgMHgzMiwgMHg4YSwgMHgyOSwgMHg2ZiwgMHg0N30K Kyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbWN0X2tleVszMl0g PQorKyAgICB7IDB4OWIsIDB4MDUsIDB4YzgsIDB4NjgsIDB4ZmYsIDB4NDcsIDB4ZjgsIDB4M2Es CisrICAgIDB4YTYsIDB4M2EsIDB4YTgsIDB4Y2IsIDB4NGUsIDB4NzEsIDB4YjIsIDB4ZTAsCisr ICAgIDB4YjgsIDB4N2UsIDB4ZjEsIDB4MzcsIDB4YjYsIDB4YjQsIDB4ZjYsIDB4NmQsCisrICAg IDB4ODYsIDB4MzIsIDB4ZmMsIDB4MWYsIDB4NWUsIDB4MWQsIDB4MWUsIDB4NTAKKyt9OworKwor K3N0YXRpYyBjb25zdCBBRVNfUFJOR19NQ1QgYWVzXzI1Nl9tY3RfdHYgPSB7CisrICAgIC8qIERU ICovCisrICAgIHsweDMxLCAweDZlLCAweDM1LCAweDlhLCAweGIxLCAweDQ0LCAweGYwLCAweGVl LAorKyAgICAgMHg2MiwgMHg2ZCwgMHgwNCwgMHg0NiwgMHhlMCwgMHhhMywgMHg5MiwgMHg0Y30s CisrICAgIC8qIFYgKi8KKysgICAgezB4NGYsIDB4Y2QsIDB4YzEsIDB4ODcsIDB4ODIsIDB4MWYs IDB4NGQsIDB4YTEsCisrICAgICAweDNlLCAweDBlLCAweDU2LCAweDQ0LCAweDU5LCAweGU4LCAw eDgzLCAweGNhfSwKKysgICAgLyogUiAqLworKyAgICB7MHhjOCwgMHg4NywgMHhjMiwgMHg2MSwg MHg1YiwgMHhkMCwgMHhiOSwgMHhlMSwKKysgICAgIDB4ZTcsIDB4ZjMsIDB4OGIsIDB4ZDcsIDB4 NWIsIDB4ZDUsIDB4ZjEsIDB4OGR9CisrfTsKKysKKytzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IHVu c2lnbmVkIGNoYXIgKmIsIGludCBuKQorK3sKKysgICAgd2hpbGUgKG4tLSA+IDApIHsKKysgICAg ICAgIHByaW50ZigiICUwMngiLCAqYisrKTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBj b21wYXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlc3VsdCwKKysgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmV4cGVjdGVkLCBpbnQgbikKKyt7CisrICAgIGludCBpOwor KworKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQorKyAgICAgICAgaWYgKHJlc3VsdFtpXSAh PSBleHBlY3RlZFtpXSkgeworKyAgICAgICAgICAgIHB1dHMoIlJhbmRvbSB0ZXN0IGZhaWxlZCwg Z290OiIpOworKyAgICAgICAgICAgIGR1bXAocmVzdWx0LCBuKTsKKysgICAgICAgICAgICBwdXRz KCJcbiAgICAgICAgICAgICAgIGV4cGVjdGVkOiIpOworKyAgICAgICAgICAgIGR1bXAoZXhwZWN0 ZWQsIG4pOworKyAgICAgICAgICAgIHB1dGNoYXIoJ1xuJyk7CisrICAgICAgICAgICAgRVhJVCgx KTsKKysgICAgICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQgcnVuX3Rlc3QoY29uc3QgdW5zaWdu ZWQgY2hhciAqa2V5LCBpbnQga2V5bGVuLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFF U19QUk5HX01DVCAqIHR2KQorK3sKKysgICAgdW5zaWduZWQgY2hhciBidWZbMTZdLCBkdFsxNl07 CisrICAgIGludCBpLCBqOworKyAgICBGSVBTX3g5MzFfcmVzZXQoKTsKKysgICAgRklQU194OTMx X3Rlc3RfbW9kZSgpOworKyAgICBGSVBTX3g5MzFfc2V0X2tleShrZXksIGtleWxlbik7CisrICAg IEZJUFNfeDkzMV9zZWVkKHR2LT5WLCAxNik7CisrICAgIG1lbWNweShkdCwgdHYtPkRULCAxNik7 CisrICAgIGZvciAoaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisrICAgICAgICBGSVBTX3g5MzFf c2V0X2R0KGR0KTsKKysgICAgICAgIEZJUFNfeDkzMV9ieXRlcyhidWYsIDE2KTsKKysgICAgICAg IC8qIEluY3JlbWVudCBEVCAqLworKyAgICAgICAgZm9yIChqID0gMTU7IGogPj0gMDsgai0tKSB7 CisrICAgICAgICAgICAgZHRbal0rKzsKKysgICAgICAgICAgICBpZiAoZHRbal0pCisrICAgICAg ICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGNvbXBhcmUoYnVm LCB0di0+UiwgMTYpOworK30KKysKKytpbnQgbWFpbigpCisreworKyAgICBydW5fdGVzdChhZXNf MTI4X21jdF9rZXksIDE2LCAmYWVzXzEyOF9tY3RfdHYpOworKyAgICBwcmludGYoIkZJUFMgUFJO RyB0ZXN0IDEgZG9uZVxuIik7CisrICAgIHJ1bl90ZXN0KGFlc18xOTJfbWN0X2tleSwgMjQsICZh ZXNfMTkyX21jdF90dik7CisrICAgIHByaW50ZigiRklQUyBQUk5HIHRlc3QgMiBkb25lXG4iKTsK KysgICAgcnVuX3Rlc3QoYWVzXzI1Nl9tY3Rfa2V5LCAzMiwgJmFlc18yNTZfbWN0X3R2KTsKKysg ICAgcHJpbnRmKCJGSVBTIFBSTkcgdGVzdCAzIGRvbmVcbiIpOworKyAgICByZXR1cm4gMDsKKyt9 CisrCisrI2VuZGlmCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3Jz YV9zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yc2Ffc2Vs ZnRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcnNhX3NlbGZ0ZXN0 LmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5OTI0NTgyMCArMDIwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcnNhX3NlbGZ0ZXN0LmMJMjAxNS0wNC0yMiAxNjowODo0 MC4yOTkyNDU4MjAgKzAyMDAKK0BAIC0wLDAgKzEsNDQ0IEBACisrLyogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysg KiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBt ZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3Ry aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo dAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysg KiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNl IG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tu b3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5h bWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1 c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZv ciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3Jl QG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNT TCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBl cm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0 aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysg KiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3 YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0 aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycn IEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUg RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysg KiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO Q0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu CisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wv ZXJyLmg+CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+ CisrI2VuZGlmCisrI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wv ZXZwLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9vcGVu c3NsY29uZi5oPgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKytzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBuW10gPQorKyAgICAiXHgwMFx4QkJceEY4XHgyRlx4MDlceDA2XHg4Mlx4Q0Vc eDlDXHgyM1x4MzhceEFDXHgyQlx4OURceEE4XHg3MSIKKysgICAgIlx4RjdceDM2XHg4RFx4MDdc eEVFXHhENFx4MTBceDQzXHhBNFx4NDBceEQ2XHhCNlx4RjBceDc0XHg1NFx4RjUiCisrICAgICJc eDFGXHhCOFx4REZceEJBXHhBRlx4MDNceDVDXHgwMlx4QUJceDYxXHhFQVx4NDhceENFXHhFQlx4 NkZceENEIgorKyAgICAiXHg0OFx4NzZceEVEXHg1Mlx4MERceDYwXHhFMVx4RUNceDQ2XHgxOVx4 NzFceDlEXHg4QVx4NUJceDhCXHg4MCIKKysgICAgIlx4N0ZceEFGXHhCOFx4RTBceEEzXHhERlx4 QzdceDM3XHg3Mlx4M0VceEU2XHhCNFx4QjdceEQ5XHgzQVx4MjUiCisrICAgICJceDg0XHhFRVx4 NkFceDY0XHg5RFx4MDZceDA5XHg1M1x4NzRceDg4XHgzNFx4QjJceDQ1XHg0NVx4OThceDM5Igor KyAgICAiXHg0RVx4RTBceEFBXHhCMVx4MkRceDdCXHg2MVx4QTVceDFGXHg1Mlx4N0FceDlBXHg0 MVx4RjZceEMxXHg2OCIKKysgICAgIlx4N0ZceEUyXHg1M1x4NzJceDk4XHhDQVx4MkFceDhGXHg1 OVx4NDZceEY4XHhFNVx4RkRceDA5XHgxRFx4QkQiICJceENCIjsKKysKKytzdGF0aWMgaW50IGNv cnJ1cHRfcnNhOworKworK3N0YXRpYyBpbnQgc2V0cnNha2V5KFJTQSAqa2V5KQorK3sKKysgICAg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZVtdID0gIlx4MTEiOworKworKyAgICBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBkW10gPQorKyAgICAgICAgIlx4MDBceEE1XHhEQVx4RkNceDUz XHg0MVx4RkFceEYyXHg4OVx4QzRceEI5XHg4OFx4REJceDMwXHhDMVx4Q0QiCisrICAgICAgICAi XHhGOFx4M0ZceDMxXHgyNVx4MUVceDA2XHg2OFx4QjRceDI3XHg4NFx4ODFceDM4XHgwMVx4NTdc eDk2XHg0MSIKKysgICAgICAgICJceEIyXHg5NFx4MTBceEIzXHhDN1x4OTlceDhEXHg2Qlx4QzRc eDY1XHg3NFx4NUVceDVDXHgzOVx4MjZceDY5IgorKyAgICAgICAgIlx4RDZceDg3XHgwRFx4QTJc eEMwXHg4Mlx4QTlceDM5XHhFM1x4N0ZceERDXHhCOFx4MkVceEM5XHgzRVx4REEiCisrICAgICAg ICAiXHhDOVx4N0ZceEYzXHhBRFx4NTlceDUwXHhBQ1x4Q0ZceEJDXHgxMVx4MUNceDc2XHhGMVx4 QTlceDUyXHg5NCIKKysgICAgICAgICJceDQ0XHhFNVx4NkFceEFGXHg2OFx4QzVceDZDXHgwOVx4 MkNceEQzXHg4RFx4QzNceEJFXHhGNVx4RDJceDBBIgorKyAgICAgICAgIlx4OTNceDk5XHgyNlx4 RURceDRGXHg3NFx4QTFceDNFXHhERFx4RkJceEUxXHhBMVx4Q0VceENDXHg0OFx4OTQiCisrICAg ICAgICAiXHhBRlx4OTRceDI4XHhDMlx4QjdceEI4XHg4OFx4M0ZceEU0XHg0Nlx4M0FceDRCXHhD OFx4NUJceDFDXHhCMyIKKysgICAgICAgICJceEMxIjsKKysKKysgICAgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgcFtdID0KKysgICAgICAgICJceDAwXHhFRVx4Q0ZceEFFXHg4MVx4QjFceEI5 XHhCM1x4QzlceDA4XHg4MVx4MEJceDEwXHhBMVx4QjVceDYwIgorKyAgICAgICAgIlx4MDFceDk5 XHhFQlx4OUZceDQ0XHhBRVx4RjRceEZEXHhBNFx4OTNceEI4XHgxQVx4OUVceDNEXHg4NFx4RjYi CisrICAgICAgICAiXHgzMlx4MTJceDRFXHhGMFx4MjNceDZFXHg1RFx4MUVceDNCXHg3RVx4Mjhc eEZBXHhFN1x4QUFceDA0XHgwQSIKKysgICAgICAgICJceDJEXHg1Qlx4MjVceDIxXHg3Nlx4NDVc eDlEXHgxRlx4MzlceDc1XHg0MVx4QkFceDJBXHg1OFx4RkJceDY1IgorKyAgICAgICAgIlx4OTki OworKworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBxW10gPQorKyAgICAgICAgIlx4 MDBceEM5XHg3Rlx4QjFceEYwXHgyN1x4RjRceDUzXHhGNlx4MzRceDEyXHgzM1x4RUFceEFBXHhE MVx4RDkiCisrICAgICAgICAiXHgzNVx4M0ZceDZDXHg0Mlx4RDBceDg4XHg2Nlx4QjFceEQwXHg1 QVx4MEZceDIwXHgzNVx4MDJceDhCXHg5RCIKKysgICAgICAgICJceDg2XHg5OFx4NDBceEI0XHgx Nlx4NjZceEI0XHgyRVx4OTJceEVBXHgwRFx4QTNceEI0XHgzMlx4MDRceEI1IgorKyAgICAgICAg Ilx4Q0ZceENFXHgzM1x4NTJceDUyXHg0RFx4MDRceDE2XHhBNVx4QTRceDQxXHhFN1x4MDBceEFG XHg0Nlx4MTUiCisrICAgICAgICAiXHgwMyI7CisrCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGRtcDFbXSA9CisrICAgICAgICAiXHg1NFx4NDlceDRDXHhBNlx4M0VceEJBXHgwM1x4 MzdceEU0XHhFMlx4NDBceDIzXHhGQ1x4RDZceDlBXHg1QSIKKysgICAgICAgICJceEVCXHgwN1x4 RERceERDXHgwMVx4ODNceEE0XHhEMFx4QUNceDlCXHg1NFx4QjBceDUxXHhGMlx4QjFceDNFIgor KyAgICAgICAgIlx4RDlceDQ5XHgwOVx4NzVceEVBXHhCN1x4NzRceDE0XHhGRlx4NTlceEMxXHhG N1x4NjlceDJFXHg5QVx4MkUiCisrICAgICAgICAiXHgyMFx4MkJceDM4XHhGQ1x4OTFceDBBXHg0 N1x4NDFceDc0XHhBRFx4QzlceDNDXHgxRlx4NjdceEM5XHg4MSI7CisrCisrICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGRtcTFbXSA9CisrICAgICAgICAiXHg0N1x4MUVceDAyXHg5MFx4 RkZceDBBXHhGMFx4NzVceDAzXHg1MVx4QjdceEY4XHg3OFx4ODZceDRDXHhBOSIKKysgICAgICAg ICJceDYxXHhBRFx4QkRceDNBXHg4QVx4N0VceDk5XHgxQ1x4NUNceDA1XHg1Nlx4QTlceDRDXHgz MVx4NDZceEE3IgorKyAgICAgICAgIlx4RjlceDgwXHgzRlx4OEZceDZGXHg4QVx4RTNceDQyXHhF OVx4MzFceEZEXHg4QVx4RTRceDdBXHgyMlx4MEQiCisrICAgICAgICAiXHgxQlx4OTlceEE0XHg5 NVx4ODRceDk4XHgwN1x4RkVceDM5XHhGOVx4MjRceDVBXHg5OFx4MzZceERBXHgzRCI7CisrCisr ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGlxbXBbXSA9CisrICAgICAgICAiXHgwMFx4 QjBceDZDXHg0Rlx4REFceEJCXHg2M1x4MDFceDE5XHg4RFx4MjZceDVCXHhEQlx4QUVceDk0XHgy MyIKKysgICAgICAgICJceEIzXHg4MFx4RjJceDcxXHhGN1x4MzRceDUzXHg4OFx4NTBceDkzXHgw N1x4N0ZceENEXHgzOVx4RTJceDExIgorKyAgICAgICAgIlx4OUZceEM5XHg4Nlx4MzJceDE1XHg0 Rlx4NThceDgzXHhCMVx4NjdceEE5XHg2N1x4QkZceDQwXHgyQlx4NEUiCisrICAgICAgICAiXHg5 RVx4MkVceDBGXHg5Nlx4NTZceEU2XHg5OFx4RUFceDM2XHg2Nlx4RURceEZCXHgyNVx4NzlceDgw XHgzOSIKKysgICAgICAgICJceEY3IjsKKysKKysgICAga2V5LT5uID0gQk5fYmluMmJuKG4sIHNp emVvZihuKSAtIDEsIGtleS0+bik7CisrICAgIGlmIChjb3JydXB0X3JzYSkKKysgICAgICAgIEJO X3NldF9iaXQoa2V5LT5uLCAxMDI0KTsKKysgICAga2V5LT5lID0gQk5fYmluMmJuKGUsIHNpemVv ZihlKSAtIDEsIGtleS0+ZSk7CisrICAgIGtleS0+ZCA9IEJOX2JpbjJibihkLCBzaXplb2YoZCkg LSAxLCBrZXktPmQpOworKyAgICBrZXktPnAgPSBCTl9iaW4yYm4ocCwgc2l6ZW9mKHApIC0gMSwg a2V5LT5wKTsKKysgICAga2V5LT5xID0gQk5fYmluMmJuKHEsIHNpemVvZihxKSAtIDEsIGtleS0+ cSk7CisrICAgIGtleS0+ZG1wMSA9IEJOX2JpbjJibihkbXAxLCBzaXplb2YoZG1wMSkgLSAxLCBr ZXktPmRtcDEpOworKyAgICBrZXktPmRtcTEgPSBCTl9iaW4yYm4oZG1xMSwgc2l6ZW9mKGRtcTEp IC0gMSwga2V5LT5kbXExKTsKKysgICAga2V5LT5pcW1wID0gQk5fYmluMmJuKGlxbXAsIHNpemVv ZihpcW1wKSAtIDEsIGtleS0+aXFtcCk7CisrICAgIHJldHVybiAxOworK30KKysKKyt2b2lkIEZJ UFNfY29ycnVwdF9yc2EoKQorK3sKKysgICAgY29ycnVwdF9yc2EgPSAxOworK30KKysKKysvKiBL bm93biBBbnN3ZXIgVGVzdCAoS0FUKSBkYXRhIGZvciB0aGUgYWJvdmUgUlNBIHByaXZhdGUga2V5 IHNpZ25pbmcKKysgKiBrYXRfdGJzLgorKyAqLworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGthdF90YnNbXSA9CisrICAgICJPcGVuU1NMIEZJUFMgMTQwLTIgUHVibGljIEtleSBSU0Eg S0FUIjsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1BTU19TSEExW10g PSB7CisrICAgIDB4MkQsIDB4QUYsIDB4NkUsIDB4QzIsIDB4OTgsIDB4RkIsIDB4OEEsIDB4QTEs IDB4QjksIDB4NDYsIDB4REEsIDB4MEYsCisrICAgIDB4MDEsIDB4MUUsIDB4MzcsIDB4OTMsIDB4 QzIsIDB4NTUsIDB4MjcsIDB4RTQsIDB4MUQsIDB4RDIsIDB4OTAsIDB4QkIsCisrICAgIDB4RjQs IDB4QkYsIDB4NEEsIDB4NzQsIDB4MzksIDB4NTEsIDB4QkIsIDB4RTgsIDB4MEMsIDB4QjcsIDB4 RjgsIDB4RDMsCisrICAgIDB4RDEsIDB4REYsIDB4RTcsIDB4QkUsIDB4ODAsIDB4MDUsIDB4QzMs IDB4QjUsIDB4QzcsIDB4ODMsIDB4RDUsIDB4NEMsCisrICAgIDB4N0YsIDB4NDksIDB4RkIsIDB4 M0YsIDB4MjksIDB4OUIsIDB4RTEsIDB4MTIsIDB4NTEsIDB4NjAsIDB4RDAsIDB4QTcsCisrICAg IDB4MEQsIDB4QTksIDB4MjgsIDB4NTYsIDB4NzMsIDB4RDksIDB4MDcsIDB4RTMsIDB4NUUsIDB4 M0YsIDB4OUIsIDB4RjUsCisrICAgIDB4QjYsIDB4RjMsIDB4RjIsIDB4NUUsIDB4NzQsIDB4Qzks IDB4ODMsIDB4ODEsIDB4NDcsIDB4RjAsIDB4QzUsIDB4NDUsCisrICAgIDB4MEEsIDB4RTksIDB4 OEUsIDB4MzgsIDB4RDcsIDB4MTgsIDB4QzYsIDB4MkEsIDB4MEYsIDB4RjgsIDB4QjcsIDB4MzEs CisrICAgIDB4RDYsIDB4NTUsIDB4RTQsIDB4NjYsIDB4NzgsIDB4ODEsIDB4RDQsIDB4RTYsIDB4 REIsIDB4OUYsIDB4QkEsIDB4RTgsCisrICAgIDB4MjMsIDB4QjUsIDB4N0YsIDB4REMsIDB4MDgs IDB4RUEsIDB4RDUsIDB4MjYsIDB4MUUsIDB4MjAsIDB4MjUsIDB4ODQsCisrICAgIDB4MjYsIDB4 QzYsIDB4NzksIDB4QzksIDB4OUIsIDB4M0QsIDB4N0UsIDB4QTkKKyt9OworKworK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTIyNFtdID0geworKyAgICAweDM5LCAw eDRBLCAweDZBLCAweDIwLCAweEJDLCAweEU5LCAweDMzLCAweEVELCAweEVGLCAweEM1LCAweDU4 LCAweEE3LAorKyAgICAweEZFLCAweDgxLCAweEM0LCAweDM2LCAweDUwLCAweDlBLCAweDJDLCAw eDgyLCAweDk4LCAweDA4LCAweDk1LCAweEZBLAorKyAgICAweEIxLCAweDlFLCAweEQyLCAweDU1 LCAweDYxLCAweDg3LCAweDIxLCAweDU5LCAweDg3LCAweDdCLCAweDFGLCAweDU3LAorKyAgICAw eDMwLCAweDlELCAweDBELCAweDRBLCAweDA2LCAweEVCLCAweDUyLCAweDM3LCAweDU1LCAweDU0 LCAweDFDLCAweDg5LAorKyAgICAweDgzLCAweDc1LCAweDU5LCAweDY1LCAweDY0LCAweDkwLCAw eDJFLCAweDE2LCAweENDLCAweDg2LCAweDA1LCAweEVFLAorKyAgICAweEIxLCAweEU2LCAweDdC LCAweEJBLCAweDE2LCAweDc1LCAweDBELCAweDBDLCAweDY0LCAweDBCLCAweEFCLCAweDIyLAor KyAgICAweDE1LCAweDc4LCAweDZCLCAweDZGLCAweEE0LCAweEZCLCAweDc3LCAweDQwLCAweDY0 LCAweDYyLCAweEQxLCAweEI1LAorKyAgICAweDM3LCAweDFFLCAweEUwLCAweDNELCAweEE4LCAw eEY5LCAweEQyLCAweEJELCAweEFBLCAweDM4LCAweDI0LCAweDQ5LAorKyAgICAweDU4LCAweEQy LCAweDc0LCAweDg1LCAweEY0LCAweEI1LCAweDkzLCAweDhFLCAweEY1LCAweDAzLCAweEVBLCAw eDJELAorKyAgICAweEM4LCAweDUyLCAweEZBLCAweENGLCAweDdFLCAweDM1LCAweEIwLCAweDZB LCAweEFGLCAweDk1LCAweEMwLCAweDAwLAorKyAgICAweDU0LCAweDc2LCAweDNELCAweDBDLCAw eDlDLCAweEIyLCAweEVFLCAweEMwCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBrYXRfUlNBX1BTU19TSEEyNTZbXSA9IHsKKysgICAgMHg2RCwgMHgzRCwgMHhCRSwgMHg4Riwg MHg2MCwgMHg2RCwgMHgyNSwgMHgxNCwgMHhGMCwgMHgzMSwgMHhFMywgMHg4OSwKKysgICAgMHgw MCwgMHg5NywgMHhGQSwgMHg5OSwgMHg3MSwgMHgyOCwgMHhFNSwgMHgxMCwgMHgyNSwgMHg5QSwg MHhGMywgMHg4RiwKKysgICAgMHg3QiwgMHhDNSwgMHhBOCwgMHg0QSwgMHg3NCwgMHg1MSwgMHgz NiwgMHhFMiwgMHg4RCwgMHg3RCwgMHg3MywgMHgyOCwKKysgICAgMHhDMSwgMHg3NywgMHhDNiwg MHgyNywgMHg5NywgMHgwMCwgMHg4QiwgMHgwMCwgMHhBMywgMHg5NiwgMHg3MywgMHg0RSwKKysg ICAgMHg3RCwgMHgyRSwgMHgyQywgMHgzNCwgMHg2OCwgMHg4QywgMHg4RSwgMHhERiwgMHg5RCwg MHg0OSwgMHg0NywgMHgwNSwKKysgICAgMHhBQiwgMHhGNSwgMHgwMSwgMHhENiwgMHg4MSwgMHg0 NywgMHg3MCwgMHhGNSwgMHgxRCwgMHg2RCwgMHgyNiwgMHhCQSwKKysgICAgMHgyRiwgMHg3QSwg MHg1NCwgMHg1MywgMHg0RSwgMHhFRCwgMHg3MSwgMHhEOSwgMHg1QSwgMHhGMywgMHhEQSwgMHhC NiwKKysgICAgMHgwQiwgMHg0NywgMHgzNCwgMHhBRiwgMHg5MCwgMHhEQywgMHhDOCwgMHhEOSwg MHg2RiwgMHg1NiwgMHhDRCwgMHg5RiwKKysgICAgMHgyMSwgMHhCNywgMHg3RSwgMHhBRCwgMHg3 QywgMHgyRiwgMHg3NSwgMHg1MCwgMHg0NywgMHgxMiwgMHhFNCwgMHg2RCwKKysgICAgMHg1Riwg MHhCNywgMHgwMSwgMHhERiwgMHhDMywgMHgxMSwgMHg2QywgMHhBOSwgMHg5RSwgMHg0OSwgMHhC OSwgMHhGNiwKKysgICAgMHg3MiwgMHhGNCwgMHhGNiwgMHhFRiwgMHg4OCwgMHgxRSwgMHgyRCwg MHgxQworK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9QU1NfU0hB Mzg0W10gPSB7CisrICAgIDB4NDAsIDB4RkIsIDB4QTEsIDB4MjEsIDB4RjQsIDB4QjIsIDB4NDAs IDB4OUEsIDB4QjQsIDB4MzEsIDB4QTgsIDB4RjIsCisrICAgIDB4RUMsIDB4MUMsIDB4QzQsIDB4 QzgsIDB4N0MsIDB4MjIsIDB4NjUsIDB4OUMsIDB4NTcsIDB4NDUsIDB4Q0QsIDB4NUUsCisrICAg IDB4ODYsIDB4MDAsIDB4RjcsIDB4MjUsIDB4NzgsIDB4REUsIDB4REMsIDB4N0EsIDB4NzEsIDB4 NDQsIDB4OUEsIDB4Q0QsCisrICAgIDB4QUEsIDB4MjUsIDB4RjQsIDB4QjIsIDB4RkMsIDB4RjAs IDB4NzUsIDB4RDksIDB4MkYsIDB4NzgsIDB4MjMsIDB4N0YsCisrICAgIDB4NkYsIDB4MDIsIDB4 RUYsIDB4QzEsIDB4QUYsIDB4QTYsIDB4MjgsIDB4MTYsIDB4MzEsIDB4REMsIDB4NDIsIDB4NkMs CisrICAgIDB4QjIsIDB4NDQsIDB4RTUsIDB4NEQsIDB4NjYsIDB4QTIsIDB4RTYsIDB4NzEsIDB4 RjMsIDB4QUMsIDB4NEYsIDB4RkIsCisrICAgIDB4OTEsIDB4Q0EsIDB4RjUsIDB4NzAsIDB4RUYs IDB4NkIsIDB4OUQsIDB4QTQsIDB4RUYsIDB4RDksIDB4M0QsIDB4MkYsCisrICAgIDB4M0EsIDB4 QkUsIDB4ODksIDB4MzgsIDB4NTksIDB4MDEsIDB4QkEsIDB4REEsIDB4MzIsIDB4QUQsIDB4NDIs IDB4ODksCisrICAgIDB4OTgsIDB4OEIsIDB4MzksIDB4NDQsIDB4RjAsIDB4RkMsIDB4MzgsIDB4 QUMsIDB4ODcsIDB4MUYsIDB4Q0EsIDB4NkYsCisrICAgIDB4NDgsIDB4RjYsIDB4QUUsIDB4RDcs IDB4NDUsIDB4RUUsIDB4QUUsIDB4ODgsIDB4MEUsIDB4NjAsIDB4RjQsIDB4NTUsCisrICAgIDB4 NDgsIDB4NDQsIDB4RUUsIDB4MUYsIDB4OTAsIDB4MTgsIDB4NEIsIDB4RjEKKyt9OworKworK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTUxMltdID0geworKyAgICAw eDA3LCAweDFFLCAweEQ4LCAweEQ1LCAweDA1LCAweEU4LCAweEU2LCAweEU2LCAweDU3LCAweEFF LCAweDYzLCAweDhDLAorKyAgICAweEM2LCAweDgzLCAweEI3LCAweEEwLCAweDU5LCAweEJCLCAw eEYyLCAweEM2LCAweDhGLCAweDEyLCAweDUzLCAweDlBLAorKyAgICAweDlCLCAweDU0LCAweDlF LCAweEIzLCAweEMxLCAweDFELCAweDIzLCAweDRELCAweDUxLCAweEVELCAweDlFLCAweERELAor KyAgICAweDRCLCAweEYzLCAweDQ2LCAweDlCLCAweDZCLCAweEY2LCAweDdDLCAweDI0LCAweDYw LCAweDc5LCAweDIzLCAweDM5LAorKyAgICAweDAxLCAweDFDLCAweDUxLCAweENCLCAweEQ4LCAw eEU5LCAweDlBLCAweDAxLCAweDY3LCAweDVGLCAweEZFLCAweEQ3LAorKyAgICAweDdDLCAweEUz LCAweDdGLCAweEVELCAweERCLCAweDg3LCAweEJCLCAweEYwLCAweDNELCAweDc4LCAweDU1LCAw eDYxLAorKyAgICAweDU3LCAweEUzLCAweDBGLCAweEUzLCAweEQyLCAweDlELCAweDBDLCAweDJB LCAweDIwLCAweEIwLCAweDg1LCAweDEzLAorKyAgICAweEM1LCAweDQ3LCAweDM0LCAweDBELCAw eDMyLCAweDE1LCAweEM4LCAweEFFLCAweDlBLCAweDZBLCAweDM5LCAweDYzLAorKyAgICAweDJE LCAweDYwLCAweEY1LCAweDRDLCAweERGLCAweDhBLCAweDQ4LCAweDRCLCAweEJGLCAweEY0LCAw eEE4LCAweEZFLAorKyAgICAweDc2LCAweEYyLCAweDMyLCAweDFCLCAweDlDLCAweDdDLCAweENB LCAweEZFLCAweDdGLCAweDgwLCAweEMyLCAweDg4LAorKyAgICAweDVDLCAweDk3LCAweDcwLCAw eEI0LCAweDI2LCAweEM5LCAweDE0LCAweDhCCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBrYXRfUlNBX1NIQTFbXSA9IHsKKysgICAgMHg3MSwgMHhFRSwgMHgxQSwgMHhDMCwg MHhGRSwgMHgwMSwgMHg5MywgMHg1NCwgMHg3OSwgMHg1QywgMHhGMiwgMHg0QywKKysgICAgMHg0 QSwgMHhGRCwgMHgxQSwgMHgwNSwgMHg4RiwgMHg2NCwgMHhCMSwgMHg2RCwgMHg2MSwgMHgzMywg MHg4RCwgMHg5QiwKKysgICAgMHhFNywgMHhGRCwgMHg2MCwgMHhBMywgMHg4MywgMHhCNSwgMHhB MywgMHg1MSwgMHg1NSwgMHg3NywgMHg5MCwgMHhDRiwKKysgICAgMHhEQywgMHgyMiwgMHgzNywg MHg4RSwgMHhEMCwgMHhFMSwgMHhBRSwgMHgwOSwgMHhFMywgMHgzRCwgMHgxRSwgMHhGOCwKKysg ICAgMHg4MCwgMHhEMSwgMHg4QiwgMHhDMiwgMHhFQywgMHgwQSwgMHhENywgMHg2QiwgMHg4OCwg MHg4QiwgMHg4QiwgMHhBMSwKKysgICAgMHgyMCwgMHgyMiwgMHhCRSwgMHg1OSwgMHg1QiwgMHhF MCwgMHgyMywgMHgyNCwgMHhBMSwgMHg0OSwgMHgzMCwgMHhCQSwKKysgICAgMHhBOSwgMHg5RSwg MHhFOCwgMHhCMSwgMHg4QSwgMHg2MiwgMHgxNiwgMHhCRiwgMHg0RSwgMHhDQSwgMHgyRSwgMHg0 RSwKKysgICAgMHhCQywgMHgyOSwgMHhBOCwgMHg2NywgMHgxMywgMHhCNywgMHg5RiwgMHgxRCwg MHgwNCwgMHg0NCwgMHhFNSwgMHg1RiwKKysgICAgMHgzNSwgMHgwNywgMHgxMSwgMHhCQywgMHhF RCwgMHgxOSwgMHgzNywgMHgyMSwgMHhDRiwgMHgyMywgMHg0OCwgMHgxRiwKKysgICAgMHg3Miwg MHgwNSwgMHhERSwgMHhFNiwgMHhFOCwgMHg3RiwgMHgzMywgMHg4QSwgMHg3NiwgMHg0QiwgMHgy RiwgMHg5NSwKKysgICAgMHhERiwgMHhGMSwgMHg1RiwgMHg4NCwgMHg4MCwgMHhEOSwgMHg0Niwg MHhCNAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEEyMjRb XSA9IHsKKysgICAgMHg2MiwgMHhBQSwgMHg3OSwgMHhBOSwgMHgxOCwgMHgwRSwgMHg1RiwgMHg4 QywgMHhCQiwgMHhCNywgMHgxNSwgMHhGOSwKKysgICAgMHgyNSwgMHhCQiwgMHhGQSwgMHhENCwg MHgzQSwgMHgzNCwgMHhFRCwgMHg5RSwgMHhBMCwgMHhBOSwgMHgxOCwgMHg4RCwKKysgICAgMHg1 QiwgMHg1NSwgMHg5QSwgMHg3RSwgMHgxRSwgMHgwOCwgMHgwOCwgMHg2MCwgMHhDNSwgMHgxQSwg MHhDNSwgMHg4OSwKKysgICAgMHgwOCwgMHhFMiwgMHgxQiwgMHhCRCwgMHg2MiwgMHg1MCwgMHgx NywgMHg3NiwgMHgzMCwgMHgyQywgMHg5RSwgMHhDRCwKKysgICAgMHhBNCwgMHgwMiwgMHhBRCwg MHhCMSwgMHg2RCwgMHg0NCwgMHg2RCwgMHhENSwgMHhDNiwgMHg0NSwgMHg0MSwgMHhFNSwKKysg ICAgMHhFRSwgMHgxRiwgMHg4RCwgMHg3RSwgMHgwOCwgMHgxNiwgMHhBNiwgMHhFMSwgMHg1RSwg MHgwQiwgMHhBOSwgMHhDQywKKysgICAgMHhEQiwgMHg1OSwgMHg1NSwgMHg4NywgMHgwOSwgMHgy NSwgMHg3MCwgMHg4NiwgMHg4NCwgMHgwMiwgMHhDNiwgMHgzQiwKKysgICAgMHgwQiwgMHg0NCwg MHg0QywgMHg0NiwgMHg5NSwgMHhGNCwgMHhGOCwgMHg1QSwgMHg5MSwgMHgyOCwgMHgzRSwgMHhC MiwKKysgICAgMHg1OCwgMHgyRSwgMHgwNiwgMHg0NSwgMHg0OSwgMHhFMCwgMHg5MiwgMHhFMiwg MHhDMCwgMHg2NiwgMHhFNiwgMHgzNSwKKysgICAgMHhEOSwgMHg3OSwgMHg3RiwgMHgxNywgMHg1 RSwgMHgwMiwgMHg3MywgMHgwNCwgMHg3NywgMHg4MiwgMHhFNiwgMHhEQywKKysgICAgMHg0MCwg MHgyMSwgMHg4OSwgMHg4QiwgMHgzNywgMHgzRSwgMHgxRSwgMHg4RAorK307CisrCisrc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEEyNTZbXSA9IHsKKysgICAgMHgwRCwgMHg1 NSwgMHhFMiwgMHhBQSwgMHg4MSwgMHhEQiwgMHg4RSwgMHg4MiwgMHgwNSwgMHgxNywgMHhBNSwg MHgyMywKKysgICAgMHhFNywgMHgzQiwgMHgxRCwgMHhBRiwgMHhGQiwgMHg4QywgMHhEMCwgMHg4 MSwgMHgyMCwgMHg3QiwgMHhBQSwgMHgyMywKKysgICAgMHg5MiwgMHg4NywgMHg4QywgMHhEMSwg MHg1MywgMHg4NSwgMHgxNiwgMHhEQywgMHhCRSwgMHhBRCwgMHg2RiwgMHgzNSwKKysgICAgMHg5 OCwgMHgyRCwgMHg2OSwgMHg4NCwgMHhCRiwgMHhEOSwgMHg4QSwgMHgwMSwgMHgxNywgMHg1OCwg MHhCMiwgMHg2RSwKKysgICAgMHgyQywgMHg0NCwgMHg5QiwgMHg5MCwgMHhGMSwgMHhGQiwgMHg1 MSwgMHhFOCwgMHg2QSwgMHg5MCwgMHgyRCwgMHgxOCwKKysgICAgMHgwRSwgMHhDMCwgMHg5MCwg MHgxMCwgMHgyNCwgMHhBOSwgMHgxRCwgMHhCMywgMHg1OCwgMHg3QSwgMHg5MSwgMHgzMCwKKysg ICAgMHhCRSwgMHgyMiwgMHhDNywgMHhEMywgMHhFQywgMHhDMywgMHgwOSwgMHg1RCwgMHhCRiwg MHhFMiwgMHg4MCwgMHgzQSwKKysgICAgMHg3QywgMHg4NSwgMHhCNCwgMHhCQywgMHhEMSwgMHhF OSwgMHhGMCwgMHg1QywgMHhERSwgMHg4MSwgMHhBNiwgMHgzOCwKKysgICAgMHhCOCwgMHg0Miwg MHhCQiwgMHg4NiwgMHhDNSwgMHg5RCwgMHhDRSwgMHg3QywgMHgyQywgMHhFRSwgMHhEMSwgMHhE QSwKKysgICAgMHgyNywgMHg0OCwgMHgyQiwgMHhGNSwgMHhBQiwgMHhCOSwgMHhGNywgMHg4MCwg MHhEMSwgMHg5MCwgMHgyNywgMHg5MCwKKysgICAgMHhCRCwgMHg0NCwgMHg5NywgMHg2MCwgMHhD RCwgMHg1NywgMHhDMCwgMHg3QQorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg a2F0X1JTQV9TSEEzODRbXSA9IHsKKysgICAgMHgxRCwgMHhFMywgMHg2QSwgMHhERCwgMHgyNywg MHg0QywgMHhDMCwgMHhBNSwgMHgyNywgMHhFRiwgMHhFNiwgMHgxRiwKKysgICAgMHhEMiwgMHg5 MSwgMHg2OCwgMHg1OSwgMHgwNCwgMHhBRSwgMHhCRCwgMHg5OSwgMHg2MywgMHg1NiwgMHg0Nywg MHhDNywKKysgICAgMHg2RiwgMHgyMiwgMHgxNiwgMHg0OCwgMHhEMCwgMHhGOSwgMHgxOCwgMHhB OSwgMHhDQSwgMHhGQSwgMHg1RCwgMHg1QywKKysgICAgMHhBNywgMHg2NSwgMHg1MiwgMHg4QSwg MHhDOCwgMHg0NCwgMHg3RSwgMHg4NiwgMHg1RCwgMHhBOSwgMHhBNiwgMHg1NSwKKysgICAgMHg2 NSwgMHgzRSwgMHhEOSwgMHgyRCwgMHgwMiwgMHgzOCwgMHhBOCwgMHg3OSwgMHgyOCwgMHg3Riwg MHhCNiwgMHhDRiwKKysgICAgMHg4MiwgMHhERCwgMHg3RSwgMHg1NSwgMHhFMSwgMHhCMSwgMHhC QywgMHhFMiwgMHgxOSwgMHgyQiwgMHgzMCwgMHhDMiwKKysgICAgMHgxQiwgMHgyQiwgMHhCMCwg MHg4MiwgMHg0NiwgMHhBQywgMHg0QiwgMHhEMSwgMHhFMiwgMHg3RCwgMHhFQiwgMHg4QywKKysg ICAgMHhGRiwgMHg5NSwgMHhFOSwgMHg2QSwgMHgxQywgMHgzRCwgMHg0RCwgMHhCRiwgMHg4Riwg MHg4QiwgMHg5QywgMHhDRCwKKysgICAgMHhFQSwgMHg4NSwgMHhFRSwgMHgwMCwgMHhEQywgMHgx QywgMHhBNywgMHhFQiwgMHhEMCwgMHg4RiwgMHg5OSwgMHhGMSwKKysgICAgMHgxNiwgMHgyOCwg MHgyNCwgMHg2NCwgMHgwNCwgMHgzOSwgMHgyRCwgMHg1OCwgMHgxRSwgMHgzNywgMHhEQywgMHgw NCwKKysgICAgMHhCRCwgMHgzMSwgMHhBMiwgMHgyRiwgMHhCMywgMHgzNSwgMHg1NiwgMHhCRgor K307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEE1MTJbXSA9IHsK KysgICAgMHg2OSwgMHg1MiwgMHgxQiwgMHg1MSwgMHg1RSwgMHgwNiwgMHhDQSwgMHg5QiwgMHgx NiwgMHg1MSwgMHg1RCwgMHhDRiwKKysgICAgMHg0OSwgMHgyNSwgMHg0QSwgMHhBMSwgMHg2QSwg MHg3NywgMHg0QywgMHgzNiwgMHg0MCwgMHhGOCwgMHhCMiwgMHg5QSwKKysgICAgMHgxNSwgMHhF QSwgMHg1QywgMHhFNSwgMHhFNiwgMHg4MiwgMHhFMCwgMHg4NiwgMHg4MiwgMHg2QiwgMHgzMiwg MHhGMSwKKysgICAgMHgwNCwgMHhDMSwgMHg1QSwgMHgxQSwgMHhFRCwgMHgxRSwgMHg5QSwgMHhC NiwgMHg0QywgMHg1NCwgMHg5RiwgMHhEOCwKKysgICAgMHg4RCwgMHhDQywgMHhBQywgMHg4QSwg MHhCQiwgMHg5QywgMHg4MiwgMHgzRiwgMHhBNiwgMHg1MywgMHg2MiwgMHhCNSwKKysgICAgMHg4 MCwgMHhFMiwgMHhCQywgMHhERCwgMHg2NywgMHgyQiwgMHhEOSwgMHgzRiwgMHhFNCwgMHg3NSwg MHg5MiwgMHg2QiwKKysgICAgMHhBRiwgMHg2MiwgMHg3QywgMHg1MiwgMHhGMCwgMHhFRSwgMHgz MywgMHhERiwgMHgxQiwgMHgxRCwgMHg0NywgMHhFNiwKKysgICAgMHg1OSwgMHg1NiwgMHhBNSwg MHhCOSwgMHg1QywgMHhFNiwgMHg3NywgMHg3OCwgMHgxNiwgMHg2MywgMHg4NCwgMHgwNSwKKysg ICAgMHg2RiwgMHgwRSwgMHgyQiwgMHgzMSwgMHg5RCwgMHhGNywgMHg3RiwgMHhCMiwgMHg2NCwg MHg3MSwgMHhFMCwgMHgyRCwKKysgICAgMHgzRSwgMHg2MiwgMHhDRSwgMHhCNSwgMHgzRiwgMHg4 OCwgMHhERiwgMHgyRCwgMHhBQiwgMHg5OCwgMHg2NSwgMHg5MSwKKysgICAgMHhERiwgMHg3MCwg MHgxNCwgMHhBNSwgMHgzRiwgMHgzNiwgMHhBQiwgMHg4NAorK307CisrCisrc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMxX1NIQTFbXSA9IHsKKysgICAgMHg4NiwgMHhCNCwg MHgxOCwgMHhCQSwgMHhEMSwgMHg4MCwgMHhCNiwgMHg3QywgMHg0MiwgMHg0NSwgMHg0RCwgMHhE RiwKKysgICAgMHhFOSwgMHgyRCwgMHhFMSwgMHg4MywgMHg1RiwgMHhCNSwgMHgyRiwgMHhDOSwg MHhDRCwgMHhDNCwgMHhCMiwgMHg3NSwKKysgICAgMHg4MCwgMHhBNCwgMHhGMSwgMHg0QSwgMHhF NywgMHg4MywgMHgxMiwgMHgxRSwgMHgxRSwgMHgxNCwgMHhCOCwgMHhBQywKKysgICAgMHgzNSwg MHhFMiwgMHhBQSwgMHgwQiwgMHg1QywgMHhGOCwgMHgzOCwgMHg0RCwgMHgwNCwgMHhFRSwgMHhB OSwgMHg5NywKKysgICAgMHg3MCwgMHhGQiwgMHg1RSwgMHhFNywgMHhCNywgMHhFMywgMHg2Miwg MHgyMywgMHg0QiwgMHgzOCwgMHhCRSwgMHhENiwKKysgICAgMHg1MywgMHgxNSwgMHhGNywgMHhE RiwgMHg4NywgMHhCNCwgMHgwRSwgMHhDQywgMHhCMSwgMHgxQSwgMHgxMSwgMHgxOSwKKysgICAg MHhFRSwgMHg1MSwgMHhDQywgMHg5MiwgMHhERCwgMHhCQywgMHg2MywgMHgyOSwgMHg2MywgMHgw QywgMHg1OSwgMHhENywKKysgICAgMHg2RiwgMHg0QywgMHgzQywgMHgzNywgMHg1QiwgMHgzNywg MHgwMywgMHg2MSwgMHg3RCwgMHgyNCwgMHgxQywgMHg5OSwKKysgICAgMHg0OCwgMHhBRiwgMHg4 MiwgMHhGRSwgMHgzMiwgMHg0MSwgMHg5QiwgMHhCMiwgMHhEQiwgMHhFQSwgMHhFRCwgMHg3NiwK KysgICAgMHg4RSwgMHg2RSwgMHhDQSwgMHg3RSwgMHg0RSwgMHgxNCwgMHhCQSwgMHgzMCwgMHg4 NCwgMHgxQywgMHhCMywgMHg2NywKKysgICAgMHhBMywgMHgyOSwgMHg4MCwgMHg3MCwgMHg1NCwg MHg2OCwgMHg3RCwgMHg0OQorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0 X1JTQV9YOTMxX1NIQTI1NltdID0geworKyAgICAweDdFLCAweEEyLCAweDc3LCAweEZFLCAweEI4 LCAweDU0LCAweDhBLCAweEM3LCAweDdGLCAweDY0LCAweDU0LCAweDg5LAorKyAgICAweEU1LCAw eDUyLCAweDE1LCAweDhFLCAweDUyLCAweDk2LCAweDRFLCAweEE2LCAweDU4LCAweDkyLCAweDFD LCAweERELAorKyAgICAweEVBLCAweEEyLCAweDJELCAweDVDLCAweEQxLCAweDYyLCAweDAwLCAw eDQ5LCAweDA1LCAweDk1LCAweDczLCAweENGLAorKyAgICAweDE2LCAweDc2LCAweDY4LCAweEY2 LCAweEM2LCAweDVFLCAweDgwLCAweEI4LCAweEI4LCAweDdCLCAweEM4LCAweDlCLAorKyAgICAw eEM2LCAweDUzLCAweDg4LCAweDI2LCAweDIwLCAweDg4LCAweDczLCAweEI2LCAweDEzLCAweEI4 LCAweEYwLCAweDRCLAorKyAgICAweDAwLCAweDg1LCAweEYzLCAweERELCAweDA3LCAweDUwLCAw eEVCLCAweDIwLCAweEM0LCAweDM4LCAweDBFLCAweDk4LAorKyAgICAweEFELCAweDRFLCAweDQ5 LCAweDJDLCAweEQ3LCAweDY1LCAweEE1LCAweDE5LCAweDBFLCAweDU5LCAweDAxLCAweEVDLAor KyAgICAweDdFLCAweDc1LCAweDg5LCAweDY5LCAweDJFLCAweDYzLCAweDc2LCAweDg1LCAweDQ2 LCAweDhELCAweEEwLCAweDhDLAorKyAgICAweDMzLCAweDFELCAweDgyLCAweDhDLCAweDAzLCAw eEVBLCAweDY5LCAweDg4LCAweDM1LCAweEExLCAweDQyLCAweEJELAorKyAgICAweDIxLCAweEVE LCAweDhELCAweEJDLCAweEJDLCAweERCLCAweDMwLCAweEZGLCAweDg2LCAweEYwLCAweDVCLCAw eERDLAorKyAgICAweEUzLCAweEUyLCAweEU4LCAweDBBLCAweDBBLCAweDI5LCAweDk0LCAweDgw CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1g5MzFfU0hBMzg0 W10gPSB7CisrICAgIDB4NUMsIDB4N0QsIDB4OTYsIDB4MzUsIDB4RUMsIDB4N0UsIDB4MTEsIDB4 MzgsIDB4QkIsIDB4N0IsIDB4RUMsIDB4N0IsCisrICAgIDB4RjIsIDB4ODIsIDB4OEUsIDB4OTks IDB4QkQsIDB4RUYsIDB4RDgsIDB4QUUsIDB4RDcsIDB4MzksIDB4MzcsIDB4Q0IsCisrICAgIDB4 RTYsIDB4NEYsIDB4NUUsIDB4MEEsIDB4MTMsIDB4RTQsIDB4MkUsIDB4NDAsIDB4QjksIDB4QkUs IDB4MkUsIDB4RTMsCisrICAgIDB4RUYsIDB4NzgsIDB4ODMsIDB4MTgsIDB4NDQsIDB4MzUsIDB4 OUMsIDB4OEUsIDB4RDcsIDB4NEEsIDB4NjMsIDB4RjYsCisrICAgIDB4NTcsIDB4QzIsIDB4QjAs IDB4MDgsIDB4NTEsIDB4NzMsIDB4Q0YsIDB4Q0EsIDB4OTksIDB4NjYsIDB4RUUsIDB4MzEsCisr ICAgIDB4RDgsIDB4NjksIDB4RTksIDB4QUIsIDB4MTMsIDB4MjcsIDB4N0IsIDB4NDEsIDB4MUUs IDB4NkQsIDB4OEQsIDB4RjEsCisrICAgIDB4M0UsIDB4OUMsIDB4MzUsIDB4OTUsIDB4NTgsIDB4 REQsIDB4MkIsIDB4RDUsIDB4QTAsIDB4NjAsIDB4NDEsIDB4NzksCisrICAgIDB4MjQsIDB4MjIs IDB4RTQsIDB4QjcsIDB4QkYsIDB4NDcsIDB4NTMsIDB4RjYsIDB4MzQsIDB4RDUsIDB4N0MsIDB4 RkYsCisrICAgIDB4MEUsIDB4MDksIDB4RUUsIDB4MkUsIDB4RTIsIDB4MzcsIDB4QjksIDB4REUs IDB4QzUsIDB4MTIsIDB4NDQsIDB4MzUsCisrICAgIDB4RUYsIDB4MDEsIDB4RTYsIDB4NUUsIDB4 MzksIDB4MzEsIDB4MkQsIDB4NzEsIDB4QTUsIDB4REMsIDB4QzYsIDB4NkQsCisrICAgIDB4RTIs IDB4Q0QsIDB4ODUsIDB4REIsIDB4NzMsIDB4ODIsIDB4NjUsIDB4MjgKKyt9OworKworK3N0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfWDkzMV9TSEE1MTJbXSA9IHsKKysgICAgMHhB NiwgMHg2NSwgMHhBMiwgMHg3NywgMHg0RiwgMHhCMywgMHg4NiwgMHhDQiwgMHg2NCwgMHgzQSwg MHhDMSwgMHg2MywKKysgICAgMHhGQywgMHhBMSwgMHhBQSwgMHhDQiwgMHg5QiwgMHg3OSwgMHhE RCwgMHg0QiwgMHhFMSwgMHhEOSwgMHhEQSwgMHhBQywKKysgICAgMHhFNywgMHg0NywgMHgwOSwg MHhCMiwgMHgxMSwgMHg0QiwgMHg4QSwgMHhBQSwgMHgwNSwgMHg5RSwgMHg3NywgMHhENywKKysg ICAgMHgzQSwgMHhCRCwgMHg1RSwgMHg1MywgMHgwOSwgMHg0QSwgMHhFNiwgMHgwRiwgMHg1RSwg MHhGOSwgMHgxNCwgMHgyOCwKKysgICAgMHhBMCwgMHg5OSwgMHg3NCwgMHg2NCwgMHg3MCwgMHg0 RSwgMHhGMiwgMHhFMywgMHhGQSwgMHhDNywgMHhGOCwgMHhDNSwKKysgICAgMHg2RSwgMHgyQiwg MHg3OSwgMHg5NiwgMHgwRCwgMHgwQywgMHhDOCwgMHgxMCwgMHgzNCwgMHg1MywgMHhEMiwgMHhB RiwKKysgICAgMHgxNywgMHgwRSwgMHhFMCwgMHhCRiwgMHg3OSwgMHhGNiwgMHgwNCwgMHg3Miwg MHgxMCwgMHhFMCwgMHhGNiwgMHhEMCwKKysgICAgMHhDRSwgMHg4QSwgMHg2RiwgMHhBMSwgMHg5 NSwgMHg4OSwgMHhCRiwgMHg1OCwgMHg4RiwgMHg0NiwgMHg1RiwgMHgwOSwKKysgICAgMHg5Riwg MHgwOSwgMHhDQSwgMHg4NCwgMHgxNSwgMHg4NSwgMHhFMCwgMHhFRCwgMHgwNCwgMHgyRCwgMHhG QiwgMHg3QywKKysgICAgMHgzNiwgMHgzNSwgMHgyMSwgMHgzMSwgMHhDMywgMHhGRCwgMHg5Miwg MHg0MiwgMHgxMSwgMHgzMCwgMHg3MSwgMHgxQiwKKysgICAgMHg2MCwgMHg4MywgMHgxOCwgMHg4 OCwgMHhBMywgMHhGNSwgMHg1OSwgMHhDMworK307CisrCisraW50IEZJUFNfc2VsZnRlc3RfcnNh KCkKKyt7CisrICAgIGludCByZXQgPSAwOworKyAgICBSU0EgKmtleTsKKysgICAgRVZQX1BLRVkg KnBrID0gTlVMTDsKKysKKysgICAgaWYgKChrZXkgPSBSU0FfbmV3KCkpID09IE5VTEwpCisrICAg ICAgICBnb3RvIGVycjsKKysgICAgc2V0cnNha2V5KGtleSk7CisrICAgIGlmICgocGsgPSBFVlBf UEtFWV9uZXcoKSkgPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBFVlBfUEtF WV9hc3NpZ25fUlNBKHBrLCBrZXkpOworKworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVf dGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2F0X1JTQV9TSEExLCBzaXplb2Yoa2F0X1JTQV9TSEExKSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX3NoYTEoKSwgRVZQX01EX0NUWF9G TEFHX1BBRF9QS0NTMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJTQSBT SEExIFBLQ1MjMSIpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghZmlwc19wa2V5X3Np Z25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1NIQTIyNCwgc2l6ZW9mKGthdF9SU0Ff U0hBMjI0KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX3NoYTIyNCgp LCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BLQ1MxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiUlNBIFNIQTIyNCBQS0NTIzEiKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBp ZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMp IC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9TSEEyNTYs IHNpemVvZihrYXRfUlNBX1NIQTI1NiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEVWUF9zaGEyNTYoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9QS0NTMSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlJTQSBTSEEyNTYgUEtDUyMxIikpCisrICAgICAgICBn b3RvIGVycjsKKysgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMs IHNpemVvZihrYXRfdGJzKSAtIDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGthdF9SU0FfU0hBMzg0LCBzaXplb2Yoa2F0X1JTQV9TSEEzODQpLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFVlBfc2hhMzg0KCksIEVWUF9NRF9DVFhfRkxBR19QQURfUEtD UzEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSU0EgU0hBMzg0IFBLQ1Mj MSIpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90 ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBrYXRfUlNBX1NIQTUxMiwgc2l6ZW9mKGthdF9SU0FfU0hBNTEyKSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX3NoYTUxMigpLCBFVlBfTURf Q1RYX0ZMQUdfUEFEX1BLQ1MxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi UlNBIFNIQTUxMiBQS0NTIzEiKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBpZiAoIWZp cHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9QU1NfU0hBMSwgc2l6 ZW9mKGthdF9SU0FfUFNTX1NIQTEpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFVlBfc2hhMSgpLCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlJTQSBTSEExIFBTUyIpKQorKyAgICAgICAgZ290byBlcnI7Cisr ICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0 X3RicykgLSAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1BT U19TSEEyMjQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRf UlNBX1BTU19TSEEyMjQpLCBFVlBfc2hhMjI0KCksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19QQURfUFNTLCAiUlNBIFNIQTIyNCBQU1MiKSkKKysg ICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywg a2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAga2F0X1JTQV9QU1NfU0hBMjU2LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2Yoa2F0X1JTQV9QU1NfU0hBMjU2KSwgRVZQX3NoYTI1NigpLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywgIlJT QSBTSEEyNTYgUFNTIikpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFmaXBzX3BrZXlf c2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfUFNTX1NIQTM4NCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGthdF9SU0FfUFNTX1NIQTM4NCksIEVW UF9zaGEzODQoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NU WF9GTEFHX1BBRF9QU1MsICJSU0EgU0hBMzg0IFBTUyIpKQorKyAgICAgICAgZ290byBlcnI7Cisr ICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0 X3RicykgLSAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1BT U19TSEE1MTIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRf UlNBX1BTU19TSEE1MTIpLCBFVlBfc2hhNTEyKCksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19QQURfUFNTLCAiUlNBIFNIQTUxMiBQU1MiKSkKKysg ICAgICAgIGdvdG8gZXJyOworKworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChw aywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga2F0X1JTQV9YOTMxX1NIQTEsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZihrYXRfUlNBX1g5MzFfU0hBMSksIEVWUF9zaGExKCksCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSwgIlJT QSBTSEExIFg5MzEiKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICAvKiBOQjogU0hBMjI0IG5v dCBzdXBwb3J0ZWQgaW4gWDkuMzEgKi8KKysgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rl c3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGthdF9SU0FfWDkzMV9TSEEyNTYsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1g5MzFfU0hBMjU2KSwgRVZQX3NoYTI1Nigp LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFE X1g5MzEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSU0EgU0hBMjU2IFg5 MzEiKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVf dGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2F0X1JTQV9YOTMxX1NIQTM4NCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKGthdF9SU0FfWDkzMV9TSEEzODQpLCBFVlBfc2hhMzg0 KCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19Q QURfWDkzMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJTQSBTSEEzODQg WDkzMSIpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVy ZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1g5MzFfU0hBNTEyLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2F0X1JTQV9YOTMxX1NIQTUxMiksIEVWUF9zaGE1 MTIoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFH X1BBRF9YOTMxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTUx MiBYOTMxIikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgcmV0ID0gMTsKKysKKysgZXJy OgorKyAgICBpZiAocGspCisrICAgICAgICBFVlBfUEtFWV9mcmVlKHBrKTsKKysgICAgZWxzZSBp ZiAoa2V5KQorKyAgICAgICAgUlNBX2ZyZWUoa2V5KTsKKysgICAgcmV0dXJuIHJldDsKKyt9Cisr CisrI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkZWYgT1BFTlNTTF9GSVBTICov CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JzYV94OTMxZy5jLmZp cHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yc2FfeDkzMWcuYworLS0tIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcnNhX3g5MzFnLmMuZmlwcwkyMDE1LTA0LTIyIDE2 OjA4OjQwLjI5OTI0NTgyMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2Zp cHNfcnNhX3g5MzFnLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTkyNDU4MjAgKzAyMDAKK0BAIC0w LDAgKzEsMjczIEBACisrLyogY3J5cHRvL3JzYS9yc2FfZ2VuLmMgKi8KKysvKiBDb3B5cmlnaHQg KEMpIDE5OTUtMTk5OCBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkKKysgKiBBbGwgcmln aHRzIHJlc2VydmVkLgorKyAqCisrICogVGhpcyBwYWNrYWdlIGlzIGFuIFNTTCBpbXBsZW1lbnRh dGlvbiB3cml0dGVuCisrICogYnkgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pLgorKyAq IFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgd3JpdHRlbiBzbyBhcyB0byBjb25mb3JtIHdpdGggTmV0 c2NhcGVzIFNTTC4KKysgKiAKKysgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBmb3IgY29tbWVyY2lh bCBhbmQgbm9uLWNvbW1lcmNpYWwgdXNlIGFzIGxvbmcgYXMKKysgKiB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnMgYXJlIGFoZWFyZWQgdG8uICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBh cHBseSB0byBhbGwgY29kZSBmb3VuZCBpbiB0aGlzIGRpc3RyaWJ1dGlvbiwgYmUgaXQgdGhlIFJD NCwgUlNBLAorKyAqIGxoYXNoLCBERVMsIGV0Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBTU0wgY29k ZS4gIFRoZSBTU0wgZG9jdW1lbnRhdGlvbgorKyAqIGluY2x1ZGVkIHdpdGggdGhpcyBkaXN0cmli dXRpb24gaXMgY292ZXJlZCBieSB0aGUgc2FtZSBjb3B5cmlnaHQgdGVybXMKKysgKiBleGNlcHQg dGhhdCB0aGUgaG9sZGVyIGlzIFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4KKysgKiAK KysgKiBDb3B5cmlnaHQgcmVtYWlucyBFcmljIFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFueSBDb3B5 cmlnaHQgbm90aWNlcyBpbgorKyAqIHRoZSBjb2RlIGFyZSBub3QgdG8gYmUgcmVtb3ZlZC4KKysg KiBJZiB0aGlzIHBhY2thZ2UgaXMgdXNlZCBpbiBhIHByb2R1Y3QsIEVyaWMgWW91bmcgc2hvdWxk IGJlIGdpdmVuIGF0dHJpYnV0aW9uCisrICogYXMgdGhlIGF1dGhvciBvZiB0aGUgcGFydHMgb2Yg dGhlIGxpYnJhcnkgdXNlZC4KKysgKiBUaGlzIGNhbiBiZSBpbiB0aGUgZm9ybSBvZiBhIHRleHR1 YWwgbWVzc2FnZSBhdCBwcm9ncmFtIHN0YXJ0dXAgb3IKKysgKiBpbiBkb2N1bWVudGF0aW9uIChv bmxpbmUgb3IgdGV4dHVhbCkgcHJvdmlkZWQgd2l0aCB0aGUgcGFja2FnZS4KKysgKiAKKysgKiBS ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqIDEuIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgY29weXJpZ2h0CisrICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy LgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKyAqICAgIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u CisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y IHVzZSBvZiB0aGlzIHNvZnR3YXJlCisrICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcg YWNrbm93bGVkZ2VtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3Jh cGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5CisrICogICAgIEVyaWMgWW91bmcgKGVheUBjcnlwdHNv ZnQuY29tKSIKKysgKiAgICBUaGUgd29yZCAnY3J5cHRvZ3JhcGhpYycgY2FuIGJlIGxlZnQgb3V0 IGlmIHRoZSByb3VpbmVzIGZyb20gdGhlIGxpYnJhcnkKKysgKiAgICBiZWluZyB1c2VkIGFyZSBu b3QgY3J5cHRvZ3JhcGhpYyByZWxhdGVkIDotKS4KKysgKiA0LiBJZiB5b3UgaW5jbHVkZSBhbnkg V2luZG93cyBzcGVjaWZpYyBjb2RlIChvciBhIGRlcml2YXRpdmUgdGhlcmVvZikgZnJvbSAKKysg KiAgICB0aGUgYXBwcyBkaXJlY3RvcnkgKGFwcGxpY2F0aW9uIGNvZGUpIHlvdSBtdXN0IGluY2x1 ZGUgYW4gYWNrbm93bGVkZ2VtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgd3JpdHRlbiBieSBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkiCisrICogCisr ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQK KysgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorKyAqIEFSRSBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB QkxFCisrICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKysgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworKyAqIE9SIFNF UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS VVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisrICogTElBQklMSVRZLCBPUiBUT1JUIChJ TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorKyAq IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg UE9TU0lCSUxJVFkgT0YKKysgKiBTVUNIIERBTUFHRS4KKysgKiAKKysgKiBUaGUgbGljZW5jZSBh bmQgZGlzdHJpYnV0aW9uIHRlcm1zIGZvciBhbnkgcHVibGljYWxseSBhdmFpbGFibGUgdmVyc2lv biBvcgorKyAqIGRlcml2YXRpdmUgb2YgdGhpcyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2VkLiAgaS5l LiB0aGlzIGNvZGUgY2Fubm90IHNpbXBseSBiZQorKyAqIGNvcGllZCBhbmQgcHV0IHVuZGVyIGFu b3RoZXIgZGlzdHJpYnV0aW9uIGxpY2VuY2UKKysgKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGlj IExpY2VuY2UuXQorKyAqLworKworKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdHJp bmcuaD4KKysjaW5jbHVkZSA8dGltZS5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNp bmNsdWRlIDxvcGVuc3NsL2JuLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisrI2lmZGVm IE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrCisrZXh0ZXJuIGlu dCBmaXBzX2NoZWNrX3JzYShSU0EgKnJzYSk7CisrI2VuZGlmCisrCisrLyogWDkuMzEgUlNBIGtl eSBkZXJpdmF0aW9uIGFuZCBnZW5lcmF0aW9uICovCisrCisraW50IFJTQV9YOTMxX2Rlcml2ZV9l eChSU0EgKnJzYSwgQklHTlVNICpwMSwgQklHTlVNICpwMiwgQklHTlVNICpxMSwKKysgICAgICAg ICAgICAgICAgICAgICAgIEJJR05VTSAqcTIsIGNvbnN0IEJJR05VTSAqWHAxLCBjb25zdCBCSUdO VU0gKlhwMiwKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJR05VTSAqWHAsIGNvbnN0 IEJJR05VTSAqWHExLCBjb25zdCBCSUdOVU0gKlhxMiwKKysgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IEJJR05VTSAqWHEsIGNvbnN0IEJJR05VTSAqZSwgQk5fR0VOQ0IgKmNiKQorK3sKKysg ICAgQklHTlVNICpyMCA9IE5VTEwsICpyMSA9IE5VTEwsICpyMiA9IE5VTEwsICpyMyA9IE5VTEw7 CisrICAgIEJOX0NUWCAqY3R4ID0gTlVMTCwgKmN0eDIgPSBOVUxMOworKworKyAgICBpZiAoIXJz YSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBjdHggPSBCTl9DVFhfbmV3KCk7CisrICAg IGlmICghY3R4KQorKyAgICAgICAgZ290byBlcnI7CisrICAgIEJOX0NUWF9zdGFydChjdHgpOwor KworKyAgICByMCA9IEJOX0NUWF9nZXQoY3R4KTsKKysgICAgcjEgPSBCTl9DVFhfZ2V0KGN0eCk7 CisrICAgIHIyID0gQk5fQ1RYX2dldChjdHgpOworKyAgICByMyA9IEJOX0NUWF9nZXQoY3R4KTsK KysKKysgICAgaWYgKHIzID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFy c2EtPmUpIHsKKysgICAgICAgIHJzYS0+ZSA9IEJOX2R1cChlKTsKKysgICAgICAgIGlmICghcnNh LT5lKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICB9IGVsc2UKKysgICAgICAgIGUgPSBy c2EtPmU7CisrCisrICAgIC8qIElmIG5vdCBhbGwgcGFyYW1ldGVycyBwcmVzZW50IG9ubHkgY2Fs Y3VsYXRlIHdoYXQgd2UgY2FuLgorKyAgICAgKiBUaGlzIGFsbG93cyB0ZXN0IHByb2dyYW1zIHRv IG91dHB1dCBzZWxlY3RpdmUgcGFyYW1ldGVycy4KKysgICAgICovCisrCisrICAgIGlmIChYcCAm JiAhcnNhLT5wKSB7CisrICAgICAgICByc2EtPnAgPSBCTl9uZXcoKTsKKysgICAgICAgIGlmICgh cnNhLT5wKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKworKyAgICAgICAgaWYgKCFCTl9YOTMx X2Rlcml2ZV9wcmltZV9leChyc2EtPnAsIHAxLCBwMiwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgWHAsIFhwMSwgWHAyLCBlLCBjdHgsIGNiKSkKKysgICAgICAgICAgICBn b3RvIGVycjsKKysgICAgfQorKworKyAgICBpZiAoWHEgJiYgIXJzYS0+cSkgeworKyAgICAgICAg cnNhLT5xID0gQk5fbmV3KCk7CisrICAgICAgICBpZiAoIXJzYS0+cSkKKysgICAgICAgICAgICBn b3RvIGVycjsKKysgICAgICAgIGlmICghQk5fWDkzMV9kZXJpdmVfcHJpbWVfZXgocnNhLT5xLCBx MSwgcTIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhxLCBYcTEsIFhx MiwgZSwgY3R4LCBjYikpCisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAg aWYgKCFyc2EtPnAgfHwgIXJzYS0+cSkgeworKyAgICAgICAgQk5fQ1RYX2VuZChjdHgpOworKyAg ICAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKysgICAgICAgIHJldHVybiAyOworKyAgICB9CisrCisr ICAgIC8qIFNpbmNlIGJvdGggcHJpbWVzIGFyZSBzZXQgd2UgY2FuIG5vdyBjYWxjdWxhdGUgYWxs IHJlbWFpbmluZyAKKysgICAgICogY29tcG9uZW50cy4KKysgICAgICovCisrCisrICAgIC8qIGNh bGN1bGF0ZSBuICovCisrICAgIHJzYS0+biA9IEJOX25ldygpOworKyAgICBpZiAocnNhLT5uID09 IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFCTl9tdWwocnNhLT5uLCByc2Et PnAsIHJzYS0+cSwgY3R4KSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICAvKiBjYWxjdWxh dGUgZCAqLworKyAgICBpZiAoIUJOX3N1YihyMSwgcnNhLT5wLCBCTl92YWx1ZV9vbmUoKSkpCisr ICAgICAgICBnb3RvIGVycjsgICAgICAgICAgICAgICAvKiBwLTEgKi8KKysgICAgaWYgKCFCTl9z dWIocjIsIHJzYS0+cSwgQk5fdmFsdWVfb25lKCkpKQorKyAgICAgICAgZ290byBlcnI7ICAgICAg ICAgICAgICAgLyogcS0xICovCisrICAgIGlmICghQk5fbXVsKHIwLCByMSwgcjIsIGN0eCkpCisr ICAgICAgICBnb3RvIGVycjsgICAgICAgICAgICAgICAvKiAocC0xKShxLTEpICovCisrCisrICAg IGlmICghQk5fZ2NkKHIzLCByMSwgcjIsIGN0eCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysg ICAgaWYgKCFCTl9kaXYocjAsIE5VTEwsIHIwLCByMywgY3R4KSkKKysgICAgICAgIGdvdG8gZXJy OyAgICAgICAgICAgICAgIC8qIExDTSgocC0xKShxLTEpKSAqLworKworKyAgICBjdHgyID0gQk5f Q1RYX25ldygpOworKyAgICBpZiAoIWN0eDIpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAg cnNhLT5kID0gQk5fbW9kX2ludmVyc2UoTlVMTCwgcnNhLT5lLCByMCwgY3R4Mik7IC8qIGQgKi8K KysgICAgaWYgKHJzYS0+ZCA9PSBOVUxMKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIC8q IGNhbGN1bGF0ZSBkIG1vZCAocC0xKSAqLworKyAgICByc2EtPmRtcDEgPSBCTl9uZXcoKTsKKysg ICAgaWYgKHJzYS0+ZG1wMSA9PSBOVUxMKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICgh Qk5fbW9kKHJzYS0+ZG1wMSwgcnNhLT5kLCByMSwgY3R4KSkKKysgICAgICAgIGdvdG8gZXJyOwor KworKyAgICAvKiBjYWxjdWxhdGUgZCBtb2QgKHEtMSkgKi8KKysgICAgcnNhLT5kbXExID0gQk5f bmV3KCk7CisrICAgIGlmIChyc2EtPmRtcTEgPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOwor KyAgICBpZiAoIUJOX21vZChyc2EtPmRtcTEsIHJzYS0+ZCwgcjIsIGN0eCkpCisrICAgICAgICBn b3RvIGVycjsKKysKKysgICAgLyogY2FsY3VsYXRlIGludmVyc2Ugb2YgcSBtb2QgcCAqLworKyAg ICByc2EtPmlxbXAgPSBCTl9tb2RfaW52ZXJzZShOVUxMLCByc2EtPnEsIHJzYS0+cCwgY3R4Mik7 CisrCisrIGVycjoKKysgICAgaWYgKGN0eCkgeworKyAgICAgICAgQk5fQ1RYX2VuZChjdHgpOwor KyAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKysgICAgfQorKyAgICBpZiAoY3R4MikKKysgICAg ICAgIEJOX0NUWF9mcmVlKGN0eDIpOworKyAgICAvKiBJZiB0aGlzIGlzIHNldCBhbGwgY2FsbHMg c3VjY2Vzc2Z1bCAqLworKyAgICBpZiAocnNhICYmIHJzYS0+aXFtcCAhPSBOVUxMKQorKyAgICAg ICAgcmV0dXJuIDE7CisrCisrICAgIHJldHVybiAwOworKworK30KKysKKytpbnQgUlNBX1g5MzFf Z2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNhLCBpbnQgYml0cywgY29uc3QgQklHTlVNICplLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQk5fR0VOQ0IgKmNiKQorK3sKKysgICAgaW50IG9r ID0gMDsKKysgICAgQklHTlVNICpYcCA9IE5VTEwsICpYcSA9IE5VTEw7CisrICAgIEJOX0NUWCAq Y3R4ID0gTlVMTDsKKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUo KSAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykgJiYKKysgICAgICAg IChiaXRzIDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgeworKyAgICAgICAg RklQU2VycihGSVBTX0ZfUlNBX1g5MzFfR0VORVJBVEVfS0VZX0VYLCBGSVBTX1JfS0VZX1RPT19T SE9SVCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICBpZiAoYml0cyAmIDB4 ZmYpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9YOTMxX0dFTkVSQVRFX0tFWV9FWCwg RklQU19SX0lOVkFMSURfS0VZX0xFTkdUSCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQor KworKyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgeworKyAgICAgICAgRklQU2VycihG SVBTX0ZfUlNBX1g5MzFfR0VORVJBVEVfS0VZX0VYLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlM RUQpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysjZW5kaWYKKysKKysgICAgY3R4ID0g Qk5fQ1RYX25ldygpOworKyAgICBpZiAoIWN0eCkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrCisr ICAgIEJOX0NUWF9zdGFydChjdHgpOworKyAgICBYcCA9IEJOX0NUWF9nZXQoY3R4KTsKKysgICAg WHEgPSBCTl9DVFhfZ2V0KGN0eCk7CisrICAgIGlmICghQk5fWDkzMV9nZW5lcmF0ZV9YcHEoWHAs IFhxLCBiaXRzLCBjdHgpKQorKyAgICAgICAgZ290byBlcnJvcjsKKysKKysgICAgcnNhLT5wID0g Qk5fbmV3KCk7CisrICAgIHJzYS0+cSA9IEJOX25ldygpOworKyAgICBpZiAoIXJzYS0+cCB8fCAh cnNhLT5xKQorKyAgICAgICAgZ290byBlcnJvcjsKKysKKysgICAgLyogR2VuZXJhdGUgdHdvIHBy aW1lcyBmcm9tIFhwLCBYcSAqLworKworKyAgICBpZiAoIUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVf ZXgocnNhLT5wLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBYcCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGUsIGN0eCwgY2IpKQorKyAgICAgICAgZ290byBlcnJvcjsKKysK KysgICAgaWYgKCFCTl9YOTMxX2dlbmVyYXRlX3ByaW1lX2V4KHJzYS0+cSwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTCwgWHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBj dHgsIGNiKSkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrCisrICAgIC8qIFNpbmNlIHJzYS0+cCBh bmQgcnNhLT5xIGFyZSB2YWxpZCB0aGlzIGNhbGwgd2lsbCBqdXN0IGRlcml2ZQorKyAgICAgKiBy ZW1haW5pbmcgUlNBIGNvbXBvbmVudHMuCisrICAgICAqLworKworKyAgICBpZiAoIVJTQV9YOTMx X2Rlcml2ZV9leChyc2EsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGUsIGNiKSkK KysgICAgICAgIGdvdG8gZXJyb3I7CisrCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAo IWZpcHNfY2hlY2tfcnNhKHJzYSkpCisrICAgICAgICBnb3RvIGVycm9yOworKyNlbmRpZgorKwor KyAgICBvayA9IDE7CisrCisrIGVycm9yOgorKyAgICBpZiAoY3R4KSB7CisrICAgICAgICBCTl9D VFhfZW5kKGN0eCk7CisrICAgICAgICBCTl9DVFhfZnJlZShjdHgpOworKyAgICB9CisrCisrICAg IGlmIChvaykKKysgICAgICAgIHJldHVybiAxOworKworKyAgICByZXR1cm4gMDsKKysKKyt9Citk aWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3NoYV9zZWxmdGVzdC5jLmZp cHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19zaGFfc2VsZnRlc3QuYworLS0tIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfc2hhX3NlbGZ0ZXN0LmMuZmlwcwkyMDE1LTA0 LTIyIDE2OjA4OjQwLjMwMDI0NTg0NCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9m aXBzL2ZpcHNfc2hhX3NlbGZ0ZXN0LmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDAyNDU4NDQgKzAy MDAKK0BAIC0wLDAgKzEsMTQ1IEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMp IDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysg KiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29m dHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93 d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0 IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9u LCBwbGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysgKgor KyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2Fs bGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBu YW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVu U1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hh dHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6 CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAo aHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVT U0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAor KyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisr ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisrI2lu Y2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpZmRlZiBPUEVO U1NMX0ZJUFMKKysjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNlbmRpZgorKyNpbmNsdWRl IDxvcGVuc3NsL2V2cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgorKworKyNpZmRlZiBP UEVOU1NMX0ZJUFMKKytzdGF0aWMgY29uc3QgY2hhciB0ZXN0W11bNjBdID0geworKyAgICAiIiwK KysgICAgImFiYyIsCisrICAgICJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xq a2xta2xtbmxtbm9tbm9wbm9wcSIKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHJldFtdW1NIQV9ESUdFU1RfTEVOR1RIXSA9IHsKKysgICAgezB4ZGEsIDB4MzksIDB4YTMsIDB4 ZWUsIDB4NWUsIDB4NmIsIDB4NGIsIDB4MGQsIDB4MzIsIDB4NTUsCisrICAgICAweGJmLCAweGVm LCAweDk1LCAweDYwLCAweDE4LCAweDkwLCAweGFmLCAweGQ4LCAweDA3LCAweDA5fSwKKysgICAg ezB4YTksIDB4OTksIDB4M2UsIDB4MzYsIDB4NDcsIDB4MDYsIDB4ODEsIDB4NmEsIDB4YmEsIDB4 M2UsCisrICAgICAweDI1LCAweDcxLCAweDc4LCAweDUwLCAweGMyLCAweDZjLCAweDljLCAweGQw LCAweGQ4LCAweDlkfSwKKysgICAgezB4ODQsIDB4OTgsIDB4M2UsIDB4NDQsIDB4MWMsIDB4M2Is IDB4ZDIsIDB4NmUsIDB4YmEsIDB4YWUsCisrICAgICAweDRhLCAweGExLCAweGY5LCAweDUxLCAw eDI5LCAweGU1LCAweGU1LCAweDQ2LCAweDcwLCAweGYxfSwKKyt9OworKworK3N0YXRpYyBpbnQg Y29ycnVwdF9zaGE7CisrCisrdm9pZCBGSVBTX2NvcnJ1cHRfc2hhMSgpCisreworKyAgICBjb3Jy dXB0X3NoYSA9IDE7CisrfQorKworK2ludCBGSVBTX3NlbGZ0ZXN0X3NoYTEoKQorK3sKKysgICAg aW50IG47CisrCisrICAgIGZvciAobiA9IDA7IG4gPCBzaXplb2YodGVzdCkgLyBzaXplb2YodGVz dFswXSk7ICsrbikgeworKyAgICAgICAgdW5zaWduZWQgY2hhciBtZFtTSEFfRElHRVNUX0xFTkdU SF07CisrCisrICAgICAgICBFVlBfRGlnZXN0KHRlc3Rbbl0sIHN0cmxlbih0ZXN0W25dKSArIGNv cnJ1cHRfc2hhLCBtZCwgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgRVZQX3NoYTEoKSwgTlVM TCk7CisrICAgICAgICBpZiAobWVtY21wKG1kLCByZXRbbl0sIHNpemVvZiBtZCkpIHsKKysgICAg ICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX1NFTEZURVNUX1NIQTEsIEZJUFNfUl9TRUxGVEVT VF9GQUlMRUQpOworKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgfQorKyAgICB9Cisr ICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBtc2dfc2hh MjU2W10gPQorKyAgICB7IDB4ZmEsIDB4NDgsIDB4NTksIDB4MmEsIDB4ZTEsIDB4YWUsIDB4MWYs IDB4MzAsCisrICAgIDB4ZmMKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRp Z19zaGEyNTZbXSA9CisrICAgIHsgMHhmNywgMHgyNiwgMHhkOCwgMHg5OCwgMHg0NywgMHg5MSwg MHg2OCwgMHg1YiwKKysgICAgMHg5ZSwgMHgzOSwgMHhiMiwgMHg1OCwgMHhiYiwgMHg3NSwgMHhi ZiwgMHgwMSwKKysgICAgMHgxNywgMHgwYywgMHg4NCwgMHgwMCwgMHgwMSwgMHg3YSwgMHg5NCwg MHg4MywKKysgICAgMHhmMywgMHgwYiwgMHgxNSwgMHg4NCwgMHg0YiwgMHg2OSwgMHg4OCwgMHg4 YQorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgbXNnX3NoYTUxMltdID0KKysg ICAgeyAweDM3LCAweGQxLCAweDM1LCAweDlkLCAweDE4LCAweDQxLCAweGU5LCAweGI3LAorKyAg ICAweDZkLCAweDlhLCAweDEzLCAweGRhLCAweDVmLCAweGYzLCAweGJkCisrfTsKKysKKytzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBkaWdfc2hhNTEyW10gPQorKyAgICB7IDB4MTEsIDB4MTMs IDB4YzQsIDB4MTksIDB4ZWQsIDB4MmIsIDB4MWQsIDB4MTYsCisrICAgIDB4MTEsIDB4ZWIsIDB4 OWIsIDB4YmUsIDB4ZjAsIDB4N2YsIDB4Y2YsIDB4NDQsCisrICAgIDB4OGIsIDB4ZDcsIDB4NTcs IDB4YmQsIDB4OGQsIDB4YTksIDB4MjUsIDB4YjAsCisrICAgIDB4NDcsIDB4MjUsIDB4ZDYsIDB4 NmMsIDB4OWEsIDB4NTQsIDB4N2YsIDB4OGYsCisrICAgIDB4MGIsIDB4NTMsIDB4MWEsIDB4MTAs IDB4NjgsIDB4MzIsIDB4MDMsIDB4MzgsCisrICAgIDB4ODIsIDB4YzQsIDB4ODcsIDB4YzQsIDB4 ZWEsIDB4MGUsIDB4ZDEsIDB4MDQsCisrICAgIDB4YTksIDB4OTgsIDB4YzEsIDB4MDUsIDB4YTMs IDB4ZjMsIDB4ZjgsIDB4YjEsCisrICAgIDB4YWYsIDB4YmMsIDB4ZDksIDB4NzgsIDB4N2UsIDB4 ZWUsIDB4M2QsIDB4NDMKKyt9OworKworK2ludCBGSVBTX3NlbGZ0ZXN0X3NoYTIodm9pZCkKKyt7 CisrICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hBNTEyX0RJR0VTVF9MRU5HVEhdOworKworKyAgICBF VlBfRGlnZXN0KG1zZ19zaGEyNTYsIHNpemVvZihtc2dfc2hhMjU2KSwgbWQsIE5VTEwsIEVWUF9z aGEyNTYoKSwgTlVMTCk7CisrICAgIGlmIChtZW1jbXAoZGlnX3NoYTI1NiwgbWQsIHNpemVvZihk aWdfc2hhMjU2KSkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfTU9ERV9TRVQsIEZJ UFNfUl9TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysg ICAgRVZQX0RpZ2VzdChtc2dfc2hhNTEyLCBzaXplb2YobXNnX3NoYTUxMiksIG1kLCBOVUxMLCBF VlBfc2hhNTEyKCksIE5VTEwpOworKyAgICBpZiAobWVtY21wKGRpZ19zaGE1MTIsIG1kLCBzaXpl b2YoZGlnX3NoYTUxMikpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PREVfU0VU LCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9Cisr CisrICAgIHJldHVybiAxOworK30KKysKKysjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9maXBzL2ZpcHNfc3RhbmRhbG9uZV9obWFjLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZmlwcy9maXBzX3N0YW5kYWxvbmVfaG1hYy5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2ZpcHMvZmlwc19zdGFuZGFsb25lX2htYWMuYy5maXBzCTIwMTUtMDQtMjIgMTk6MDU6Mjgu NTAwMTc0NTQxICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19zdGFu ZGFsb25lX2htYWMuYwkyMDE1LTA0LTIyIDE5OjIwOjI4Ljc3NzQ0NjI3OCArMDIwMAorQEAgLTAs MCArMSwyNjggQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUg T3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysg KiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxz IG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0 IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Cisr ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3Ns Lm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3Bl blNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBw cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBj b250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJv ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5T U0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhv dXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVj dC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11 c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3 Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICog SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisr ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3Rk aW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNs dWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgorKworKyNpZm5kZWYgRklQU0NBTklTVEVSX08KKytp bnQgRklQU19zZWxmdGVzdF9mYWlsZWQoKQorK3sKKysgICAgcmV0dXJuIDA7CisrfQorKworK3Zv aWQgRklQU19zZWxmdGVzdF9jaGVjaygpCisreworK30KKysjZW5kaWYKKysKKysjaWZkZWYgT1BF TlNTTF9GSVBTCisraW50IGJuX211bF9tb250X2ZwdTY0KEJOX1VMT05HICpycCwgY29uc3QgQk5f VUxPTkcgKmFwLCBjb25zdCBCTl9VTE9ORyAqYnAsCisrICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IEJOX1VMT05HICpucCwgY29uc3QgQk5fVUxPTkcgKm4wLCBpbnQgbnVtKQorK3sKKysgICAg cmV0dXJuIDA7CisrfTsKKysKKytpbnQgYm5fbXVsX21vbnRfaW50KEJOX1VMT05HICpycCwgY29u c3QgQk5fVUxPTkcgKmFwLCBjb25zdCBCTl9VTE9ORyAqYnAsCisrICAgICAgICAgICAgICAgICAg ICBjb25zdCBCTl9VTE9ORyAqbnAsIGNvbnN0IEJOX1VMT05HICpuMCwgaW50IG51bSkKKyt7Cisr ICAgIHJldHVybiAwOworK307CisrCisrIyBpZiAgICAgZGVmaW5lZChfX2kzODYpICAgfHwgZGVm aW5lZChfX2kzODZfXykgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8IFwKKysgICAgICAgIGRlZmlu ZWQoX19JTlRFTF9fKSB8fCBcCisrICAgICAgICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IFwKKysgICAgICAgIGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQo X01fWDY0KQorKworK3Vuc2lnbmVkIGludCBPUEVOU1NMX2lhMzJjYXBfUFs0XTsKKyt1bnNpZ25l ZCBsb25nICpPUEVOU1NMX2lhMzJjYXBfbG9jKHZvaWQpCisreworKyAgICBpZiAoc2l6ZW9mKGxv bmcpID09IDQpCisrICAgICAgICAvKgorKyAgICAgICAgICogSWYgMzItYml0IGFwcGxpY2F0aW9u IHB1bGxzIGFkZHJlc3Mgb2YgT1BFTlNTTF9pYTMyY2FwX1BbMF0KKysgICAgICAgICAqIGNsZWFy IHNlY29uZCBlbGVtZW50IHRvIG1haW50YWluIHRoZSBpbGx1c2lvbiB0aGF0IHZlY3RvcgorKyAg ICAgICAgICogaXMgMzItYml0LgorKyAgICAgICAgICovCisrICAgICAgICBPUEVOU1NMX2lhMzJj YXBfUFsxXSA9IDA7CisrCisrICAgIE9QRU5TU0xfaWEzMmNhcF9QWzJdID0gMDsKKysKKysgICAg cmV0dXJuICh1bnNpZ25lZCBsb25nICopT1BFTlNTTF9pYTMyY2FwX1A7CisrfQorKworKyMgIGlm IGRlZmluZWQoT1BFTlNTTF9DUFVJRF9PQkopICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQVNNKSAm JiAhZGVmaW5lZChJMzg2X09OTFkpCisrIyAgIGRlZmluZSBPUEVOU1NMX0NQVUlEX1NFVFVQCisr IyAgIGlmIGRlZmluZWQoX1dJTjMyKQorK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBJQTMyQ0FQ OworKyMgICBlbHNlCisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgSUEzMkNBUDsKKysjICAg ZW5kaWYKKyt2b2lkIE9QRU5TU0xfY3B1aWRfc2V0dXAodm9pZCkKKyt7CisrICAgIHN0YXRpYyBp bnQgdHJpZ2dlciA9IDA7CisrICAgIElBMzJDQVAgT1BFTlNTTF9pYTMyX2NwdWlkKHVuc2lnbmVk IGludCAqKTsKKysgICAgSUEzMkNBUCB2ZWM7CisrICAgIGNoYXIgKmVudjsKKysKKysgICAgaWYg KHRyaWdnZXIpCisrICAgICAgICByZXR1cm47CisrCisrICAgIHRyaWdnZXIgPSAxOworKyAgICBp ZiAoKGVudiA9IGdldGVudigiT1BFTlNTTF9pYTMyY2FwIikpKSB7CisrICAgICAgICBpbnQgb2Zm ID0gKGVudlswXSA9PSAnficpID8gMSA6IDA7CisrIyAgIGlmIGRlZmluZWQoX1dJTjMyKQorKyAg ICAgICAgaWYgKCFzc2NhbmYoZW52ICsgb2ZmLCAiJUk2NGkiLCAmdmVjKSkKKysgICAgICAgICAg ICB2ZWMgPSBzdHJ0b3VsKGVudiArIG9mZiwgTlVMTCwgMCk7CisrIyAgIGVsc2UKKysgICAgICAg IGlmICghc3NjYW5mKGVudiArIG9mZiwgIiVsbGkiLCAobG9uZyBsb25nICopJnZlYykpCisrICAg ICAgICAgICAgdmVjID0gc3RydG91bChlbnYgKyBvZmYsIE5VTEwsIDApOworKyMgICBlbmRpZgor KyAgICAgICAgaWYgKG9mZikKKysgICAgICAgICAgICB2ZWMgPSBPUEVOU1NMX2lhMzJfY3B1aWQo T1BFTlNTTF9pYTMyY2FwX1ApICYgfnZlYzsKKysgICAgICAgIGVsc2UgaWYgKGVudlswXSA9PSAn OicpCisrICAgICAgICAgICAgdmVjID0gT1BFTlNTTF9pYTMyX2NwdWlkKE9QRU5TU0xfaWEzMmNh cF9QKTsKKysKKysgICAgICAgIE9QRU5TU0xfaWEzMmNhcF9QWzJdID0gMDsKKysgICAgICAgIGlm ICgoZW52ID0gc3RyY2hyKGVudiwgJzonKSkpIHsKKysgICAgICAgICAgICB1bnNpZ25lZCBpbnQg dmVjeDsKKysgICAgICAgICAgICBlbnYrKzsKKysgICAgICAgICAgICBvZmYgPSAoZW52WzBdID09 ICd+JykgPyAxIDogMDsKKysgICAgICAgICAgICB2ZWN4ID0gc3RydG91bChlbnYgKyBvZmYsIE5V TEwsIDApOworKyAgICAgICAgICAgIGlmIChvZmYpCisrICAgICAgICAgICAgICAgIE9QRU5TU0xf aWEzMmNhcF9QWzJdICY9IH52ZWN4OworKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAg ICAgT1BFTlNTTF9pYTMyY2FwX1BbMl0gPSB2ZWN4OworKyAgICAgICAgfQorKyAgICB9IGVsc2UK KysgICAgICAgIHZlYyA9IE9QRU5TU0xfaWEzMl9jcHVpZChPUEVOU1NMX2lhMzJjYXBfUCk7Cisr CisrICAgIC8qCisrICAgICAqIHwoMTw8MTApIHNldHMgYSByZXNlcnZlZCBiaXQgdG8gc2lnbmFs IHRoYXQgdmFyaWFibGUKKysgICAgICogd2FzIGluaXRpYWxpemVkIGFscmVhZHkuLi4gVGhpcyBp cyB0byBhdm9pZCBpbnRlcmZlcmVuY2UKKysgICAgICogd2l0aCBjcHVpZCBzbmlwcGV0cyBpbiBF TEYgLmluaXQgc2VnbWVudC4KKysgICAgICovCisrICAgIE9QRU5TU0xfaWEzMmNhcF9QWzBdID0g KHVuc2lnbmVkIGludCl2ZWMgfCAoMSA8PCAxMCk7CisrICAgIE9QRU5TU0xfaWEzMmNhcF9QWzFd ID0gKHVuc2lnbmVkIGludCkodmVjID4+IDMyKTsKKyt9CisrIyAgZWxzZQorK3Vuc2lnbmVkIGlu dCBPUEVOU1NMX2lhMzJjYXBfUFs0XTsKKysjICBlbmRpZgorKworKyMgZWxzZQorK3Vuc2lnbmVk IGxvbmcgKk9QRU5TU0xfaWEzMmNhcF9sb2Modm9pZCkKKyt7CisrICAgIHJldHVybiBOVUxMOwor K30KKysjIGVuZGlmCisraW50IE9QRU5TU0xfTk9OUElDX3JlbG9jYXRlZCA9IDA7CisrIyBpZiAh ZGVmaW5lZChPUEVOU1NMX0NQVUlEX1NFVFVQKSAmJiAhZGVmaW5lZChPUEVOU1NMX0NQVUlEX09C SikKKyt2b2lkIE9QRU5TU0xfY3B1aWRfc2V0dXAodm9pZCkKKyt7CisrfQorKyMgZW5kaWYKKysK KytzdGF0aWMgdm9pZCBobWFjX2luaXQoU0hBMjU2X0NUWCAqbWRfY3R4LCBTSEEyNTZfQ1RYICpv X2N0eCwgY29uc3QgY2hhciAqa2V5KQorK3sKKysgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihrZXkp OworKyAgICBpbnQgaTsKKysgICAgdW5zaWduZWQgY2hhciBrZXltZFtITUFDX01BWF9NRF9DQkxP Q0tdOworKyAgICB1bnNpZ25lZCBjaGFyIHBhZFtITUFDX01BWF9NRF9DQkxPQ0tdOworKworKyAg ICBpZiAobGVuID4gU0hBX0NCTE9DSykgeworKyAgICAgICAgU0hBMjU2X0luaXQobWRfY3R4KTsK KysgICAgICAgIFNIQTI1Nl9VcGRhdGUobWRfY3R4LCBrZXksIGxlbik7CisrICAgICAgICBTSEEy NTZfRmluYWwoa2V5bWQsIG1kX2N0eCk7CisrICAgICAgICBsZW4gPSBTSEEyNTZfRElHRVNUX0xF TkdUSDsKKysgICAgfSBlbHNlCisrICAgICAgICBtZW1jcHkoa2V5bWQsIGtleSwgbGVuKTsKKysg ICAgbWVtc2V0KCZrZXltZFtsZW5dLCAnXDAnLCBITUFDX01BWF9NRF9DQkxPQ0sgLSBsZW4pOwor KworKyAgICBmb3IgKGkgPSAwOyBpIDwgSE1BQ19NQVhfTURfQ0JMT0NLOyBpKyspCisrICAgICAg ICBwYWRbaV0gPSAweDM2IF4ga2V5bWRbaV07CisrICAgIFNIQTI1Nl9Jbml0KG1kX2N0eCk7Cisr ICAgIFNIQTI1Nl9VcGRhdGUobWRfY3R4LCBwYWQsIFNIQTI1Nl9DQkxPQ0spOworKworKyAgICBm b3IgKGkgPSAwOyBpIDwgSE1BQ19NQVhfTURfQ0JMT0NLOyBpKyspCisrICAgICAgICBwYWRbaV0g PSAweDVjIF4ga2V5bWRbaV07CisrICAgIFNIQTI1Nl9Jbml0KG9fY3R4KTsKKysgICAgU0hBMjU2 X1VwZGF0ZShvX2N0eCwgcGFkLCBTSEEyNTZfQ0JMT0NLKTsKKyt9CisrCisrc3RhdGljIHZvaWQg aG1hY19maW5hbCh1bnNpZ25lZCBjaGFyICptZCwgU0hBMjU2X0NUWCAqbWRfY3R4LAorKyAgICAg ICAgICAgICAgICAgICAgICAgU0hBMjU2X0NUWCAqb19jdHgpCisreworKyAgICB1bnNpZ25lZCBj aGFyIGJ1ZltTSEEyNTZfRElHRVNUX0xFTkdUSF07CisrCisrICAgIFNIQTI1Nl9GaW5hbChidWYs IG1kX2N0eCk7CisrICAgIFNIQTI1Nl9VcGRhdGUob19jdHgsIGJ1Ziwgc2l6ZW9mIGJ1Zik7Cisr ICAgIFNIQTI1Nl9GaW5hbChtZCwgb19jdHgpOworK30KKysKKysjZW5kaWYKKysKKytpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisreworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAg c3RhdGljIGNoYXIga2V5W10gPSAib3Jib0RlSklUSVRlanNpcnBBRE9OaXZpcnBVa3ZhclAiOwor KyAgICBpbnQgbiwgYmluYXJ5ID0gMDsKKysKKysgICAgaWYgKGFyZ2MgPCAyKSB7CisrICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIiVzIFs8ZmlsZT5dK1xuIiwgYXJndlswXSk7CisrICAgICAgICBl eGl0KDEpOworKyAgICB9CisrCisrICAgIG4gPSAxOworKyAgICBpZiAoIXN0cmNtcChhcmd2W25d LCAiLWJpbmFyeSIpKSB7CisrICAgICAgICBuKys7CisrICAgICAgICBiaW5hcnkgPSAxOyAgICAg ICAgICAgICAvKiBlbWl0IGJpbmFyeSBmaW5nZXJwcmludC4uLiAqLworKyAgICB9CisrCisrICAg IGZvciAoOyBuIDwgYXJnYzsgKytuKSB7CisrICAgICAgICBGSUxFICpmID0gZm9wZW4oYXJndltu XSwgInJiIik7CisrICAgICAgICBTSEEyNTZfQ1RYIG1kX2N0eCwgb19jdHg7CisrICAgICAgICB1 bnNpZ25lZCBjaGFyIG1kW1NIQTI1Nl9ESUdFU1RfTEVOR1RIXTsKKysgICAgICAgIGludCBpOwor KworKyAgICAgICAgaWYgKCFmKSB7CisrICAgICAgICAgICAgcGVycm9yKGFyZ3Zbbl0pOworKyAg ICAgICAgICAgIGV4aXQoMik7CisrICAgICAgICB9CisrCisrICAgICAgICBobWFjX2luaXQoJm1k X2N0eCwgJm9fY3R4LCBrZXkpOworKyAgICAgICAgZm9yICg7OykgeworKyAgICAgICAgICAgIGNo YXIgYnVmWzEwMjRdOworKyAgICAgICAgICAgIHNpemVfdCBsID0gZnJlYWQoYnVmLCAxLCBzaXpl b2YgYnVmLCBmKTsKKysKKysgICAgICAgICAgICBpZiAobCA9PSAwKSB7CisrICAgICAgICAgICAg ICAgIGlmIChmZXJyb3IoZikpIHsKKysgICAgICAgICAgICAgICAgICAgIHBlcnJvcihhcmd2W25d KTsKKysgICAgICAgICAgICAgICAgICAgIGV4aXQoMyk7CisrICAgICAgICAgICAgICAgIH0gZWxz ZQorKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAg ICAgIFNIQTI1Nl9VcGRhdGUoJm1kX2N0eCwgYnVmLCBsKTsKKysgICAgICAgIH0KKysgICAgICAg IGhtYWNfZmluYWwobWQsICZtZF9jdHgsICZvX2N0eCk7CisrCisrICAgICAgICBpZiAoYmluYXJ5 KSB7CisrICAgICAgICAgICAgZndyaXRlKG1kLCBTSEEyNTZfRElHRVNUX0xFTkdUSCwgMSwgc3Rk b3V0KTsKKysgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgIC8qIC4uLiBmb3Igc2luZ2xl KCEpIGZpbGUgKi8KKysgICAgICAgIH0KKysKKysvKiAgICAgIHByaW50ZigiSE1BQy1TSEExKCVz KT0gIixhcmd2W25dKTsgKi8KKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBTSEEyNTZfRElHRVNU X0xFTkdUSDsgKytpKQorKyAgICAgICAgICAgIHByaW50ZigiJTAyeCIsIG1kW2ldKTsKKysgICAg ICAgIHByaW50ZigiXG4iKTsKKysgICAgfQorKyNlbmRpZgorKyAgICByZXR1cm4gMDsKKyt9Citk aWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3Rlc3Rfc3VpdGUuYy5maXBz IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfdGVzdF9zdWl0ZS5jCistLS0gb3BlbnNz bC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc190ZXN0X3N1aXRlLmMuZmlwcwkyMDE1LTA0LTIyIDE2 OjA4OjQwLjMwMDI0NTg0NCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2Zp cHNfdGVzdF9zdWl0ZS5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzAwMjQ1ODQ0ICswMjAwCitAQCAt MCwwICsxLDYzOSBAQAorKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAyMDAzIFRo ZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICoKKysgKiBU aGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgYXMgYSB0ZXN0IGRyaXZlciBmb3IgdGhlIEZJUFMtMTQw IHRlc3RpbmcKKysgKiBsYWIgcGVyZm9ybWluZyBGSVBTLTE0MCB2YWxpZGF0aW9uLiAgSXQgZGVt b25zdHJhdGVzIHRoZSB1c2Ugb2YgdGhlCisrICogT3BlblNTTCBsaWJyYXJ5IGl0byBwZXJmb3Jt IGEgdmFyaWV0eSBvZiBjb21tb24gY3J5cHRvZ3JhcGhpYworKyAqIGZ1bmN0aW9ucy4gIEEgcG93 ZXItdXAgc2VsZiB0ZXN0IGlzIGRlbW9uc3RyYXRlZCBieSBkZWxpYmVyYXRlbHkKKysgKiBwb2lu dGluZyB0byBhbiBpbnZhbGlkIGV4ZWN1dGFibGUgaGFzaAorKyAqCisrICogQ29udHJpYnV0ZWQg YnkgU3RldmUgTWFycXVlc3MuCisrICoKKysgKi8KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5j bHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPGN0eXBlLmg+CisrI2luY2x1ZGUgPHN0cmluZy5o PgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KKysjaW5j bHVkZSA8b3BlbnNzbC9kZXMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9kc2EuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9kaC5oPgorKyNpbmNsdWRlIDxv cGVuc3NsL2htYWMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysKKysjaW5jbHVkZSA8 b3BlbnNzbC9ibi5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9zaGEuaD4KKysKKysjaWZuZGVmIE9QRU5TU0xfRklQUworK2ludCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCisreworKyAgICBwcmludGYoIk5vIEZJUFMgc3VwcG9ydFxuIik7Cisr ICAgIHJldHVybiAoMCk7CisrfQorKyNlbHNlCisrCisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMu aD4KKysjIGluY2x1ZGUgImZpcHNfdXRsLmgiCisrCisrLyogQUVTOiBlbmNyeXB0IGFuZCBkZWNy eXB0IGtub3duIHBsYWludGV4dCwgdmVyaWZ5IHJlc3VsdCBtYXRjaGVzIG9yaWdpbmFsIHBsYWlu dGV4dAorKyovCisrc3RhdGljIGludCBGSVBTX2Flc190ZXN0KHZvaWQpCisreworKyAgICBpbnQg cmV0ID0gMDsKKysgICAgdW5zaWduZWQgY2hhciBwbHRtcFsxNl07CisrICAgIHVuc2lnbmVkIGNo YXIgY2l0bXBbMTZdOworKyAgICB1bnNpZ25lZCBjaGFyIGtleVsxNl0gPQorKyAgICAgICAgeyAx LCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiB9Owor KyAgICB1bnNpZ25lZCBjaGFyIHBsYWludGV4dFsxNl0gPSAiZXRhb25yaXNoZGxjdSI7CisrICAg IEVWUF9DSVBIRVJfQ1RYIGN0eDsKKysgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKKysg ICAgaWYgKEVWUF9DaXBoZXJJbml0X2V4KCZjdHgsIEVWUF9hZXNfMTI4X2VjYigpLCBOVUxMLCBr ZXksIE5VTEwsIDEpIDw9IDApCisrICAgICAgICBnb3RvIGVycjsKKysgICAgRVZQX0NpcGhlcigm Y3R4LCBjaXRtcCwgcGxhaW50ZXh0LCAxNik7CisrICAgIGlmIChFVlBfQ2lwaGVySW5pdF9leCgm Y3R4LCBFVlBfYWVzXzEyOF9lY2IoKSwgTlVMTCwga2V5LCBOVUxMLCAwKSA8PSAwKQorKyAgICAg ICAgZ290byBlcnI7CisrICAgIEVWUF9DaXBoZXIoJmN0eCwgcGx0bXAsIGNpdG1wLCAxNik7Cisr ICAgIGlmIChtZW1jbXAocGx0bXAsIHBsYWludGV4dCwgMTYpKQorKyAgICAgICAgZ290byBlcnI7 CisrICAgIHJldCA9IDE7CisrIGVycjoKKysgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4 KTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGludCBGSVBTX2RlczNfdGVzdCh2 b2lkKQorK3sKKysgICAgaW50IHJldCA9IDA7CisrICAgIHVuc2lnbmVkIGNoYXIgcGx0bXBbOF07 CisrICAgIHVuc2lnbmVkIGNoYXIgY2l0bXBbOF07CisrICAgIHVuc2lnbmVkIGNoYXIga2V5W10g PQorKyAgICAgICAgeyAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywg MTQsIDE1LCAxNiwgMTcsIDE4LAorKyAgICAgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNAorKyAg ICB9OworKyAgICB1bnNpZ25lZCBjaGFyIHBsYWludGV4dFtdID0geyAnZScsICd0JywgJ2EnLCAn bycsICduJywgJ3InLCAnaScsICdzJyB9OworKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7CisrICAg IEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0eCk7CisrICAgIGlmIChFVlBfQ2lwaGVySW5pdF9leCgm Y3R4LCBFVlBfZGVzX2VkZTNfZWNiKCksIE5VTEwsIGtleSwgTlVMTCwgMSkgPD0gMCkKKysgICAg ICAgIGdvdG8gZXJyOworKyAgICBFVlBfQ2lwaGVyKCZjdHgsIGNpdG1wLCBwbGFpbnRleHQsIDgp OworKyAgICBpZiAoRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgRVZQX2Rlc19lZGUzX2VjYigpLCBO VUxMLCBrZXksIE5VTEwsIDApIDw9IDApCisrICAgICAgICBnb3RvIGVycjsKKysgICAgRVZQX0Np cGhlcigmY3R4LCBwbHRtcCwgY2l0bXAsIDgpOworKyAgICBpZiAobWVtY21wKHBsdG1wLCBwbGFp bnRleHQsIDgpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIHJldCA9IDE7CisrIGVycjoKKysg ICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4KTsKKysgICAgcmV0dXJuIHJldDsKKyt9Cisr CisrLyoKKysgKiBEU0E6IGdlbmVyYXRlIGtleXMgYW5kIHNpZ24sIHZlcmlmeSBpbnB1dCBwbGFp bnRleHQuCisrICovCisrc3RhdGljIGludCBGSVBTX2RzYV90ZXN0KGludCBiYWQpCisreworKyAg ICBEU0EgKmRzYSA9IE5VTEw7CisrICAgIEVWUF9QS0VZIHBrOworKyAgICB1bnNpZ25lZCBjaGFy IGRnc3RbXSA9ICJldGFvbnJpc2hkbGMiOworKyAgICB1bnNpZ25lZCBjaGFyIGJ1Zls2MF07Cisr ICAgIHVuc2lnbmVkIGludCBzbGVuOworKyAgICBpbnQgciA9IDA7CisrICAgIEVWUF9NRF9DVFgg bWN0eDsKKysKKysgICAgRVJSX2NsZWFyX2Vycm9yKCk7CisrICAgIEVWUF9NRF9DVFhfaW5pdCgm bWN0eCk7CisrICAgIGRzYSA9IERTQV9uZXcoKTsKKysgICAgaWYgKCFkc2EpCisrICAgICAgICBn b3RvIGVuZDsKKysgICAgaWYgKCFEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChkc2EsIDEwMjQs IE5VTEwsIDAsIE5VTEwsIE5VTEwsIE5VTEwpKQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIGlm ICghRFNBX2dlbmVyYXRlX2tleShkc2EpKQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIGlmIChi YWQpCisrICAgICAgICBCTl9hZGRfd29yZChkc2EtPnB1Yl9rZXksIDEpOworKworKyAgICBway50 eXBlID0gRVZQX1BLRVlfRFNBOworKyAgICBway5wa2V5LmRzYSA9IGRzYTsKKysKKysgICAgaWYg KCFFVlBfU2lnbkluaXRfZXgoJm1jdHgsIEVWUF9kc3MxKCksIE5VTEwpKQorKyAgICAgICAgZ290 byBlbmQ7CisrICAgIGlmICghRVZQX1NpZ25VcGRhdGUoJm1jdHgsIGRnc3QsIHNpemVvZihkZ3N0 KSAtIDEpKQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIGlmICghRVZQX1NpZ25GaW5hbCgmbWN0 eCwgYnVmLCAmc2xlbiwgJnBrKSkKKysgICAgICAgIGdvdG8gZW5kOworKworKyAgICBpZiAoIUVW UF9WZXJpZnlJbml0X2V4KCZtY3R4LCBFVlBfZHNzMSgpLCBOVUxMKSkKKysgICAgICAgIGdvdG8g ZW5kOworKyAgICBpZiAoIUVWUF9WZXJpZnlVcGRhdGUoJm1jdHgsIGRnc3QsIHNpemVvZihkZ3N0 KSAtIDEpKQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIHIgPSBFVlBfVmVyaWZ5RmluYWwoJm1j dHgsIGJ1Ziwgc2xlbiwgJnBrKTsKKysgZW5kOgorKyAgICBFVlBfTURfQ1RYX2NsZWFudXAoJm1j dHgpOworKyAgICBpZiAoZHNhKQorKyAgICAgICAgRFNBX2ZyZWUoZHNhKTsKKysgICAgaWYgKHIg IT0gMSkKKysgICAgICAgIHJldHVybiAwOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrLyoKKysg KiBSU0E6IGdlbmVyYXRlIGtleXMgYW5kIHNpZ24sIHZlcmlmeSBpbnB1dCBwbGFpbnRleHQuCisr ICovCisrc3RhdGljIGludCBGSVBTX3JzYV90ZXN0KGludCBiYWQpCisreworKyAgICBSU0EgKmtl eTsKKysgICAgdW5zaWduZWQgY2hhciBpbnB1dF9wdGV4dFtdID0gImV0YW9ucmlzaGRsYyI7Cisr ICAgIHVuc2lnbmVkIGNoYXIgYnVmWzI1Nl07CisrICAgIHVuc2lnbmVkIGludCBzbGVuOworKyAg ICBCSUdOVU0gKmJuOworKyAgICBFVlBfTURfQ1RYIG1jdHg7CisrICAgIEVWUF9QS0VZIHBrOwor KyAgICBpbnQgciA9IDA7CisrCisrICAgIEVSUl9jbGVhcl9lcnJvcigpOworKyAgICBFVlBfTURf Q1RYX2luaXQoJm1jdHgpOworKyAgICBrZXkgPSBSU0FfbmV3KCk7CisrICAgIGJuID0gQk5fbmV3 KCk7CisrICAgIGlmICgha2V5IHx8ICFibikKKysgICAgICAgIHJldHVybiAwOworKyAgICBCTl9z ZXRfd29yZChibiwgNjU1MzcpOworKyAgICBpZiAoIVJTQV9nZW5lcmF0ZV9rZXlfZXgoa2V5LCAx MDI0LCBibiwgTlVMTCkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgQk5fZnJlZShibik7Cisr ICAgIGlmIChiYWQpCisrICAgICAgICBCTl9hZGRfd29yZChrZXktPm4sIDEpOworKworKyAgICBw ay50eXBlID0gRVZQX1BLRVlfUlNBOworKyAgICBway5wa2V5LnJzYSA9IGtleTsKKysKKysgICAg aWYgKCFFVlBfU2lnbkluaXRfZXgoJm1jdHgsIEVWUF9zaGExKCksIE5VTEwpKQorKyAgICAgICAg Z290byBlbmQ7CisrICAgIGlmICghRVZQX1NpZ25VcGRhdGUoJm1jdHgsIGlucHV0X3B0ZXh0LCBz aXplb2YoaW5wdXRfcHRleHQpIC0gMSkpCisrICAgICAgICBnb3RvIGVuZDsKKysgICAgaWYgKCFF VlBfU2lnbkZpbmFsKCZtY3R4LCBidWYsICZzbGVuLCAmcGspKQorKyAgICAgICAgZ290byBlbmQ7 CisrCisrICAgIGlmICghRVZQX1ZlcmlmeUluaXRfZXgoJm1jdHgsIEVWUF9zaGExKCksIE5VTEwp KQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIGlmICghRVZQX1ZlcmlmeVVwZGF0ZSgmbWN0eCwg aW5wdXRfcHRleHQsIHNpemVvZihpbnB1dF9wdGV4dCkgLSAxKSkKKysgICAgICAgIGdvdG8gZW5k OworKyAgICByID0gRVZQX1ZlcmlmeUZpbmFsKCZtY3R4LCBidWYsIHNsZW4sICZwayk7CisrIGVu ZDoKKysgICAgRVZQX01EX0NUWF9jbGVhbnVwKCZtY3R4KTsKKysgICAgaWYgKGtleSkKKysgICAg ICAgIFJTQV9mcmVlKGtleSk7CisrICAgIGlmIChyICE9IDEpCisrICAgICAgICByZXR1cm4gMDsK KysgICAgcmV0dXJuIDE7CisrfQorKworKy8qIFNIQTE6IGdlbmVyYXRlIGhhc2ggb2Yga25vd24g ZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJlIHRvIGtub3duCisrICAgcHJlY29tcHV0ZWQgY29ycmVj dCBoYXNoCisrKi8KKytzdGF0aWMgaW50IEZJUFNfc2hhMV90ZXN0KCkKKyt7CisrICAgIHVuc2ln bmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RfTEVOR1RIXSA9CisrICAgICAgICB7IDB4MTEsIDB4 ZjEsIDB4OWEsIDB4M2EsIDB4ZWMsIDB4MWEsIDB4MWUsIDB4OGUsIDB4NjUsIDB4ZDQsIDB4OWEs CisrMHgzOCwgMHgwYywgMHg4YiwgMHgxZSwgMHgyYywgMHhlOCwgMHhiMywgMHhjNSwgMHgxOCB9 OworKyAgICB1bnNpZ25lZCBjaGFyIHN0cltdID0gImV0YW9ucmlzaGQiOworKworKyAgICB1bnNp Z25lZCBjaGFyIG1kW1NIQV9ESUdFU1RfTEVOR1RIXTsKKysKKysgICAgRVJSX2NsZWFyX2Vycm9y KCk7CisrICAgIGlmICghRVZQX0RpZ2VzdChzdHIsIHNpemVvZihzdHIpIC0gMSwgbWQsIE5VTEws IEVWUF9zaGExKCksIE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChtZW1jbXAo bWQsIGRpZ2VzdCwgc2l6ZW9mKG1kKSkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgcmV0dXJu IDE7CisrfQorKworKy8qIFNIQTI1NjogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFs dWUgYW5kIGNvbXBhcmUgdG8ga25vd24KKysgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKKysq LworK3N0YXRpYyBpbnQgRklQU19zaGEyNTZfdGVzdCgpCisreworKyAgICB1bnNpZ25lZCBjaGFy IGRpZ2VzdFtTSEEyNTZfRElHRVNUX0xFTkdUSF0gPQorKyAgICAgICAgeyAweGY1LCAweDUzLCAw eGNkLCAweGI4LCAweGNmLCAweDEsIDB4ZWUsIDB4MTcsIDB4OWIsIDB4OTMsIDB4YzksCisrMHg2 OCwgMHhjMCwgMHhlYSwgMHg0MCwgMHg5MSwKKysgICAgICAgIDB4NiwgMHhlYywgMHg4ZSwgMHgx MSwgMHg5NiwgMHhjOCwgMHg1ZCwgMHgxYywgMHhhZiwgMHg2NCwgMHgyMiwgMHhlNiwKKysgICAg ICAgICAgICAweDUwLCAweDRmLCAweDQ3LCAweDU3CisrICAgIH07CisrICAgIHVuc2lnbmVkIGNo YXIgc3RyW10gPSAiZXRhb25yaXNoZCI7CisrCisrICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hBMjU2 X0RJR0VTVF9MRU5HVEhdOworKworKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFF VlBfRGlnZXN0KHN0ciwgc2l6ZW9mKHN0cikgLSAxLCBtZCwgTlVMTCwgRVZQX3NoYTI1NigpLCBO VUxMKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAobWVtY21wKG1kLCBkaWdlc3QsIHNp emVvZihtZCkpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIHJldHVybiAxOworK30KKysKKysv KiBTSEE1MTI6IGdlbmVyYXRlIGhhc2ggb2Yga25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJl IHRvIGtub3duCisrICAgcHJlY29tcHV0ZWQgY29ycmVjdCBoYXNoCisrKi8KKytzdGF0aWMgaW50 IEZJUFNfc2hhNTEyX3Rlc3QoKQorK3sKKysgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBNTEy X0RJR0VTVF9MRU5HVEhdID0KKysgICAgICAgIHsgMHg5OSwgMHhjOSwgMHhlOSwgMHg1YiwgMHg4 OCwgMHhkNCwgMHg3OCwgMHg4OCwgMHhkZiwgMHg4OCwgMHg1ZiwKKysweDk0LCAweDcxLCAweDY0 LCAweDI4LCAweGNhLAorKyAgICAgICAgMHgxNiwgMHgxZiwgMHgzZCwgMHhmNCwgMHgxZiwgMHhm MywgMHgwZiwgMHhjNSwgMHgwMywgMHg5OSwgMHhiMiwKKysgICAgICAgICAgICAweGQwLCAweGU3 LCAweDBiLCAweDk0LCAweDRhLAorKyAgICAgICAgMHg0NSwgMHhkMiwgMHg2YywgMHg0ZiwgMHgy MCwgMHgwNiwgMHhlZiwgMHg3MSwgMHhhOSwgMHgyNSwgMHg3ZiwKKysgICAgICAgICAgICAweDI0 LCAweGIxLCAweGQ5LCAweDQwLCAweDIyLAorKyAgICAgICAgMHg0OSwgMHg1NCwgMHgxMCwgMHhj MiwgMHgyMiwgMHg5ZCwgMHgyNywgMHhmZSwgMHhiZCwgMHhkNiwgMHhkNiwKKysgICAgICAgICAg ICAweGViLCAweDJkLCAweDQyLCAweDFkLCAweGEzCisrICAgIH07CisrICAgIHVuc2lnbmVkIGNo YXIgc3RyW10gPSAiZXRhb25yaXNoZCI7CisrCisrICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hBNTEy X0RJR0VTVF9MRU5HVEhdOworKworKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFF VlBfRGlnZXN0KHN0ciwgc2l6ZW9mKHN0cikgLSAxLCBtZCwgTlVMTCwgRVZQX3NoYTUxMigpLCBO VUxMKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAobWVtY21wKG1kLCBkaWdlc3QsIHNp emVvZihtZCkpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIHJldHVybiAxOworK30KKysKKysv KiBITUFDLVNIQTE6IGdlbmVyYXRlIGhhc2ggb2Yga25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21w YXJlIHRvIGtub3duCisrICAgcHJlY29tcHV0ZWQgY29ycmVjdCBoYXNoCisrKi8KKytzdGF0aWMg aW50IEZJUFNfaG1hY19zaGExX3Rlc3QoKQorK3sKKysgICAgdW5zaWduZWQgY2hhciBrZXlbXSA9 ICJldGFvbnJpc2hkIjsKKysgICAgdW5zaWduZWQgY2hhciBpdltdID0gIlNhbXBsZSB0ZXh0IjsK KysgICAgdW5zaWduZWQgY2hhciBrYXZhbFtFVlBfTUFYX01EX1NJWkVdID0KKysgICAgICAgIHsg MHg3MywgMHhmNywgMHhhMCwgMHg0OCwgMHhmOCwgMHg5NCwgMHhlZCwgMHhkZCwgMHgwYSwgMHhl YSwgMHhlYSwKKysweDU2LCAweDFiLCAweDYxLCAweDJlLCAweDcwLAorKyAgICAgICAgMHhiMiwg MHhmYiwgMHhlYywgMHhjNgorKyAgICB9OworKworKyAgICB1bnNpZ25lZCBjaGFyIG91dFtFVlBf TUFYX01EX1NJWkVdOworKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworKworKyAgICBFUlJfY2xl YXJfZXJyb3IoKTsKKysgICAgaWYgKCFITUFDCisrICAgICAgICAoRVZQX3NoYTEoKSwga2V5LCBz aXplb2Yoa2V5KSAtIDEsIGl2LCBzaXplb2YoaXYpIC0gMSwgb3V0LCAmb3V0bGVuKSkKKysgICAg ICAgIHJldHVybiAwOworKyAgICBpZiAobWVtY21wKG91dCwga2F2YWwsIG91dGxlbikpCisrICAg ICAgICByZXR1cm4gMDsKKysgICAgcmV0dXJuIDE7CisrfQorKworKy8qIEhNQUMtU0hBMjI0OiBn ZW5lcmF0ZSBoYXNoIG9mIGtub3duIGRpZ2VzdCB2YWx1ZSBhbmQgY29tcGFyZSB0byBrbm93bgor KyAgIHByZWNvbXB1dGVkIGNvcnJlY3QgaGFzaAorKyovCisrc3RhdGljIGludCBGSVBTX2htYWNf c2hhMjI0X3Rlc3QoKQorK3sKKysgICAgdW5zaWduZWQgY2hhciBrZXlbXSA9ICJldGFvbnJpc2hk IjsKKysgICAgdW5zaWduZWQgY2hhciBpdltdID0gIlNhbXBsZSB0ZXh0IjsKKysgICAgdW5zaWdu ZWQgY2hhciBrYXZhbFtFVlBfTUFYX01EX1NJWkVdID0KKysgICAgICAgIHsgMHg3NSwgMHg1OCwg MHhkNSwgMHhiZCwgMHg1NSwgMHg2ZCwgMHg4NywgMHgwZiwgMHg3NSwgMHhmZiwgMHhiZSwKKysw eDFjLCAweGIyLCAweGYwLCAweDIwLCAweDM1LAorKyAgICAgICAgMHhlNSwgMHg2MiwgMHg0OSwg MHhiNiwgMHg5NCwgMHhiOSwgMHhmYywgMHg2NSwgMHgzNCwgMHgzMywgMHgzYSwgMHgxOQorKyAg ICB9OworKworKyAgICB1bnNpZ25lZCBjaGFyIG91dFtFVlBfTUFYX01EX1NJWkVdOworKyAgICB1 bnNpZ25lZCBpbnQgb3V0bGVuOworKworKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYg KCFITUFDCisrICAgICAgICAoRVZQX3NoYTIyNCgpLCBrZXksIHNpemVvZihrZXkpIC0gMSwgaXYs IHNpemVvZihpdikgLSAxLCBvdXQsCisrICAgICAgICAgJm91dGxlbikpCisrICAgICAgICByZXR1 cm4gMDsKKysgICAgaWYgKG1lbWNtcChvdXQsIGthdmFsLCBvdXRsZW4pKQorKyAgICAgICAgcmV0 dXJuIDA7CisrICAgIHJldHVybiAxOworK30KKysKKysvKiBITUFDLVNIQTI1NjogZ2VuZXJhdGUg aGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24KKysgICBwcmVj b21wdXRlZCBjb3JyZWN0IGhhc2gKKysqLworK3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTI1Nl90 ZXN0KCkKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIga2V5W10gPSAiZXRhb25yaXNoZCI7CisrICAg IHVuc2lnbmVkIGNoYXIgaXZbXSA9ICJTYW1wbGUgdGV4dCI7CisrICAgIHVuc2lnbmVkIGNoYXIg a2F2YWxbRVZQX01BWF9NRF9TSVpFXSA9CisrICAgICAgICB7IDB4ZTksIDB4MTcsIDB4YzEsIDB4 N2IsIDB4NGMsIDB4NmIsIDB4NzcsIDB4ZGEsIDB4ZDIsIDB4MzAsIDB4MzYsCisrMHgwMiwgMHhm NSwgMHg3MiwgMHgzMywgMHg4NywKKysgICAgICAgIDB4OWYsIDB4YzYsIDB4NmUsIDB4N2IsIDB4 N2UsIDB4YTgsIDB4ZWEsIDB4YWEsIDB4OWYsIDB4YmEsIDB4ZWUsCisrICAgICAgICAgICAgMHg1 MSwgMHhmZiwgMHhkYSwgMHgyNCwgMHhmNAorKyAgICB9OworKworKyAgICB1bnNpZ25lZCBjaGFy IG91dFtFVlBfTUFYX01EX1NJWkVdOworKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworKworKyAg ICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFITUFDCisrICAgICAgICAoRVZQX3NoYTI1 NigpLCBrZXksIHNpemVvZihrZXkpIC0gMSwgaXYsIHNpemVvZihpdikgLSAxLCBvdXQsCisrICAg ICAgICAgJm91dGxlbikpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKG1lbWNtcChvdXQs IGthdmFsLCBvdXRsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIHJldHVybiAxOworK30K KysKKysvKiBITUFDLVNIQTM4NDogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUg YW5kIGNvbXBhcmUgdG8ga25vd24KKysgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKKysqLwor K3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTM4NF90ZXN0KCkKKyt7CisrICAgIHVuc2lnbmVkIGNo YXIga2V5W10gPSAiZXRhb25yaXNoZCI7CisrICAgIHVuc2lnbmVkIGNoYXIgaXZbXSA9ICJTYW1w bGUgdGV4dCI7CisrICAgIHVuc2lnbmVkIGNoYXIga2F2YWxbRVZQX01BWF9NRF9TSVpFXSA9Cisr ICAgICAgICB7IDB4YjIsIDB4OWQsIDB4NDAsIDB4NTgsIDB4MzIsIDB4YzQsIDB4ZTMsIDB4MzEs IDB4YjYsIDB4NjMsIDB4MDgsCisrMHgyNiwgMHg5OSwgMHhlZiwgMHgzYiwgMHgxMCwKKysgICAg ICAgIDB4ZTIsIDB4ZGYsIDB4ZjgsIDB4ZmYsIDB4YzYsIDB4ZTEsIDB4MDMsIDB4MjksIDB4ODEs IDB4MmEsIDB4MWIsCisrICAgICAgICAgICAgMHhhYywgMHhiMCwgMHgwNywgMHgzOSwgMHgwOCwK KysgICAgICAgIDB4ZjMsIDB4OTEsIDB4MzUsIDB4MTEsIDB4NzYsIDB4ZDYsIDB4NGMsIDB4MjAs IDB4ZmIsIDB4NGQsIDB4YzMsCisrICAgICAgICAgICAgMHhmMywgMHhiOCwgMHg5YiwgMHg4OCwg MHgxYworKyAgICB9OworKworKyAgICB1bnNpZ25lZCBjaGFyIG91dFtFVlBfTUFYX01EX1NJWkVd OworKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworKworKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsK KysgICAgaWYgKCFITUFDCisrICAgICAgICAoRVZQX3NoYTM4NCgpLCBrZXksIHNpemVvZihrZXkp IC0gMSwgaXYsIHNpemVvZihpdikgLSAxLCBvdXQsCisrICAgICAgICAgJm91dGxlbikpCisrICAg ICAgICByZXR1cm4gMDsKKysgICAgaWYgKG1lbWNtcChvdXQsIGthdmFsLCBvdXRsZW4pKQorKyAg ICAgICAgcmV0dXJuIDA7CisrICAgIHJldHVybiAxOworK30KKysKKysvKiBITUFDLVNIQTUxMjog Z2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24K KysgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKKysqLworK3N0YXRpYyBpbnQgRklQU19obWFj X3NoYTUxMl90ZXN0KCkKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIga2V5W10gPSAiZXRhb25yaXNo ZCI7CisrICAgIHVuc2lnbmVkIGNoYXIgaXZbXSA9ICJTYW1wbGUgdGV4dCI7CisrICAgIHVuc2ln bmVkIGNoYXIga2F2YWxbRVZQX01BWF9NRF9TSVpFXSA9CisrICAgICAgICB7IDB4Y2QsIDB4M2Us IDB4YjksIDB4NTEsIDB4YjgsIDB4YmMsIDB4N2YsIDB4OWEsIDB4MjMsIDB4YWYsIDB4ZjMsCisr MHg3NywgMHg1OSwgMHg4NSwgMHhhOSwgMHhlNiwKKysgICAgICAgIDB4ZjcsIDB4ZDEsIDB4NTEs IDB4OTYsIDB4MTcsIDB4ZTAsIDB4OTIsIDB4ZDgsIDB4YTYsIDB4M2IsIDB4YzEsCisrICAgICAg ICAgICAgMHhhZCwgMHg3ZSwgMHgyNCwgMHhjYSwgMHhiMSwKKysgICAgICAgIDB4ZDcsIDB4Nzks IDB4MGEsIDB4YTUsIDB4ZWEsIDB4MmMsIDB4MDIsIDB4NTgsIDB4MGIsIDB4YTYsIDB4NTIsCisr ICAgICAgICAgICAgMHg2YiwgMHg2MSwgMHg3ZiwgMHhlYiwgMHg5YywKKysgICAgICAgIDB4NDcs IDB4ODYsIDB4NWQsIDB4NzQsIDB4MmIsIDB4ODgsIDB4ZGYsIDB4ZWUsIDB4NDYsIDB4NjksIDB4 OTYsCisrICAgICAgICAgICAgMHgzZCwgMHhhNiwgMHhkOSwgMHgyYSwgMHg1MworKyAgICB9Owor KworKyAgICB1bnNpZ25lZCBjaGFyIG91dFtFVlBfTUFYX01EX1NJWkVdOworKyAgICB1bnNpZ25l ZCBpbnQgb3V0bGVuOworKworKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFITUFD CisrICAgICAgICAoRVZQX3NoYTUxMigpLCBrZXksIHNpemVvZihrZXkpIC0gMSwgaXYsIHNpemVv ZihpdikgLSAxLCBvdXQsCisrICAgICAgICAgJm91dGxlbikpCisrICAgICAgICByZXR1cm4gMDsK KysgICAgaWYgKG1lbWNtcChvdXQsIGthdmFsLCBvdXRsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7 CisrICAgIHJldHVybiAxOworK30KKysKKysvKiBESDogZ2VuZXJhdGUgc2hhcmVkIHBhcmFtZXRl cnMKKysqLworK3N0YXRpYyBpbnQgZGhfdGVzdCgpCisreworKyAgICBESCAqZGg7CisrICAgIEVS Ul9jbGVhcl9lcnJvcigpOworKyAgICBkaCA9IEZJUFNfZGhfbmV3KCk7CisrICAgIGlmICghZGgp CisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4 KGRoLCAxMDI0LCAyLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBGSVBTX2RoX2Zy ZWUoZGgpOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrLyogWmVyb2l6ZQorKyovCisrc3RhdGlj IGludCBaZXJvaXplKCkKKyt7CisrICAgIFJTQSAqa2V5OworKyAgICBCSUdOVU0gKmJuOworKyAg ICB1bnNpZ25lZCBjaGFyIHVzZXJrZXlbMTZdID0KKysgICAgICAgIHsgMHg0OCwgMHg1MCwgMHhm MCwgMHhhMywgMHgzYSwgMHhlZCwgMHhkMywgMHhhZiwgMHg2ZSwgMHg0NywgMHg3ZiwKKysweDgz LCAweDAyLCAweGIxLCAweDA5LCAweDY4IH07CisrICAgIGludCBpLCBuOworKworKyAgICBrZXkg PSBGSVBTX3JzYV9uZXcoKTsKKysgICAgYm4gPSBCTl9uZXcoKTsKKysgICAgaWYgKCFrZXkgfHwg IWJuKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIEJOX3NldF93b3JkKGJuLCA2NTUzNyk7Cisr ICAgIGlmICghUlNBX2dlbmVyYXRlX2tleV9leChrZXksIDEwMjQsIGJuLCBOVUxMKSkKKysgICAg ICAgIHJldHVybiAwOworKyAgICBCTl9mcmVlKGJuKTsKKysKKysgICAgbiA9IEJOX251bV9ieXRl cyhrZXktPmQpOworKyAgICBwcmludGYoIiBHZW5lcmF0ZWQgJWQgYnl0ZSBSU0EgcHJpdmF0ZSBr ZXlcbiIsIG4pOworKyAgICBwcmludGYoIlx0Qk4ga2V5IGJlZm9yZSBvdmVyd3JpdGluZzpcbiIp OworKyAgICBkb19ibl9wcmludChzdGRvdXQsIGtleS0+ZCk7CisrICAgIEJOX3JhbmQoa2V5LT5k LCBuICogOCwgLTEsIDApOworKyAgICBwcmludGYoIlx0Qk4ga2V5IGFmdGVyIG92ZXJ3cml0aW5n OlxuIik7CisrICAgIGRvX2JuX3ByaW50KHN0ZG91dCwga2V5LT5kKTsKKysKKysgICAgcHJpbnRm KCJcdGNoYXIgYnVmZmVyIGtleSBiZWZvcmUgb3ZlcndyaXRpbmc6IFxuXHRcdCIpOworKyAgICBm b3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHVzZXJrZXkpOyBpKyspCisrICAgICAgICBwcmludGYoIiUw MngiLCB1c2Vya2V5W2ldKTsKKysgICAgcHJpbnRmKCJcbiIpOworKyAgICBSQU5EX2J5dGVzKHVz ZXJrZXksIHNpemVvZiB1c2Vya2V5KTsKKysgICAgcHJpbnRmKCJcdGNoYXIgYnVmZmVyIGtleSBh ZnRlciBvdmVyd3JpdGluZzogXG5cdFx0Iik7CisrICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2Yo dXNlcmtleSk7IGkrKykKKysgICAgICAgIHByaW50ZigiJTAyeCIsIHVzZXJrZXlbaV0pOworKyAg ICBwcmludGYoIlxuIik7CisrCisrICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IEVy cm9yOworK2NvbnN0IGNoYXIgKkZhaWwoY29uc3QgY2hhciAqbXNnKQorK3sKKysgICAgZG9fcHJp bnRfZXJyb3JzKCk7CisrICAgIEVycm9yKys7CisrICAgIHJldHVybiBtc2c7CisrfQorKworK2lu dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyt7CisrCisrICAgIGludCBkb19jb3JydXB0 X3JzYV9rZXlnZW4gPSAwLCBkb19jb3JydXB0X2RzYV9rZXlnZW4gPSAwOworKyAgICBpbnQgYmFk X3JzYSA9IDAsIGJhZF9kc2EgPSAwOworKyAgICBpbnQgZG9fcm5nX3N0aWNrID0gMDsKKysgICAg aW50IG5vX2V4aXQgPSAwOworKworKyAgICBwcmludGYoIlx0RklQUy1tb2RlIHRlc3QgYXBwbGlj YXRpb25cblxuIik7CisrCisrICAgIC8qIExvYWQgZW50cm9weSBmcm9tIGV4dGVybmFsIGZpbGUs IGlmIGFueSAqLworKyAgICBSQU5EX2xvYWRfZmlsZSgiLnJuZCIsIDEwMjQpOworKworKyAgICBp ZiAoYXJndlsxXSkgeworKyAgICAgICAgLyogQ29ycnVwdGVkIEtBVCB0ZXN0cyAqLworKyAgICAg ICAgaWYgKCFzdHJjbXAoYXJndlsxXSwgImFlcyIpKSB7CisrICAgICAgICAgICAgRklQU19jb3Jy dXB0X2FlcygpOworKyAgICAgICAgICAgIHByaW50ZigiQUVTIGVuY3J5cHRpb24vZGVjcnlwdGlv biB3aXRoIGNvcnJ1cHRlZCBLQVQuLi5cbiIpOworKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21w KGFyZ3ZbMV0sICJkZXMiKSkgeworKyAgICAgICAgICAgIEZJUFNfY29ycnVwdF9kZXMoKTsKKysg ICAgICAgICAgICBwcmludGYoIkRFUzMtRUNCIGVuY3J5cHRpb24vZGVjcnlwdGlvbiB3aXRoIGNv cnJ1cHRlZCBLQVQuLi5cbiIpOworKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0s ICJkc2EiKSkgeworKyAgICAgICAgICAgIEZJUFNfY29ycnVwdF9kc2EoKTsKKysgICAgICAgICAg ICBwcmludGYKKysgICAgICAgICAgICAgICAgKCJEU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25h dHVyZSB2YWxpZGF0aW9uIHdpdGggY29ycnVwdGVkIEtBVC4uLlxuIik7CisrICAgICAgICB9IGVs c2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgInJzYSIpKSB7CisrICAgICAgICAgICAgRklQU19jb3Jy dXB0X3JzYSgpOworKyAgICAgICAgICAgIHByaW50ZgorKyAgICAgICAgICAgICAgICAoIlJTQSBr ZXkgZ2VuZXJhdGlvbiBhbmQgc2lnbmF0dXJlIHZhbGlkYXRpb24gd2l0aCBjb3JydXB0ZWQgS0FU Li4uXG4iKTsKKysgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAicnNha2V5Iikp IHsKKysgICAgICAgICAgICBwcmludGYKKysgICAgICAgICAgICAgICAgKCJSU0Ega2V5IGdlbmVy YXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0aW9uIHdpdGggY29ycnVwdGVkIGtleS4uLlxuIik7 CisrICAgICAgICAgICAgYmFkX3JzYSA9IDE7CisrICAgICAgICAgICAgbm9fZXhpdCA9IDE7Cisr ICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgInJzYWtleWdlbiIpKSB7CisrICAg ICAgICAgICAgZG9fY29ycnVwdF9yc2Ffa2V5Z2VuID0gMTsKKysgICAgICAgICAgICBub19leGl0 ID0gMTsKKysgICAgICAgICAgICBwcmludGYKKysgICAgICAgICAgICAgICAgKCJSU0Ega2V5IGdl bmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0aW9uIHdpdGggY29ycnVwdGVkIGtleWdlbi4u LlxuIik7CisrICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgImRzYWtleSIpKSB7 CisrICAgICAgICAgICAgcHJpbnRmCisrICAgICAgICAgICAgICAgICgiRFNBIGtleSBnZW5lcmF0 aW9uIGFuZCBzaWduYXR1cmUgdmFsaWRhdGlvbiB3aXRoIGNvcnJ1cHRlZCBrZXkuLi5cbiIpOwor KyAgICAgICAgICAgIGJhZF9kc2EgPSAxOworKyAgICAgICAgICAgIG5vX2V4aXQgPSAxOworKyAg ICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJkc2FrZXlnZW4iKSkgeworKyAgICAg ICAgICAgIGRvX2NvcnJ1cHRfZHNhX2tleWdlbiA9IDE7CisrICAgICAgICAgICAgbm9fZXhpdCA9 IDE7CisrICAgICAgICAgICAgcHJpbnRmCisrICAgICAgICAgICAgICAgICgiRFNBIGtleSBnZW5l cmF0aW9uIGFuZCBzaWduYXR1cmUgdmFsaWRhdGlvbiB3aXRoIGNvcnJ1cHRlZCBrZXlnZW4uLi5c biIpOworKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJzaGExIikpIHsKKysg ICAgICAgICAgICBGSVBTX2NvcnJ1cHRfc2hhMSgpOworKyAgICAgICAgICAgIHByaW50ZigiU0hB LTEgaGFzaCB3aXRoIGNvcnJ1cHRlZCBLQVQuLi5cbiIpOworKyAgICAgICAgfSBlbHNlIGlmICgh c3RyY21wKGFyZ3ZbMV0sICJybmciKSkgeworKyAgICAgICAgICAgIEZJUFNfY29ycnVwdF9ybmco KTsKKysgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAicm5nc3RpY2siKSkgewor KyAgICAgICAgICAgIGRvX3JuZ19zdGljayA9IDE7CisrICAgICAgICAgICAgbm9fZXhpdCA9IDE7 CisrICAgICAgICAgICAgcHJpbnRmKCJSTkcgdGVzdCB3aXRoIHN0dWNrIGNvbnRpbnVvdXMgdGVz dC4uLlxuIik7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIHByaW50ZigiQmFkIGFy Z3VtZW50IFwiJXNcIlxuIiwgYXJndlsxXSk7CisrICAgICAgICAgICAgZXhpdCgxKTsKKysgICAg ICAgIH0KKysgICAgICAgIGlmICghbm9fZXhpdCkgeworKyAgICAgICAgICAgIGlmICghRklQU19t b2RlX3NldCgxKSkgeworKyAgICAgICAgICAgICAgICBkb19wcmludF9lcnJvcnMoKTsKKysgICAg ICAgICAgICAgICAgcHJpbnRmKCJQb3dlci11cCBzZWxmIHRlc3QgZmFpbGVkXG4iKTsKKysgICAg ICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgcHJpbnRm KCJQb3dlci11cCBzZWxmIHRlc3Qgc3VjY2Vzc2Z1bFxuIik7CisrICAgICAgICAgICAgZXhpdCgw KTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvKiBOb24tQXBwcm92ZWQgY3J5cHRvZ3Jh cGhpYyBvcGVyYXRpb24KKysgICAgICovCisrICAgIHByaW50ZigiMS4gTm9uLUFwcHJvdmVkIGNy eXB0b2dyYXBoaWMgb3BlcmF0aW9uIHRlc3QuLi5cbiIpOworKyAgICBwcmludGYoIlx0YS4gSW5j bHVkZWQgYWxnb3JpdGhtIChELUgpLi4uIik7CisrICAgIHByaW50ZihkaF90ZXN0KCk/ICJzdWNj ZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOworKworKyAgICAvKiBQb3dlci11cCBzZWxm IHRlc3QKKysgICAgICovCisrICAgIEVSUl9jbGVhcl9lcnJvcigpOworKyAgICBwcmludGYoIjIu IEF1dG9tYXRpYyBwb3dlci11cCBzZWxmIHRlc3QuLi4iKTsKKysgICAgaWYgKCFGSVBTX21vZGVf c2V0KDEpKSB7CisrICAgICAgICBkb19wcmludF9lcnJvcnMoKTsKKysgICAgICAgIHByaW50ZihG YWlsKCJGQUlMRUQhXG4iKSk7CisrICAgICAgICBleGl0KDEpOworKyAgICB9CisrICAgIHByaW50 Zigic3VjY2Vzc2Z1bFxuIik7CisrICAgIGlmIChkb19jb3JydXB0X2RzYV9rZXlnZW4pCisrICAg ICAgICBGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbigpOworKyAgICBpZiAoZG9fY29ycnVwdF9yc2Ff a2V5Z2VuKQorKyAgICAgICAgRklQU19jb3JydXB0X3JzYV9rZXlnZW4oKTsKKysgICAgaWYgKGRv X3JuZ19zdGljaykKKysgICAgICAgIEZJUFNfcm5nX3N0aWNrKCk7CisrCisrICAgIC8qIEFFUyBl bmNyeXB0aW9uL2RlY3J5cHRpb24KKysgICAgICovCisrICAgIHByaW50ZigiMy4gQUVTIGVuY3J5 cHRpb24vZGVjcnlwdGlvbi4uLiIpOworKyAgICBwcmludGYoRklQU19hZXNfdGVzdCgpPyAic3Vj Y2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKKysKKysgICAgLyogUlNBIGtleSBnZW5l cmF0aW9uIGFuZCBlbmNyeXB0aW9uL2RlY3J5cHRpb24KKysgICAgICovCisrICAgIHByaW50Zigi NC4gUlNBIGtleSBnZW5lcmF0aW9uIGFuZCBlbmNyeXB0aW9uL2RlY3J5cHRpb24uLi4iKTsKKysg ICAgcHJpbnRmKEZJUFNfcnNhX3Rlc3QoYmFkX3JzYSkgPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwo IkZBSUxFRCFcbiIpKTsKKysKKysgICAgLyogREVTLUNCQyBlbmNyeXB0aW9uL2RlY3J5cHRpb24K KysgICAgICovCisrICAgIHByaW50ZigiNS4gREVTLUVDQiBlbmNyeXB0aW9uL2RlY3J5cHRpb24u Li4iKTsKKysgICAgcHJpbnRmKEZJUFNfZGVzM190ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFp bCgiRkFJTEVEIVxuIikpOworKworKyAgICAvKiBEU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25h dHVyZSB2YWxpZGF0aW9uCisrICAgICAqLworKyAgICBwcmludGYoIjYuIERTQSBrZXkgZ2VuZXJh dGlvbiBhbmQgc2lnbmF0dXJlIHZhbGlkYXRpb24uLi4iKTsKKysgICAgcHJpbnRmKEZJUFNfZHNh X3Rlc3QoYmFkX2RzYSkgPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKKysK KysgICAgLyogU0hBLTEgaGFzaAorKyAgICAgKi8KKysgICAgcHJpbnRmKCI3YS4gU0hBLTEgaGFz aC4uLiIpOworKyAgICBwcmludGYoRklQU19zaGExX3Rlc3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBG YWlsKCJGQUlMRUQhXG4iKSk7CisrCisrICAgIC8qIFNIQS0yNTYgaGFzaAorKyAgICAgKi8KKysg ICAgcHJpbnRmKCI3Yi4gU0hBLTI1NiBoYXNoLi4uIik7CisrICAgIHByaW50ZihGSVBTX3NoYTI1 Nl90ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOworKworKyAgICAv KiBTSEEtNTEyIGhhc2gKKysgICAgICovCisrICAgIHByaW50ZigiN2MuIFNIQS01MTIgaGFzaC4u LiIpOworKyAgICBwcmludGYoRklQU19zaGE1MTJfdGVzdCgpPyAic3VjY2Vzc2Z1bFxuIiA6IEZh aWwoIkZBSUxFRCFcbiIpKTsKKysKKysgICAgLyogSE1BQy1TSEEtMSBoYXNoCisrICAgICAqLwor KyAgICBwcmludGYoIjdkLiBITUFDLVNIQS0xIGhhc2guLi4iKTsKKysgICAgcHJpbnRmKEZJUFNf aG1hY19zaGExX3Rlc3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7Cisr CisrICAgIC8qIEhNQUMtU0hBLTIyNCBoYXNoCisrICAgICAqLworKyAgICBwcmludGYoIjdlLiBI TUFDLVNIQS0yMjQgaGFzaC4uLiIpOworKyAgICBwcmludGYoRklQU19obWFjX3NoYTIyNF90ZXN0 KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOworKworKyAgICAvKiBITUFD LVNIQS0yNTYgaGFzaAorKyAgICAgKi8KKysgICAgcHJpbnRmKCI3Zi4gSE1BQy1TSEEtMjU2IGhh c2guLi4iKTsKKysgICAgcHJpbnRmKEZJUFNfaG1hY19zaGEyNTZfdGVzdCgpPyAic3VjY2Vzc2Z1 bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKKysKKysgICAgLyogSE1BQy1TSEEtMzg0IGhhc2gK KysgICAgICovCisrICAgIHByaW50ZigiN2cuIEhNQUMtU0hBLTM4NCBoYXNoLi4uIik7CisrICAg IHByaW50ZihGSVBTX2htYWNfc2hhMzg0X3Rlc3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJG QUlMRUQhXG4iKSk7CisrCisrICAgIC8qIEhNQUMtU0hBLTUxMiBoYXNoCisrICAgICAqLworKyAg ICBwcmludGYoIjdoLiBITUFDLVNIQS01MTIgaGFzaC4uLiIpOworKyAgICBwcmludGYoRklQU19o bWFjX3NoYTUxMl90ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOwor KworKyAgICAvKiBOb24tQXBwcm92ZWQgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb24KKysgICAgICov CisrICAgIHByaW50ZigiOC4gTm9uLUFwcHJvdmVkIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uIHRl c3QuLi5cbiIpOworKyAgICBwcmludGYoIlx0YS4gSW5jbHVkZWQgYWxnb3JpdGhtIChELUgpLi4u Iik7CisrICAgIHByaW50ZihkaF90ZXN0KCk/ICJzdWNjZXNzZnVsIGFzIGV4cGVjdGVkXG4iCisr ICAgICAgICAgICA6IEZhaWwoImZhaWxlZCBJTkNPUlJFQ1RMWSFcbiIpKTsKKysKKysgICAgLyog WmVyb2l6YXRpb24KKysgICAgICovCisrICAgIHByaW50ZigiOS4gWmVyby1pemF0aW9uLi4uXG4i KTsKKysgICAgcHJpbnRmKFplcm9pemUoKT8gIlx0c3VjY2Vzc2Z1bCBhcyBleHBlY3RlZFxuIgor KyAgICAgICAgICAgOiBGYWlsKCJcdGZhaWxlZCBJTkNPUlJFQ1RMWSFcbiIpKTsKKysKKysgICAg cHJpbnRmKCJcbkFsbCB0ZXN0cyBjb21wbGV0ZWQgd2l0aCAlZCBlcnJvcnNcbiIsIEVycm9yKTsK KysgICAgcmV0dXJuIEVycm9yID8gMSA6IDA7CisrfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvTWFrZWZpbGUuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9NYWtlZmlsZQorLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL01ha2VmaWxl LmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDAyNDU4NDQgKzAyMDAKKysrKyBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZmlwcy9NYWtlZmlsZQkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMDI0NTg0NCAr MDIwMAorQEAgLTAsMCArMSwzNDEgQEAKKysjCisrIyBPcGVuU1NML2NyeXB0by9maXBzL01ha2Vm aWxlCisrIworKworK0RJUj0JZmlwcworK1RPUD0JLi4vLi4KKytDQz0JY2MKKytJTkNMVURFUz0K KytDRkxBRz0tZworK01BS0VGSUxFPQlNYWtlZmlsZQorK0FSPQkJYXIgcgorKworK0NGTEFHUz0g JChJTkNMVURFUykgJChDRkxBRykKKysKKytHRU5FUkFMPU1ha2VmaWxlCisrVEVTVD1maXBzX3Rl c3Rfc3VpdGUuYyBmaXBzX3JhbmR0ZXN0LmMKKytBUFBTPQorKworK1BST0dSQU09IGZpcHNfc3Rh bmRhbG9uZV9obWFjCisrRVhFPSAkKFBST0dSQU0pJChFWEVfRVhUKQorKworK0xJQj0kKFRPUCkv bGliY3J5cHRvLmEKKytMSUJTUkM9Zmlwc19hZXNfc2VsZnRlc3QuYyBmaXBzX2Rlc19zZWxmdGVz dC5jIGZpcHNfaG1hY19zZWxmdGVzdC5jIGZpcHNfcmFuZF9zZWxmdGVzdC5jIFwKKysgICAgZmlw c19yc2Ffc2VsZnRlc3QuYyBmaXBzX3NoYV9zZWxmdGVzdC5jIGZpcHMuYyBmaXBzX2RzYV9zZWxm dGVzdC5jICBmaXBzX3JhbmQuYyBcCisrICAgIGZpcHNfcnNhX3g5MzFnLmMgZmlwc19wb3N0LmMg Zmlwc19kcmJnX2N0ci5jIGZpcHNfZHJiZ19oYXNoLmMgZmlwc19kcmJnX2htYWMuYyBcCisrICAg IGZpcHNfZHJiZ19saWIuYyBmaXBzX2RyYmdfcmFuZC5jIGZpcHNfZHJiZ19zZWxmdGVzdC5jIGZp cHNfcmFuZF9saWIuYyBcCisrICAgIGZpcHNfY21hY19zZWxmdGVzdC5jIGZpcHNfZW5jLmMgZmlw c19tZC5jCisrCisrTElCT0JKPWZpcHNfYWVzX3NlbGZ0ZXN0Lm8gZmlwc19kZXNfc2VsZnRlc3Qu byBmaXBzX2htYWNfc2VsZnRlc3QubyBmaXBzX3JhbmRfc2VsZnRlc3QubyBcCisrICAgIGZpcHNf cnNhX3NlbGZ0ZXN0Lm8gZmlwc19zaGFfc2VsZnRlc3QubyBmaXBzLm8gZmlwc19kc2Ffc2VsZnRl c3QubyAgZmlwc19yYW5kLm8gXAorKyAgICBmaXBzX3JzYV94OTMxZy5vIGZpcHNfcG9zdC5vIGZp cHNfZHJiZ19jdHIubyBmaXBzX2RyYmdfaGFzaC5vIGZpcHNfZHJiZ19obWFjLm8gXAorKyAgICBm aXBzX2RyYmdfbGliLm8gZmlwc19kcmJnX3JhbmQubyBmaXBzX2RyYmdfc2VsZnRlc3QubyBmaXBz X3JhbmRfbGliLm8gXAorKyAgICBmaXBzX2NtYWNfc2VsZnRlc3QubyBmaXBzX2VuYy5vIGZpcHNf bWQubworKworK0xJQkNSWVBUTz0tTC4uIC1sY3J5cHRvCisrCisrU1JDPSAkKExJQlNSQykgZmlw c19zdGFuZGFsb25lX2htYWMuYworKworK0VYSEVBREVSPSBmaXBzLmggZmlwc19yYW5kLmgKKytI RUFERVI9CSQoRVhIRUFERVIpCisrCisrQUxMPSAgICAkKEdFTkVSQUwpICQoU1JDKSAkKEhFQURF UikKKysKKyt0b3A6CisrCShjZCAuLi8uLjsgJChNQUtFKSBESVJTPWNyeXB0byBTRElSUz0kKERJ Uikgc3ViX2FsbCkKKysKKythbGw6CWxpYiBleGUKKysKKytsaWI6CSQoTElCT0JKKQorKwkkKEFS KSAkKExJQikgJChMSUJPQkopCisrCSQoUkFOTElCKSAkKExJQikgfHwgZWNobyBOZXZlciBtaW5k LgorKwlAdG91Y2ggbGliCisrCisrZXhlOgkkKEVYRSkKKysKKytmaWxlczoKKysJJChQRVJMKSAk KFRPUCkvdXRpbC9maWxlcy5wbCBNYWtlZmlsZSA+PiAkKFRPUCkvTUlORk8KKysKKytsaW5rczoK KysJQCQoUEVSTCkgJChUT1ApL3V0aWwvbWtsaW5rLnBsIC4uLy4uL2luY2x1ZGUvb3BlbnNzbCAk KEVYSEVBREVSKQorKwlAJChQRVJMKSAkKFRPUCkvdXRpbC9ta2xpbmsucGwgLi4vLi4vdGVzdCAk KFRFU1QpCisrCUAkKFBFUkwpICQoVE9QKS91dGlsL21rbGluay5wbCAuLi8uLi9hcHBzICQoQVBQ UykKKysKKytpbnN0YWxsOgorKwlAWyAtbiAiJChJTlNUQUxMVE9QKSIgXSAjIHNob3VsZCBiZSBz ZXQgYnkgdG9wIE1ha2VmaWxlLi4uCisrCUBoZWFkZXJsaXN0PSIkKEVYSEVBREVSKSI7IGZvciBp IGluICQkaGVhZGVybGlzdCA7IFwKKysJZG8gIFwKKysJKGNwICQkaSAkKElOU1RBTExfUFJFRklY KSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaTsgXAorKwljaG1vZCA2NDQgJChJTlNU QUxMX1BSRUZJWCkkKElOU1RBTExUT1ApL2luY2x1ZGUvb3BlbnNzbC8kJGkgKTsgXAorKwlkb25l OworKworK3RhZ3M6CisrCWN0YWdzICQoU1JDKQorKworK3Rlc3RzOgorKworK2xpbnQ6CisrCWxp bnQgLURMSU5UICQoSU5DTFVERVMpICQoU1JDKT5mbHVmZgorKworK2RlcGVuZDoKKysJQFsgLW4g IiQoTUFLRURFUEVORCkiIF0gIyBzaG91bGQgYmUgc2V0IGJ5IHVwcGVyIE1ha2VmaWxlLi4uCisr CSQoTUFLRURFUEVORCkgLS0gJChDRkxBRykgJChJTkNMVURFUykgJChERVBGTEFHKSAtLSAkKFBS T0dTKSAkKExJQlNSQykKKysKKytkY2xlYW46CisrCSQoUEVSTCkgLXBlICdpZiAoL14jIERPIE5P VCBERUxFVEUgVEhJUyBMSU5FLykge3ByaW50OyBleGl0KDApO30nICQoTUFLRUZJTEUpID5NYWtl ZmlsZS5uZXcKKysJbXYgLWYgTWFrZWZpbGUubmV3ICQoTUFLRUZJTEUpCisrCisrY2xlYW46Cisr CXJtIC1mICoubyAqLm9iaiBsaWIgdGFncyBjb3JlIC5wdXJlIC5uZnMqICoub2xkICouYmFrIGZs dWZmCisrCisrJChFWEUpOiAkKFBST0dSQU0pLm8KKysJRklQU19TSEFfQVNNPSIiOyBmb3IgaSBp biAkKFNIQTFfQVNNX09CSikgc2hhMjU2Lm87IGRvIEZJUFNfU0hBX0FTTT0iJCRGSVBTX1NIQV9B U00gLi4vc2hhLyQkaSIgOyBkb25lOyBcCisrCWZvciBpIGluICQoQ1BVSURfT0JKKTsgZG8gRklQ U19TSEFfQVNNPSIkJEZJUFNfU0hBX0FTTSAuLi8kJGkiIDsgZG9uZTsgXAorKwkkKENDKSAtbyAk QCAkKENGTEFHUykgJChQUk9HUkFNKS5vICQkRklQU19TSEFfQVNNCisrCisrIyBETyBOT1QgREVM RVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgorKworK2ZpcHMubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgK KytmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvY3J5cHRvLmgKKytmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9lcnIuaAorK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2 cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKKytmaXBzLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9maXBzX3JhbmQuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oCisrZmlwcy5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2Jq X21hYy5oCisrZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCisrZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb3BlbnNzbHYuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHMubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcnNhLmgK KytmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvc3RhY2suaAorK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tz LmggZmlwcy5jIGZpcHNfbG9jbC5oCisrZmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX2Flc19z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKKytmaXBzX2Flc19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvZXJyLmgKKytmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZw LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAorK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAorK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKKytmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAorK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKKytmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKytmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvc3RhY2suaAorK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfYWVzX3NlbGZ0ZXN0LmMKKytmaXBzX2Rlc19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9i aW8uaAorK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8u aAorK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAorK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCisrZmlwc19k ZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKKytmaXBzX2Rlc19z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCisrZmlwc19kZXNfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfZGVzX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCisrZmlwc19kZXNfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKKytmaXBzX2Rlc19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNfZGVzX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfZGVzX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCisrZmlwc19kZXNfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19kZXNfc2VsZnRlc3QuYwor K2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9hc24xLmgKKytmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9iaW8uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKKytmaXBzX2RyYmdfY3RyLm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAu aAorK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgKKytmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAorK2ZpcHNf ZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfZHJiZ19j dHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX2RyYmdfY3Ry Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlwc19kcmJnX2N0ci5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFu ZC5oCisrZmlwc19kcmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgK KytmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oCisrZmlwc19kcmJnX2N0ci5vOiBmaXBzX2RyYmdfY3Ry LmMgZmlwc19yYW5kX2xjbC5oCisrZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKKytmaXBzX2RyYmdfaGFzaC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0 by5oCisrZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCisrZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2ZpcHMuaAorK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9maXBzX3JhbmQuaAorK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9o bWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAorK2ZpcHNfZHJiZ19oYXNoLm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKKytmaXBzX2RyYmdfaGFzaC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAorK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAorK2Zp cHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNf ZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCisrZmlwc19kcmJnX2hh c2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19kcmJnX2hhc2guYwor K2ZpcHNfZHJiZ19oYXNoLm86IGZpcHNfcmFuZF9sY2wuaAorK2ZpcHNfZHJiZ19obWFjLm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCisr Zmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9jcnlwdG8uaAorK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaAorK2ZpcHNfZHJiZ19obWFj Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKKytmaXBzX2RyYmdfaG1hYy5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgKKytmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytm aXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCisrZmlwc19k cmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX2Ry YmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNfZHJiZ19o bWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oIC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9yYW5kLmgKKytmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2Fm ZXN0YWNrLmgKKytmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2su aAorK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZp cHNfZHJiZ19obWFjLmMKKytmaXBzX2RyYmdfaG1hYy5vOiBmaXBzX3JhbmRfbGNsLmgKKytmaXBz X2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvYXNuMS5oCisrZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlv LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisrZmlwc19kcmJnX2xpYi5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKKytm aXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvZmlwcy5oCisrZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv Zmlwc19yYW5kLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2htYWMuaAorK2ZpcHNfZHJiZ19saWIu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29i al9tYWMuaAorK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMu aAorK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgK KytmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlw c19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvcmFuZC5oCisrZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvc2FmZXN0YWNrLmgKKytmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9z dGFjay5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oCisrZmlwc19kcmJnX2xpYi5v OiBmaXBzX2RyYmdfbGliLmMgZmlwc19sb2NsLmggZmlwc19yYW5kX2xjbC5oCisrZmlwc19kcmJn X3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9hc24xLmgKKytmaXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisrZmlwc19kcmJnX3JhbmQubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCisrZmlw c19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9maXBzLmgKKytmaXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv Zmlwc19yYW5kLmgKKytmaXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1h Yy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19kcmJnX3JhbmQubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAorK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKKytmaXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvb3BlbnNzbGNvbmYuaAorK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29zc2xfdHlwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAorK2ZpcHNfZHJiZ19y YW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfZHJiZ19yYW5k Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCisrZmlwc19kcmJnX3JhbmQubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19kcmJnX3JhbmQuYworK2ZpcHNfZHJi Z19yYW5kLm86IGZpcHNfcmFuZF9sY2wuaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaAorK2ZpcHNf ZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX2RyYmdf c2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisrZmlwc19kcmJnX3Nl bGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9lcnIuaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv ZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgKKytmaXBzX2RyYmdfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2htYWMuaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCisrZmlwc19kcmJnX3NlbGZ0ZXN0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19kcmJnX3NlbGZ0ZXN0LmMKKytmaXBzX2RyYmdf c2VsZnRlc3QubzogZmlwc19kcmJnX3NlbGZ0ZXN0LmggZmlwc19sb2NsLmggZmlwc19yYW5kX2xj bC5oCisrZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYm4uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKKytmaXBz X2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZHNhLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2Vfb3MyLmgKKytmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZXJyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCisrZmlwc19kc2Ffc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wv bGhhc2guaAorK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpf bWFjLmgKKytmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0 cy5oCisrZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xj b25mLmgKKytmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNz bHYuaAorK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5 cC5oCisrZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFj ay5oCisrZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgK KytmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBm aXBzX2RzYV9zZWxmdGVzdC5jCisrZmlwc19kc2Ffc2VsZnRlc3QubzogZmlwc19sb2NsLmgKKytm aXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2NyeXB0by5oCisrZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAorK2ZpcHNfaG1hY19z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2ZpcHMuaAorK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv aG1hYy5oCisrZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFz aC5oCisrZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFj LmgKKytmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMu aAorK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNv bmYuaAorK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNz bHYuaAorK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90 eXAuaAorK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0 YWNrLmgKKytmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNr LmgKKytmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tz LmggZmlwc19obWFjX3NlbGZ0ZXN0LmMKKytmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKKytmaXBzX3Bvc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAor K2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZHNhLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2Vfb3MyLmgKKytmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5o IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvZmlwcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAorK2ZpcHNf cG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9saGFzaC5oCisrZmlwc19wb3N0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb3BlbnNzbHYuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNf cG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9yc2EuaAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKKytmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19sb2NsLmggZmlwc19wb3N0LmMKKytmaXBzX3JhbmQu bzogLi4vLi4vZV9vcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaAorK2ZpcHNfcmFuZC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8u aAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Vfb3MyLmgKKytmaXBzX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2Vyci5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZmlwcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAor K2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9saGFzaC5oCisrZmlwc19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpf bWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfcmFuZC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3BlbnNzbHYuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAor K2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv c3RhY2suaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaAorK2ZpcHNfcmFuZC5vOiBm aXBzX2xvY2wuaCBmaXBzX3JhbmQuYworK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vZV9vcy5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaAorK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX3JhbmRf bGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvZV9vczIuaAorK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5o IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaAorK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgKKytm aXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2xoYXNoLmgKKytmaXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vYmpfbWFjLmgKKytmaXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpl Y3RzLmgKKytmaXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29u Zi5oCisrZmlwc19yYW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAor K2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4vLi4v aW5jbHVkZS9vcGVuc3NsL3JhbmQuaAorK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL3NhZmVzdGFjay5oCisrZmlwc19yYW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvc3RhY2suaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaAorK2ZpcHNfcmFuZF9s aWIubzogZmlwc19yYW5kX2xpYi5jCisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCisrZmlwc19yYW5k X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAorK2ZpcHNfcmFuZF9zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKKytmaXBzX3JhbmRfc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2Vyci5oCisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAu aCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oCisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytmaXBzX3JhbmRfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvcmFuZC5oCisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvc3RhY2suaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2xvY2wuaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiBm aXBzX3JhbmRfc2VsZnRlc3QuYworK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCisrZmlwc19yc2Ffc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2JuLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2NyeXB0by5oCisrZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vf b3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCisrZmlwc19yc2Ffc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgK KytmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAorK2Zp cHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytmaXBz X3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCisrZmlwc19y c2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBz X3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNf cnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCisrZmlwc19y c2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JzYS5oCisrZmlwc19yc2Ffc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCisrZmlwc19yc2Ffc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKKytmaXBzX3JzYV9zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX3JzYV9zZWxmdGVzdC5j CisrZmlwc19yc2FfeDkzMWcubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvYm4uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKKytmaXBzX3JzYV94OTMx Zy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wv ZXJyLmgKKytmaXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19yc2FfeDkzMWcubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9vc3NsX3R5cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yc2EuaAorK2ZpcHNfcnNh X3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfcnNhX3g5 MzFnLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCisrZmlwc19yc2FfeDkzMWcubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19yc2FfeDkzMWcuYworK2ZpcHNf c2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2Jpby5oCisrZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2NyeXB0by5oCisrZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCisrZmlwc19zaGFfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBz LmgKKytmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAor K2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytm aXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCisrZmlw c19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytm aXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2Zp cHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCisrZmlw c19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCisrZmlw c19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NoYS5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9zdGFjay5oCisrZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL3N5bWhhY2tzLmggZmlwc19zaGFfc2VsZnRlc3QuYworZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2htYWMvaG1hYy5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2htYWMv aG1hYy5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2htYWMvaG1hYy5jLmZpcHMJMjAxNS0w My0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v aG1hYy9obWFjLmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDEyNDU4NjcgKzAyMDAKK0BAIC04OSwx MiArODksNiBAQCBpbnQgSE1BQ19Jbml0X2V4KEhNQUNfQ1RYICpjdHgsIGNvbnN0IHZvCisgICAg ICAgICAgICAgRVZQZXJyKEVWUF9GX0hNQUNfSU5JVF9FWCwgRVZQX1JfRElTQUJMRURfRk9SX0ZJ UFMpOworICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQorLSAgICAgICAgLyoKKy0g ICAgICAgICAqIE90aGVyIGFsZ29yaXRobSBibG9ja2luZyB3aWxsIGJlIGRvbmUgaW4gRklQU19j bWFjX2luaXQsIHZpYQorLSAgICAgICAgICogRklQU19obWFjX2luaXRfZXgoKS4KKy0gICAgICAg ICAqLworLSAgICAgICAgaWYgKCFpbXBsICYmICFjdHgtPmlfY3R4LmVuZ2luZSkKKy0gICAgICAg ICAgICByZXR1cm4gRklQU19obWFjX2luaXRfZXgoY3R4LCBrZXksIGxlbiwgbWQsIE5VTEwpOwor ICAgICB9CisgI2VuZGlmCisgCitAQCAtMTA1LDYgKzk5LDEzIEBAIGludCBITUFDX0luaXRfZXgo SE1BQ19DVFggKmN0eCwgY29uc3Qgdm8KKyAgICAgICAgIG1kID0gY3R4LT5tZDsKKyAKKyAgICAg aWYgKGtleSAhPSBOVUxMKSB7CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICAgICAgaWYgKEZJ UFNfbW9kZSgpICYmICEobWQtPmZsYWdzICYgRVZQX01EX0ZMQUdfRklQUykKKysgICAgICAgICAg ICAmJiAoIShjdHgtPm1kX2N0eC5mbGFncyAmIEVWUF9NRF9DVFhfRkxBR19OT05fRklQU19BTExP VykKKysgICAgICAgICAgICAgICAgfHwgIShjdHgtPmlfY3R4LmZsYWdzICYgRVZQX01EX0NUWF9G TEFHX05PTl9GSVBTX0FMTE9XKQorKyAgICAgICAgICAgICAgICB8fCAhKGN0eC0+b19jdHguZmxh Z3MgJiBFVlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSkKKysgICAgICAgICAgICBnb3Rv IGVycjsKKysjZW5kaWYKKyAgICAgICAgIHJlc2V0ID0gMTsKKyAgICAgICAgIGogPSBFVlBfTURf YmxvY2tfc2l6ZShtZCk7CisgICAgICAgICBPUEVOU1NMX2Fzc2VydChqIDw9IChpbnQpc2l6ZW9m KGN0eC0+a2V5KSk7CitAQCAtMTU3LDEwICsxNTgsNiBAQCBpbnQgSE1BQ19Jbml0KEhNQUNfQ1RY ICpjdHgsIGNvbnN0IHZvaWQKKyAKKyBpbnQgSE1BQ19VcGRhdGUoSE1BQ19DVFggKmN0eCwgY29u c3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGxlbikKKyB7CistI2lmZGVmIE9QRU5TU0xf RklQUworLSAgICBpZiAoRklQU19tb2RlKCkgJiYgIWN0eC0+aV9jdHguZW5naW5lKQorLSAgICAg ICAgcmV0dXJuIEZJUFNfaG1hY191cGRhdGUoY3R4LCBkYXRhLCBsZW4pOworLSNlbmRpZgorICAg ICByZXR1cm4gRVZQX0RpZ2VzdFVwZGF0ZSgmY3R4LT5tZF9jdHgsIGRhdGEsIGxlbik7CisgfQor IAorQEAgLTE2OCwxMCArMTY1LDYgQEAgaW50IEhNQUNfRmluYWwoSE1BQ19DVFggKmN0eCwgdW5z aWduZWQgYworIHsKKyAgICAgdW5zaWduZWQgaW50IGk7CisgICAgIHVuc2lnbmVkIGNoYXIgYnVm W0VWUF9NQVhfTURfU0laRV07CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAoRklQU19t b2RlKCkgJiYgIWN0eC0+aV9jdHguZW5naW5lKQorLSAgICAgICAgcmV0dXJuIEZJUFNfaG1hY19m aW5hbChjdHgsIG1kLCBsZW4pOworLSNlbmRpZgorIAorICAgICBpZiAoIUVWUF9EaWdlc3RGaW5h bF9leCgmY3R4LT5tZF9jdHgsIGJ1ZiwgJmkpKQorICAgICAgICAgZ290byBlcnI7CitAQCAtMjEx LDEyICsyMDQsNiBAQCBpbnQgSE1BQ19DVFhfY29weShITUFDX0NUWCAqZGN0eCwgSE1BQ19DCisg Cisgdm9pZCBITUFDX0NUWF9jbGVhbnVwKEhNQUNfQ1RYICpjdHgpCisgeworLSNpZmRlZiBPUEVO U1NMX0ZJUFMKKy0gICAgaWYgKEZJUFNfbW9kZSgpICYmICFjdHgtPmlfY3R4LmVuZ2luZSkgewor LSAgICAgICAgRklQU19obWFjX2N0eF9jbGVhbnVwKGN0eCk7CistICAgICAgICByZXR1cm47Cist ICAgIH0KKy0jZW5kaWYKKyAgICAgRVZQX01EX0NUWF9jbGVhbnVwKCZjdHgtPmlfY3R4KTsKKyAg ICAgRVZQX01EX0NUWF9jbGVhbnVwKCZjdHgtPm9fY3R4KTsKKyAgICAgRVZQX01EX0NUWF9jbGVh bnVwKCZjdHgtPm1kX2N0eCk7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWRjMi9t ZGMyZGdzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21kYzIvbWRjMmRnc3QuYworLS0t IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9tZGMyL21kYzJkZ3N0LmMuZmlwcwkyMDE1LTAzLTE5IDE0 OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9tZGMyL21k YzJkZ3N0LmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDEyNDU4NjcgKzAyMDAKK0BAIC03Niw3ICs3 Niw3IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgKigoYykrKyk9KHVuc2lnbmVkIGNoYXIp KCgobCk+PjI0TCkmMHhmZikpCisgCisgc3RhdGljIHZvaWQgbWRjMl9ib2R5KE1EQzJfQ1RYICpj LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGxlbik7CistZmlwc19tZF9pbml0KE1E QzIpCisrbm9uZmlwc19tZF9pbml0KE1EQzIpCisgeworICAgICBjLT5udW0gPSAwOworICAgICBj LT5wYWRfdHlwZSA9IDE7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWQyL21kMl9k Z3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWQyL21kMl9kZ3N0LmMKKy0tLSBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vbWQyL21kMl9kZ3N0LmMuZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAw LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9tZDIvbWQyX2Rnc3Qu YwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMTI0NTg2NyArMDIwMAorQEAgLTYyLDYgKzYyLDExIEBA CisgI2luY2x1ZGUgPG9wZW5zc2wvbWQyLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbHYu aD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaWZkZWYgT1BFTlNTTF9GSVBTCisr IyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjZW5kaWYKKysKKysjaW5jbHVkZSA8b3BlbnNz bC9lcnIuaD4KKyAKKyBjb25zdCBjaGFyIE1EMl92ZXJzaW9uW10gPSAiTUQyIiBPUEVOU1NMX1ZF UlNJT05fUFRFWFQ7CisgCitAQCAtMTE5LDcgKzEyNCw3IEBAIGNvbnN0IGNoYXIgKk1EMl9vcHRp b25zKHZvaWQpCisgICAgICAgICByZXR1cm4gKCJtZDIoaW50KSIpOworIH0KKyAKKy1maXBzX21k X2luaXQoTUQyKQorK25vbmZpcHNfbWRfaW5pdChNRDIpCisgeworICAgICBjLT5udW0gPSAwOwor ICAgICBtZW1zZXQoYy0+c3RhdGUsIDAsIHNpemVvZiBjLT5zdGF0ZSk7CitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vbWQ0L21kNF9kZ3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vbWQ0L21kNF9kZ3N0LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWQ0L21kNF9kZ3N0 LmMuZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9tZDQvbWQ0X2Rnc3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMTI0NTg2 NyArMDIwMAorQEAgLTcyLDcgKzcyLDcgQEAgY29uc3QgY2hhciBNRDRfdmVyc2lvbltdID0gIk1E NCIgT1BFTlNTTAorICNkZWZpbmUgSU5JVF9EQVRBX0MgKHVuc2lnbmVkIGxvbmcpMHg5OGJhZGNm ZUwKKyAjZGVmaW5lIElOSVRfREFUQV9EICh1bnNpZ25lZCBsb25nKTB4MTAzMjU0NzZMCisgCist Zmlwc19tZF9pbml0KE1ENCkKKytub25maXBzX21kX2luaXQoTUQ0KQorIHsKKyAgICAgbWVtc2V0 KGMsIDAsIHNpemVvZigqYykpOworICAgICBjLT5BID0gSU5JVF9EQVRBX0E7CitkaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vbWQ1L21kNV9kZ3N0LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWQ1L21kNV9k Z3N0LmMuZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9tZDUvbWQ1X2Rnc3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMTI0 NTg2NyArMDIwMAorQEAgLTcyLDcgKzcyLDcgQEAgY29uc3QgY2hhciBNRDVfdmVyc2lvbltdID0g Ik1ENSIgT1BFTlNTTAorICNkZWZpbmUgSU5JVF9EQVRBX0MgKHVuc2lnbmVkIGxvbmcpMHg5OGJh ZGNmZUwKKyAjZGVmaW5lIElOSVRfREFUQV9EICh1bnNpZ25lZCBsb25nKTB4MTAzMjU0NzZMCisg CistZmlwc19tZF9pbml0KE1ENSkKKytub25maXBzX21kX2luaXQoTUQ1KQorIHsKKyAgICAgbWVt c2V0KGMsIDAsIHNpemVvZigqYykpOworICAgICBjLT5BID0gSU5JVF9EQVRBX0E7CitkaWZmIC11 cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb19maXBzLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vb19maXBzLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb19maXBzLmMuZmlwcwkyMDE1 LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9vX2ZpcHMuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMTI0NTg2NyArMDIwMAorQEAgLTgwLDYg KzgwLDggQEAgaW50IEZJUFNfbW9kZV9zZXQoaW50IHIpCisgIyBpZm5kZWYgRklQU19BVVRIX1VT RVJfUEFTUworICMgIGRlZmluZSBGSVBTX0FVVEhfVVNFUl9QQVNTICAgICAiRGVmYXVsdCBGSVBT IENyeXB0byBVc2VyIFBhc3N3b3JkIgorICMgZW5kaWYKKysgICAgaWYgKHIgJiYgRklQU19tb2R1 bGVfbW9kZSgpKSAvKiBjYW4gYmUgaW1wbGljaXRseSBpbml0aWFsaXplZCBieSBPUEVOU1NMX2lu aXQoKSAqLworKyAgICAgICAgcmV0dXJuIDE7CisgICAgIGlmICghRklQU19tb2R1bGVfbW9kZV9z ZXQociwgRklQU19BVVRIX1VTRVJfUEFTUykpCisgICAgICAgICByZXR1cm4gMDsKKyAgICAgaWYg KHIpCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb19pbml0LmMuZmlwcyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vb19pbml0LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb19pbml0 LmMuZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9vX2luaXQuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMTI0NTg2NyArMDIw MAorQEAgLTU2LDggKzU2LDM3IEBACisgI2luY2x1ZGUgPGVfb3MuaD4KKyAjaW5jbHVkZSA8b3Bl bnNzbC9lcnIuaD4KKyAjaWZkZWYgT1BFTlNTTF9GSVBTCisrIyBpbmNsdWRlIDxzeXMvdHlwZXMu aD4KKysjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisrIyBpbmNsdWRlIDxmY250bC5oPgorKyMgaW5j bHVkZSA8dW5pc3RkLmg+CisrIyBpbmNsdWRlIDxlcnJuby5oPgorKyMgaW5jbHVkZSA8c3RkbGli Lmg+CisgIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKyAjIGluY2x1ZGUgPG9wZW5zc2wvcmFu ZC5oPgorKworKyMgZGVmaW5lIEZJUFNfTU9ERV9TV0lUQ0hfRklMRSAiL3Byb2Mvc3lzL2NyeXB0 by9maXBzX2VuYWJsZWQiCisrCisrc3RhdGljIHZvaWQgaW5pdF9maXBzX21vZGUodm9pZCkKKyt7 CisrICAgIGNoYXIgYnVmWzJdID0gIjAiOworKyAgICBpbnQgZmQ7CisrCisrICAgIGlmIChnZXRl bnYoIk9QRU5TU0xfRk9SQ0VfRklQU19NT0RFIikgIT0gTlVMTCkgeworKyAgICAgICAgYnVmWzBd ID0gJzEnOworKyAgICB9IGVsc2UgaWYgKChmZCA9IG9wZW4oRklQU19NT0RFX1NXSVRDSF9GSUxF LCBPX1JET05MWSkpID49IDApIHsKKysgICAgICAgIHdoaWxlIChyZWFkKGZkLCBidWYsIHNpemVv ZihidWYpKSA8IDAgJiYgZXJybm8gPT0gRUlOVFIpIDsKKysgICAgICAgIGNsb3NlKGZkKTsKKysg ICAgfQorKyAgICAvKiBGYWlsdXJlIHJlYWRpbmcgdGhlIGZpcHMgbW9kZSBzd2l0Y2ggZmlsZSBt ZWFucyBqdXN0IG5vdAorKyAgICAgKiBzd2l0Y2hpbmcgaW50byBGSVBTIG1vZGUuIFdlIHdvdWxk IGJyZWFrIHRvbyBtYW55IHRoaW5ncworKyAgICAgKiBvdGhlcndpc2UuLgorKyAgICAgKi8KKysK KysgICAgaWYgKGJ1ZlswXSA9PSAnMScpIHsKKysgICAgICAgIEZJUFNfbW9kZV9zZXQoMSk7Cisr ICAgIH0KKyt9CisgI2VuZGlmCisgCisgLyoKK0BAIC02NSwxOSArOTQsMjYgQEAKKyAgKiBzZXRz IEZJUFMgY2FsbGJhY2tzCisgICovCisgCistdm9pZCBPUEVOU1NMX2luaXQodm9pZCkKKyt2b2lk IE9QRU5TU0xfaW5pdF9saWJyYXJ5KHZvaWQpCisgeworICAgICBzdGF0aWMgaW50IGRvbmUgPSAw OworICAgICBpZiAoZG9uZSkKKyAgICAgICAgIHJldHVybjsKKyAgICAgZG9uZSA9IDE7CisgI2lm ZGVmIE9QRU5TU0xfRklQUworLSAgICBGSVBTX3NldF9sb2NraW5nX2NhbGxiYWNrcyhDUllQVE9f bG9jaywgQ1JZUFRPX2FkZF9sb2NrKTsKKy0gICAgRklQU19zZXRfZXJyb3JfY2FsbGJhY2tzKEVS Ul9wdXRfZXJyb3IsIEVSUl9hZGRfZXJyb3JfdmRhdGEpOworLSAgICBGSVBTX3NldF9tYWxsb2Nf Y2FsbGJhY2tzKENSWVBUT19tYWxsb2MsIENSWVBUT19mcmVlKTsKKyAgICAgUkFORF9pbml0X2Zp cHMoKTsKKysgICAgaW5pdF9maXBzX21vZGUoKTsKKysgICAgaWYgKCFGSVBTX21vZGUoKSkgewor KyAgICAgICAgLyogQ2xlYW4gdXAgcHJlbWF0dXJlbHkgc2V0IGRlZmF1bHQgcmFuZCBtZXRob2Qg Ki8KKysgICAgICAgIFJBTkRfc2V0X3JhbmRfbWV0aG9kKE5VTEwpOworKyAgICB9CisgI2VuZGlm CisgI2lmIDAKKyAgICAgZnByaW50ZihzdGRlcnIsICJDYWxsZWQgT1BFTlNTTF9pbml0XG4iKTsK KyAjZW5kaWYKKyB9CisrCisrdm9pZCBPUEVOU1NMX2luaXQodm9pZCkKKyt7CisrICAgIE9QRU5T U0xfaW5pdF9saWJyYXJ5KCk7CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL29w ZW5zc2xjb25mLmguaW4uZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb3BlbnNzbGNvbmYuaC5p bgorLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9vcGVuc3NsY29uZi5oLmluLmZpcHMJMjAxNS0w MS0yMCAxMzozMzozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v b3BlbnNzbGNvbmYuaC5pbgkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMTI0NTg2NyArMDIwMAorQEAg LTEsNSArMSwyMCBAQAorIC8qIGNyeXB0by9vcGVuc3NsY29uZi5oLmluICovCisgCisrI2lmZGVm IE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORAorKworKy8qIEluY2x1ZGUgYW55IHN5bWJvbHMgaGVy ZSB0aGF0IGhhdmUgdG8gYmUgZXhwbGljaXRseSBzZXQgdG8gZW5hYmxlIGEgZmVhdHVyZQorKyAq IHRoYXQgc2hvdWxkIGJlIHZpc2libGUgdG8gbWFrZWRlcGVuZC4KKysgKgorKyAqIFtPdXIgIm1h a2UgZGVwZW5kIiBkb2Vzbid0IGFjdHVhbGx5IGxvb2sgYXQgdGhpcywgd2UgdXNlIGFjdHVhbCBi dWlsZCBzZXR0aW5ncworKyAqIGluc3RlYWQ7IHdlIHdhbnQgdG8gbWFrZSBpdCBlYXN5IHRvIHJl bW92ZSBzdWJkaXJlY3RvcmllcyB3aXRoIGRpc2FibGVkIGFsZ29yaXRobXMuXQorKyAqLworKwor KyNpZm5kZWYgT1BFTlNTTF9GSVBTCisrI2RlZmluZSBPUEVOU1NMX0ZJUFMKKysjZW5kaWYKKysK KysjZW5kaWYKKysKKyAvKiBHZW5lcmF0ZSA4MDM4NiBjb2RlPyAqLworICN1bmRlZiBJMzg2X09O TFkKKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yYW5kL21kX3JhbmQuYy5maXBz IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yYW5kL21kX3JhbmQuYworLS0tIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9yYW5kL21kX3JhbmQuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAw ICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JhbmQvbWRfcmFuZC5jCTIwMTUtMDQt MjIgMTY6MDg6NDAuMzAyMjQ1ODkxICswMjAwCitAQCAtMzkxLDcgKzM5MSwxMCBAQCBpbnQgc3Ns ZWF5X3JhbmRfYnl0ZXModW5zaWduZWQgY2hhciAqYnVmCisgICAgIENSWVBUT193X3VubG9jayhD UllQVE9fTE9DS19SQU5EMik7CisgICAgIGNyeXB0b19sb2NrX3JhbmQgPSAxOworIAorLSAgICBp ZiAoIWluaXRpYWxpemVkKSB7CisrICAgIC8qIGFsd2F5cyBwb2xsIGZvciBleHRlcm5hbCBlbnRy b3B5IGluIEZJUFMgbW9kZSwgZHJiZyBwcm92aWRlcyB0aGUgCisrICAgICAqIGV4cGFuc2lvbgor KyAgICAgKi8KKysgICAgaWYgKCFpbml0aWFsaXplZCB8fCBGSVBTX21vZHVsZV9tb2RlKCkpIHsK KyAgICAgICAgIFJBTkRfcG9sbCgpOworICAgICAgICAgaW5pdGlhbGl6ZWQgPSAxOworICAgICB9 CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmFuZC9yYW5kLmguZmlwcyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vcmFuZC9yYW5kLmgKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmFu ZC9yYW5kLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjA0NDIzOTc4MiArMDIwMAorKysrIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9yYW5kL3JhbmQuaAkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMjI0 NTg5MSArMDIwMAorQEAgLTEzMywxNiArMTMzLDM0IEBAIHZvaWQgRVJSX2xvYWRfUkFORF9zdHJp bmdzKHZvaWQpOworIC8qIEVycm9yIGNvZGVzIGZvciB0aGUgUkFORCBmdW5jdGlvbnMuICovCisg CisgLyogRnVuY3Rpb24gY29kZXMuICovCisrIyBkZWZpbmUgUkFORF9GX0VOR19SQU5EX0dFVF9S QU5EX01FVEhPRCAgICAgICAgICAgICAgICAgIDEwOAorKyMgZGVmaW5lIFJBTkRfRl9GSVBTX1JB TkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMKKysjIGRlZmluZSBSQU5EX0Zf RklQU19SQU5EX0JZVEVTICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAyCisrIyBkZWZpbmUg UkFORF9GX0ZJUFNfUkFORF9TRVRfRFQgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNgorKyMg ZGVmaW5lIFJBTkRfRl9GSVBTX1g5MzFfU0VUX0RUICAgICAgICAgICAgICAgICAgICAgICAgICAx MDYKKysjIGRlZmluZSBSQU5EX0ZfRklQU19TRVRfRFQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMTA0CisrIyBkZWZpbmUgUkFORF9GX0ZJUFNfU0VUX1BSTkdfU0VFRCAgICAgICAgICAg ICAgICAgICAgICAgIDEwNworKyMgZGVmaW5lIFJBTkRfRl9GSVBTX1NFVF9URVNUX01PREUgICAg ICAgICAgICAgICAgICAgICAgICAxMDUKKyAjIGRlZmluZSBSQU5EX0ZfUkFORF9HRVRfUkFORF9N RVRIT0QgICAgICAgICAgICAgICAgICAgICAgMTAxCistIyBkZWZpbmUgUkFORF9GX1JBTkRfSU5J VF9GSVBTICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMgorKyMgZGVmaW5lIFJBTkRfRl9S QU5EX0lOSVRfRklQUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDkKKyAjIGRlZmluZSBS QU5EX0ZfU1NMRUFZX1JBTkRfQllURVMgICAgICAgICAgICAgICAgICAgICAgICAgMTAwCisgCisg LyogUmVhc29uIGNvZGVzLiAqLworLSMgZGVmaW5lIFJBTkRfUl9EVUFMX0VDX0RSQkdfRElTQUJM RUQgICAgICAgICAgICAgICAgICAgICAxMDQKKy0jIGRlZmluZSBSQU5EX1JfRVJST1JfSU5JVElB TElTSU5HX0RSQkcgICAgICAgICAgICAgICAgICAgMTAyCistIyBkZWZpbmUgUkFORF9SX0VSUk9S X0lOU1RBTlRJQVRJTkdfRFJCRyAgICAgICAgICAgICAgICAgIDEwMworLSMgZGVmaW5lIFJBTkRf Ul9OT19GSVBTX1JBTkRPTV9NRVRIT0RfU0VUICAgICAgICAgICAgICAgICAxMDEKKysjIGRlZmlu ZSBSQU5EX1JfRFVBTF9FQ19EUkJHX0RJU0FCTEVEICAgICAgICAgICAgICAgICAgICAgMTE0Cisr IyBkZWZpbmUgUkFORF9SX0VSUk9SX0lOSVRJQUxJU0lOR19EUkJHICAgICAgICAgICAgICAgICAg IDExMgorKyMgZGVmaW5lIFJBTkRfUl9FUlJPUl9JTlNUQU5USUFUSU5HX0RSQkcgICAgICAgICAg ICAgICAgICAxMTMKKysjIGRlZmluZSBSQU5EX1JfTk9OX0ZJUFNfTUVUSE9EICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTA1CisrIyBkZWZpbmUgUkFORF9SX05PVF9JTl9URVNUX01PREUgICAg ICAgICAgICAgICAgICAgICAgICAgIDEwNgorKyMgZGVmaW5lIFJBTkRfUl9OT19GSVBTX1JBTkRP TV9NRVRIT0RfU0VUICAgICAgICAgICAgICAgICAxMTEKKysjIGRlZmluZSBSQU5EX1JfTk9fS0VZ X1NFVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3CisrIyBkZWZpbmUgUkFORF9S X1BSTkdfQVNLSU5HX0ZPUl9UT09fTVVDSCAgICAgICAgICAgICAgICAgIDEwMQorKyMgZGVmaW5l IFJBTkRfUl9QUk5HX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDgKKysj IGRlZmluZSBSQU5EX1JfUFJOR19LRVlFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MTA5CisrIyBkZWZpbmUgUkFORF9SX1BSTkdfTk9UX1JFS0VZRUQgICAgICAgICAgICAgICAgICAg ICAgICAgIDEwMgorKyMgZGVmaW5lIFJBTkRfUl9QUk5HX05PVF9SRVNFRURFRCAgICAgICAgICAg ICAgICAgICAgICAgICAxMDMKKyAjIGRlZmluZSBSQU5EX1JfUFJOR19OT1RfU0VFREVEICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTAwCisrIyBkZWZpbmUgUkFORF9SX1BSTkdfU0VFRF9NVVNU X05PVF9NQVRDSF9LRVkgICAgICAgICAgICAgIDExMAorKyMgZGVmaW5lIFJBTkRfUl9QUk5HX1NU VUNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQKKyAKKyAjaWZkZWYgIF9fY3Bs dXNwbHVzCisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JpcGVtZC9ybWRfZGdz dC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JpcGVtZC9ybWRfZGdzdC5jCistLS0gb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL3JpcGVtZC9ybWRfZGdzdC5jLmZpcHMJMjAxNS0wMy0xOSAxNDox OTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmlwZW1kL3Jt ZF9kZ3N0LmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDIyNDU4OTEgKzAyMDAKK0BAIC03MCw3ICs3 MCw3IEBAIHZvaWQgcmlwZW1kMTYwX2Jsb2NrX3g4NihSSVBFTUQxNjBfQ1RYICoKKyB2b2lkIHJp cGVtZDE2MF9ibG9jayhSSVBFTUQxNjBfQ1RYICpjLCB1bnNpZ25lZCBsb25nICpwLCBzaXplX3Qg bnVtKTsKKyAjZW5kaWYKKyAKKy1maXBzX21kX2luaXQoUklQRU1EMTYwKQorK25vbmZpcHNfbWRf aW5pdChSSVBFTUQxNjApCisgeworICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7CisgICAg IGMtPkEgPSBSSVBFTUQxNjBfQTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2Ev cnNhX2NycHQuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2NycHQuYworLS0t IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2NycHQuYy5maXBzCTIwMTUtMDMtMTkgMTQ6 MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2Ff Y3JwdC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzAyMjQ1ODkxICswMjAwCitAQCAtODksOSArODks OSBAQCBpbnQgUlNBX3ByaXZhdGVfZW5jcnlwdChpbnQgZmxlbiwgY29uc3QKKyAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICp0bywgUlNBICpyc2EsIGludCBwYWRkaW5nKQor IHsKKyAjaWZkZWYgT1BFTlNTTF9GSVBTCistICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKHJzYS0+ bWV0aC0+ZmxhZ3MgJiBSU0FfRkxBR19GSVBTX01FVEhPRCkKKy0gICAgICAgICYmICEocnNhLT5m bGFncyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKSkgeworLSAgICAgICAgUlNBZXJyKFJTQV9G X1JTQV9QUklWQVRFX0VOQ1JZUFQsIFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QpOworKyAgICBp ZiAoRklQU19tb2RlKCkgJiYgIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cp KSB7CisrICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX1BSSVZBVEVfRU5DUllQVCwKKysgICAgICAg ICAgICAgICBSU0FfUl9PUEVSQVRJT05fTk9UX0FMTE9XRURfSU5fRklQU19NT0RFKTsKKyAgICAg ICAgIHJldHVybiAtMTsKKyAgICAgfQorICNlbmRpZgorQEAgLTExNSw5ICsxMTUsOSBAQCBpbnQg UlNBX3B1YmxpY19kZWNyeXB0KGludCBmbGVuLCBjb25zdCB1CisgICAgICAgICAgICAgICAgICAg ICAgICBSU0EgKnJzYSwgaW50IHBhZGRpbmcpCisgeworICNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0g ICAgaWYgKEZJUFNfbW9kZSgpICYmICEocnNhLT5tZXRoLT5mbGFncyAmIFJTQV9GTEFHX0ZJUFNf TUVUSE9EKQorLSAgICAgICAgJiYgIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxM T1cpKSB7CistICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX1BVQkxJQ19ERUNSWVBULCBSU0FfUl9O T05fRklQU19SU0FfTUVUSE9EKTsKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmICEocnNhLT5mbGFn cyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKSkgeworKyAgICAgICAgUlNBZXJyKFJTQV9GX1JT QV9QVUJMSUNfREVDUllQVCwKKysgICAgICAgICAgICAgICBSU0FfUl9PUEVSQVRJT05fTk9UX0FM TE9XRURfSU5fRklQU19NT0RFKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorICNlbmRp ZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfZWF5LmMuZmlwcyBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9lYXkuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9yc2EvcnNhX2VheS5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAK KysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9lYXkuYwkyMDE1LTA0LTIyIDE2OjA4 OjQwLjMwMjI0NTg5MSArMDIwMAorQEAgLTExNCw2ICsxMTQsMTAgQEAKKyAjaW5jbHVkZSA8b3Bl bnNzbC9ibi5oPgorICNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgorICNpbmNsdWRlIDxvcGVuc3Ns L3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaWZkZWYgT1BFTlNTTF9GSVBT CisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjZW5kaWYKKyAKKyAjaWZuZGVmIFJTQV9O VUxMCisgCitAQCAtMTQwLDcgKzE0NCw3IEBAIHN0YXRpYyBSU0FfTUVUSE9EIHJzYV9wa2NzMV9l YXlfbWV0aCA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlmIGUgPT0g MyAqLworICAgICBSU0FfZWF5X2luaXQsCisgICAgIFJTQV9lYXlfZmluaXNoLAorLSAgICAwLCAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KKysgICAgUlNBX0ZMQUdfRklQU19N RVRIT0QsICAgICAgIC8qIGZsYWdzICovCisgICAgIE5VTEwsCisgICAgIDAsICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiByc2Ffc2lnbiAqLworICAgICAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogcnNhX3ZlcmlmeSAqLworQEAgLTE2MCw2ICsxNjQsMjIgQEAgc3RhdGljIGludCBS U0FfZWF5X3B1YmxpY19lbmNyeXB0KGludCBmbAorICAgICB1bnNpZ25lZCBjaGFyICpidWYgPSBO VUxMOworICAgICBCTl9DVFggKmN0eCA9IE5VTEw7CisgCisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMK KysgICAgaWYgKEZJUFNfbW9kZSgpKSB7CisrICAgICAgICBpZiAoRklQU19zZWxmdGVzdF9mYWls ZWQoKSkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9FQVlfUFVCTElDX0VOQ1JZ UFQsCisrICAgICAgICAgICAgICAgICAgICBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwor KyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCEocnNh LT5mbGFncyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQorKyAgICAgICAgICAgICYmIChCTl9u dW1fYml0cyhyc2EtPm4pIDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgewor KyAgICAgICAgICAgIFJTQWVycihSU0FfRl9SU0FfRUFZX1BVQkxJQ19FTkNSWVBULCBSU0FfUl9L RVlfU0laRV9UT09fU01BTEwpOworKyAgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgIH0K KysgICAgfQorKyMgZW5kaWYKKysKKyAgICAgaWYgKEJOX251bV9iaXRzKHJzYS0+bikgPiBPUEVO U1NMX1JTQV9NQVhfTU9EVUxVU19CSVRTKSB7CisgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX0VB WV9QVUJMSUNfRU5DUllQVCwgUlNBX1JfTU9EVUxVU19UT09fTEFSR0UpOworICAgICAgICAgcmV0 dXJuIC0xOworQEAgLTM2MSw2ICszODEsMjIgQEAgc3RhdGljIGludCBSU0FfZWF5X3ByaXZhdGVf ZW5jcnlwdChpbnQgZgorICAgICBCSUdOVU0gKnVuYmxpbmQgPSBOVUxMOworICAgICBCTl9CTElO RElORyAqYmxpbmRpbmcgPSBOVUxMOworIAorKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlm IChGSVBTX21vZGUoKSkgeworKyAgICAgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsK KysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9SU0FfRUFZX1BSSVZBVEVfRU5DUllQVCwKKysg ICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAg ICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCEocnNhLT5mbGFn cyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQorKyAgICAgICAgICAgICYmIChCTl9udW1fYml0 cyhyc2EtPm4pIDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgeworKyAgICAg ICAgICAgIFJTQWVycihSU0FfRl9SU0FfRUFZX1BSSVZBVEVfRU5DUllQVCwgUlNBX1JfS0VZX1NJ WkVfVE9PX1NNQUxMKTsKKysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICB9CisrICAg IH0KKysjIGVuZGlmCisrCisgICAgIGlmICgoY3R4ID0gQk5fQ1RYX25ldygpKSA9PSBOVUxMKQor ICAgICAgICAgZ290byBlcnI7CisgICAgIEJOX0NUWF9zdGFydChjdHgpOworQEAgLTQ5Nyw2ICs1 MzMsMjIgQEAgc3RhdGljIGludCBSU0FfZWF5X3ByaXZhdGVfZGVjcnlwdChpbnQgZgorICAgICBC SUdOVU0gKnVuYmxpbmQgPSBOVUxMOworICAgICBCTl9CTElORElORyAqYmxpbmRpbmcgPSBOVUxM OworIAorKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKSkgeworKyAg ICAgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgICAgICBGSVBTZXJy KEZJUFNfRl9SU0FfRUFZX1BSSVZBVEVfREVDUllQVCwKKysgICAgICAgICAgICAgICAgICAgIEZJ UFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICAgICAgcmV0dXJuIC0xOworKyAg ICAgICAgfQorKworKyAgICAgICAgaWYgKCEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PTl9GSVBT X0FMTE9XKQorKyAgICAgICAgICAgICYmIChCTl9udW1fYml0cyhyc2EtPm4pIDwgT1BFTlNTTF9S U0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgeworKyAgICAgICAgICAgIFJTQWVycihSU0FfRl9S U0FfRUFZX1BSSVZBVEVfREVDUllQVCwgUlNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKKysgICAg ICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICB9CisrICAgIH0KKysjIGVuZGlmCisrCisgICAg IGlmICgoY3R4ID0gQk5fQ1RYX25ldygpKSA9PSBOVUxMKQorICAgICAgICAgZ290byBlcnI7Cisg ICAgIEJOX0NUWF9zdGFydChjdHgpOworQEAgLTYyMyw2ICs2NzUsMjIgQEAgc3RhdGljIGludCBS U0FfZWF5X3B1YmxpY19kZWNyeXB0KGludCBmbAorICAgICB1bnNpZ25lZCBjaGFyICpidWYgPSBO VUxMOworICAgICBCTl9DVFggKmN0eCA9IE5VTEw7CisgCisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMK KysgICAgaWYgKEZJUFNfbW9kZSgpKSB7CisrICAgICAgICBpZiAoRklQU19zZWxmdGVzdF9mYWls ZWQoKSkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9FQVlfUFVCTElDX0RFQ1JZ UFQsCisrICAgICAgICAgICAgICAgICAgICBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwor KyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCEocnNh LT5mbGFncyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQorKyAgICAgICAgICAgICYmIChCTl9u dW1fYml0cyhyc2EtPm4pIDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgewor KyAgICAgICAgICAgIFJTQWVycihSU0FfRl9SU0FfRUFZX1BVQkxJQ19ERUNSWVBULCBSU0FfUl9L RVlfU0laRV9UT09fU01BTEwpOworKyAgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgIH0K KysgICAgfQorKyMgZW5kaWYKKysKKyAgICAgaWYgKEJOX251bV9iaXRzKHJzYS0+bikgPiBPUEVO U1NMX1JTQV9NQVhfTU9EVUxVU19CSVRTKSB7CisgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX0VB WV9QVUJMSUNfREVDUllQVCwgUlNBX1JfTU9EVUxVU19UT09fTEFSR0UpOworICAgICAgICAgcmV0 dXJuIC0xOworQEAgLTg4Niw2ICs5NTQsOSBAQCBzdGF0aWMgaW50IFJTQV9lYXlfbW9kX2V4cChC SUdOVU0gKnIwLCBjCisgCisgc3RhdGljIGludCBSU0FfZWF5X2luaXQoUlNBICpyc2EpCisgewor KyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsKKysjIGVu ZGlmCisgICAgIHJzYS0+ZmxhZ3MgfD0gUlNBX0ZMQUdfQ0FDSEVfUFVCTElDIHwgUlNBX0ZMQUdf Q0FDSEVfUFJJVkFURTsKKyAgICAgcmV0dXJuICgxKTsKKyB9CitkaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vcnNhL3JzYV9lcnIuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2Ev cnNhX2Vyci5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfZXJyLmMuZmlwcwky MDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9yc2EvcnNhX2Vyci5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzAyMjQ1ODkxICswMjAwCitA QCAtMTM2LDYgKzEzNiw4IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgUlNBX3N0cl9mdW5jdHNb XQorICAgICB7RVJSX0ZVTkMoUlNBX0ZfUlNBX1BVQkxJQ19FTkNSWVBUKSwgIlJTQV9wdWJsaWNf ZW5jcnlwdCJ9LAorICAgICB7RVJSX0ZVTkMoUlNBX0ZfUlNBX1BVQl9ERUNPREUpLCAiUlNBX1BV Ql9ERUNPREUifSwKKyAgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9TRVRVUF9CTElORElORyksICJS U0Ffc2V0dXBfYmxpbmRpbmcifSwKKysgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9TRVRfREVGQVVM VF9NRVRIT0QpLCAiUlNBX3NldF9kZWZhdWx0X21ldGhvZCJ9LAorKyAgICB7RVJSX0ZVTkMoUlNB X0ZfUlNBX1NFVF9NRVRIT0QpLCAiUlNBX3NldF9tZXRob2QifSwKKyAgICAge0VSUl9GVU5DKFJT QV9GX1JTQV9TSUdOKSwgIlJTQV9zaWduIn0sCisgICAgIHtFUlJfRlVOQyhSU0FfRl9SU0FfU0lH Tl9BU04xX09DVEVUX1NUUklORyksCisgICAgICAiUlNBX3NpZ25fQVNOMV9PQ1RFVF9TVFJJTkci fSwKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2dlbi5jLmZpcHMgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfZ2VuLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vcnNhL3JzYV9nZW4uYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAw CisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfZ2VuLmMJMjAxNS0wNC0yMiAxNjow ODo0MC4zMDMyNDU5MTQgKzAyMDAKK0BAIC02OSw2ICs2OSw4MCBAQAorICNpbmNsdWRlIDxvcGVu c3NsL3JzYS5oPgorICNpZmRlZiBPUEVOU1NMX0ZJUFMKKyAjIGluY2x1ZGUgPG9wZW5zc2wvZmlw cy5oPgorKyMgaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjIGluY2x1ZGUgPG9wZW5zc2wvZXZw Lmg+CisrCisrc3RhdGljIGludCBmaXBzX3JzYV9wYWlyd2lzZV9mYWlsID0gMDsKKysKKyt2b2lk IEZJUFNfY29ycnVwdF9yc2Ffa2V5Z2VuKHZvaWQpCisreworKyAgICBmaXBzX3JzYV9wYWlyd2lz ZV9mYWlsID0gMTsKKyt9CisrCisraW50IGZpcHNfY2hlY2tfcnNhKFJTQSAqcnNhKQorK3sKKysg ICAgY29uc3QgdW5zaWduZWQgY2hhciB0YnNbXSA9ICJSU0EgUGFpcndpc2UgQ2hlY2sgRGF0YSI7 CisrICAgIHVuc2lnbmVkIGNoYXIgKmN0YnVmID0gTlVMTCwgKnB0YnVmID0gTlVMTDsKKysgICAg aW50IGxlbiwgcmV0ID0gMDsKKysgICAgRVZQX1BLRVkgKnBrOworKworKyAgICBpZiAoKHBrID0g RVZQX1BLRVlfbmV3KCkpID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgRVZQ X1BLRVlfc2V0MV9SU0EocGssIHJzYSk7CisrCisrICAgIC8qIFBlcmZvcm0gcGFpcndpc2UgY29u c2lzdGVuY3kgc2lnbmF0dXJlIHRlc3QgKi8KKysgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJl X3Rlc3QocGssIHRicywgLTEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIDAsIEVWUF9zaGExKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVW UF9NRF9DVFhfRkxBR19QQURfUEtDUzEsIE5VTEwpCisrICAgICAgICB8fCAhZmlwc19wa2V5X3Np Z25hdHVyZV90ZXN0KHBrLCB0YnMsIC0xLCBOVUxMLCAwLCBFVlBfc2hhMSgpLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1g5MzEsIE5V TEwpCisrICAgICAgICB8fCAhZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCB0YnMsIC0xLCBO VUxMLCAwLCBFVlBfc2hhMSgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywgTlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysg ICAgLyogTm93IHBlcmZvcm0gcGFpcndpc2UgY29uc2lzdGVuY3kgZW5jcnlwdC9kZWNyeXB0IHRl c3QgKi8KKysgICAgY3RidWYgPSBPUEVOU1NMX21hbGxvYyhSU0Ffc2l6ZShyc2EpKTsKKysgICAg aWYgKCFjdGJ1ZikKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBsZW4gPQorKyAgICAgICAg UlNBX3B1YmxpY19lbmNyeXB0KHNpemVvZih0YnMpIC0gMSwgdGJzLCBjdGJ1ZiwgcnNhLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QS0NTMV9QQURESU5HKTsKKysgICAgaWYgKGxl biA8PSAwKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIC8qIENoZWNrIGNpcGhlcnRleHQgZG9l c24ndCBtYXRjaCBwbGFpbnRleHQgKi8KKysgICAgaWYgKChsZW4gPT0gKHNpemVvZih0YnMpIC0g MSkpICYmICFtZW1jbXAodGJzLCBjdGJ1ZiwgbGVuKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAg ICBwdGJ1ZiA9IE9QRU5TU0xfbWFsbG9jKFJTQV9zaXplKHJzYSkpOworKworKyAgICBpZiAoIXB0 YnVmKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGxlbiA9IFJTQV9wcml2YXRlX2RlY3J5cHQo bGVuLCBjdGJ1ZiwgcHRidWYsIHJzYSwgUlNBX1BLQ1MxX1BBRERJTkcpOworKyAgICBpZiAobGVu ICE9IChzaXplb2YodGJzKSAtIDEpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmIChtZW1j bXAocHRidWYsIHRicywgbGVuKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICByZXQgPSAx OworKworKyAgICBpZiAoIXB0YnVmKQorKyAgICAgICAgZ290byBlcnI7CisrCisrIGVycjoKKysg ICAgaWYgKHJldCA9PSAwKSB7CisrICAgICAgICBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKCk7Cisr ICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0NIRUNLX1JTQSwgRklQU19SX1BBSVJXSVNFX1RF U1RfRkFJTEVEKTsKKysgICAgfQorKworKyAgICBpZiAoY3RidWYpCisrICAgICAgICBPUEVOU1NM X2ZyZWUoY3RidWYpOworKyAgICBpZiAocHRidWYpCisrICAgICAgICBPUEVOU1NMX2ZyZWUocHRi dWYpOworKyAgICBpZiAocGspCisrICAgICAgICBFVlBfUEtFWV9mcmVlKHBrKTsKKysKKysgICAg cmV0dXJuIHJldDsKKyt9CisgI2VuZGlmCisgCisgc3RhdGljIGludCByc2FfYnVpbHRpbl9rZXln ZW4oUlNBICpyc2EsIGludCBiaXRzLCBCSUdOVU0gKmVfdmFsdWUsCitAQCAtODQsNyArMTU4LDcg QEAgc3RhdGljIGludCByc2FfYnVpbHRpbl9rZXlnZW4oUlNBICpyc2EsCisgaW50IFJTQV9nZW5l cmF0ZV9rZXlfZXgoUlNBICpyc2EsIGludCBiaXRzLCBCSUdOVU0gKmVfdmFsdWUsIEJOX0dFTkNC ICpjYikKKyB7CisgI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAoRklQU19tb2RlKCkgJiYg IShyc2EtPm1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRIT0QpCisrICAgIGlmIChGSVBT X21vZHVsZV9tb2RlKCkgJiYgIShyc2EtPm1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRI T0QpCisgICAgICAgICAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykp IHsKKyAgICAgICAgIFJTQWVycihSU0FfRl9SU0FfR0VORVJBVEVfS0VZX0VYLCBSU0FfUl9OT05f RklQU19SU0FfTUVUSE9EKTsKKyAgICAgICAgIHJldHVybiAwOworQEAgLTkyLDEwICsxNjYsNiBA QCBpbnQgUlNBX2dlbmVyYXRlX2tleV9leChSU0EgKnJzYSwgaW50IGJpCisgI2VuZGlmCisgICAg IGlmIChyc2EtPm1ldGgtPnJzYV9rZXlnZW4pCisgICAgICAgICByZXR1cm4gcnNhLT5tZXRoLT5y c2Ffa2V5Z2VuKHJzYSwgYml0cywgZV92YWx1ZSwgY2IpOworLSNpZmRlZiBPUEVOU1NMX0ZJUFMK Ky0gICAgaWYgKEZJUFNfbW9kZSgpKQorLSAgICAgICAgcmV0dXJuIEZJUFNfcnNhX2dlbmVyYXRl X2tleV9leChyc2EsIGJpdHMsIGVfdmFsdWUsIGNiKTsKKy0jZW5kaWYKKyAgICAgcmV0dXJuIHJz YV9idWlsdGluX2tleWdlbihyc2EsIGJpdHMsIGVfdmFsdWUsIGNiKTsKKyB9CisgCitAQCAtMTA4 LDYgKzE3OCwyMCBAQCBzdGF0aWMgaW50IHJzYV9idWlsdGluX2tleWdlbihSU0EgKnJzYSwKKyAg ICAgaW50IGJpdHNwLCBiaXRzcSwgb2sgPSAtMSwgbiA9IDA7CisgICAgIEJOX0NUWCAqY3R4ID0g TlVMTDsKKyAKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZHVsZV9tb2Rl KCkpIHsKKysgICAgICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICAg ICAgRklQU2VycihGSVBTX0ZfUlNBX0JVSUxUSU5fS0VZR0VOLCBGSVBTX1JfRklQU19TRUxGVEVT VF9GQUlMRUQpOworKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgfQorKworKyAgICAg ICAgaWYgKGJpdHMgPCBPUEVOU1NMX1JTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMpIHsKKysgICAg ICAgICAgICBGSVBTZXJyKEZJUFNfRl9SU0FfQlVJTFRJTl9LRVlHRU4sIEZJUFNfUl9LRVlfVE9P X1NIT1JUKTsKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysgICAgfQorKyNl bmRpZgorKworICAgICBjdHggPSBCTl9DVFhfbmV3KCk7CisgICAgIGlmIChjdHggPT0gTlVMTCkK KyAgICAgICAgIGdvdG8gZXJyOworQEAgLTIzMyw2ICszMTcsMTYgQEAgc3RhdGljIGludCByc2Ff YnVpbHRpbl9rZXlnZW4oUlNBICpyc2EsCisgICAgIGlmICghQk5fbW9kX2ludmVyc2UocnNhLT5p cW1wLCByc2EtPnEsIHAsIGN0eCkpCisgICAgICAgICBnb3RvIGVycjsKKyAKKysjaWZkZWYgT1BF TlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAgIGlmIChm aXBzX3JzYV9wYWlyd2lzZV9mYWlsKQorKyAgICAgICAgICAgIEJOX2FkZF93b3JkKHJzYS0+biwg MSk7CisrCisrICAgICAgICBpZiAoIWZpcHNfY2hlY2tfcnNhKHJzYSkpCisrICAgICAgICAgICAg Z290byBlcnI7CisrICAgIH0KKysjZW5kaWYKKysKKyAgICAgb2sgPSAxOworICBlcnI6CisgICAg IGlmIChvayA9PSAtMSkgeworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2Eu aC5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhLmgKKy0tLSBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vcnNhL3JzYS5oLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4xNzgyNDI5NTUgKzAy MDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYS5oCTIwMTUtMDQtMjIgMTY6MDg6 NDAuMzAzMjQ1OTE0ICswMjAwCitAQCAtMTY4LDYgKzE2OCw4IEBAIHN0cnVjdCByc2Ffc3Qgewor ICMgIGRlZmluZSBPUEVOU1NMX1JTQV9NQVhfTU9EVUxVU19CSVRTICAgMTYzODQKKyAjIGVuZGlm CisgCisrIyBkZWZpbmUgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTIDEwMjQKKysK KyAjIGlmbmRlZiBPUEVOU1NMX1JTQV9TTUFMTF9NT0RVTFVTX0JJVFMKKyAjICBkZWZpbmUgT1BF TlNTTF9SU0FfU01BTExfTU9EVUxVU19CSVRTIDMwNzIKKyAjIGVuZGlmCitAQCAtMzI5LDYgKzMz MSwxMyBAQCBSU0EgKlJTQV9nZW5lcmF0ZV9rZXkoaW50IGJpdHMsIHVuc2lnbmVkCisgCisgLyog TmV3IHZlcnNpb24gKi8KKyBpbnQgUlNBX2dlbmVyYXRlX2tleV9leChSU0EgKnJzYSwgaW50IGJp dHMsIEJJR05VTSAqZSwgQk5fR0VOQ0IgKmNiKTsKKytpbnQgUlNBX1g5MzFfZGVyaXZlX2V4KFJT QSAqcnNhLCBCSUdOVU0gKnAxLCBCSUdOVU0gKnAyLCBCSUdOVU0gKnExLAorKyAgICAgICAgICAg ICAgICAgICAgICAgQklHTlVNICpxMiwgY29uc3QgQklHTlVNICpYcDEsIGNvbnN0IEJJR05VTSAq WHAyLAorKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICpYcCwgY29uc3QgQklH TlVNICpYcTEsCisrICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCSUdOVU0gKlhxMiwgY29u c3QgQklHTlVNICpYcSwKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJR05VTSAqZSwg Qk5fR0VOQ0IgKmNiKTsKKytpbnQgUlNBX1g5MzFfZ2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNhLCBp bnQgYml0cywgY29uc3QgQklHTlVNICplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Qk5fR0VOQ0IgKmNiKTsKKyAKKyBpbnQgUlNBX2NoZWNrX2tleShjb25zdCBSU0EgKik7CisgICAg ICAgICAvKiBuZXh0IDQgcmV0dXJuIC0xIG9uIGVycm9yICovCitAQCAtNTM4LDcgKzU0Nyw3IEBA IHZvaWQgRVJSX2xvYWRfUlNBX3N0cmluZ3Modm9pZCk7CisgIyBkZWZpbmUgUlNBX0ZfUlNBX0FM R09SX1RPX01EICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NworICMgZGVmaW5lIFJTQV9G X1JTQV9CVUlMVElOX0tFWUdFTiAgICAgICAgICAgICAgICAgICAgICAgICAxMjkKKyAjIGRlZmlu ZSBSU0FfRl9SU0FfQ0hFQ0tfS0VZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzCist IyBkZWZpbmUgUlNBX0ZfUlNBX0NNU19ERUNSWVBUICAgICAgICAgICAgICAgICAgICAgICAgICAg IDE1OAorKyMgZGVmaW5lIFJTQV9GX1JTQV9DTVNfREVDUllQVCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAyNTgKKyAjIGRlZmluZSBSU0FfRl9SU0FfRUFZX1BSSVZBVEVfREVDUllQVCAgICAg ICAgICAgICAgICAgICAgMTAxCisgIyBkZWZpbmUgUlNBX0ZfUlNBX0VBWV9QUklWQVRFX0VOQ1JZ UFQgICAgICAgICAgICAgICAgICAgIDEwMgorICMgZGVmaW5lIFJTQV9GX1JTQV9FQVlfUFVCTElD X0RFQ1JZUFQgICAgICAgICAgICAgICAgICAgICAxMDMKK0BAIC01NTksNyArNTY4LDcgQEAgdm9p ZCBFUlJfbG9hZF9SU0Ffc3RyaW5ncyh2b2lkKTsKKyAjIGRlZmluZSBSU0FfRl9SU0FfUEFERElO R19BRERfUEtDUzFfT0FFUCAgICAgICAgICAgICAgICAgMTIxCisgIyBkZWZpbmUgUlNBX0ZfUlNB X1BBRERJTkdfQUREX1BLQ1MxX09BRVBfTUdGMSAgICAgICAgICAgIDE2MAorICMgZGVmaW5lIFJT QV9GX1JTQV9QQURESU5HX0FERF9QS0NTMV9QU1MgICAgICAgICAgICAgICAgICAxMjUKKy0jIGRl ZmluZSBSU0FfRl9SU0FfUEFERElOR19BRERfUEtDUzFfUFNTX01HRjEgICAgICAgICAgICAgMTQ4 CisrIyBkZWZpbmUgUlNBX0ZfUlNBX1BBRERJTkdfQUREX1BLQ1MxX1BTU19NR0YxICAgICAgICAg ICAgIDE1OAorICMgZGVmaW5lIFJTQV9GX1JTQV9QQURESU5HX0FERF9QS0NTMV9UWVBFXzEgICAg ICAgICAgICAgICAxMDgKKyAjIGRlZmluZSBSU0FfRl9SU0FfUEFERElOR19BRERfUEtDUzFfVFlQ RV8yICAgICAgICAgICAgICAgMTA5CisgIyBkZWZpbmUgUlNBX0ZfUlNBX1BBRERJTkdfQUREX1NT TFYyMyAgICAgICAgICAgICAgICAgICAgIDExMAorQEAgLTU3MywyMSArNTgyLDIzIEBAIHZvaWQg RVJSX2xvYWRfUlNBX3N0cmluZ3Modm9pZCk7CisgIyBkZWZpbmUgUlNBX0ZfUlNBX1BBRERJTkdf Q0hFQ0tfWDkzMSAgICAgICAgICAgICAgICAgICAgIDEyOAorICMgZGVmaW5lIFJTQV9GX1JTQV9Q UklOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTUKKyAjIGRlZmluZSBSU0Ff Rl9SU0FfUFJJTlRfRlAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE2CistIyBkZWZp bmUgUlNBX0ZfUlNBX1BSSVZBVEVfREVDUllQVCAgICAgICAgICAgICAgICAgICAgICAgIDE1MAor LSMgZGVmaW5lIFJTQV9GX1JTQV9QUklWQVRFX0VOQ1JZUFQgICAgICAgICAgICAgICAgICAgICAg ICAxNTEKKysjIGRlZmluZSBSU0FfRl9SU0FfUFJJVkFURV9ERUNSWVBUICAgICAgICAgICAgICAg ICAgICAgICAgMTU3CisrIyBkZWZpbmUgUlNBX0ZfUlNBX1BSSVZBVEVfRU5DUllQVCAgICAgICAg ICAgICAgICAgICAgICAgIDE0OAorICMgZGVmaW5lIFJTQV9GX1JTQV9QUklWX0RFQ09ERSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxMzcKKyAjIGRlZmluZSBSU0FfRl9SU0FfUFJJVl9FTkNP REUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM4CisgIyBkZWZpbmUgUlNBX0ZfUlNBX1BT U19UT19DVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2MgorLSMgZGVmaW5lIFJTQV9G X1JTQV9QVUJMSUNfREVDUllQVCAgICAgICAgICAgICAgICAgICAgICAgICAxNTIKKysjIGRlZmlu ZSBSU0FfRl9SU0FfUFVCTElDX0RFQ1JZUFQgICAgICAgICAgICAgICAgICAgICAgICAgMTQ5Cisg IyBkZWZpbmUgUlNBX0ZfUlNBX1BVQkxJQ19FTkNSWVBUICAgICAgICAgICAgICAgICAgICAgICAg IDE1MworICMgZGVmaW5lIFJTQV9GX1JTQV9QVUJfREVDT0RFICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxMzkKKyAjIGRlZmluZSBSU0FfRl9SU0FfU0VUVVBfQkxJTkRJTkcgICAgICAgICAg ICAgICAgICAgICAgICAgMTM2CisrIyBkZWZpbmUgUlNBX0ZfUlNBX1NFVF9ERUZBVUxUX01FVEhP RCAgICAgICAgICAgICAgICAgICAgIDE1MAorKyMgZGVmaW5lIFJTQV9GX1JTQV9TRVRfTUVUSE9E ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTEKKyAjIGRlZmluZSBSU0FfRl9SU0FfU0lH TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE3CisgIyBkZWZpbmUgUlNBX0Zf UlNBX1NJR05fQVNOMV9PQ1RFVF9TVFJJTkcgICAgICAgICAgICAgICAgIDExOAorICMgZGVmaW5l IFJTQV9GX1JTQV9WRVJJRlkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTkKKyAj IGRlZmluZSBSU0FfRl9SU0FfVkVSSUZZX0FTTjFfT0NURVRfU1RSSU5HICAgICAgICAgICAgICAg MTIwCisgIyBkZWZpbmUgUlNBX0ZfUlNBX1ZFUklGWV9QS0NTMV9QU1MgICAgICAgICAgICAgICAg ICAgICAgIDEyNgorLSMgZGVmaW5lIFJTQV9GX1JTQV9WRVJJRllfUEtDUzFfUFNTX01HRjEgICAg ICAgICAgICAgICAgICAxNDkKKysjIGRlZmluZSBSU0FfRl9SU0FfVkVSSUZZX1BLQ1MxX1BTU19N R0YxICAgICAgICAgICAgICAgICAgMTUyCisgCisgLyogUmVhc29uIGNvZGVzLiAqLworICMgZGVm aW5lIFJTQV9SX0FMR09SSVRITV9NSVNNQVRDSCAgICAgICAgICAgICAgICAgICAgICAgICAxMDAK K0BAIC02MjAsMjEgKzYzMSwyMiBAQCB2b2lkIEVSUl9sb2FkX1JTQV9zdHJpbmdzKHZvaWQpOwor ICMgZGVmaW5lIFJTQV9SX0lOVkFMSURfT0FFUF9QQVJBTUVURVJTICAgICAgICAgICAgICAgICAg ICAxNjIKKyAjIGRlZmluZSBSU0FfUl9JTlZBTElEX1BBRERJTkcgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMTM4CisgIyBkZWZpbmUgUlNBX1JfSU5WQUxJRF9QQURESU5HX01PREUgICAgICAg ICAgICAgICAgICAgICAgIDE0MQorLSMgZGVmaW5lIFJTQV9SX0lOVkFMSURfUFNTX1BBUkFNRVRF UlMgICAgICAgICAgICAgICAgICAgICAxNDkKKysjIGRlZmluZSBSU0FfUl9JTlZBTElEX1BTU19Q QVJBTUVURVJTICAgICAgICAgICAgICAgICAgICAgMTU3CisgIyBkZWZpbmUgUlNBX1JfSU5WQUxJ RF9QU1NfU0FMVExFTiAgICAgICAgICAgICAgICAgICAgICAgIDE0NgorLSMgZGVmaW5lIFJTQV9S X0lOVkFMSURfU0FMVF9MRU5HVEggICAgICAgICAgICAgICAgICAgICAgICAxNTAKKysjIGRlZmlu ZSBSU0FfUl9JTlZBTElEX1NBTFRfTEVOR1RIICAgICAgICAgICAgICAgICAgICAgICAgMTU4Cisg IyBkZWZpbmUgUlNBX1JfSU5WQUxJRF9UUkFJTEVSICAgICAgICAgICAgICAgICAgICAgICAgICAg IDEzOQorICMgZGVmaW5lIFJTQV9SX0lOVkFMSURfWDkzMV9ESUdFU1QgICAgICAgICAgICAgICAg ICAgICAgICAxNDIKKyAjIGRlZmluZSBSU0FfUl9JUU1QX05PVF9JTlZFUlNFX09GX1EgICAgICAg ICAgICAgICAgICAgICAgMTI2CisgIyBkZWZpbmUgUlNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMICAg ICAgICAgICAgICAgICAgICAgICAgIDEyMAorICMgZGVmaW5lIFJTQV9SX0xBU1RfT0NURVRfSU5W QUxJRCAgICAgICAgICAgICAgICAgICAgICAgICAxMzQKKyAjIGRlZmluZSBSU0FfUl9NT0RVTFVT X1RPT19MQVJHRSAgICAgICAgICAgICAgICAgICAgICAgICAgMTA1CistIyBkZWZpbmUgUlNBX1Jf Tk9OX0ZJUFNfUlNBX01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAgIDE1NworKyMgZGVmaW5l IFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QgICAgICAgICAgICAgICAgICAgICAgICAxNDkKKysj IGRlZmluZSBSU0FfUl9OT05fRklQU19NRVRIT0QgICAgICAgICAgICAgICAgICAgICAgICAgICAg MTQ5CisgIyBkZWZpbmUgUlNBX1JfTk9fUFVCTElDX0VYUE9ORU5UICAgICAgICAgICAgICAgICAg ICAgICAgIDE0MAorICMgZGVmaW5lIFJTQV9SX05VTExfQkVGT1JFX0JMT0NLX01JU1NJTkcgICAg ICAgICAgICAgICAgICAxMTMKKyAjIGRlZmluZSBSU0FfUl9OX0RPRVNfTk9UX0VRVUFMX1BfUSAg ICAgICAgICAgICAgICAgICAgICAgMTI3CisgIyBkZWZpbmUgUlNBX1JfT0FFUF9ERUNPRElOR19F UlJPUiAgICAgICAgICAgICAgICAgICAgICAgIDEyMQorLSMgZGVmaW5lIFJTQV9SX09QRVJBVElP Tl9OT1RfQUxMT1dFRF9JTl9GSVBTX01PREUgICAgICAgICAxNTgKKysjIGRlZmluZSBSU0FfUl9P UEVSQVRJT05fTk9UX0FMTE9XRURfSU5fRklQU19NT0RFICAgICAgICAgMTUwCisgIyBkZWZpbmUg UlNBX1JfT1BFUkFUSU9OX05PVF9TVVBQT1JURURfRk9SX1RISVNfS0VZVFlQRSAgIDE0OAorICMg ZGVmaW5lIFJTQV9SX1BBRERJTkdfQ0hFQ0tfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgICAx MTQKKyAjIGRlZmluZSBSU0FfUl9QS0NTX0RFQ09ESU5HX0VSUk9SICAgICAgICAgICAgICAgICAg ICAgICAgMTU5CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9saWIuYy5m aXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2xpYi5jCistLS0gb3BlbnNzbC0xLjAu MmEvY3J5cHRvL3JzYS9yc2FfbGliLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAw MCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2xpYi5jCTIwMTUtMDQt MjIgMTY6MDg6NDAuMzAzMjQ1OTE0ICswMjAwCitAQCAtODQsMjMgKzg0LDIyIEBAIFJTQSAqUlNB X25ldyh2b2lkKQorIAorIHZvaWQgUlNBX3NldF9kZWZhdWx0X21ldGhvZChjb25zdCBSU0FfTUVU SE9EICptZXRoKQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUo KSAmJiAhKG1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRIT0QpKSB7CisrICAgICAgICBS U0FlcnIoUlNBX0ZfUlNBX1NFVF9ERUZBVUxUX01FVEhPRCwgUlNBX1JfTk9OX0ZJUFNfTUVUSE9E KTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyNlbmRpZgorICAgICBkZWZhdWx0X1JTQV9t ZXRoID0gbWV0aDsKKyB9CisgCisgY29uc3QgUlNBX01FVEhPRCAqUlNBX2dldF9kZWZhdWx0X21l dGhvZCh2b2lkKQorIHsKKyAgICAgaWYgKGRlZmF1bHRfUlNBX21ldGggPT0gTlVMTCkgeworLSNp ZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgICAgIGlmIChGSVBTX21vZGUoKSkKKy0gICAgICAgICAg ICByZXR1cm4gRklQU19yc2FfcGtjczFfc3NsZWF5KCk7CistICAgICAgICBlbHNlCistICAgICAg ICAgICAgcmV0dXJuIFJTQV9QS0NTMV9TU0xlYXkoKTsKKy0jZWxzZQorLSMgaWZkZWYgUlNBX05V TEwKKysjaWZkZWYgUlNBX05VTEwKKyAgICAgICAgIGRlZmF1bHRfUlNBX21ldGggPSBSU0FfbnVs bF9tZXRob2QoKTsKKy0jIGVsc2UKKysjZWxzZQorICAgICAgICAgZGVmYXVsdF9SU0FfbWV0aCA9 IFJTQV9QS0NTMV9TU0xlYXkoKTsKKy0jIGVuZGlmCisgI2VuZGlmCisgICAgIH0KKyAKK0BAIC0x MTksNiArMTE4LDEyIEBAIGludCBSU0Ffc2V0X21ldGhvZChSU0EgKnJzYSwgY29uc3QgUlNBX00K KyAgICAgICogdG8gZGVhbCB3aXRoIHdoaWNoIEVOR0lORSBpdCBjb21lcyBmcm9tLgorICAgICAg Ki8KKyAgICAgY29uc3QgUlNBX01FVEhPRCAqbXRtcDsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisr ICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKG1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRI T0QpKSB7CisrICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX1NFVF9NRVRIT0QsIFJTQV9SX05PTl9G SVBTX01FVEhPRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyNlbmRpZgorICAgICBt dG1wID0gcnNhLT5tZXRoOworICAgICBpZiAobXRtcC0+ZmluaXNoKQorICAgICAgICAgbXRtcC0+ ZmluaXNoKHJzYSk7CitAQCAtMTY1LDYgKzE3MCwxNyBAQCBSU0EgKlJTQV9uZXdfbWV0aG9kKEVO R0lORSAqZW5naW5lKQorICAgICAgICAgfQorICAgICB9CisgI2VuZGlmCisrI2lmZGVmIE9QRU5T U0xfRklQUworKyAgICBpZiAoRklQU19tb2RlKCkgJiYgIShyZXQtPm1ldGgtPmZsYWdzICYgUlNB X0ZMQUdfRklQU19NRVRIT0QpKSB7CisrICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX05FV19NRVRI T0QsIFJTQV9SX05PTl9GSVBTX01FVEhPRCk7CisrIyBpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUK KysgICAgICAgIGlmIChyZXQtPmVuZ2luZSkKKysgICAgICAgICAgICBFTkdJTkVfZmluaXNoKHJl dC0+ZW5naW5lKTsKKysjIGVuZGlmCisrICAgICAgICBPUEVOU1NMX2ZyZWUocmV0KTsKKysgICAg ICAgIHJldHVybiBOVUxMOworKyAgICB9CisrI2VuZGlmCisgCisgICAgIHJldC0+cGFkID0gMDsK KyAgICAgcmV0LT52ZXJzaW9uID0gMDsKK0BAIC0xODMsNyArMTk5LDcgQEAgUlNBICpSU0FfbmV3 X21ldGhvZChFTkdJTkUgKmVuZ2luZSkKKyAgICAgcmV0LT5ibGluZGluZyA9IE5VTEw7CisgICAg IHJldC0+bXRfYmxpbmRpbmcgPSBOVUxMOworICAgICByZXQtPmJpZ251bV9kYXRhID0gTlVMTDsK Ky0gICAgcmV0LT5mbGFncyA9IHJldC0+bWV0aC0+ZmxhZ3MgJiB+UlNBX0ZMQUdfTk9OX0ZJUFNf QUxMT1c7CisrICAgIHJldC0+ZmxhZ3MgPSByZXQtPm1ldGgtPmZsYWdzOworICAgICBpZiAoIUNS WVBUT19uZXdfZXhfZGF0YShDUllQVE9fRVhfSU5ERVhfUlNBLCByZXQsICZyZXQtPmV4X2RhdGEp KSB7CisgI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQorICAgICAgICAgaWYgKHJldC0+ZW5naW5l KQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfcG1ldGguYy5maXBzIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX3BtZXRoLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vcnNhL3JzYV9wbWV0aC5jLmZpcHMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAg KzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9wbWV0aC5jCTIwMTUtMDQt MjIgMTY6MDg6NDAuMzAzMjQ1OTE0ICswMjAwCitAQCAtMjI4LDIwICsyMjgsNiBAQCBzdGF0aWMg aW50IHBrZXlfcnNhX3NpZ24oRVZQX1BLRVlfQ1RYICpjCisgICAgICAgICAgICAgUlNBZXJyKFJT QV9GX1BLRVlfUlNBX1NJR04sIFJTQV9SX0lOVkFMSURfRElHRVNUX0xFTkdUSCk7CisgICAgICAg ICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfQorLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAg ICAgIGlmIChyZXQgPiAwKSB7CistICAgICAgICAgICAgdW5zaWduZWQgaW50IHNsZW47CistICAg ICAgICAgICAgcmV0ID0gRklQU19yc2Ffc2lnbl9kaWdlc3QocnNhLCB0YnMsIHRic2xlbiwgcmN0 eC0+bWQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmN0eC0+cGFk X21vZGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmN0eC0+c2Fs dGxlbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY3R4LT5tZ2Yx bWQsIHNpZywgJnNsZW4pOworLSAgICAgICAgICAgIGlmIChyZXQgPiAwKQorLSAgICAgICAgICAg ICAgICAqc2lnbGVuID0gc2xlbjsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAg ICpzaWdsZW4gPSAwOworLSAgICAgICAgICAgIHJldHVybiByZXQ7CistICAgICAgICB9CistI2Vu ZGlmCisgCisgICAgICAgICBpZiAoRVZQX01EX3R5cGUocmN0eC0+bWQpID09IE5JRF9tZGMyKSB7 CisgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNsdG1wOworQEAgLTM1MywxNyArMzM5LDYgQEAg c3RhdGljIGludCBwa2V5X3JzYV92ZXJpZnkoRVZQX1BLRVlfQ1RYCisgICAgIH0KKyAjZW5kaWYK KyAgICAgaWYgKHJjdHgtPm1kKSB7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICAgICAgaWYg KHJ2ID4gMCkgeworLSAgICAgICAgICAgIHJldHVybiBGSVBTX3JzYV92ZXJpZnlfZGlnZXN0KHJz YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YnMsIHRic2xl biwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY3R4LT5tZCwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY3R4LT5wYWRfbW9k ZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY3R4LT5zYWx0 bGVuLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjdHgtPm1n ZjFtZCwgc2lnLCBzaWdsZW4pOworLQorLSAgICAgICAgfQorLSNlbmRpZgorICAgICAgICAgaWYg KHJjdHgtPnBhZF9tb2RlID09IFJTQV9QS0NTMV9QQURESU5HKQorICAgICAgICAgICAgIHJldHVy biBSU0FfdmVyaWZ5KEVWUF9NRF90eXBlKHJjdHgtPm1kKSwgdGJzLCB0YnNsZW4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2lnLCBzaWdsZW4sIHJzYSk7CitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9zaWduLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vcnNhL3JzYV9zaWduLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9zaWdu LmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9yc2EvcnNhX3NpZ24uYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMzI0NTkx NCArMDIwMAorQEAgLTEzMiw3ICsxMzIsMTAgQEAgaW50IFJTQV9zaWduKGludCB0eXBlLCBjb25z dCB1bnNpZ25lZCBjaAorICAgICAgICAgaTJkX1g1MDlfU0lHKCZzaWcsICZwKTsKKyAgICAgICAg IHMgPSB0bXBzOworICAgICB9CistICAgIGkgPSBSU0FfcHJpdmF0ZV9lbmNyeXB0KGksIHMsIHNp Z3JldCwgcnNhLCBSU0FfUEtDUzFfUEFERElORyk7CisrICAgIC8qIE5COiBjYWxsIHVuZGVybHlp bmcgbWV0aG9kIGRpcmVjdGx5IHRvIGF2b2lkIEZJUFMgYmxvY2tpbmcgKi8KKysgICAgaSA9IHJz YS0+bWV0aC0+cnNhX3ByaXZfZW5jID8gcnNhLT5tZXRoLT5yc2FfcHJpdl9lbmMoaSwgcywgc2ln cmV0LCByc2EsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJTQV9QS0NTMV9QQURESU5HKSA6CisrICAgICAgICAwOworICAgICBpZiAo aSA8PSAwKQorICAgICAgICAgcmV0ID0gMDsKKyAgICAgZWxzZQorQEAgLTE4OCw4ICsxOTEsMTAg QEAgaW50IGludF9yc2FfdmVyaWZ5KGludCBkdHlwZSwgY29uc3QgdW5zaQorICAgICB9CisgCisg ICAgIGlmICgoZHR5cGUgPT0gTklEX21kNV9zaGExKSAmJiBybSkgeworLSAgICAgICAgaSA9IFJT QV9wdWJsaWNfZGVjcnlwdCgoaW50KXNpZ2xlbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2lnYnVmLCBybSwgcnNhLCBSU0FfUEtDUzFfUEFERElORyk7CisrICAgICAgICBpID0g cnNhLT5tZXRoLT5yc2FfcHViX2RlYyA/IHJzYS0+bWV0aC0+cnNhX3B1Yl9kZWMoKGludClzaWds ZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2lnYnVmLCBybSwgcnNhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QS0NTMV9QQURESU5HKQorKyAgICAg ICAgICAgIDogMDsKKyAgICAgICAgIGlmIChpIDw9IDApCisgICAgICAgICAgICAgcmV0dXJuIDA7 CisgICAgICAgICAqcHJtX2xlbiA9IGk7CitAQCAtMjA1LDcgKzIxMCwxMSBAQCBpbnQgaW50X3Jz YV92ZXJpZnkoaW50IGR0eXBlLCBjb25zdCB1bnNpCisgICAgICAgICBSU0FlcnIoUlNBX0ZfSU5U X1JTQV9WRVJJRlksIFJTQV9SX0lOVkFMSURfTUVTU0FHRV9MRU5HVEgpOworICAgICAgICAgZ290 byBlcnI7CisgICAgIH0KKy0gICAgaSA9IFJTQV9wdWJsaWNfZGVjcnlwdCgoaW50KXNpZ2xlbiwg c2lnYnVmLCBzLCByc2EsIFJTQV9QS0NTMV9QQURESU5HKTsKKysgICAgLyogTkI6IGNhbGwgdW5k ZXJseWluZyBtZXRob2QgZGlyZWN0bHkgdG8gYXZvaWQgRklQUyBibG9ja2luZyAqLworKyAgICBp ID0gcnNhLT5tZXRoLT5yc2FfcHViX2RlYyA/IHJzYS0+bWV0aC0+cnNhX3B1Yl9kZWMoKGludClz aWdsZW4sIHNpZ2J1ZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHMsIHJzYSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QS0NTMV9QQURESU5HKSA6CisrICAgICAgICAw OworIAorICAgICBpZiAoaSA8PSAwKQorICAgICAgICAgZ290byBlcnI7CitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vc2hhL3NoYS5oLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3No YS9zaGEuaAorLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9zaGEvc2hhLmguZmlwcwkyMDE1LTA0 LTIyIDE2OjA4OjM5Ljk2NDIzNzg4OCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9z aGEvc2hhLmgJMjAxNS0wNC0yMiAxNjowODo0MC4zMDQyNDU5MzggKzAyMDAKK0BAIC0xMDUsOSAr MTA1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU0hBc3RhdGVfc3QgeworIH0gU0hBX0NUWDsKKyAKKyAj IGlmbmRlZiBPUEVOU1NMX05PX1NIQTAKKy0jICBpZmRlZiBPUEVOU1NMX0ZJUFMKKy1pbnQgcHJp dmF0ZV9TSEFfSW5pdChTSEFfQ1RYICpjKTsKKy0jICBlbmRpZgorIGludCBTSEFfSW5pdChTSEFf Q1RYICpjKTsKKyBpbnQgU0hBX1VwZGF0ZShTSEFfQ1RYICpjLCBjb25zdCB2b2lkICpkYXRhLCBz aXplX3QgbGVuKTsKKyBpbnQgU0hBX0ZpbmFsKHVuc2lnbmVkIGNoYXIgKm1kLCBTSEFfQ1RYICpj KTsKK0BAIC0xMTUsOSArMTEyLDYgQEAgdW5zaWduZWQgY2hhciAqU0hBKGNvbnN0IHVuc2lnbmVk IGNoYXIgKgorIHZvaWQgU0hBX1RyYW5zZm9ybShTSEFfQ1RYICpjLCBjb25zdCB1bnNpZ25lZCBj aGFyICpkYXRhKTsKKyAjIGVuZGlmCisgIyBpZm5kZWYgT1BFTlNTTF9OT19TSEExCistIyAgaWZk ZWYgT1BFTlNTTF9GSVBTCistaW50IHByaXZhdGVfU0hBMV9Jbml0KFNIQV9DVFggKmMpOworLSMg IGVuZGlmCisgaW50IFNIQTFfSW5pdChTSEFfQ1RYICpjKTsKKyBpbnQgU0hBMV9VcGRhdGUoU0hB X0NUWCAqYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7CisgaW50IFNIQTFfRmluYWwo dW5zaWduZWQgY2hhciAqbWQsIFNIQV9DVFggKmMpOworQEAgLTEzOSwxMCArMTMzLDYgQEAgdHlw ZWRlZiBzdHJ1Y3QgU0hBMjU2c3RhdGVfc3QgeworIH0gU0hBMjU2X0NUWDsKKyAKKyAjIGlmbmRl ZiBPUEVOU1NMX05PX1NIQTI1NgorLSMgIGlmZGVmIE9QRU5TU0xfRklQUworLWludCBwcml2YXRl X1NIQTIyNF9Jbml0KFNIQTI1Nl9DVFggKmMpOworLWludCBwcml2YXRlX1NIQTI1Nl9Jbml0KFNI QTI1Nl9DVFggKmMpOworLSMgIGVuZGlmCisgaW50IFNIQTIyNF9Jbml0KFNIQTI1Nl9DVFggKmMp OworIGludCBTSEEyMjRfVXBkYXRlKFNIQTI1Nl9DVFggKmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNp emVfdCBsZW4pOworIGludCBTSEEyMjRfRmluYWwodW5zaWduZWQgY2hhciAqbWQsIFNIQTI1Nl9D VFggKmMpOworQEAgLTE5MiwxMCArMTgyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU0hBNTEyc3RhdGVf c3QgeworICMgZW5kaWYKKyAKKyAjIGlmbmRlZiBPUEVOU1NMX05PX1NIQTUxMgorLSMgIGlmZGVm IE9QRU5TU0xfRklQUworLWludCBwcml2YXRlX1NIQTM4NF9Jbml0KFNIQTUxMl9DVFggKmMpOwor LWludCBwcml2YXRlX1NIQTUxMl9Jbml0KFNIQTUxMl9DVFggKmMpOworLSMgIGVuZGlmCisgaW50 IFNIQTM4NF9Jbml0KFNIQTUxMl9DVFggKmMpOworIGludCBTSEEzODRfVXBkYXRlKFNIQTUxMl9D VFggKmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOworIGludCBTSEEzODRfRmluYWwo dW5zaWduZWQgY2hhciAqbWQsIFNIQTUxMl9DVFggKmMpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL3NoYS9zaGFfbG9jbC5oLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3NoYS9z aGFfbG9jbC5oCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3NoYS9zaGFfbG9jbC5oLmZpcHMJ MjAxNS0wNC0yMiAxNjowODozOS45NjYyMzc5MzUgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vc2hhL3NoYV9sb2NsLmgJMjAxNS0wNC0yMiAxNjowODo0MC4zMDQyNDU5MzggKzAyMDAK K0BAIC0xMjMsMTEgKzEyMywxNCBAQCB2b2lkIHNoYTFfYmxvY2tfZGF0YV9vcmRlcihTSEFfQ1RY ICpjLCBjCisgI2RlZmluZSBJTklUX0RBVEFfaDQgMHhjM2QyZTFmMFVMCisgCisgI2lmZGVmIFNI QV8wCistZmlwc19tZF9pbml0KFNIQSkKKytub25maXBzX21kX2luaXQoU0hBKQorICNlbHNlCisg Zmlwc19tZF9pbml0X2N0eChTSEExLCBTSEEpCisgI2VuZGlmCisgeworKyNpZiBkZWZpbmVkKFNI QV8xKSAmJiBkZWZpbmVkKE9QRU5TU0xfRklQUykKKysgICAgRklQU19zZWxmdGVzdF9jaGVjaygp OworKyNlbmRpZgorICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7CisgICAgIGMtPmgwID0g SU5JVF9EQVRBX2gwOworICAgICBjLT5oMSA9IElOSVRfREFUQV9oMTsKK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9zaGEvc2hhMjU2LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v c2hhL3NoYTI1Ni5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3NoYS9zaGEyNTYuYy5maXBz CTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL3NoYS9zaGEyNTYuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwNDI0NTkzOCArMDIwMAor QEAgLTEyLDEyICsxMiwxOSBAQAorIAorICMgaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKyAj IGluY2x1ZGUgPG9wZW5zc2wvc2hhLmg+CisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysjICBpbmNs dWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjIGVuZGlmCisrCisgIyBpbmNsdWRlIDxvcGVuc3NsL29w ZW5zc2x2Lmg+CisgCisgY29uc3QgY2hhciBTSEEyNTZfdmVyc2lvbltdID0gIlNIQS0yNTYiIE9Q RU5TU0xfVkVSU0lPTl9QVEVYVDsKKyAKKyBmaXBzX21kX2luaXRfY3R4KFNIQTIyNCwgU0hBMjU2 KQorIHsKKysjIGlmZGVmIE9QRU5TU0xfRklQUworKyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7 CisrIyBlbmRpZgorICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7CisgICAgIGMtPmhbMF0g PSAweGMxMDU5ZWQ4VUw7CisgICAgIGMtPmhbMV0gPSAweDM2N2NkNTA3VUw7CitAQCAtMzMsNiAr NDAsOSBAQCBmaXBzX21kX2luaXRfY3R4KFNIQTIyNCwgU0hBMjU2KQorIAorIGZpcHNfbWRfaW5p dChTSEEyNTYpCisgeworKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2VsZnRlc3Rf Y2hlY2soKTsKKysjIGVuZGlmCisgICAgIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKKyAgICAg Yy0+aFswXSA9IDB4NmEwOWU2NjdVTDsKKyAgICAgYy0+aFsxXSA9IDB4YmI2N2FlODVVTDsKK2Rp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9zaGEvc2hhNTEyLmMuZmlwcyBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vc2hhL3NoYTUxMi5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3NoYS9z aGE1MTIuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL3NoYS9zaGE1MTIuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwNDI0 NTkzOCArMDIwMAorQEAgLTUsNiArNSwxMCBAQAorICAqID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICovCisgI2lu Y2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrIyBp bmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjZW5kaWYKKysKKyAjaWYgIWRlZmluZWQoT1BFTlNT TF9OT19TSEEpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBNTEyKQorIC8qLQorICAqIElNUExF TUVOVEFUSU9OIE5PVEVTLgorQEAgLTYyLDYgKzY2LDkgQEAgY29uc3QgY2hhciBTSEE1MTJfdmVy c2lvbltdID0gIlNIQS01MTIiCisgCisgZmlwc19tZF9pbml0X2N0eChTSEEzODQsIFNIQTUxMikK KyB7CisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOwor KyMgZW5kaWYKKyAgICAgYy0+aFswXSA9IFU2NCgweGNiYmI5ZDVkYzEwNTllZDgpOworICAgICBj LT5oWzFdID0gVTY0KDB4NjI5YTI5MmEzNjdjZDUwNyk7CisgICAgIGMtPmhbMl0gPSBVNjQoMHg5 MTU5MDE1YTMwNzBkZDE3KTsKK0BAIC04MCw2ICs4Nyw5IEBAIGZpcHNfbWRfaW5pdF9jdHgoU0hB Mzg0LCBTSEE1MTIpCisgCisgZmlwc19tZF9pbml0KFNIQTUxMikKKyB7CisrIyBpZmRlZiBPUEVO U1NMX0ZJUFMKKysgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOworKyMgZW5kaWYKKyAgICAgYy0+ aFswXSA9IFU2NCgweDZhMDllNjY3ZjNiY2M5MDgpOworICAgICBjLT5oWzFdID0gVTY0KDB4YmI2 N2FlODU4NGNhYTczYik7CisgICAgIGMtPmhbMl0gPSBVNjQoMHgzYzZlZjM3MmZlOTRmODJiKTsK K2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by93aHJscG9vbC93cF9kZ3N0LmMuZmlwcyBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vd2hybHBvb2wvd3BfZGdzdC5jCistLS0gb3BlbnNzbC0xLjAu MmEvY3J5cHRvL3docmxwb29sL3dwX2Rnc3QuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAw MDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3docmxwb29sL3dwX2Rnc3Qu YwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwNDI0NTkzOCArMDIwMAorQEAgLTU1LDcgKzU1LDcgQEAK KyAjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCist Zmlwc19tZF9pbml0KFdISVJMUE9PTCkKKytub25maXBzX21kX2luaXQoV0hJUkxQT09MKQorIHsK KyAgICAgbWVtc2V0KGMsIDAsIHNpemVvZigqYykpOworICAgICByZXR1cm4gKDEpOworZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmEvTWFrZWZpbGUub3JnLmZpcHMgb3BlbnNzbC0xLjAuMmEvTWFrZWZp bGUub3JnCistLS0gb3BlbnNzbC0xLjAuMmEvTWFrZWZpbGUub3JnLmZpcHMJMjAxNS0wNC0yMiAx NjowODo0MC4yNzAyNDUxMzMgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9NYWtlZmlsZS5vcmcJ MjAxNS0wNC0yMiAxNjowODo0MC4zMDQyNDU5MzggKzAyMDAKK0BAIC0xMzcsNiArMTM3LDkgQEAg RklQU0NBTkxJQj0KKyAKKyBCQVNFQUREUj0KKyAKKysjIE5vbi1lbXB0eSBpZiBGSVBTIGVuYWJs ZWQKKytGSVBTPQorKworIERJUlM9ICAgY3J5cHRvIHNzbCBlbmdpbmVzIGFwcHMgdGVzdCB0b29s cworIEVOR0RJUlM9IGNjZ29zdAorIFNITElCRElSUz0gY3J5cHRvIHNzbAorQEAgLTE0OSw3ICsx NTIsNyBAQCBTRElSUz0gIFwKKyAJYm4gZWMgcnNhIGRzYSBlY2RzYSBkaCBlY2RoIGRzbyBlbmdp bmUgXAorIAlidWZmZXIgYmlvIHN0YWNrIGxoYXNoIHJhbmQgZXJyIFwKKyAJZXZwIGFzbjEgcGVt IHg1MDkgeDUwOXYzIGNvbmYgdHh0X2RiIHBrY3M3IHBrY3MxMiBjb21wIG9jc3AgdWkga3JiNSBc CistCWNtcyBwcXVldWUgdHMganBha2Ugc3JwIHN0b3JlIGNtYWMKKysJY21zIHBxdWV1ZSB0cyBq cGFrZSBzcnAgc3RvcmUgY21hYyBmaXBzCisgIyBrZWVwIGluIG1pbmQgdGhhdCB0aGUgYWJvdmUg bGlzdCBpcyBhZGp1c3RlZCBieSAuL0NvbmZpZ3VyZQorICMgYWNjb3JkaW5nIHRvIG5vLXh4eCBh cmd1bWVudHMuLi4KKyAKK0BAIC0yMzgsNiArMjQxLDcgQEAgQlVJTERFTlY9CVBMQVRGT1JNPSck KFBMQVRGT1JNKScgUFJPQ0VTUworIAkJRklQU0xJQkRJUj0nJHtGSVBTTElCRElSfScJCQlcCisg CQlGSVBTRElSPScke0ZJUFNESVJ9JwkJCQlcCisgCQlGSVBTQ0FOTElCPSIkJHtGSVBTQ0FOTElC Oi0kKEZJUFNDQU5MSUIpfSIJXAorKwkJRklQUz0iJCR7RklQUzotJChGSVBTKX0iCVwKKyAJCVRI SVM9JCR7VEhJUzotJEB9IE1BS0VGSUxFPU1ha2VmaWxlIE1BS0VPVkVSUklERVM9CisgIyBNQUtF T1ZFUlJJREVTPSBlZmZlY3RpdmVseSAiZXF1YWxpemVzIiBHTlUtaXNoIGFuZCBTeXNWLWlzaCBt YWtlIGZsYXZvcnMsCisgIyB3aGljaCBpbiB0dXJuIGVsaW1pbmF0ZXMgYW1iaWd1aXRpZXMgaW4g dmFyaWFibGUgdHJlYXRtZW50IHdpdGggLWUuCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9zc2wv c3NsX2FsZ3MuYy5maXBzIG9wZW5zc2wtMS4wLjJhL3NzbC9zc2xfYWxncy5jCistLS0gb3BlbnNz bC0xLjAuMmEvc3NsL3NzbF9hbGdzLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAw MCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL3NzbC9zc2xfYWxncy5jCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMzA1MjQ1OTYyICswMjAwCitAQCAtNjQsNiArNjQsMTEgQEAKKyBpbnQgU1NMX2xpYnJh cnlfaW5pdCh2b2lkKQorIHsKKyAKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIE9QRU5TU0xf aW5pdF9saWJyYXJ5KCk7CisrICAgIGlmICghRklQU19tb2RlKCkpIHsKKysjZW5kaWYKKysKKyAj aWZuZGVmIE9QRU5TU0xfTk9fREVTCisgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfY2JjKCkp OworICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTNfY2JjKCkpOworQEAgLTE0Miw2ICsx NDcsNDggQEAgaW50IFNTTF9saWJyYXJ5X2luaXQodm9pZCkKKyAgICAgRVZQX2FkZF9kaWdlc3Qo RVZQX3NoYSgpKTsKKyAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX2RzcygpKTsKKyAjZW5kaWYKKysj aWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIH0gZWxzZSB7CisrIyBpZm5kZWYgT1BFTlNTTF9OT19E RVMKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlM19jYmMoKSk7CisrIyBlbmRp ZgorKyMgaWZuZGVmIE9QRU5TU0xfTk9fQUVTCisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBf YWVzXzEyOF9jYmMoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9jYmMo KSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9jYmMoKSk7CisrICAgICAg ICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9nY20oKSk7CisrICAgICAgICBFVlBfYWRkX2Np cGhlcihFVlBfYWVzXzI1Nl9nY20oKSk7CisrIyBlbmRpZgorKyMgaWZuZGVmIE9QRU5TU0xfTk9f TUQ1CisrICAgICAgICAvKiBuZWVkZWQgZXZlbiBpbiB0aGUgRklQUyBtb2RlIGZvciBUTFMgTUFD ICovCisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfbWQ1KCkpOworKyAgICAgICAgRVZQX2Fk ZF9kaWdlc3RfYWxpYXMoU05fbWQ1LCAic3NsMi1tZDUiKTsKKysgICAgICAgIEVWUF9hZGRfZGln ZXN0X2FsaWFzKFNOX21kNSwgInNzbDMtbWQ1Iik7CisrIyBlbmRpZgorKyMgaWZuZGVmIE9QRU5T U0xfTk9fU0hBCisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMSgpKTsgLyogUlNBIHdp dGggc2hhMSAqLworKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fc2hhMSwgInNzbDMt c2hhMSIpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fc2hhMVdpdGhSU0FFbmNy eXB0aW9uLCBTTl9zaGExV2l0aFJTQSk7CisrIyBlbmRpZgorKyMgaWZuZGVmIE9QRU5TU0xfTk9f U0hBMjU2CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMjI0KCkpOworKyAgICAgICAg RVZQX2FkZF9kaWdlc3QoRVZQX3NoYTI1NigpKTsKKysjIGVuZGlmCisrIyBpZm5kZWYgT1BFTlNT TF9OT19TSEE1MTIKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEzODQoKSk7CisrICAg ICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhNTEyKCkpOworKyMgZW5kaWYKKysjIGlmICFkZWZp bmVkKE9QRU5TU0xfTk9fU0hBKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0RTQSkKKysgICAgICAg IEVWUF9hZGRfZGlnZXN0KEVWUF9kc3MxKCkpOyAvKiBEU0Egd2l0aCBzaGExICovCisrICAgICAg ICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgU05fZHNhV2l0aFNIQTFfMik7 CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgIkRTUzEiKTsK KysgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEExLCAiZHNzMSIpOwor KyMgZW5kaWYKKysjIGlmbmRlZiBPUEVOU1NMX05PX0VDRFNBCisrICAgICAgICBFVlBfYWRkX2Rp Z2VzdChFVlBfZWNkc2EoKSk7CisrIyBlbmRpZgorKyAgICB9CisrI2VuZGlmCisgI2lmbmRlZiBP UEVOU1NMX05PX0NPTVAKKyAgICAgLyoKKyAgICAgICogVGhpcyB3aWxsIGluaXRpYWxpc2UgdGhl IGJ1aWx0LWluIGNvbXByZXNzaW9uIGFsZ29yaXRobXMuIFRoZSB2YWx1ZQoKZGlmZiAtLWdpdCBh L29wZW5zc2wtMS4wLjJhLWlwdjYtYXBwcy5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWlwdjYtYXBw cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDhiNDJjCi0tLSAv ZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmEtaXB2Ni1hcHBzLnBhdGNoCkBAIC0wLDAgKzEs NTI1IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfYXBwcy5oLmlwdjYtYXBwcyBv cGVuc3NsLTEuMC4yYS9hcHBzL3NfYXBwcy5oCistLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2Fw cHMuaC5pcHY2LWFwcHMJMjAxNS0wNC0yMCAxNTowMToyNC4wMjkxMjAxMDQgKzAyMDAKKysrKyBv cGVuc3NsLTEuMC4yYS9hcHBzL3NfYXBwcy5oCTIwMTUtMDQtMjAgMTU6MDU6MDAuMzUzMTM3NzAx ICswMjAwCitAQCAtMTUxLDcgKzE1MSw3IEBAIHR5cGVkZWYgZmRfbWFzayBmZF9zZXQ7CisgI2Rl ZmluZSBQT1JUX1NUUiAgICAgICAgIjQ0MzMiCisgI2RlZmluZSBQUk9UT0NPTCAgICAgICAgInRj cCIKKyAKKy1pbnQgZG9fc2VydmVyKGludCBwb3J0LCBpbnQgdHlwZSwgaW50ICpyZXQsCisraW50 IGRvX3NlcnZlcihjaGFyICpwb3J0LCBpbnQgdHlwZSwgaW50ICpyZXQsCisgICAgICAgICAgICAg ICBpbnQgKCpjYikgKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgaW50IHN0eXBlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpjb250ZXh0KSwgdW5zaWduZWQgY2hhciAq Y29udGV4dCwKKyAgICAgICAgICAgICAgIGludCBuYWNjZXB0KTsKK0BAIC0xNjcsMTEgKzE2Nywx MCBAQCBpbnQgc3NsX3ByaW50X3BvaW50X2Zvcm1hdHMoQklPICpvdXQsIFNTCisgaW50IHNzbF9w cmludF9jdXJ2ZXMoQklPICpvdXQsIFNTTCAqcywgaW50IG5vc2hhcmVkKTsKKyAjZW5kaWYKKyBp bnQgc3NsX3ByaW50X3RtcF9rZXkoQklPICpvdXQsIFNTTCAqcyk7CistaW50IGluaXRfY2xpZW50 KGludCAqc29jaywgY2hhciAqc2VydmVyLCBpbnQgcG9ydCwgaW50IHR5cGUpOworK2ludCBpbml0 X2NsaWVudChpbnQgKnNvY2ssIGNoYXIgKnNlcnZlciwgY2hhciAqcG9ydCwgaW50IHR5cGUpOwor IGludCBzaG91bGRfcmV0cnkoaW50IGkpOworIGludCBleHRyYWN0X3BvcnQoY2hhciAqc3RyLCBz aG9ydCAqcG9ydF9wdHIpOworLWludCBleHRyYWN0X2hvc3RfcG9ydChjaGFyICpzdHIsIGNoYXIg Kipob3N0X3B0ciwgdW5zaWduZWQgY2hhciAqaXAsCistICAgICAgICAgICAgICAgICAgICAgIHNo b3J0ICpwKTsKKytpbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLCBjaGFyICoqaG9zdF9w dHIsIGNoYXIgKipwb3J0X3B0cik7CisgCisgbG9uZyBNU19DQUxMQkFDSyBiaW9fZHVtcF9jYWxs YmFjayhCSU8gKmJpbywgaW50IGNtZCwgY29uc3QgY2hhciAqYXJncCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBhcmdpLCBsb25nIGFyZ2wsIGxvbmcgcmV0KTsKK2Rp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19jbGllbnQuYy5pcHY2LWFwcHMgb3BlbnNzbC0x LjAuMmEvYXBwcy9zX2NsaWVudC5jCistLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5j LmlwdjYtYXBwcwkyMDE1LTA0LTIwIDE1OjAxOjI0LjAyMjExOTk0MiArMDIwMAorKysrIG9wZW5z c2wtMS4wLjJhL2FwcHMvc19jbGllbnQuYwkyMDE1LTA0LTIwIDE1OjA2OjQyLjMzODUwMzIzNCAr MDIwMAorQEAgLTY2Miw3ICs2NjIsNyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CisgICAgIGludCBjYnVmX2xlbiwgY2J1Zl9vZmY7CisgICAgIGludCBzYnVmX2xlbiwgc2J1Zl9v ZmY7CisgICAgIGZkX3NldCByZWFkZmRzLCB3cml0ZWZkczsKKy0gICAgc2hvcnQgcG9ydCA9IFBP UlQ7CisrICAgIGNoYXIgKnBvcnRfc3RyID0gUE9SVF9TVFI7CisgICAgIGludCBmdWxsX2xvZyA9 IDE7CisgICAgIGNoYXIgKmhvc3QgPSBTU0xfSE9TVF9OQU1FOworICAgICBjaGFyICpjZXJ0X2Zp bGUgPSBOVUxMLCAqa2V5X2ZpbGUgPSBOVUxMLCAqY2hhaW5fZmlsZSA9IE5VTEw7CitAQCAtNzg1 LDEzICs3ODUsMTEgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAg fSBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICItcG9ydCIpID09IDApIHsKKyAgICAgICAgICAgICBp ZiAoLS1hcmdjIDwgMSkKKyAgICAgICAgICAgICAgICAgZ290byBiYWQ7CistICAgICAgICAgICAg cG9ydCA9IGF0b2koKigrK2FyZ3YpKTsKKy0gICAgICAgICAgICBpZiAocG9ydCA9PSAwKQorLSAg ICAgICAgICAgICAgICBnb3RvIGJhZDsKKysgICAgICAgICAgICBwb3J0X3N0ciA9ICooKythcmd2 KTsKKyAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiLWNvbm5lY3QiKSA9PSAwKSB7 CisgICAgICAgICAgICAgaWYgKC0tYXJnYyA8IDEpCisgICAgICAgICAgICAgICAgIGdvdG8gYmFk OworLSAgICAgICAgICAgIGlmICghZXh0cmFjdF9ob3N0X3BvcnQoKigrK2FyZ3YpLCAmaG9zdCwg TlVMTCwgJnBvcnQpKQorKyAgICAgICAgICAgIGlmICghZXh0cmFjdF9ob3N0X3BvcnQoKigrK2Fy Z3YpLCAmaG9zdCwgJnBvcnRfc3RyKSkKKyAgICAgICAgICAgICAgICAgZ290byBiYWQ7CisgICAg ICAgICB9IGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgIi12ZXJpZnkiKSA9PSAwKSB7CisgICAgICAg ICAgICAgdmVyaWZ5ID0gU1NMX1ZFUklGWV9QRUVSOworQEAgLTE0MTcsNyArMTQxNSw3IEBAIGlu dCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAKKyAgcmVfc3RhcnQ6CisgCistICAgIGlm IChpbml0X2NsaWVudCgmcywgaG9zdCwgcG9ydCwgc29ja2V0X3R5cGUpID09IDApIHsKKysgICAg aWYgKGluaXRfY2xpZW50KCZzLCBob3N0LCBwb3J0X3N0ciwgc29ja2V0X3R5cGUpID09IDApIHsK KyAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgImNvbm5lY3Q6ZXJybm89JWRcbiIsIGdldF9s YXN0X3NvY2tldF9lcnJvcigpKTsKKyAgICAgICAgIFNIVVRET1dOKHMpOworICAgICAgICAgZ290 byBlbmQ7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nfc2VydmVyLmMuaXB2Ni1hcHBz IG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zZXJ2ZXIuYworLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMv c19zZXJ2ZXIuYy5pcHY2LWFwcHMJMjAxNS0wNC0yMCAxNTowMToyNC4wMzAxMjAxMjcgKzAyMDAK KysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nfc2VydmVyLmMJMjAxNS0wNC0yMCAxNToxMDo0Ny4y NDUxODc3NDYgKzAyMDAKK0BAIC0xMDYxLDcgKzEwNjEsNyBAQCBpbnQgTUFJTihpbnQgYXJnYywg Y2hhciAqYXJndltdKQorIHsKKyAgICAgWDUwOV9WRVJJRllfUEFSQU0gKnZwbSA9IE5VTEw7Cisg ICAgIGludCBiYWRhcmcgPSAwOworLSAgICBzaG9ydCBwb3J0ID0gUE9SVDsKKysgICAgY2hhciAq cG9ydF9zdHIgPSBQT1JUX1NUUjsKKyAgICAgY2hhciAqQ0FwYXRoID0gTlVMTCwgKkNBZmlsZSA9 IE5VTEw7CisgICAgIGNoYXIgKmNoQ0FwYXRoID0gTlVMTCwgKmNoQ0FmaWxlID0gTlVMTDsKKyAg ICAgY2hhciAqdmZ5Q0FwYXRoID0gTlVMTCwgKnZmeUNBZmlsZSA9IE5VTEw7CitAQCAtMTE0OCw3 ICsxMTQ4LDggQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgICAgICAgIGlm ICgoc3RyY21wKCphcmd2LCAiLXBvcnQiKSA9PSAwKSB8fCAoc3RyY21wKCphcmd2LCAiLWFjY2Vw dCIpID09IDApKSB7CisgICAgICAgICAgICAgaWYgKC0tYXJnYyA8IDEpCisgICAgICAgICAgICAg ICAgIGdvdG8gYmFkOworLSAgICAgICAgICAgIGlmICghZXh0cmFjdF9wb3J0KCooKythcmd2KSwg JnBvcnQpKQorKyAgICAgICAgICAgIHBvcnRfc3RyID0gKigrK2FyZ3YpOworKyAgICAgICAgICAg IGlmIChwb3J0X3N0ciA9PSBOVUxMIHx8ICpwb3J0X3N0ciA9PSAnXDAnKQorICAgICAgICAgICAg ICAgICBnb3RvIGJhZDsKKyAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiLW5hY2Nl cHQiKSA9PSAwKSB7CisgICAgICAgICAgICAgaWYgKC0tYXJnYyA8IDEpCitAQCAtMjAyMCwxMyAr MjAyMSwxMyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgICBCSU9fcHJp bnRmKGJpb19zX291dCwgIkFDQ0VQVFxuIik7CisgICAgICh2b2lkKUJJT19mbHVzaChiaW9fc19v dXQpOworICAgICBpZiAocmV2KQorLSAgICAgICAgZG9fc2VydmVyKHBvcnQsIHNvY2tldF90eXBl LCAmYWNjZXB0X3NvY2tldCwgcmV2X2JvZHksIGNvbnRleHQsCisrICAgICAgICBkb19zZXJ2ZXIo cG9ydF9zdHIsIHNvY2tldF90eXBlLCAmYWNjZXB0X3NvY2tldCwgcmV2X2JvZHksIGNvbnRleHQs CisgICAgICAgICAgICAgICAgICAgbmFjY2VwdCk7CisgICAgIGVsc2UgaWYgKHd3dykKKy0gICAg ICAgIGRvX3NlcnZlcihwb3J0LCBzb2NrZXRfdHlwZSwgJmFjY2VwdF9zb2NrZXQsIHd3d19ib2R5 LCBjb250ZXh0LAorKyAgICAgICAgZG9fc2VydmVyKHBvcnRfc3RyLCBzb2NrZXRfdHlwZSwgJmFj Y2VwdF9zb2NrZXQsIHd3d19ib2R5LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgIG5hY2Nl cHQpOworICAgICBlbHNlCistICAgICAgICBkb19zZXJ2ZXIocG9ydCwgc29ja2V0X3R5cGUsICZh Y2NlcHRfc29ja2V0LCBzdl9ib2R5LCBjb250ZXh0LAorKyAgICAgICAgZG9fc2VydmVyKHBvcnRf c3RyLCBzb2NrZXRfdHlwZSwgJmFjY2VwdF9zb2NrZXQsIHN2X2JvZHksIGNvbnRleHQsCisgICAg ICAgICAgICAgICAgICAgbmFjY2VwdCk7CisgICAgIHByaW50X3N0YXRzKGJpb19zX291dCwgY3R4 KTsKKyAgICAgcmV0ID0gMDsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zb2NrZXQu Yy5pcHY2LWFwcHMgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NvY2tldC5jCistLS0gb3BlbnNzbC0x LjAuMmEvYXBwcy9zX3NvY2tldC5jLmlwdjYtYXBwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAw MDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zb2NrZXQuYwkyMDE1LTA0LTIw IDE1OjMyOjUzLjk2MDA3OTUwNyArMDIwMAorQEAgLTEwNiw5ICsxMDYsNyBAQCBzdGF0aWMgc3Ry dWN0IGhvc3RlbnQgKkdldEhvc3RCeU5hbWUoY2hhCisgc3RhdGljIHZvaWQgc3NsX3NvY2tfY2xl YW51cCh2b2lkKTsKKyAjIGVuZGlmCisgc3RhdGljIGludCBzc2xfc29ja19pbml0KHZvaWQpOwor LXN0YXRpYyBpbnQgaW5pdF9jbGllbnRfaXAoaW50ICpzb2NrLCB1bnNpZ25lZCBjaGFyIGlwWzRd LCBpbnQgcG9ydCwgaW50IHR5cGUpOworLXN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2Nr LCBpbnQgcG9ydCwgaW50IHR5cGUpOworLXN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQg KnNvY2ssIGludCBwb3J0LCBjaGFyICppcCwgaW50IHR5cGUpOworK3N0YXRpYyBpbnQgaW5pdF9z ZXJ2ZXIoaW50ICpzb2NrLCBjaGFyICpwb3J0LCBpbnQgdHlwZSk7Cisgc3RhdGljIGludCBkb19h Y2NlcHQoaW50IGFjY19zb2NrLCBpbnQgKnNvY2ssIGNoYXIgKipob3N0KTsKKyBzdGF0aWMgaW50 IGhvc3RfaXAoY2hhciAqc3RyLCB1bnNpZ25lZCBjaGFyIGlwWzRdKTsKKyAKK0BAIC0yMzEsNjUg KzIyOSw2NiBAQCBzdGF0aWMgaW50IHNzbF9zb2NrX2luaXQodm9pZCkKKyAgICAgcmV0dXJuICgx KTsKKyB9CisgCistaW50IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAqaG9zdCwgaW50IHBv cnQsIGludCB0eXBlKQorK2ludCBpbml0X2NsaWVudChpbnQgKnNvY2ssIGNoYXIgKmhvc3QsIGNo YXIgKnBvcnQsIGludCB0eXBlKQorIHsKKy0gICAgdW5zaWduZWQgY2hhciBpcFs0XTsKKy0KKy0g ICAgbWVtc2V0KGlwLCAnXDAnLCBzaXplb2YgaXApOworLSAgICBpZiAoIWhvc3RfaXAoaG9zdCwg JihpcFswXSkpKQorLSAgICAgICAgcmV0dXJuIDA7CistICAgIHJldHVybiBpbml0X2NsaWVudF9p cChzb2NrLCBpcCwgcG9ydCwgdHlwZSk7CistfQorLQorLXN0YXRpYyBpbnQgaW5pdF9jbGllbnRf aXAoaW50ICpzb2NrLCB1bnNpZ25lZCBjaGFyIGlwWzRdLCBpbnQgcG9ydCwgaW50IHR5cGUpCist eworLSAgICB1bnNpZ25lZCBsb25nIGFkZHI7CistICAgIHN0cnVjdCBzb2NrYWRkcl9pbiB0aGVt OworLSAgICBpbnQgcywgaTsKKysgICAgc3RydWN0IGFkZHJpbmZvICpyZXMsICpyZXMwLCBoaW50 czsKKysgICAgY2hhciAqZmFpbGVkX2NhbGwgPSBOVUxMOworKyAgICBpbnQgczsKKysgICAgaW50 IGU7CisgCisgICAgIGlmICghc3NsX3NvY2tfaW5pdCgpKQorICAgICAgICAgcmV0dXJuICgwKTsK KyAKKy0gICAgbWVtc2V0KChjaGFyICopJnRoZW0sIDAsIHNpemVvZih0aGVtKSk7CistICAgIHRo ZW0uc2luX2ZhbWlseSA9IEFGX0lORVQ7CistICAgIHRoZW0uc2luX3BvcnQgPSBodG9ucygodW5z aWduZWQgc2hvcnQpcG9ydCk7CistICAgIGFkZHIgPSAodW5zaWduZWQgbG9uZykKKy0gICAgICAg ICgodW5zaWduZWQgbG9uZylpcFswXSA8PCAyNEwpIHwKKy0gICAgICAgICgodW5zaWduZWQgbG9u ZylpcFsxXSA8PCAxNkwpIHwKKy0gICAgICAgICgodW5zaWduZWQgbG9uZylpcFsyXSA8PCA4TCkg fCAoKHVuc2lnbmVkIGxvbmcpaXBbM10pOworLSAgICB0aGVtLnNpbl9hZGRyLnNfYWRkciA9IGh0 b25sKGFkZHIpOworLQorLSAgICBpZiAodHlwZSA9PSBTT0NLX1NUUkVBTSkKKy0gICAgICAgIHMg PSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIFNPQ0tFVF9QUk9UT0NPTCk7CistICAgIGVs c2UgICAgICAgICAgICAgICAgICAgICAgICAvKiAoIHR5cGUgPT0gU09DS19ER1JBTSkgKi8KKy0g ICAgICAgIHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApOworLQor LSAgICBpZiAocyA9PSBJTlZBTElEX1NPQ0tFVCkgeworLSAgICAgICAgcGVycm9yKCJzb2NrZXQi KTsKKysgICAgbWVtc2V0KCZoaW50cywgJ1wwJywgc2l6ZW9mKGhpbnRzKSk7CisrICAgIGhpbnRz LmFpX3NvY2t0eXBlID0gdHlwZTsKKysgICAgaGludHMuYWlfZmxhZ3MgPSBBSV9BRERSQ09ORklH OworKworKyAgICBlID0gZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgJmhpbnRzLCAmcmVzKTsKKysg ICAgaWYgKGUpIHsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZ2V0YWRkcmluZm86ICVzXG4i LCBnYWlfc3RyZXJyb3IoZSkpOworKyAgICAgICAgaWYgKGUgPT0gRUFJX1NZU1RFTSkKKysgICAg ICAgICAgICBwZXJyb3IoImdldGFkZHJpbmZvIik7CisgICAgICAgICByZXR1cm4gKDApOworICAg ICB9CisrCisrICAgIHJlczAgPSByZXM7CisrICAgIHdoaWxlIChyZXMpIHsKKysgICAgICAgIHMg PSBzb2NrZXQocmVzLT5haV9mYW1pbHksIHJlcy0+YWlfc29ja3R5cGUsIHJlcy0+YWlfcHJvdG9j b2wpOworKyAgICAgICAgaWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpIHsKKysgICAgICAgICAgICBm YWlsZWRfY2FsbCA9ICJzb2NrZXQiOworKyAgICAgICAgICAgIGdvdG8gbmV4dHJlczsKKysgICAg ICAgIH0KKyAjIGlmIGRlZmluZWQoU09fS0VFUEFMSVZFKSAmJiAhZGVmaW5lZChPUEVOU1NMX1NZ U19NUEUpCistICAgIGlmICh0eXBlID09IFNPQ0tfU1RSRUFNKSB7CistICAgICAgICBpID0gMDsK Ky0gICAgICAgIGkgPSBzZXRzb2Nrb3B0KHMsIFNPTF9TT0NLRVQsIFNPX0tFRVBBTElWRSwgKGNo YXIgKikmaSwgc2l6ZW9mKGkpKTsKKy0gICAgICAgIGlmIChpIDwgMCkgeworLSAgICAgICAgICAg IGNsb3Nlc29ja2V0KHMpOworLSAgICAgICAgICAgIHBlcnJvcigia2VlcGFsaXZlIik7CistICAg ICAgICAgICAgcmV0dXJuICgwKTsKKysgICAgICAgIGlmICh0eXBlID09IFNPQ0tfU1RSRUFNKSB7 CisrICAgICAgICAgICAgaW50IGkgPSAwOworKyAgICAgICAgICAgIGkgPSBzZXRzb2Nrb3B0KHMs IFNPTF9TT0NLRVQsIFNPX0tFRVBBTElWRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y2hhciAqKSZpLCBzaXplb2YoaSkpOworKyAgICAgICAgICAgIGlmIChpIDwgMCkgeworKyAgICAg ICAgICAgICAgICBmYWlsZWRfY2FsbCA9ICJrZWVwYWxpdmUiOworKyAgICAgICAgICAgICAgICBn b3RvIG5leHRyZXM7CisrICAgICAgICAgICAgfQorICAgICAgICAgfQorLSAgICB9CisgIyBlbmRp ZgorLQorLSAgICBpZiAoY29ubmVjdChzLCAoc3RydWN0IHNvY2thZGRyICopJnRoZW0sIHNpemVv Zih0aGVtKSkgPT0gLTEpIHsKKy0gICAgICAgIGNsb3Nlc29ja2V0KHMpOworLSAgICAgICAgcGVy cm9yKCJjb25uZWN0Iik7CistICAgICAgICByZXR1cm4gKDApOworKyAgICAgICAgaWYgKGNvbm5l Y3QocywgKHN0cnVjdCBzb2NrYWRkciAqKXJlcy0+YWlfYWRkciwgcmVzLT5haV9hZGRybGVuKSA9 PSAwKSB7CisrICAgICAgICAgICAgZnJlZWFkZHJpbmZvKHJlczApOworKyAgICAgICAgICAgICpz b2NrID0gczsKKysgICAgICAgICAgICByZXR1cm4gKDEpOworKyAgICAgICAgfQorKworKyAgICAg ICAgZmFpbGVkX2NhbGwgPSAic29ja2V0IjsKKysgbmV4dHJlczoKKysgICAgICAgIGlmIChzICE9 IElOVkFMSURfU09DS0VUKQorKyAgICAgICAgICAgIGNsb3NlKHMpOworKyAgICAgICAgcmVzID0g cmVzLT5haV9uZXh0OworICAgICB9CistICAgICpzb2NrID0gczsKKy0gICAgcmV0dXJuICgxKTsK KysgICAgZnJlZWFkZHJpbmZvKHJlczApOworKyAgICBjbG9zZXNvY2tldChzKTsKKysKKysgICAg cGVycm9yKGZhaWxlZF9jYWxsKTsKKysgICAgcmV0dXJuICgwKTsKKyB9CisgCistaW50IGRvX3Nl cnZlcihpbnQgcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LAorK2ludCBkb19zZXJ2ZXIoY2hhciAq cG9ydCwgaW50IHR5cGUsIGludCAqcmV0LAorICAgICAgICAgICAgICAgaW50ICgqY2IpIChjaGFy ICpob3N0bmFtZSwgaW50IHMsIGludCBzdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQsCisgICAgICAg ICAgICAgICBpbnQgbmFjY2VwdCkKK0BAIC0zMjgsNjkgKzMyNyw4OSBAQCBpbnQgZG9fc2VydmVy KGludCBwb3J0LCBpbnQgdHlwZSwgaW50ICpyCisgICAgIH0KKyB9CisgCistc3RhdGljIGludCBp bml0X3NlcnZlcl9sb25nKGludCAqc29jaywgaW50IHBvcnQsIGNoYXIgKmlwLCBpbnQgdHlwZSkK KytzdGF0aWMgaW50IGluaXRfc2VydmVyKGludCAqc29jaywgY2hhciAqcG9ydCwgaW50IHR5cGUp CisgeworLSAgICBpbnQgcmV0ID0gMDsKKy0gICAgc3RydWN0IHNvY2thZGRyX2luIHNlcnZlcjsK Ky0gICAgaW50IHMgPSAtMTsKKysgICAgc3RydWN0IGFkZHJpbmZvICpyZXMsICpyZXMwID0gTlVM TCwgaGludHM7CisrICAgIGNoYXIgKmZhaWxlZF9jYWxsID0gTlVMTDsKKysgICAgaW50IHMgPSBJ TlZBTElEX1NPQ0tFVDsKKysgICAgaW50IGU7CisgCisgICAgIGlmICghc3NsX3NvY2tfaW5pdCgp KQorICAgICAgICAgcmV0dXJuICgwKTsKKyAKKy0gICAgbWVtc2V0KChjaGFyICopJnNlcnZlciwg MCwgc2l6ZW9mKHNlcnZlcikpOworLSAgICBzZXJ2ZXIuc2luX2ZhbWlseSA9IEFGX0lORVQ7Cist ICAgIHNlcnZlci5zaW5fcG9ydCA9IGh0b25zKCh1bnNpZ25lZCBzaG9ydClwb3J0KTsKKy0gICAg aWYgKGlwID09IE5VTEwpCistICAgICAgICBzZXJ2ZXIuc2luX2FkZHIuc19hZGRyID0gSU5BRERS X0FOWTsKKy0gICAgZWxzZQorLS8qIEFkZGVkIGZvciBUM0UsIGFkZHJlc3Mtb2YgZmFpbHMgb24g Yml0IGZpZWxkIChiZWNrbWFuQGFjbC5sYW5sLmdvdikgKi8KKy0jIGlmbmRlZiBCSVRfRklFTERf TElNSVRTCistICAgICAgICBtZW1jcHkoJnNlcnZlci5zaW5fYWRkci5zX2FkZHIsIGlwLCA0KTsK Ky0jIGVsc2UKKy0gICAgICAgIG1lbWNweSgmc2VydmVyLnNpbl9hZGRyLCBpcCwgNCk7CistIyBl bmRpZgorLQorLSAgICBpZiAodHlwZSA9PSBTT0NLX1NUUkVBTSkKKy0gICAgICAgIHMgPSBzb2Nr ZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIFNPQ0tFVF9QUk9UT0NPTCk7CistICAgIGVsc2UgICAg ICAgICAgICAgICAgICAgICAgICAvKiB0eXBlID09IFNPQ0tfREdSQU0gKi8KKy0gICAgICAgIHMg PSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApOworKyAgICBtZW1zZXQo JmhpbnRzLCAnXDAnLCBzaXplb2YoaGludHMpKTsKKysgICAgaGludHMuYWlfZmFtaWx5ID0gQUZf SU5FVDY7CisrIHRyeWlwdjQ6CisrICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gdHlwZTsKKysgICAg aGludHMuYWlfZmxhZ3MgPSBBSV9QQVNTSVZFOworKworKyAgICBlID0gZ2V0YWRkcmluZm8oTlVM TCwgcG9ydCwgJmhpbnRzLCAmcmVzKTsKKysgICAgaWYgKGUpIHsKKysgICAgICAgIGlmIChoaW50 cy5haV9mYW1pbHkgPT0gQUZfSU5FVCkgeworKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi Z2V0YWRkcmluZm86ICVzXG4iLCBnYWlfc3RyZXJyb3IoZSkpOworKyAgICAgICAgICAgIGlmIChl ID09IEVBSV9TWVNURU0pCisrICAgICAgICAgICAgICAgIHBlcnJvcigiZ2V0YWRkcmluZm8iKTsK KysgICAgICAgICAgICByZXR1cm4gKDApOworKyAgICAgICAgfSBlbHNlCisrICAgICAgICAgICAg cmVzID0gTlVMTDsKKysgICAgfQorIAorLSAgICBpZiAocyA9PSBJTlZBTElEX1NPQ0tFVCkKKy0g ICAgICAgIGdvdG8gZXJyOworKyAgICByZXMwID0gcmVzOworKyAgICB3aGlsZSAocmVzKSB7Cisr ICAgICAgICBzID0gc29ja2V0KHJlcy0+YWlfZmFtaWx5LCByZXMtPmFpX3NvY2t0eXBlLCByZXMt PmFpX3Byb3RvY29sKTsKKysgICAgICAgIGlmIChzID09IElOVkFMSURfU09DS0VUKSB7CisrICAg ICAgICAgICAgZmFpbGVkX2NhbGwgPSAic29ja2V0IjsKKysgICAgICAgICAgICBnb3RvIG5leHRy ZXM7CisrICAgICAgICB9CisrICAgICAgICBpZiAoaGludHMuYWlfZmFtaWx5ID09IEFGX0lORVQ2 KSB7CisrICAgICAgICAgICAgaW50IGogPSAwOworKyAgICAgICAgICAgIHNldHNvY2tvcHQocywg SVBQUk9UT19JUFY2LCBJUFY2X1Y2T05MWSwgKHZvaWQgKikmaiwgc2l6ZW9mIGopOworKyAgICAg ICAgfQorICMgaWYgZGVmaW5lZCBTT0xfU09DS0VUICYmIGRlZmluZWQgU09fUkVVU0VBRERSCist ICAgIHsKKy0gICAgICAgIGludCBqID0gMTsKKy0gICAgICAgIHNldHNvY2tvcHQocywgU09MX1NP Q0tFVCwgU09fUkVVU0VBRERSLCAodm9pZCAqKSZqLCBzaXplb2Ygaik7CistICAgIH0KKy0jIGVu ZGlmCistICAgIGlmIChiaW5kKHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2VydmVyLCBzaXplb2Yo c2VydmVyKSkgPT0gLTEpIHsKKy0jIGlmbmRlZiBPUEVOU1NMX1NZU19XSU5ET1dTCistICAgICAg ICBwZXJyb3IoImJpbmQiKTsKKysgICAgICAgIHsKKysgICAgICAgICAgICBpbnQgaiA9IDE7Cisr ICAgICAgICAgICAgc2V0c29ja29wdChzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsICh2b2lk ICopJmosIHNpemVvZiBqKTsKKysgICAgICAgIH0KKyAjIGVuZGlmCistICAgICAgICBnb3RvIGVy cjsKKysKKysgICAgICAgIGlmIChiaW5kKHMsIChzdHJ1Y3Qgc29ja2FkZHIgKilyZXMtPmFpX2Fk ZHIsIHJlcy0+YWlfYWRkcmxlbikgPT0gLTEpIHsKKysgICAgICAgICAgICBmYWlsZWRfY2FsbCA9 ICJiaW5kIjsKKysgICAgICAgICAgICBnb3RvIG5leHRyZXM7CisrICAgICAgICB9CisrICAgICAg ICBpZiAodHlwZSA9PSBTT0NLX1NUUkVBTSAmJiBsaXN0ZW4ocywgMTI4KSA9PSAtMSkgeworKyAg ICAgICAgICAgIGZhaWxlZF9jYWxsID0gImxpc3RlbiI7CisrICAgICAgICAgICAgZ290byBuZXh0 cmVzOworKyAgICAgICAgfQorKworKyAgICAgICAgKnNvY2sgPSBzOworKyAgICAgICAgcmV0dXJu ICgxKTsKKysKKysgbmV4dHJlczoKKysgICAgICAgIGlmIChzICE9IElOVkFMSURfU09DS0VUKQor KyAgICAgICAgICAgIGNsb3NlKHMpOworKyAgICAgICAgcmVzID0gcmVzLT5haV9uZXh0OworICAg ICB9CistICAgIC8qIE1ha2UgaXQgMTI4IGZvciBsaW51eCAqLworLSAgICBpZiAodHlwZSA9PSBT T0NLX1NUUkVBTSAmJiBsaXN0ZW4ocywgMTI4KSA9PSAtMSkKKy0gICAgICAgIGdvdG8gZXJyOwor LSAgICAqc29jayA9IHM7CistICAgIHJldCA9IDE7CistIGVycjoKKy0gICAgaWYgKChyZXQgPT0g MCkgJiYgKHMgIT0gLTEpKSB7CistICAgICAgICBTSFVURE9XTihzKTsKKysgICAgaWYgKHJlczAp CisrICAgICAgICBmcmVlYWRkcmluZm8ocmVzMCk7CisrCisrICAgIGlmIChzID09IElOVkFMSURf U09DS0VUKSB7CisrICAgICAgICBpZiAoaGludHMuYWlfZmFtaWx5ID09IEFGX0lORVQ2KSB7Cisr ICAgICAgICAgICAgaGludHMuYWlfZmFtaWx5ID0gQUZfSU5FVDsKKysgICAgICAgICAgICBnb3Rv IHRyeWlwdjQ7CisrICAgICAgICB9CisrICAgICAgICBwZXJyb3IoInNvY2tldCIpOworKyAgICAg ICAgcmV0dXJuICgwKTsKKyAgICAgfQorLSAgICByZXR1cm4gKHJldCk7CistfQorIAorLXN0YXRp YyBpbnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2NrLCBpbnQgcG9ydCwgaW50IHR5cGUpCisteworLSAg ICByZXR1cm4gKGluaXRfc2VydmVyX2xvbmcoc29jaywgcG9ydCwgTlVMTCwgdHlwZSkpOworKyAg ICBwZXJyb3IoZmFpbGVkX2NhbGwpOworKyAgICByZXR1cm4gKDApOworIH0KKyAKKyBzdGF0aWMg aW50IGRvX2FjY2VwdChpbnQgYWNjX3NvY2ssIGludCAqc29jaywgY2hhciAqKmhvc3QpCisgewor KyAgICBzdGF0aWMgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgZnJvbTsKKysgICAgY2hhciBidWZm ZXJbTklfTUFYSE9TVF07CisgICAgIGludCByZXQ7CistICAgIHN0cnVjdCBob3N0ZW50ICpoMSwg KmgyOworLSAgICBzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luIGZyb207CisgICAgIGludCBsZW47 CisgLyogICAgICBzdHJ1Y3QgbGluZ2VyIGxpbmc7ICovCisgCitAQCAtNDMyLDEzNCArNDUxLDYw IEBAIHN0YXRpYyBpbnQgZG9fYWNjZXB0KGludCBhY2Nfc29jaywgaW50ICoKKyAgICAgbGluZy5s X29ub2ZmPTE7CisgICAgIGxpbmcubF9saW5nZXI9MDsKKyAgICAgaT1zZXRzb2Nrb3B0KHJldCxT T0xfU09DS0VULFNPX0xJTkdFUiwoY2hhciAqKSZsaW5nLHNpemVvZihsaW5nKSk7CistICAgIGlm IChpIDwgMCkgeyBwZXJyb3IoImxpbmdlciIpOyByZXR1cm4oMCk7IH0KKysgICAgaWYgKGkgPCAw KSB7IGNsb3Nlc29ja2V0KHJldCk7IHBlcnJvcigibGluZ2VyIik7IHJldHVybigwKTsgfQorICAg ICBpPTA7CisgICAgIGk9c2V0c29ja29wdChyZXQsU09MX1NPQ0tFVCxTT19LRUVQQUxJVkUsKGNo YXIgKikmaSxzaXplb2YoaSkpOworLSAgICBpZiAoaSA8IDApIHsgcGVycm9yKCJrZWVwYWxpdmUi KTsgcmV0dXJuKDApOyB9CisrICAgIGlmIChpIDwgMCkgeyBjbG9zZXNvY2tldChyZXQpOyBwZXJy b3IoImtlZXBhbGl2ZSIpOyByZXR1cm4oMCk7IH0KKyAqLworIAorICAgICBpZiAoaG9zdCA9PSBO VUxMKQorICAgICAgICAgZ290byBlbmQ7CistIyBpZm5kZWYgQklUX0ZJRUxEX0xJTUlUUworLSAg ICAvKiBJIHNob3VsZCB1c2UgV1NBQXN5bmNHZXRIb3N0QnlOYW1lKCkgdW5kZXIgd2luZG93cyAq LworLSAgICBoMSA9IGdldGhvc3RieWFkZHIoKGNoYXIgKikmZnJvbS5zaW5fYWRkci5zX2FkZHIs CistICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZnJvbS5zaW5fYWRkci5zX2FkZHIpLCBB Rl9JTkVUKTsKKy0jIGVsc2UKKy0gICAgaDEgPSBnZXRob3N0YnlhZGRyKChjaGFyICopJmZyb20u c2luX2FkZHIsCistICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGluX2FkZHIp LCBBRl9JTkVUKTsKKy0jIGVuZGlmCistICAgIGlmIChoMSA9PSBOVUxMKSB7CistICAgICAgICBC SU9fcHJpbnRmKGJpb19lcnIsICJiYWQgZ2V0aG9zdGJ5YWRkclxuIik7CisrCisrICAgIGlmIChn ZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopJmZyb20sIHNpemVvZihmcm9tKSwKKysgICAg ICAgICAgICAgICAgICAgIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIE5VTEwsIDAsIDApKSB7Cisr ICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJnZXRuYW1laW5mbyBmYWlsZWRcbiIpOworICAg ICAgICAgKmhvc3QgPSBOVUxMOworICAgICAgICAgLyogcmV0dXJuKDApOyAqLworICAgICB9IGVs c2UgeworLSAgICAgICAgaWYgKCgqaG9zdCA9IChjaGFyICopT1BFTlNTTF9tYWxsb2Moc3RybGVu KGgxLT5oX25hbWUpICsgMSkpID09IE5VTEwpIHsKKysgICAgICAgIGlmICgoKmhvc3QgPSAoY2hh ciAqKU9QRU5TU0xfbWFsbG9jKHN0cmxlbihidWZmZXIpICsgMSkpID09IE5VTEwpIHsKKyAgICAg ICAgICAgICBwZXJyb3IoIk9QRU5TU0xfbWFsbG9jIik7CisgICAgICAgICAgICAgY2xvc2Vzb2Nr ZXQocmV0KTsKKyAgICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICAgfQorLSAgICAgICAg QlVGX3N0cmxjcHkoKmhvc3QsIGgxLT5oX25hbWUsIHN0cmxlbihoMS0+aF9uYW1lKSArIDEpOwor LQorLSAgICAgICAgaDIgPSBHZXRIb3N0QnlOYW1lKCpob3N0KTsKKy0gICAgICAgIGlmIChoMiA9 PSBOVUxMKSB7CistICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZ2V0aG9zdGJ5bmFt ZSBmYWlsdXJlXG4iKTsKKy0gICAgICAgICAgICBjbG9zZXNvY2tldChyZXQpOworLSAgICAgICAg ICAgIHJldHVybiAoMCk7CistICAgICAgICB9CistICAgICAgICBpZiAoaDItPmhfYWRkcnR5cGUg IT0gQUZfSU5FVCkgeworLSAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgImdldGhvc3Ri eW5hbWUgYWRkciBpcyBub3QgQUZfSU5FVFxuIik7CistICAgICAgICAgICAgY2xvc2Vzb2NrZXQo cmV0KTsKKy0gICAgICAgICAgICByZXR1cm4gKDApOworLSAgICAgICAgfQorKyAgICAgICAgc3Ry Y3B5KCpob3N0LCBidWZmZXIpOworICAgICB9CisgIGVuZDoKKyAgICAgKnNvY2sgPSByZXQ7Cisg ICAgIHJldHVybiAoMSk7CisgfQorIAorLWludCBleHRyYWN0X2hvc3RfcG9ydChjaGFyICpzdHIs IGNoYXIgKipob3N0X3B0ciwgdW5zaWduZWQgY2hhciAqaXAsCistICAgICAgICAgICAgICAgICAg ICAgIHNob3J0ICpwb3J0X3B0cikKKytpbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLCBj aGFyICoqaG9zdF9wdHIsIGNoYXIgKipwb3J0X3B0cikKKyB7CistICAgIGNoYXIgKmgsICpwOwor KyAgICBjaGFyICpoLCAqcCwgKng7CisgCistICAgIGggPSBzdHI7CistICAgIHAgPSBzdHJjaHIo c3RyLCAnOicpOworKyAgICB4ID0gaCA9IHN0cjsKKysgICAgaWYgKCpoID09ICdbJykgeworKyAg ICAgICAgaCsrOworKyAgICAgICAgcCA9IHN0cmNocihoLCAnXScpOworKyAgICAgICAgaWYgKHAg PT0gTlVMTCkgeworKyAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgIm5vIGVuZGluZyBi cmFja2V0IGZvciBJUHY2IGFkZHJlc3NcbiIpOworKyAgICAgICAgICAgIHJldHVybiAoMCk7Cisr ICAgICAgICB9CisrICAgICAgICAqKHArKykgPSAnXDAnOworKyAgICAgICAgeCA9IHA7CisrICAg IH0KKysgICAgcCA9IHN0cmNocih4LCAnOicpOworICAgICBpZiAocCA9PSBOVUxMKSB7CisgICAg ICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJubyBwb3J0IGRlZmluZWRcbiIpOworICAgICAgICAg cmV0dXJuICgwKTsKKyAgICAgfQorICAgICAqKHArKykgPSAnXDAnOworIAorLSAgICBpZiAoKGlw ICE9IE5VTEwpICYmICFob3N0X2lwKHN0ciwgaXApKQorLSAgICAgICAgZ290byBlcnI7CisgICAg IGlmIChob3N0X3B0ciAhPSBOVUxMKQorICAgICAgICAgKmhvc3RfcHRyID0gaDsKKysgICAgaWYg KHBvcnRfcHRyICE9IE5VTEwpCisrICAgICAgICAqcG9ydF9wdHIgPSBwOworIAorLSAgICBpZiAo IWV4dHJhY3RfcG9ydChwLCBwb3J0X3B0cikpCistICAgICAgICBnb3RvIGVycjsKKy0gICAgcmV0 dXJuICgxKTsKKy0gZXJyOgorLSAgICByZXR1cm4gKDApOworLX0KKy0KKy1zdGF0aWMgaW50IGhv c3RfaXAoY2hhciAqc3RyLCB1bnNpZ25lZCBjaGFyIGlwWzRdKQorLXsKKy0gICAgdW5zaWduZWQg aW50IGluWzRdOworLSAgICBpbnQgaTsKKy0KKy0gICAgaWYgKHNzY2FuZihzdHIsICIldS4ldS4l dS4ldSIsICYoaW5bMF0pLCAmKGluWzFdKSwgJihpblsyXSksICYoaW5bM10pKSA9PQorLSAgICAg ICAgNCkgeworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKKy0gICAgICAgICAgICBp ZiAoaW5baV0gPiAyNTUpIHsKKy0gICAgICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAi aW52YWxpZCBJUCBhZGRyZXNzXG4iKTsKKy0gICAgICAgICAgICAgICAgZ290byBlcnI7CistICAg ICAgICAgICAgfQorLSAgICAgICAgaXBbMF0gPSBpblswXTsKKy0gICAgICAgIGlwWzFdID0gaW5b MV07CistICAgICAgICBpcFsyXSA9IGluWzJdOworLSAgICAgICAgaXBbM10gPSBpblszXTsKKy0g ICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgIC8qIGRvIGEgZ2V0aG9zdGJ5bmFtZSAqLwor LSAgICAgICAgc3RydWN0IGhvc3RlbnQgKmhlOworLQorLSAgICAgICAgaWYgKCFzc2xfc29ja19p bml0KCkpCistICAgICAgICAgICAgcmV0dXJuICgwKTsKKy0KKy0gICAgICAgIGhlID0gR2V0SG9z dEJ5TmFtZShzdHIpOworLSAgICAgICAgaWYgKGhlID09IE5VTEwpIHsKKy0gICAgICAgICAgICBC SU9fcHJpbnRmKGJpb19lcnIsICJnZXRob3N0YnluYW1lIGZhaWx1cmVcbiIpOworLSAgICAgICAg ICAgIGdvdG8gZXJyOworLSAgICAgICAgfQorLSAgICAgICAgLyogY2FzdCB0byBzaG9ydCBiZWNh dXNlIG9mIHdpbjE2IHdpbnNvY2sgZGVmaW5pdGlvbiAqLworLSAgICAgICAgaWYgKChzaG9ydClo ZS0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKSB7CistICAgICAgICAgICAgQklPX3ByaW50ZihiaW9f ZXJyLCAiZ2V0aG9zdGJ5bmFtZSBhZGRyIGlzIG5vdCBBRl9JTkVUXG4iKTsKKy0gICAgICAgICAg ICByZXR1cm4gKDApOworLSAgICAgICAgfQorLSAgICAgICAgaXBbMF0gPSBoZS0+aF9hZGRyX2xp c3RbMF1bMF07CistICAgICAgICBpcFsxXSA9IGhlLT5oX2FkZHJfbGlzdFswXVsxXTsKKy0gICAg ICAgIGlwWzJdID0gaGUtPmhfYWRkcl9saXN0WzBdWzJdOworLSAgICAgICAgaXBbM10gPSBoZS0+ aF9hZGRyX2xpc3RbMF1bM107CistICAgIH0KKy0gICAgcmV0dXJuICgxKTsKKy0gZXJyOgorLSAg ICByZXR1cm4gKDApOworLX0KKy0KKy1pbnQgZXh0cmFjdF9wb3J0KGNoYXIgKnN0ciwgc2hvcnQg KnBvcnRfcHRyKQorLXsKKy0gICAgaW50IGk7CistICAgIHN0cnVjdCBzZXJ2ZW50ICpzOworLQor LSAgICBpID0gYXRvaShzdHIpOworLSAgICBpZiAoaSAhPSAwKQorLSAgICAgICAgKnBvcnRfcHRy ID0gKHVuc2lnbmVkIHNob3J0KWk7CistICAgIGVsc2UgeworLSAgICAgICAgcyA9IGdldHNlcnZi eW5hbWUoc3RyLCAidGNwIik7CistICAgICAgICBpZiAocyA9PSBOVUxMKSB7CistICAgICAgICAg ICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZ2V0c2VydmJ5bmFtZSBmYWlsdXJlIGZvciAlc1xuIiwg c3RyKTsKKy0gICAgICAgICAgICByZXR1cm4gKDApOworLSAgICAgICAgfQorLSAgICAgICAgKnBv cnRfcHRyID0gbnRvaHMoKHVuc2lnbmVkIHNob3J0KXMtPnNfcG9ydCk7CistICAgIH0KKyAgICAg cmV0dXJuICgxKTsKKyB9CisgCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtaXNzdWVyLWhh c2gucGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS1pc3N1ZXItaGFzaC5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDM5ZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNz bC0xLjAuMmEtaXNzdWVyLWhhc2gucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMWsvY3J5cHRvL3g1MDkveDUwOV9jbXAuYy5pc3N1ZXItaGFzaCBvcGVuc3NsLTEu MC4xay9jcnlwdG8veDUwOS94NTA5X2NtcC5jCistLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3g1 MDkveDUwOV9jbXAuYy5pc3N1ZXItaGFzaAkyMDE1LTA0LTA5IDE4OjE2OjAzLjM0OTg1NTE5MyAr MDIwMAorKysrIG9wZW5zc2wtMS4wLjFrL2NyeXB0by94NTA5L3g1MDlfY21wLmMJMjAxNS0wNC0w OSAxODoxNjowMC42MTY3OTIwNTggKzAyMDAKK0BAIC04Niw2ICs4Niw3IEBAIHVuc2lnbmVkIGxv bmcgWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9oYXMKKyAgICAgY2hhciAqZjsKKyAKKyAgICAgRVZQ X01EX0NUWF9pbml0KCZjdHgpOworKyAgICBFVlBfTURfQ1RYX3NldF9mbGFncygmY3R4LCBFVlBf TURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpOworICAgICBmID0gWDUwOV9OQU1FX29uZWxpbmUo YS0+Y2VydF9pbmZvLT5pc3N1ZXIsIE5VTEwsIDApOworICAgICBpZiAoIUVWUF9EaWdlc3RJbml0 X2V4KCZjdHgsIEVWUF9tZDUoKSwgTlVMTCkpCisgICAgICAgICBnb3RvIGVycjsKCmRpZmYgLS1n aXQgYS9vcGVuc3NsLTEuMC4yYS1tYW5maXgucGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS1tYW5maXgu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEwNzFiMAotLS0gL2Rl di9udWxsCisrKyBiL29wZW5zc2wtMS4wLjJhLW1hbmZpeC5wYXRjaApAQCAtMCwwICsxLDkzIEBA CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9lYy5wb2QubWFuZml4IG9wZW5zc2wt MS4wLjJhL2RvYy9hcHBzL2VjLnBvZAorLS0tIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL2VjLnBv ZC5tYW5maXgJMjAxNS0wMS0yMCAxMzozMzozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3Ns LTEuMC4yYS9kb2MvYXBwcy9lYy5wb2QJMjAxNS0wNC0yMSAxNzozOToyMC4wODQ1NzQ1ODAgKzAy MDAKK0BAIC05MywxMCArOTMsNiBAQCBwcmludHMgb3V0IHRoZSBwdWJsaWMsIHByaXZhdGUga2V5 IGNvbXBvCisgCisgdGhpcyBvcHRpb24gcHJldmVudHMgb3V0cHV0IG9mIHRoZSBlbmNvZGVkIHZl cnNpb24gb2YgdGhlIGtleS4KKyAKKy09aXRlbSBCPC1tb2R1bHVzPgorLQorLXRoaXMgb3B0aW9u IHByaW50cyBvdXQgdGhlIHZhbHVlIG9mIHRoZSBwdWJsaWMga2V5IGNvbXBvbmVudCBvZiB0aGUg a2V5LgorLQorID1pdGVtIEI8LXB1YmluPgorIAorIGJ5IGRlZmF1bHQgYSBwcml2YXRlIGtleSBp cyByZWFkIGZyb20gdGhlIGlucHV0IGZpbGU6IHdpdGggdGhpcyBvcHRpb24gYQorZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvb3BlbnNzbC5wb2QubWFuZml4IG9wZW5zc2wtMS4wLjJh L2RvYy9hcHBzL29wZW5zc2wucG9kCistLS0gb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvb3BlbnNz bC5wb2QubWFuZml4CTIwMTUtMDEtMjAgMTM6MzM6MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3Bl bnNzbC0xLjAuMmEvZG9jL2FwcHMvb3BlbnNzbC5wb2QJMjAxNS0wNC0yMSAxNzozOToyMC4wODQ1 NzQ1ODAgKzAyMDAKK0BAIC0xNjMsNyArMTYzLDcgQEAgQ3JlYXRlIG9yIGV4YW1pbmUgYSBuZXRz Y2FwZSBjZXJ0aWZpY2F0ZQorIAorIE9ubGluZSBDZXJ0aWZpY2F0ZSBTdGF0dXMgUHJvdG9jb2wg dXRpbGl0eS4KKyAKKy09aXRlbSBMPEI8cGFzc3dkPnxwYXNzd2QoMSk+CisrPWl0ZW0gTDxCPHBh c3N3ZD58c3NscGFzc3dkKDEpPgorIAorIEdlbmVyYXRpb24gb2YgaGFzaGVkIHBhc3N3b3Jkcy4K KyAKK0BAIC0xODcsNyArMTg3LDcgQEAgUHVibGljIGtleSBhbGdvcml0aG0gcGFyYW1ldGVyIG1h bmFnZW1lbgorIAorIFB1YmxpYyBrZXkgYWxnb3JpdGhtIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9u IHV0aWxpdHkuCisgCistPWl0ZW0gTDxCPHJhbmQ+fHJhbmQoMSk+CisrPWl0ZW0gTDxCPHJhbmQ+ fHNzbHJhbmQoMSk+CisgCisgR2VuZXJhdGUgcHNldWRvLXJhbmRvbSBieXRlcy4KKyAKK0BAIC00 MDEsOSArNDAxLDkgQEAgTDxjcmwoMSl8Y3JsKDEpPiwgTDxjcmwycGtjczcoMSl8Y3JsMnBrYwor IEw8ZGhwYXJhbSgxKXxkaHBhcmFtKDEpPiwgTDxkc2EoMSl8ZHNhKDEpPiwgTDxkc2FwYXJhbSgx KXxkc2FwYXJhbSgxKT4sCisgTDxlbmMoMSl8ZW5jKDEpPiwgTDxnZW5kc2EoMSl8Z2VuZHNhKDEp PiwgTDxnZW5wa2V5KDEpfGdlbnBrZXkoMSk+LAorIEw8Z2VucnNhKDEpfGdlbnJzYSgxKT4sIEw8 bnNlcSgxKXxuc2VxKDEpPiwgTDxvcGVuc3NsKDEpfG9wZW5zc2woMSk+LAorLUw8cGFzc3dkKDEp fHBhc3N3ZCgxKT4sCisrTDxzc2xwYXNzd2QoMSl8c3NscGFzc3dkKDEpPiwKKyBMPHBrY3MxMigx KXxwa2NzMTIoMSk+LCBMPHBrY3M3KDEpfHBrY3M3KDEpPiwgTDxwa2NzOCgxKXxwa2NzOCgxKT4s CistTDxyYW5kKDEpfHJhbmQoMSk+LCBMPHJlcSgxKXxyZXEoMSk+LCBMPHJzYSgxKXxyc2EoMSk+ LAorK0w8c3NscmFuZCgxKXxzc2xyYW5kKDEpPiwgTDxyZXEoMSl8cmVxKDEpPiwgTDxyc2EoMSl8 cnNhKDEpPiwKKyBMPHJzYXV0bCgxKXxyc2F1dGwoMSk+LCBMPHNfY2xpZW50KDEpfHNfY2xpZW50 KDEpPiwKKyBMPHNfc2VydmVyKDEpfHNfc2VydmVyKDEpPiwgTDxzX3RpbWUoMSl8c190aW1lKDEp PiwKKyBMPHNtaW1lKDEpfHNtaW1lKDEpPiwgTDxzcGthYygxKXxzcGthYygxKT4sCitkaWZmIC11 cCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX2NsaWVudC5wb2QubWFuZml4IG9wZW5zc2wtMS4w LjJhL2RvYy9hcHBzL3NfY2xpZW50LnBvZAorLS0tIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3Nf Y2xpZW50LnBvZC5tYW5maXgJMjAxNS0wNC0yMSAxNzozOToyMC4wODU1NzQ2MDMgKzAyMDAKKysr KyBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX2NsaWVudC5wb2QJMjAxNS0wNC0yMSAxNzo0MTow MC4yMTU5MjQxNjIgKzAyMDAKK0BAIC0zNCw2ICszNCw5IEBAIEI8b3BlbnNzbD4gQjxzX2NsaWVu dD4KKyBbQjwtc3NsMj5dCisgW0I8LXNzbDM+XQorIFtCPC10bHMxPl0KKytbQjwtdGxzMV8xPl0K KytbQjwtdGxzMV8yPl0KKytbQjwtZHRsczE+XQorIFtCPC1ub19zc2wyPl0KKyBbQjwtbm9fc3Ns Mz5dCisgW0I8LW5vX3RsczE+XQorQEAgLTIwMCw3ICsyMDMsNyBAQCBVc2UgdGhlIFBTSyBrZXkg QjxrZXk+IHdoZW4gdXNpbmcgYSBQU0sKKyBnaXZlbiBhcyBhIGhleGFkZWNpbWFsIG51bWJlciB3 aXRob3V0IGxlYWRpbmcgMHgsIGZvciBleGFtcGxlIC1wc2sKKyAxYTJiM2M0ZC4KKyAKKy09aXRl bSBCPC1zc2wyPiwgQjwtc3NsMz4sIEI8LXRsczE+LCBCPC1ub19zc2wyPiwgQjwtbm9fc3NsMz4s IEI8LW5vX3RsczE+LCBCPC1ub190bHMxXzE+LCBCPC1ub190bHMxXzI+CisrPWl0ZW0gQjwtc3Ns Mj4sIEI8LXNzbDM+LCBCPC10bHMxPiwgQjwtdGxzMV8xPiwgQjwtdGxzMV8yPiwgQjwtZHRsczE+ LCBCPC1ub19zc2wyPiwgQjwtbm9fc3NsMz4sIEI8LW5vX3RsczE+LCBCPC1ub190bHMxXzE+LCBC PC1ub190bHMxXzI+CisgCisgdGhlc2Ugb3B0aW9ucyBkaXNhYmxlIHRoZSB1c2Ugb2YgY2VydGFp biBTU0wgb3IgVExTIHByb3RvY29scy4gQnkgZGVmYXVsdAorIHRoZSBpbml0aWFsIGhhbmRzaGFr ZSB1c2VzIGEgbWV0aG9kIHdoaWNoIHNob3VsZCBiZSBjb21wYXRpYmxlIHdpdGggYWxsCitkaWZm IC11cCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX3NlcnZlci5wb2QubWFuZml4IG9wZW5zc2wt MS4wLjJhL2RvYy9hcHBzL3Nfc2VydmVyLnBvZAorLS0tIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBz L3Nfc2VydmVyLnBvZC5tYW5maXgJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAK KysrKyBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX3NlcnZlci5wb2QJMjAxNS0wNC0yMSAxNzoz OToyMC4wODU1NzQ2MDMgKzAyMDAKK0BAIC0yMTIsNyArMjEyLDcgQEAgVXNlIHRoZSBQU0sga2V5 IEI8a2V5PiB3aGVuIHVzaW5nIGEgUFNLCisgZ2l2ZW4gYXMgYSBoZXhhZGVjaW1hbCBudW1iZXIg d2l0aG91dCBsZWFkaW5nIDB4LCBmb3IgZXhhbXBsZSAtcHNrCisgMWEyYjNjNGQuCisgCistPWl0 ZW0gQjwtc3NsMj4sIEI8LXNzbDM+LCBCPC10bHMxPiwgQjwtbm9fc3NsMj4sIEI8LW5vX3NzbDM+ LCBCPC1ub190bHMxPgorKz1pdGVtIEI8LXNzbDI+LCBCPC1zc2wzPiwgQjwtdGxzMT4sIEI8LXRs czFfMT4sIEI8LXRsczFfMj4sIEI8LWR0bHMxPiwgQjwtbm9fc3NsMj4sIEI8LW5vX3NzbDM+LCBC PC1ub190bHMxPiwgQjwtbm9fdGxzMV8xPiwgQjwtbm9fdGxzMV8yPgorIAorIHRoZXNlIG9wdGlv bnMgZGlzYWJsZSB0aGUgdXNlIG9mIGNlcnRhaW4gU1NMIG9yIFRMUyBwcm90b2NvbHMuIEJ5IGRl ZmF1bHQKKyB0aGUgaW5pdGlhbCBoYW5kc2hha2UgdXNlcyBhIG1ldGhvZCB3aGljaCBzaG91bGQg YmUgY29tcGF0aWJsZSB3aXRoIGFsbAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvZG9jL3NzbC9T U0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvLnBvZC5tYW5maXggb3BlbnNzbC0xLjAuMmEvZG9jL3NzbC9T U0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvLnBvZAorLS0tIG9wZW5zc2wtMS4wLjJhL2RvYy9zc2wvU1NM X0NUWF91c2Vfc2VydmVyaW5mby5wb2QubWFuZml4CTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAw MDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvZG9jL3NzbC9TU0xfQ1RYX3VzZV9zZXJ2ZXJp bmZvLnBvZAkyMDE1LTA0LTIyIDIwOjEyOjQzLjA4MjM5NTI1MSArMDIwMAorQEAgLTIsNyArMiw3 IEBACisgCisgPWhlYWQxIE5BTUUKKyAKKy1TU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvLCBTU0xfQ1RY X3VzZV9zZXJ2ZXJpbmZvX2ZpbGUKKytTU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvLCBTU0xfQ1RYX3Vz ZV9zZXJ2ZXJpbmZvX2ZpbGUgLSBsb2FkIHNlcnZlcmluZm8gZXh0ZW5zaW9ucworIAorID1oZWFk MSBTWU5PUFNJUworIAoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLW5ldy1maXBzLXJlcXMu cGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS1uZXctZmlwcy1yZXFzLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NjIwMTIKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3Ns LTEuMC4yYS1uZXctZmlwcy1yZXFzLnBhdGNoCkBAIC0wLDAgKzEsMTQwMCBAQAorZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2JuL2JuX3JhbmQuYy5maXBzLXJlcXMgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2JuL2JuX3JhbmQuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ibi9ibl9y YW5kLmMuZmlwcy1yZXFzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCisrKysg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2JuL2JuX3JhbmQuYwkyMDE1LTA0LTIyIDE1OjA2OjM3Ljkw NzAwMzg4MCArMDIwMAorQEAgLTEzNiw5ICsxMzYsMTEgQEAgc3RhdGljIGludCBibnJhbmQoaW50 IHBzZXVkb3JhbmQsIEJJR05VTQorICAgICAgICAgZ290byBlcnI7CisgICAgIH0KKyAKKy0gICAg LyogbWFrZSBhIHJhbmRvbSBudW1iZXIgYW5kIHNldCB0aGUgdG9wIGFuZCBib3R0b20gYml0cyAq LworLSAgICB0aW1lKCZ0aW0pOworLSAgICBSQU5EX2FkZCgmdGltLCBzaXplb2YodGltKSwgMC4w KTsKKysgICAgaWYgKCFGSVBTX21vZGUoKSkgeyAgICAgICAgIC8qIGluIEZJUFMgbW9kZSB0aGUg Uk5HIGlzIGFsd2F5cyBwcm9wZXJseSBzZWVkZWQgb3IgdGhlIG1vZHVsZSBmYWlscyAqLworKyAg ICAgICAgLyogbWFrZSBhIHJhbmRvbSBudW1iZXIgYW5kIHNldCB0aGUgdG9wIGFuZCBib3R0b20g Yml0cyAqLworKyAgICAgICAgdGltZSgmdGltKTsKKysgICAgICAgIFJBTkRfYWRkKCZ0aW0sIHNp emVvZih0aW0pLCAwLjApOworKyAgICB9CisgCisgICAgIGlmIChwc2V1ZG9yYW5kKSB7CisgICAg ICAgICBpZiAoUkFORF9wc2V1ZG9fYnl0ZXMoYnVmLCBieXRlcykgPT0gLTEpCitkaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZGgvZGhfZ2VuLmMuZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9kaC9kaF9nZW4uYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9kaF9nZW4u Yy5maXBzLXJlcXMJMjAxNS0wNC0yMiAxNTowNjozNy44NDAwMDIyODUgKzAyMDAKKysrKyBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZGgvZGhfZ2VuLmMJMjAxNS0wNC0yMiAxNTowNjozNy45MDcwMDM4 ODAgKzAyMDAKK0BAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIGludCBkaF9idWlsdGluX2dlbnBh cmFtcyhESCAqcmV0LAorICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAKKy0gICAgaWYgKEZJ UFNfbW9kZSgpICYmIChwcmltZV9sZW4gPCBPUEVOU1NMX0RIX0ZJUFNfTUlOX01PRFVMVVNfQklU UykpIHsKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmIChwcmltZV9sZW4gPCBPUEVOU1NMX0RIX0ZJ UFNfTUlOX01PRFVMVVNfQklUU19HRU4pKSB7CisgICAgICAgICBESGVycihESF9GX0RIX0JVSUxU SU5fR0VOUEFSQU1TLCBESF9SX0tFWV9TSVpFX1RPT19TTUFMTCk7CisgICAgICAgICBnb3RvIGVy cjsKKyAgICAgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoLmguZmlwcy1y ZXFzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kaC9kaC5oCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2RoL2RoLmguZmlwcy1yZXFzCTIwMTUtMDQtMjIgMTU6MDY6MzcuOTA4MDAzOTAzICswMjAw CisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoLmgJMjAxNS0wNC0yMiAxNTowNzoyNS4y NjUxMzA4MTIgKzAyMDAKK0BAIC03OCw2ICs3OCw3IEBACisgIyBlbmRpZgorIAorICMgZGVmaW5l IE9QRU5TU0xfREhfRklQU19NSU5fTU9EVUxVU19CSVRTIDEwMjQKKysjIGRlZmluZSBPUEVOU1NM X0RIX0ZJUFNfTUlOX01PRFVMVVNfQklUU19HRU4gMjA0OAorIAorICMgZGVmaW5lIERIX0ZMQUdf Q0FDSEVfTU9OVF9QICAgICAweDAxCisgCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v ZGgvZGhfY2hlY2suYy5maXBzLXJlcXMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoX2NoZWNr LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZGgvZGhfY2hlY2suYy5maXBzLXJlcXMJMjAx NS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZGgvZGhfY2hlY2suYwkyMDE1LTA0LTIyIDE1OjA2OjM3LjkwODAwMzkwMyArMDIwMAorQEAg LTE2NCw3ICsxNjQsMzAgQEAgaW50IERIX2NoZWNrX3B1Yl9rZXkoY29uc3QgREggKmRoLCBjb25z dAorICAgICBCTl9zdWJfd29yZChxLCAxKTsKKyAgICAgaWYgKEJOX2NtcChwdWJfa2V5LCBxKSA+ PSAwKQorICAgICAgICAgKnJldCB8PSBESF9DSEVDS19QVUJLRVlfVE9PX0xBUkdFOworKyNpZmRl ZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmIGRoLT5xICE9IE5VTEwpIHsK KysgICAgICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKKyAKKysgICAgICAgIGN0eCA9IEJOX0NUWF9u ZXcoKTsKKysgICAgICAgIGlmIChjdHggPT0gTlVMTCkKKysgICAgICAgICAgICBnb3RvIGVycjsK KysKKysgICAgICAgIGlmIChCTl9tb2RfZXhwX21vbnQocSwgcHViX2tleSwgZGgtPnEsIGRoLT5w LCBjdHgsIE5VTEwpIDw9IDApIHsKKysgICAgICAgICAgICBCTl9DVFhfZnJlZShjdHgpOworKyAg ICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFCTl9pc19vbmUo cSkpIHsKKysgICAgICAgICAgICAvKiBpdCB3b3VsZCBiZSBtb3JlIGNvcnJlY3QgdG8gYWRkIG5l dyByZXR1cm4gZmxhZyAKKysgICAgICAgICAgICAgKiBmb3IgdGhpcyB0ZXN0LCBidXQgd2UgZG8g bm90IHdhbnQgdG8gZG8gaXQKKysgICAgICAgICAgICAgKiBzbyBqdXN0IGVycm9yIG91dAorKyAg ICAgICAgICAgICAqLworKyAgICAgICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7CisrICAgICAgICAg ICAgZ290byBlcnI7CisrICAgICAgICB9CisrCisrICAgICAgICBCTl9DVFhfZnJlZShjdHgpOwor KyAgICB9CisrI2VuZGlmCisgICAgIG9rID0gMTsKKyAgZXJyOgorICAgICBpZiAocSAhPSBOVUxM KQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2FfZ2VuLmMuZmlwcy1yZXFz IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX2dlbi5jCistLS0gb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2RzYS9kc2FfZ2VuLmMuZmlwcy1yZXFzCTIwMTUtMDQtMjIgMTU6MDY6MzcuODQxMDAy MzA5ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2FfZ2VuLmMJMjAxNS0w NC0yMiAxNTowNjozNy45MDgwMDM5MDMgKzAyMDAKK0BAIC0xNjUsOSArMTY1LDExIEBAIGludCBk c2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV8KKyAgICAgfQorIAorICAgICBpZiAo RklQU19tb2R1bGVfbW9kZSgpICYmCistICAgICAgICAoYml0cyAhPSAxMDI0IHx8IHFiaXRzICE9 IDE2MCkgJiYKKy0gICAgICAgIChiaXRzICE9IDIwNDggfHwgcWJpdHMgIT0gMjI0KSAmJgorLSAg ICAgICAgKGJpdHMgIT0gMjA0OCB8fCBxYml0cyAhPSAyNTYpICYmIChiaXRzICE9IDMwNzIgfHwg cWJpdHMgIT0gMjU2KSkgeworKyAgICAgICAgKGdldGVudigiT1BFTlNTTF9FTkZPUkNFX01PRFVM VVNfQklUUyIpIHx8IGJpdHMgIT0gMTAyNAorKyAgICAgICAgIHx8IHFiaXRzICE9IDE2MCkgJiYg KGJpdHMgIT0gMjA0OCB8fCBxYml0cyAhPSAyMjQpICYmIChiaXRzICE9IDIwNDgKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fHwgcWJpdHMgIT0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMjU2KQorKyAgICAgICAgJiYgKGJpdHMgIT0gMzA3MiB8fCBx Yml0cyAhPSAyNTYpKSB7CisgICAgICAgICBEU0FlcnIoRFNBX0ZfRFNBX0JVSUxUSU5fUEFSQU1H RU4sIERTQV9SX0tFWV9TSVpFX0lOVkFMSUQpOworICAgICAgICAgZ290byBlcnI7CisgICAgIH0K K2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhLmguZmlwcy1yZXFzIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhLmgKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNh L2RzYS5oLmZpcHMtcmVxcwkyMDE1LTA0LTIyIDE1OjA2OjM3LjkwODAwMzkwMyArMDIwMAorKysr IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhLmgJMjAxNS0wNC0yMiAxNTowOTowMS4yOTE0 MTU4NTIgKzAyMDAKK0BAIC04OSw2ICs4OSw3IEBACisgIyBlbmRpZgorIAorICMgZGVmaW5lIE9Q RU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUyAxMDI0CisrIyBkZWZpbmUgT1BFTlNTTF9E U0FfRklQU19NSU5fTU9EVUxVU19CSVRTX0dFTiAoZ2V0ZW52KCJPUEVOU1NMX0VORk9SQ0VfTU9E VUxVU19CSVRTIik/MjA0ODoxMDI0KQorIAorICMgZGVmaW5lIERTQV9GTEFHX0NBQ0hFX01PTlRf UCAgIDB4MDEKKyAvKgorQEAgLTI1MSw5ICsyNTIsOSBAQCBpbnQgRFNBcGFyYW1zX3ByaW50X2Zw KEZJTEUgKmZwLCBjb25zdCBECisgaW50IERTQV9wcmludF9mcChGSUxFICpicCwgY29uc3QgRFNB ICp4LCBpbnQgb2ZmKTsKKyAjIGVuZGlmCisgCistIyBkZWZpbmUgRFNTX3ByaW1lX2NoZWNrcyA1 MAorKyMgZGVmaW5lIERTU19wcmltZV9jaGVja3MgNjQKKyAvKgorLSAqIFByaW1hbGl0eSB0ZXN0 IGFjY29yZGluZyB0byBGSVBTIFBVQiAxODZbLTFdLCBBcHBlbmRpeCAyLjE6IDUwIHJvdW5kcyBv ZgorKyAqIFByaW1hbGl0eSB0ZXN0IGFjY29yZGluZyB0byBGSVBTIFBVQiAxODYtNCwgQXBwZW5k aXggMi4xOiA2NCByb3VuZHMgb2YKKyAgKiBSYWJpbi1NaWxsZXIKKyAgKi8KKyAjIGRlZmluZSBE U0FfaXNfcHJpbWUobiwgY2FsbGJhY2ssIGNiX2FyZykgXAorZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2RzYS9kc2Ffa2V5LmMuZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9k c2EvZHNhX2tleS5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2Ffa2V5LmMuZmlw cy1yZXFzCTIwMTUtMDQtMjIgMTU6MDY6MzcuOTA1MDAzODMyICswMjAwCisrKysgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2RzYS9kc2Ffa2V5LmMJMjAxNS0wNC0yMiAxNTowNjozNy45MDgwMDM5MDMg KzAyMDAKK0BAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIGludCBkc2FfYnVpbHRpbl9rZXlnZW4o RFNBICpkc2EpCisgCisgIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKyAgICAgaWYgKEZJUFNfbW9kZSgp ICYmICEoZHNhLT5mbGFncyAmIERTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQorLSAgICAgICAgJiYg KEJOX251bV9iaXRzKGRzYS0+cCkgPCBPUEVOU1NMX0RTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMp KSB7CisrICAgICAgICAmJiAoQk5fbnVtX2JpdHMoZHNhLT5wKSA8IE9QRU5TU0xfRFNBX0ZJUFNf TUlOX01PRFVMVVNfQklUU19HRU4pKSB7CisgICAgICAgICBEU0FlcnIoRFNBX0ZfRFNBX0JVSUxU SU5fS0VZR0VOLCBEU0FfUl9LRVlfU0laRV9UT09fU01BTEwpOworICAgICAgICAgZ290byBlcnI7 CisgICAgIH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuYy5maXBz LXJlcXMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5jCistLS0gb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2ZpcHMvZmlwcy5jLmZpcHMtcmVxcwkyMDE1LTA0LTIyIDE1OjA2OjM3LjkwNTAw MzgzMiArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuYwkyMDE1LTA0 LTIyIDE1OjA2OjM3LjkwOTAwMzkyNyArMDIwMAorQEAgLTQyNCwyNiArNDI0LDI0IEBAIGludCBG SVBTX21vZHVsZV9tb2RlX3NldChpbnQgb25vZmYsIGNvbnMKKyAgICAgICAgICAgICAgICAgcmV0 ID0gMDsKKyAgICAgICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgIE9QRU5TU0xfaWEzMmNhcF9QWzBdIHw9ICgxIDw8IDI4KTsgLyogc2V0ICJzaGFyZWQg Y2FjaGUiICAgKi8KKy0gICAgICAgICAgICBPUEVOU1NMX2lhMzJjYXBfUFsxXSAmPSB+KDEgPDwg KDYwIC0gMzIpKTsgLyogY2xlYXIgQVZYICAgICAgICAgICAgKi8KKyAgICAgICAgIH0KKyAjIGVu ZGlmCisgCistICAgICAgICBpZiAoIXZlcmlmeV9jaGVja3N1bXMoKSkgeworLSAgICAgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfTU9EVUxFX01PREVfU0VULAorLSAgICAgICAgICAgICAgICAg ICAgRklQU19SX0ZJTkdFUlBSSU5UX0RPRVNfTk9UX01BVENIKTsKKysgICAgICAgIGlmICghRklQ U19zZWxmdGVzdCgpKSB7CisgICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKKyAg ICAgICAgICAgICByZXQgPSAwOworICAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICAgfQor IAorLSAgICAgICAgaWYgKEZJUFNfc2VsZnRlc3QoKSkKKy0gICAgICAgICAgICBmaXBzX3NldF9t b2RlKG9ub2ZmKTsKKy0gICAgICAgIGVsc2UgeworKyAgICAgICAgaWYgKCF2ZXJpZnlfY2hlY2tz dW1zKCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NF VCwKKysgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRD SCk7CisgICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKKyAgICAgICAgICAgICBy ZXQgPSAwOworICAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICAgfQorKworKyAgICAgICAg Zmlwc19zZXRfbW9kZShvbm9mZik7CisgICAgICAgICByZXQgPSAxOworICAgICAgICAgZ290byBl bmQ7CisgICAgIH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZGhf c2VsZnRlc3QuYy5maXBzLXJlcXMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kaF9z ZWxmdGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kaF9zZWxmdGVz dC5jLmZpcHMtcmVxcwkyMDE1LTA0LTIyIDE1OjA2OjM3LjkwOTAwMzkyNyArMDIwMAorKysrIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZGhfc2VsZnRlc3QuYwkyMDE1LTA0LTIyIDE1 OjA2OjM3LjkwOTAwMzkyNyArMDIwMAorQEAgLTAsMCArMSwxNjIgQEAKKysvKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysgKiBDb3B5cmlnaHQgKGMpIDIwMTMgUmVkIEhhdCwgSW5jLgorKyAqCisr ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJl ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp Z2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisr ICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3 aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2lu ZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNv ZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAg ICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NM IFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8v d3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtp dCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRv cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91 dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lv biwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisrICoK KysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNh bGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIg bmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3Bl blNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdo YXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50 OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRo ZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQg KGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJF U1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP LCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g RVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMg QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQK KysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBU T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBB TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAor KyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKgorKyAqLworKworKyNp bmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9kaC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjaW5jbHVkZSA8 b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9ibi5oPgorKyNpbmNsdWRlICJmaXBzX2xvY2wuaCIKKysKKysjaWZkZWYgT1BFTlNTTF9G SVBTCisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGhfdGVzdF8yMDQ4X3BbXSA9IHsK KysgICAgMHhBRSwgMHhFQywgMHhFRSwgMHgyMiwgMHhGQSwgMHgzQSwgMHhBNSwgMHgyMiwgMHhD MCwgMHhERSwgMHgwRiwgMHgwOSwKKysgICAgMHg3RSwgMHgxNywgMHhDMCwgMHgwNSwgMHhGOSwg MHhGMSwgMHhFNywgMHhDNiwgMHg4NywgMHgxNCwgMHg2RCwgMHgxMSwKKysgICAgMHhFNywgMHhB RSwgMHhFRCwgMHgyRiwgMHg3MiwgMHg1OSwgMHhDNSwgMHhBOSwgMHg5QiwgMHhCOCwgMHgwMiwg MHhBNSwKKysgICAgMHhGMywgMHg2OSwgMHg3MCwgMHhENiwgMHhERCwgMHg5MCwgMHhGOSwgMHgx OSwgMHg3OSwgMHhCRSwgMHg2MCwgMHg4RiwKKysgICAgMHgyNSwgMHg5MiwgMHgzMCwgMHgxQywg MHg1MSwgMHg1MSwgMHgzOCwgMHgyNiwgMHg4MiwgMHgyNSwgMHhFNiwgMHhGQywKKysgICAgMHhF RCwgMHg2NSwgMHg5NiwgMHg4RiwgMHg1NywgMHhFNSwgMHg1MywgMHg4QiwgMHgzOCwgMHg2Mywg MHhDNywgMHhDRSwKKysgICAgMHhCQywgMHgxQiwgMHg0RCwgMHgxOCwgMHgyQSwgMHg1QiwgMHgw NCwgMHgzRiwgMHg2QSwgMHgzQywgMHg5NCwgMHgzOSwKKysgICAgMHhBRSwgMHgzNiwgMHhENiwg MHg1RSwgMHgwRiwgMHhBMiwgMHhDQywgMHhEMCwgMHhENCwgMHhENSwgMHhDNiwgMHgxRSwKKysg ICAgMHhGNiwgMHhBMCwgMHhGNSwgMHg4OSwgMHg0RSwgMHhCNCwgMHgwQiwgMHhBNCwgMHhCMywg MHgyQiwgMHgzRCwgMHhFMiwKKysgICAgMHg0RSwgMHhFMSwgMHg0OSwgMHgyNSwgMHg5OSwgMHg1 RiwgMHgzMiwgMHgxNiwgMHgzMywgMHgzMiwgMHgxQiwgMHg3QSwKKysgICAgMHhBNSwgMHg1Qywg MHg2QiwgMHgzNCwgMHgwRCwgMHgzOSwgMHg5OSwgMHhEQywgMHhGMCwgMHg3NiwgMHhFNSwgMHg1 QSwKKysgICAgMHhENCwgMHg3MSwgMHgwMCwgMHhFRCwgMHg1QSwgMHg3MywgMHhGQiwgMHhDOCwg MHgwMSwgMHhBRCwgMHg5OSwgMHhDRiwKKysgICAgMHg5OSwgMHg1MiwgMHg3QywgMHg5QywgMHg2 NCwgMHhDNiwgMHg3NiwgMHg0MCwgMHg1NywgMHhBRiwgMHg1OSwgMHhENywKKysgICAgMHgzOCwg MHgwQiwgMHg0MCwgMHhERSwgMHgzMywgMHgwRCwgMHhCOCwgMHg3NiwgMHhFQywgMHhBOSwgMHhE OCwgMHg3MywKKysgICAgMHhGOCwgMHhFRiwgMHgyNiwgMHg2NiwgMHgwNiwgMHgyNywgMHhERCwg MHg3QywgMHhBNCwgMHgxMCwgMHg5QywgMHhBNiwKKysgICAgMHhBQSwgMHhGOSwgMHg1MywgMHg2 MiwgMHg3MywgMHgxRCwgMHhCQSwgMHgxQywgMHhGMSwgMHg2NywgMHhGNCwgMHgzNSwKKysgICAg MHhFRCwgMHg2RiwgMHgzNywgMHg5MiwgMHhFOCwgMHg0RiwgMHg2QywgMHhCQSwgMHg1MiwgMHg2 RSwgMHhBMSwgMHhFRCwKKysgICAgMHhEQSwgMHg5RiwgMHg4NSwgMHgxMSwgMHg4MiwgMHg1Miwg MHg2MiwgMHgwOCwgMHg0NCwgMHhGMSwgMHgzMCwgMHgwMywKKysgICAgMHhDMywgMHgzOCwgMHgy QywgMHg3OSwgMHhCRCwgMHhENCwgMHg0MywgMHg0NSwgMHhFRSwgMHg4RSwgMHg1MCwgMHhGQywK KysgICAgMHgyOSwgMHg0NiwgMHg5QSwgMHhGRSwgMHg1NCwgMHgxQSwgMHgxOSwgMHg4RiwgMHg0 QiwgMHg4NCwgMHgwOCwgMHhERSwKKysgICAgMHgyMCwgMHg2MiwgMHg3MywgMHhDQywgMHhERCwg MHg3RSwgMHhGMCwgMHhFRiwgMHhBMiwgMHhGRCwgMHg4NiwgMHg1OCwKKysgICAgMHg0QiwgMHhE OCwgMHgzNywgMHhFQgorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGhfdGVz dF8yMDQ4X2dbXSA9IHsKKysgICAgMHgwMgorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgZGhfdGVzdF8yMDQ4X3B1Yl9rZXlbXSA9IHsKKysgICAgMHhBMCwgMHgzOSwgMHgxMSwg MHg3NywgMHg5QSwgMHhDMSwgMHgzMCwgMHgxRiwgMHhCRSwgMHg0OCwgMHhBNywgMHhBQSwKKysg ICAgMHhBMCwgMHg4NCwgMHg1NCwgMHg2NCwgMHhBRCwgMHgxQiwgMHg3MCwgMHhGQSwgMHgxMywg MHg1NSwgMHg2MywgMHhEMiwKKysgICAgMHgxRiwgMHg2MiwgMHgzMiwgMHg5MywgMHg4RSwgMHhD OSwgMHgzRSwgMHgwOSwgMHhBNywgMHg2NCwgMHhFNCwgMHgxMiwKKysgICAgMHg2RSwgMHgxQiwg MHhGMiwgMHg5MiwgMHgzQiwgMHhCOSwgMHhDQiwgMHg1NiwgMHhFQSwgMHgwNywgMHg4OCwgMHhC NSwKKysgICAgMHhBNiwgMHhCQywgMHgxNiwgMHgxRiwgMHgyNywgMHhGRSwgMHhEOCwgMHhBQSwg MHg0MCwgMHhCMiwgMHhCMCwgMHgyRCwKKysgICAgMHgzNywgMHg3NiwgMHhBNiwgMHhBNCwgMHg4 MiwgMHgyQywgMHgwRSwgMHgyMiwgMHg2NCwgMHg5RCwgMHhDQiwgMHhEMSwKKysgICAgMHgwMCwg MHhCNywgMHg4OSwgMHgxNCwgMHg3MiwgMHg0RSwgMHhCRSwgMHg0OCwgMHg0MSwgMHhGOCwgMHhC MiwgMHg1MSwKKysgICAgMHgxMSwgMHgwOSwgMHg0QiwgMHgyMiwgMHgwMSwgMHgyMywgMHgzOSwg MHg5NiwgMHhFMCwgMHgxNSwgMHhENywgMHg5RiwKKysgICAgMHg2MCwgMHhEMSwgMHhCNywgMHhB RSwgMHhGRSwgMHg1RiwgMHhEQiwgMHhFNywgMHgwMywgMHgxNywgMHg5NywgMHhBNiwKKysgICAg MHgxNiwgMHg3NCwgMHhCRCwgMHg1MywgMHg4MSwgMHgxOSwgMHhDNSwgMHg0NywgMHg1RSwgMHhD RSwgMHg4RCwgMHhFRCwKKysgICAgMHg0NSwgMHg1RCwgMHgzQywgMHgwMCwgMHhBMCwgMHgwQSwg MHg2OCwgMHg2QSwgMHhFMCwgMHg4RSwgMHgwNiwgMHg0NiwKKysgICAgMHg2RiwgMHhENywgMHhG OSwgMHhERiwgMHgzMSwgMHg3RSwgMHg3NywgMHg0NCwgMHgwRCwgMHg5OCwgMHhFMCwgMHhDQSwK KysgICAgMHg5OCwgMHgwOSwgMHg1MiwgMHgwNCwgMHg5MCwgMHhFQSwgMHg2RCwgMHhGNCwgMHgz MCwgMHg2OSwgMHg4RiwgMHhCMSwKKysgICAgMHg5QiwgMHhDMSwgMHg0MywgMHhEQiwgMHhENSwg MHg4RCwgMHhDOCwgMHg4RSwgMHhCNiwgMHgwQiwgMHgwNSwgMHhCRSwKKysgICAgMHgwRSwgMHhD NSwgMHg5OSwgMHhDOCwgMHg2RSwgMHg0RSwgMHhGMywgMHhDQiwgMHhDMywgMHg1RSwgMHg5Qiwg MHg1MywKKysgICAgMHhGNywgMHgwNiwgMHgxQywgMHg0RiwgMHhDNywgMHhCOCwgMHg2RSwgMHgz MCwgMHgxOCwgMHhDQSwgMHg5QiwgMHhCOSwKKysgICAgMHhCQywgMHg1RiwgMHgxNywgMHg3Miwg MHgyOSwgMHg1QSwgMHhFNSwgMHhEOSwgMHg5NiwgMHhCNywgMHgwQiwgMHhGMywKKysgICAgMHgy RCwgMHg4QywgMHhGMSwgMHhFMSwgMHgwRSwgMHgwRCwgMHg3NCwgMHhENSwgMHg5RCwgMHhGMCwg MHgwNiwgMHhBOSwKKysgICAgMHhCNCwgMHg5NSwgMHg2MywgMHg3NiwgMHg0NiwgMHg1NSwgMHg0 OCwgMHg4MiwgMHgzOSwgMHg5MCwgMHhFRiwgMHg1NiwKKysgICAgMHg3NSwgMHgzNCwgMHhCOCwg MHgzNCwgMHhDMywgMHgxOCwgMHg2RSwgMHgxRSwgMHhBRCwgMHhFMywgMHg0OCwgMHg3RSwKKysg ICAgMHg5MywgMHgyQywgMHgyMywgMHhFNywgMHhGOCwgMHg5MCwgMHg3MywgMHhCMSwgMHg3Nywg MHg4MCwgMHg2NywgMHhBOSwKKysgICAgMHgzNiwgMHg5RSwgMHhEQSwgMHhEMgorK307CisrCisr c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGhfdGVzdF8yMDQ4X3ByaXZfa2V5W10gPSB7Cisr ICAgIDB4MEMsIDB4NEIsIDB4MzAsIDB4ODksIDB4RDEsIDB4QjgsIDB4NjIsIDB4Q0IsIDB4M0Ms IDB4NDMsIDB4NjQsIDB4OTEsCisrICAgIDB4RjAsIDB4OTEsIDB4NTQsIDB4NzAsIDB4QzUsIDB4 MjcsIDB4OTYsIDB4RTMsIDB4QUMsIDB4QkUsIDB4RTgsIDB4MDAsCisrICAgIDB4RUMsIDB4NTUs IDB4RjYsIDB4Q0MKKyt9OworKworK2ludCBGSVBTX3NlbGZ0ZXN0X2RoKCkKKyt7CisrICAgIERI ICpkaCA9IE5VTEw7CisrICAgIGludCByZXQgPSAwOworKyAgICB2b2lkICpwdWJfa2V5ID0gTlVM TDsKKysgICAgaW50IGxlbjsKKysKKysgICAgZGggPSBESF9uZXcoKTsKKysKKysgICAgaWYgKGRo ID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgZmlwc19sb2FkX2tleV9jb21w b25lbnQoZGgsIHAsIGRoX3Rlc3RfMjA0OCk7CisrICAgIGZpcHNfbG9hZF9rZXlfY29tcG9uZW50 KGRoLCBnLCBkaF90ZXN0XzIwNDgpOworKyAgICAvKiBub3RlIHRoYXQgdGhlIHByaXZhdGUga2V5 IGlzIG11Y2ggc2hvcnRlciB0aGFuIG5vcm1hbGx5IHVzZWQKKysgICAgICogYnV0IHN0aWxsIGcg KiogcHJpdl9rZXkgPiBwCisrICAgICAqLworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChk aCwgcHJpdl9rZXksIGRoX3Rlc3RfMjA0OCk7CisrCisrICAgIGlmIChESF9nZW5lcmF0ZV9rZXko ZGgpIDw9IDApCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgbGVuID0gQk5fbnVtX2J5dGVz KGRoLT5wdWJfa2V5KTsKKysgICAgaWYgKChwdWJfa2V5ID0gT1BFTlNTTF9tYWxsb2MobGVuKSkg PT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBCTl9ibjJiaW4oZGgtPnB1Yl9rZXks IHB1Yl9rZXkpOworKworKyAgICBpZiAobGVuICE9IHNpemVvZihkaF90ZXN0XzIwNDhfcHViX2tl eSkgfHwKKysgICAgICAgIG1lbWNtcChwdWJfa2V5LCBkaF90ZXN0XzIwNDhfcHViX2tleSwgbGVu KSAhPSAwKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIHJldCA9IDE7CisrCisrIGVycjoK KysgICAgaWYgKGRoKQorKyAgICAgICAgREhfZnJlZShkaCk7CisrCisrICAgIE9QRU5TU0xfZnJl ZShwdWJfa2V5KTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrI2VuZGlmCitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmguZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHMuaAorLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuaC5m aXBzLXJlcXMJMjAxNS0wNC0yMiAxNTowNjozNy44OTkwMDM2ODkgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmgJMjAxNS0wNC0yMiAxNTowNjozNy45MDkwMDM5Mjcg KzAyMDAKK0BAIC05Niw2ICs5Niw3IEBAIGV4dGVybiAiQyIgeworICAgICBpbnQgRklQU19zZWxm dGVzdF9kc2Eodm9pZCk7CisgICAgIGludCBGSVBTX3NlbGZ0ZXN0X2VjZHNhKHZvaWQpOworICAg ICBpbnQgRklQU19zZWxmdGVzdF9lY2RoKHZvaWQpOworKyAgICBpbnQgRklQU19zZWxmdGVzdF9k aCh2b2lkKTsKKyAgICAgdm9pZCBGSVBTX2NvcnJ1cHRfcm5nKHZvaWQpOworICAgICB2b2lkIEZJ UFNfcm5nX3N0aWNrKHZvaWQpOworICAgICB2b2lkIEZJUFNfeDkzMV9zdGljayhpbnQgb25vZmYp OworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19wb3N0LmMuZmlwcy1y ZXFzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jCistLS0gb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19wb3N0LmMuZmlwcy1yZXFzCTIwMTUtMDQtMjIgMTU6MDY6 MzcuODk1MDAzNTk0ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19w b3N0LmMJMjAxNS0wNC0yMiAxNTowNjozNy45MDkwMDM5MjcgKzAyMDAKK0BAIC05OSw2ICs5OSw4 IEBAIGludCBGSVBTX3NlbGZ0ZXN0KHZvaWQpCisgICAgICAgICBydiA9IDA7CisgICAgIGlmICgh RklQU19zZWxmdGVzdF9kc2EoKSkKKyAgICAgICAgIHJ2ID0gMDsKKysgICAgaWYgKCFGSVBTX3Nl bGZ0ZXN0X2RoKCkpCisrICAgICAgICBydiA9IDA7CisgICAgIGlmICghRklQU19zZWxmdGVzdF9l Y2RoKCkpCisgICAgICAgICBydiA9IDA7CisgICAgIHJldHVybiBydjsKK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcnNhX3NlbGZ0ZXN0LmMuZmlwcy1yZXFzIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcnNhX3NlbGZ0ZXN0LmMKKy0tLSBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZmlwcy9maXBzX3JzYV9zZWxmdGVzdC5jLmZpcHMtcmVxcwkyMDE1LTA0LTIy IDE1OjA2OjM3Ljg1NDAwMjYxOCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBz L2ZpcHNfcnNhX3NlbGZ0ZXN0LmMJMjAxNS0wNC0yMiAxNTowNjozNy45MTAwMDM5NTEgKzAyMDAK K0BAIC02MCw2OCArNjAsMTA3IEBACisgI2lmZGVmIE9QRU5TU0xfRklQUworIAorIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIG5bXSA9CistICAgICJceDAwXHhCQlx4RjhceDJGXHgwOVx4MDZc eDgyXHhDRVx4OUNceDIzXHgzOFx4QUNceDJCXHg5RFx4QThceDcxIgorLSAgICAiXHhGN1x4MzZc eDhEXHgwN1x4RUVceEQ0XHgxMFx4NDNceEE0XHg0MFx4RDZceEI2XHhGMFx4NzRceDU0XHhGNSIK Ky0gICAgIlx4MUZceEI4XHhERlx4QkFceEFGXHgwM1x4NUNceDAyXHhBQlx4NjFceEVBXHg0OFx4 Q0VceEVCXHg2Rlx4Q0QiCistICAgICJceDQ4XHg3Nlx4RURceDUyXHgwRFx4NjBceEUxXHhFQ1x4 NDZceDE5XHg3MVx4OURceDhBXHg1Qlx4OEJceDgwIgorLSAgICAiXHg3Rlx4QUZceEI4XHhFMFx4 QTNceERGXHhDN1x4MzdceDcyXHgzRVx4RTZceEI0XHhCN1x4RDlceDNBXHgyNSIKKy0gICAgIlx4 ODRceEVFXHg2QVx4NjRceDlEXHgwNlx4MDlceDUzXHg3NFx4ODhceDM0XHhCMlx4NDVceDQ1XHg5 OFx4MzkiCistICAgICJceDRFXHhFMFx4QUFceEIxXHgyRFx4N0JceDYxXHhBNVx4MUZceDUyXHg3 QVx4OUFceDQxXHhGNlx4QzFceDY4IgorLSAgICAiXHg3Rlx4RTJceDUzXHg3Mlx4OThceENBXHgy QVx4OEZceDU5XHg0Nlx4RjhceEU1XHhGRFx4MDlceDFEXHhCRCIgIlx4Q0IiOworKyAgICAiXHgw MFx4YzlceGQ1XHg2ZFx4OWRceDkwXHhkYlx4NDNceGQ2XHgwMlx4ZWRceDk2XHg4OFx4MTNceDhh IgorKyAgICAiXHhiMlx4YmZceDZlXHhhMVx4MDZceDEwXHhiMlx4NzhceDM3XHhhN1x4MTRceGE4 XHhmZlx4ZGRceDAwIgorKyAgICAiXHhkZFx4YjRceDkzXHhhMFx4NDVceGNjXHg5Nlx4OTBceGVk XHhhZFx4YTlceGRkXHhjNFx4ZDZceGNhIgorKyAgICAiXHgwY1x4ZjBceGVkXHg0Zlx4NzJceDVl XHgyMVx4NDlceDlhXHgxOFx4MTJceDE1XHg4Zlx4OTBceDVhIgorKyAgICAiXHhkYlx4YjZceDMz XHg5OVx4YTNceGU2XHhiNFx4ZjBceGM0XHg5N1x4MjFceDI2XHhiYlx4ZTNceGJhIgorKyAgICAi XHhmMlx4ZmZceGEwXHg3Mlx4ZGFceDg5XHg2M1x4OGVceDhiXHgzZVx4MDhceDlkXHg5Mlx4MmFc eGJlIgorKyAgICAiXHgxNlx4ZTFceDQzXHgxNVx4ZmNceDU3XHhjN1x4MWZceDA5XHgxMVx4Njdc eDFjXHhhOVx4OTZceGQxIgorKyAgICAiXHg4Ylx4M2VceDgwXHg5M1x4YzFceDU5XHhkMFx4NmRc eDM5XHhmMlx4YWNceDk1XHhjY1x4MTBceDc1IgorKyAgICAiXHhlOVx4MzFceDI0XHhkMVx4NDNc eGFmXHg2OFx4NTJceDRiXHhlN1x4MTZceGQ3XHg0OVx4NjVceDZmIgorKyAgICAiXHgyNlx4YzBc eDg2XHhhZFx4YzBceDA3XHgwYVx4YzFceGUxXHgyZlx4ODdceDg1XHg4Nlx4M2JceGRjIgorKyAg ICAiXHg1YVx4OTlceGJlXHhlOVx4ZjlceGI5XHhlOVx4ODJceDI3XHg1MVx4MDRceDE1XHhhYlx4 MDZceDBlIgorKyAgICAiXHg3Nlx4NWFceDI4XHg4ZFx4OTJceGJkXHhjNVx4YjVceDdiXHhhOFx4 ZGZceDRlXHg0N1x4YTJceGMxIgorKyAgICAiXHhlN1x4NTJceGJmXHg0N1x4ZjdceDYyXHhlMFx4 M2FceDZmXHg0ZFx4NmFceDRkXHg0ZVx4ZDRceGI5IgorKyAgICAiXHg1OVx4NjlceGZhXHhiMlx4 MTRceGMxXHhlZVx4ZTZceDJmXHg5NVx4Y2RceDk0XHg3Mlx4YWVceGU0IgorKyAgICAiXHhkYlx4 MThceDlhXHhjNFx4Y2RceDcwXHhiZFx4ZWVceDMxXHgxNlx4YjdceDQ5XHg2NVx4YWNceDQwIgor KyAgICAiXHgxOVx4MGVceGI1XHg2ZFx4ODNceGYxXHgzNlx4YmJceDA4XHgyZlx4MmVceDRlXHg5 Mlx4NjJceGE0IgorKyAgICAiXHhmZlx4NTBceGRiXHgyMFx4NDVceGEyXHhlYlx4MTZceDdhXHhm Mlx4ZDVceDI4XHhjMVx4ZmRceDRlIiAiXHgwM1x4NzEiOworIAorIHN0YXRpYyBpbnQgY29ycnVw dF9yc2E7CisgCisgc3RhdGljIGludCBzZXRyc2FrZXkoUlNBICprZXkpCisgeworLSAgICBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBlW10gPSAiXHgxMSI7CisrICAgIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGVbXSA9ICJceDAxXHgwMFx4MDEiOworIAorICAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBkW10gPQorLSAgICAgICAgIlx4MDBceEE1XHhEQVx4RkNceDUzXHg0MVx4 RkFceEYyXHg4OVx4QzRceEI5XHg4OFx4REJceDMwXHhDMVx4Q0QiCistICAgICAgICAiXHhGOFx4 M0ZceDMxXHgyNVx4MUVceDA2XHg2OFx4QjRceDI3XHg4NFx4ODFceDM4XHgwMVx4NTdceDk2XHg0 MSIKKy0gICAgICAgICJceEIyXHg5NFx4MTBceEIzXHhDN1x4OTlceDhEXHg2Qlx4QzRceDY1XHg3 NFx4NUVceDVDXHgzOVx4MjZceDY5IgorLSAgICAgICAgIlx4RDZceDg3XHgwRFx4QTJceEMwXHg4 Mlx4QTlceDM5XHhFM1x4N0ZceERDXHhCOFx4MkVceEM5XHgzRVx4REEiCistICAgICAgICAiXHhD OVx4N0ZceEYzXHhBRFx4NTlceDUwXHhBQ1x4Q0ZceEJDXHgxMVx4MUNceDc2XHhGMVx4QTlceDUy XHg5NCIKKy0gICAgICAgICJceDQ0XHhFNVx4NkFceEFGXHg2OFx4QzVceDZDXHgwOVx4MkNceEQz XHg4RFx4QzNceEJFXHhGNVx4RDJceDBBIgorLSAgICAgICAgIlx4OTNceDk5XHgyNlx4RURceDRG XHg3NFx4QTFceDNFXHhERFx4RkJceEUxXHhBMVx4Q0VceENDXHg0OFx4OTQiCistICAgICAgICAi XHhBRlx4OTRceDI4XHhDMlx4QjdceEI4XHg4OFx4M0ZceEU0XHg0Nlx4M0FceDRCXHhDOFx4NUJc eDFDXHhCMyIKKy0gICAgICAgICJceEMxIjsKKysgICAgICAgICJceDM2XHgyN1x4M2RceGIxXHhm OVx4MWJceGRiXHhhN1x4YTBceDQxXHg3Zlx4MTJceDIzXHhhY1x4MjMiCisrICAgICAgICAiXHgy OVx4OTlceGQ1XHgzYVx4N2JceDYwXHg2N1x4NDFceDA3XHg2M1x4NTNceGI0XHhkMlx4ZTdceDU4 IgorKyAgICAgICAgIlx4OTVceDBhXHhjN1x4MDVceGYzXHg0ZVx4YjJceGI0XHgxMlx4ZDRceDcw XHhkY1x4NGZceDg1XHgwNiIKKysgICAgICAgICJceGQzXHhkZFx4ZDhceDYzXHgyN1x4M2VceDY3 XHgzMVx4MjFceDI0XHgzOVx4MDRceGJjXHgwNlx4YTQiCisrICAgICAgICAiXHhjY1x4Y2VceDJi XHg3YVx4ZmVceDdiXHhhZFx4ZGVceDExXHg2ZVx4YTNceGE1XHhlNlx4MDRceDUzIgorKyAgICAg ICAgIlx4MGVceGEzXHg0ZVx4MmRceGI0XHg4Zlx4MzFceGJmXHhjYVx4NzVceDI1XHg1Mlx4MDJc eDg1XHhkZSIKKysgICAgICAgICJceDNkXHhiMlx4NzJceDQzXHhiMlx4ODlceDhhXHg5YVx4MzRc eDQxXHgyNlx4M2ZceDlhXHg2N1x4YmUiCisrICAgICAgICAiXHhhNFx4OTZceDdiXHgwZVx4NzVc eGJhXHhhNlx4OTNceGQ1XHhiOFx4ZDhceGI4XHg1N1x4ZjJceDRiIgorKyAgICAgICAgIlx4MGZc eDE0XHg4MVx4ZDFceDU3XHg0ZVx4ZjZceDQ1XHg0Y1x4YTZceDNiXHhkMFx4NzBceGNhXHhkMyIK KysgICAgICAgICJceDlkXHg1NVx4ZGVceDIyXHgwNVx4ZTdceDhlXHgyOFx4NGRceGVlXHgxMVx4 Y2ZceGI2XHg2N1x4NzYiCisrICAgICAgICAiXHgwOVx4ZDNceGUzXHgzY1x4MTNceGY5XHg5OVx4 MzRceDEwXHg3Ylx4ZWNceDgxXHgzOFx4ZjBceGI2IgorKyAgICAgICAgIlx4MzRceDljXHg5Ylx4 NTBceDZmXHgwYlx4OTFceDgxXHg0ZFx4ODlceDk0XHgwNFx4N2JceGYwXHgzYyIKKysgICAgICAg ICJceGY0XHhiMVx4YjJceDAwXHg0OFx4OGRceDVhXHg4Zlx4ODhceDllXHhjNVx4YWJceDNhXHg5 ZVx4NDQiCisrICAgICAgICAiXHgzZlx4NTRceGU3XHhkOVx4NmVceDQ3XHhhYVx4YTFceGJkXHg0 MFx4NDZceDMxXHhmOVx4ZjBceDM0IgorKyAgICAgICAgIlx4YjZceDA0XHhlMVx4MmJceDViXHg3 M1x4ODZceGRkXHgzYVx4OTJceDFiXHg3MVx4YzdceDNmXHgzMiIKKysgICAgICAgICJceGU1XHhj M1x4YzJceGFiXHhhMVx4N2VceGJmXHhhNFx4NTJceGEwXHhiMFx4NjhceDkwXHhkMVx4MjAiCisr ICAgICAgICAiXHgxMlx4NzlceGU5XHhkN1x4YzlceDQwXHhiYVx4ZjJceDE5XHhjN1x4YTVceDAw XHg5Mlx4ODZceDBkIiAiXHgwMSI7CisgCisgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHBbXSA9CistICAgICAgICAiXHgwMFx4RUVceENGXHhBRVx4ODFceEIxXHhCOVx4QjNceEM5XHgw OFx4ODFceDBCXHgxMFx4QTFceEI1XHg2MCIKKy0gICAgICAgICJceDAxXHg5OVx4RUJceDlGXHg0 NFx4QUVceEY0XHhGRFx4QTRceDkzXHhCOFx4MUFceDlFXHgzRFx4ODRceEY2IgorLSAgICAgICAg Ilx4MzJceDEyXHg0RVx4RjBceDIzXHg2RVx4NURceDFFXHgzQlx4N0VceDI4XHhGQVx4RTdceEFB XHgwNFx4MEEiCistICAgICAgICAiXHgyRFx4NUJceDI1XHgyMVx4NzZceDQ1XHg5RFx4MUZceDM5 XHg3NVx4NDFceEJBXHgyQVx4NThceEZCXHg2NSIKKy0gICAgICAgICJceDk5IjsKKysgICAgICAg ICJceDAwXHhmY1x4NWNceDZlXHgxNlx4Y2VceDFmXHgwM1x4N2JceGNkXHhmN1x4YjNceDcyXHhi Mlx4OGYiCisrICAgICAgICAiXHgxNlx4NzJceGI4XHg1Nlx4YWVceGY3XHhjZFx4NjdceGQ4XHg0 ZVx4N2RceDA3XHhhZlx4ZDVceDQzIgorKyAgICAgICAgIlx4MjZceGMzXHgzNVx4YmVceDQzXHg4 Zlx4NGVceDJmXHgxY1x4NDNceDRlXHg2Ylx4ZDJceGIyXHhlYyIKKysgICAgICAgICJceDUyXHg2 ZFx4OTdceDUyXHgyYlx4Y2NceDVjXHgzYVx4NmJceGY0XHgxNFx4YzZceDc0XHhkYVx4NjYiCisr ICAgICAgICAiXHgzOFx4MWNceDdhXHgzZlx4ODRceDJmXHhlM1x4ZjlceDVhXHhiOFx4NjVceDY5 XHg0Nlx4MDZceGEzIgorKyAgICAgICAgIlx4MzdceDc5XHhiMlx4YTFceDViXHg1OFx4ZWRceDVl XHhhN1x4NWZceDhjXHg2NVx4NjZceGJiXHhkMSIKKysgICAgICAgICJceDI0XHgzNlx4ZTZceDM3 XHhhN1x4M2RceDQ5XHg3N1x4OGFceDhjXHgzNFx4ZDhceDY5XHgyOVx4ZjMiCisrICAgICAgICAi XHg0ZFx4NThceDIyXHhiMFx4NTFceDI0XHhiNlx4NDBceGE4XHg4Nlx4NTlceDBhXHhiN1x4YmFc eDVjIgorKyAgICAgICAgIlx4OTdceGRhXHg1N1x4ZThceDM2XHhkYVx4N2FceDljXHhhZCI7Cisg CisgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHFbXSA9CistICAgICAgICAiXHgwMFx4 QzlceDdGXHhCMVx4RjBceDI3XHhGNFx4NTNceEY2XHgzNFx4MTJceDMzXHhFQVx4QUFceEQxXHhE OSIKKy0gICAgICAgICJceDM1XHgzRlx4NkNceDQyXHhEMFx4ODhceDY2XHhCMVx4RDBceDVBXHgw Rlx4MjBceDM1XHgwMlx4OEJceDlEIgorLSAgICAgICAgIlx4ODZceDk4XHg0MFx4QjRceDE2XHg2 Nlx4QjRceDJFXHg5Mlx4RUFceDBEXHhBM1x4QjRceDMyXHgwNFx4QjUiCistICAgICAgICAiXHhD Rlx4Q0VceDMzXHg1Mlx4NTJceDREXHgwNFx4MTZceEE1XHhBNFx4NDFceEU3XHgwMFx4QUZceDQ2 XHgxNSIKKy0gICAgICAgICJceDAzIjsKKysgICAgICAgICJceDAwXHhjY1x4YmVceDdiXHgwOVx4 NjlceDA2XHhlZVx4NDVceGJmXHg4OFx4NDdceDM4XHhhOFx4ZjgiCisrICAgICAgICAiXHgxN1x4 ZTVceGI2XHhiYVx4NjdceDU1XHhlM1x4ZThceDA1XHg4Ylx4YjhceGUyXHg1M1x4ZDZceDhlIgor KyAgICAgICAgIlx4ZWZceDJjXHhlN1x4NGZceDRhXHhmN1x4NGVceDI2XHg4ZFx4ODVceDBiXHgz Zlx4ZWNceGMzXHgxYyIKKysgICAgICAgICJceGQ0XHhlYlx4ZWNceDZhXHhjOFx4NzJceDJhXHgy NVx4N2RceGZkXHhhNlx4NzdceDk2XHhmMFx4MWUiCisrICAgICAgICAiXHhjZFx4MjhceDU3XHhm OFx4MzdceDMwXHg3NVx4NmJceGJkXHhkNFx4N2JceDBjXHg4N1x4YzVceDZjIgorKyAgICAgICAg Ilx4ODdceDQwXHhhNVx4YmJceDI3XHgyY1x4NzhceGM5XHg3NFx4NWFceDU0XHg1Ylx4MGJceDMw XHg2ZiIKKysgICAgICAgICJceDQ0XHg0YVx4ZmFceDcxXHhlNFx4MjFceDYxXHg2Nlx4ZjlceGVl XHg2NVx4ZGVceDdjXHgwNFx4ZDciCisrICAgICAgICAiXHhmZFx4YTlceDE1XHg1Ylx4N2ZceGUy XHg3YVx4YmFceDY5XHg4Nlx4NzJceGE2XHgwNlx4OGRceDliIgorKyAgICAgICAgIlx4OTBceDU1 XHg2MFx4OWVceDRjXHg1ZFx4YTlceGI2XHg1NSI7CisgCisgICAgIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGRtcDFbXSA9CistICAgICAgICAiXHg1NFx4NDlceDRDXHhBNlx4M0VceEJBXHgw M1x4MzdceEU0XHhFMlx4NDBceDIzXHhGQ1x4RDZceDlBXHg1QSIKKy0gICAgICAgICJceEVCXHgw N1x4RERceERDXHgwMVx4ODNceEE0XHhEMFx4QUNceDlCXHg1NFx4QjBceDUxXHhGMlx4QjFceDNF IgorLSAgICAgICAgIlx4RDlceDQ5XHgwOVx4NzVceEVBXHhCN1x4NzRceDE0XHhGRlx4NTlceEMx XHhGN1x4NjlceDJFXHg5QVx4MkUiCistICAgICAgICAiXHgyMFx4MkJceDM4XHhGQ1x4OTFceDBB XHg0N1x4NDFceDc0XHhBRFx4QzlceDNDXHgxRlx4NjdceEM5XHg4MSI7CisrICAgICAgICAiXHg3 YVx4ZDZceDEyXHhkMFx4MGVceGVjXHg5MVx4YTlceDg1XHg4Ylx4ZjhceDUwXHhmMFx4MTFceDJl IgorKyAgICAgICAgIlx4MDBceDExXHgzMlx4NDBceDYwXHg2Nlx4MWZceDExXHhlZVx4YzJceDc1 XHgyN1x4NjVceDRiXHgxNiIKKysgICAgICAgICJceDY3XHgxNlx4OTVceGQyXHgxNFx4YzNceDFk XHhiM1x4NDhceDFmXHhiN1x4ZTRceDBiXHgyYlx4NzQiCisrICAgICAgICAiXHhjM1x4ZGJceDUw XHgyN1x4ZjlceDg1XHgzYVx4ZmFceGE5XHgwOFx4MjNceGMxXHg2NVx4M2RceDM0IgorKyAgICAg ICAgIlx4M2FceGM4XHg1Nlx4N2FceDY1XHg0NVx4MzZceDZlXHhhZVx4MmFceGNlXHg5Zlx4NDNc eDQzXHhkNyIKKysgICAgICAgICJceDEwXHhlOVx4OWVceDE4XHhmNFx4YTRceDM1XHhkYVx4OGFc eDZiXHhiMFx4M2ZceGRkXHg1M1x4ZTMiCisrICAgICAgICAiXHhhOFx4YzVceDRlXHg3OVx4OWRc eDFmXHg1MVx4OGNceGEyXHhjYVx4NjZceDNjXHg2YVx4MmFceGZmIgorKyAgICAgICAgIlx4OGVc eGQyXHhmM1x4YjdceGNiXHg4Mlx4ZGFceGRlXHgyY1x4ZTZceGQyXHg4Y1x4YjNceGFkXHhiNiIK KysgICAgICAgICJceDRjXHg5NVx4NTVceDc2XHhiZFx4YzlceGM4XHhkMSI7CisgCisgICAgIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRtcTFbXSA9CistICAgICAgICAiXHg0N1x4MUVceDAy XHg5MFx4RkZceDBBXHhGMFx4NzVceDAzXHg1MVx4QjdceEY4XHg3OFx4ODZceDRDXHhBOSIKKy0g ICAgICAgICJceDYxXHhBRFx4QkRceDNBXHg4QVx4N0VceDk5XHgxQ1x4NUNceDA1XHg1Nlx4QTlc eDRDXHgzMVx4NDZceEE3IgorLSAgICAgICAgIlx4RjlceDgwXHgzRlx4OEZceDZGXHg4QVx4RTNc eDQyXHhFOVx4MzFceEZEXHg4QVx4RTRceDdBXHgyMlx4MEQiCistICAgICAgICAiXHgxQlx4OTlc eEE0XHg5NVx4ODRceDk4XHgwN1x4RkVceDM5XHhGOVx4MjRceDVBXHg5OFx4MzZceERBXHgzRCI7 CisrICAgICAgICAiXHgwMFx4ODNceDIzXHgxZFx4YmJceDExXHg0Mlx4MTdceDJiXHgyNVx4NWFc eDJjXHgwM1x4ZTZceDc1IgorKyAgICAgICAgIlx4YzFceDE4XHhhOFx4YzlceDBiXHg5Nlx4YmZc eGJhXHhjNFx4OTJceDkxXHg4MFx4YTVceDIyXHgyZiIKKysgICAgICAgICJceGJhXHg5MVx4OTBc eDM2XHgwMVx4NTZceDE1XHgwMFx4MmNceDc0XHhhMlx4OTdceGY3XHgxNVx4YTEiCisrICAgICAg ICAiXHg0OVx4ZGZceDMyXHgzNVx4ZDJceGRkXHgwY1x4OTFceGE2XHhmOFx4ZTdceGJlXHg4MVx4 MzZceDliIgorKyAgICAgICAgIlx4MDNceGRjXHg2Ylx4M2JceGQ4XHg1ZFx4NzlceDU3XHhlMFx4 ZTZceDRmXHg0OVx4ZGZceDRjXHg1YyIKKysgICAgICAgICJceDBlXHhlNVx4MjFceDQxXHg5NVx4 ZmRceGFkXHhmZlx4OWFceDNlXHhhMFx4ZjlceDBmXHg1OVx4OWUiCisrICAgICAgICAiXHg2YVx4 YTdceDdiXHg3MVx4YTdceDI0XHg5YVx4MzZceDUyXHhhZVx4OTdceDIwXHhjMVx4NWVceDc4Igor KyAgICAgICAgIlx4ZDlceDQ3XHg4Ylx4MWVceDY3XHhmMlx4YWZceDk4XHhlNlx4MmRceGVmXHgx MFx4ZDdceGYxXHhhYiIKKysgICAgICAgICJceDQ5XHhlZVx4ZTVceDRiXHg3ZVx4YWVceDFmXHgx ZFx4NjEiOworIAorICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBpcW1wW10gPQorLSAg ICAgICAgIlx4MDBceEIwXHg2Q1x4NEZceERBXHhCQlx4NjNceDAxXHgxOVx4OERceDI2XHg1Qlx4 REJceEFFXHg5NFx4MjMiCistICAgICAgICAiXHhCM1x4ODBceEYyXHg3MVx4RjdceDM0XHg1M1x4 ODhceDUwXHg5M1x4MDdceDdGXHhDRFx4MzlceEUyXHgxMSIKKy0gICAgICAgICJceDlGXHhDOVx4 ODZceDMyXHgxNVx4NEZceDU4XHg4M1x4QjFceDY3XHhBOVx4NjdceEJGXHg0MFx4MkJceDRFIgor LSAgICAgICAgIlx4OUVceDJFXHgwRlx4OTZceDU2XHhFNlx4OThceEVBXHgzNlx4NjZceEVEXHhG Qlx4MjVceDc5XHg4MFx4MzkiCistICAgICAgICAiXHhGNyI7CisrICAgICAgICAiXHgyM1x4OTZc eGMxXHg5MVx4MTdceDVlXHgwYVx4ODNceGQyXHhkY1x4N2JceDY5XHhiMlx4NTlceDFkIgorKyAg ICAgICAgIlx4MzNceDU4XHg1Mlx4M2ZceDE4XHhjN1x4MDlceDUwXHgxY1x4YjlceGExXHhiYlx4 NGNceGEyXHgzOCIKKysgICAgICAgICJceDQwXHg0Y1x4OWFceDhlXHhmZVx4OWNceDkwXHg5Mlx4 ZDBceDcxXHg5Zlx4ODlceDk5XHg1MFx4OTEiCisrICAgICAgICAiXHgxZlx4MzRceDhiXHg3NFx4 NTNceDExXHgxMVx4NGFceDcwXHhlMlx4ZjdceDMwXHhkOFx4OGNceDgwIgorKyAgICAgICAgIlx4 ZTFceGNjXHg5Zlx4ZjFceDYzXHgxN1x4MWFceDdkXHg2N1x4MjlceDRjXHhjYlx4NGVceDc0XHg3 YiIKKysgICAgICAgICJceGUwXHgzZVx4OWVceDJmXHhmNFx4NjdceDhmXHhlY1x4YjlceDVjXHgw MFx4MWVceDdlXHhhMlx4N2IiCisrICAgICAgICAiXHg5Mlx4YzlceDZmXHg0Y1x4ZTRceDBlXHhm OVx4NDhceDYzXHhjZFx4NTBceDIyXHg1ZFx4YmZceGI2IgorKyAgICAgICAgIlx4OWRceDAxXHgz M1x4NmFceGY0XHg1MFx4YmVceDg2XHg5OFx4NGZceGNhXHgzZlx4M2FceGZhXHhjZiIKKysgICAg ICAgICJceDA3XHg0MFx4YzRceGFhXHhhZFx4YWVceGJlXHhiZiI7CisgCisgICAgIGtleS0+biA9 IEJOX2JpbjJibihuLCBzaXplb2YobikgLSAxLCBrZXktPm4pOworICAgICBpZiAoY29ycnVwdF9y c2EpCistICAgICAgICBCTl9zZXRfYml0KGtleS0+biwgMTAyNCk7CisrICAgICAgICBCTl9zZXRf Yml0KGtleS0+biwgMjA0OCk7CisgICAgIGtleS0+ZSA9IEJOX2JpbjJibihlLCBzaXplb2YoZSkg LSAxLCBrZXktPmUpOworICAgICBrZXktPmQgPSBCTl9iaW4yYm4oZCwgc2l6ZW9mKGQpIC0gMSwg a2V5LT5kKTsKKyAgICAga2V5LT5wID0gQk5fYmluMmJuKHAsIHNpemVvZihwKSAtIDEsIGtleS0+ cCk7CitAQCAtMTQ1LDIwMCArMTg0LDI5MiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBr YXRfdGJzW10gPQorICAgICAiT3BlblNTTCBGSVBTIDE0MC0yIFB1YmxpYyBLZXkgUlNBIEtBVCI7 CisgCisgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9QU1NfU0hBMVtdID0gewor LSAgICAweDJELCAweEFGLCAweDZFLCAweEMyLCAweDk4LCAweEZCLCAweDhBLCAweEExLCAweEI5 LCAweDQ2LCAweERBLCAweDBGLAorLSAgICAweDAxLCAweDFFLCAweDM3LCAweDkzLCAweEMyLCAw eDU1LCAweDI3LCAweEU0LCAweDFELCAweEQyLCAweDkwLCAweEJCLAorLSAgICAweEY0LCAweEJG LCAweDRBLCAweDc0LCAweDM5LCAweDUxLCAweEJCLCAweEU4LCAweDBDLCAweEI3LCAweEY4LCAw eEQzLAorLSAgICAweEQxLCAweERGLCAweEU3LCAweEJFLCAweDgwLCAweDA1LCAweEMzLCAweEI1 LCAweEM3LCAweDgzLCAweEQ1LCAweDRDLAorLSAgICAweDdGLCAweDQ5LCAweEZCLCAweDNGLCAw eDI5LCAweDlCLCAweEUxLCAweDEyLCAweDUxLCAweDYwLCAweEQwLCAweEE3LAorLSAgICAweDBE LCAweEE5LCAweDI4LCAweDU2LCAweDczLCAweEQ5LCAweDA3LCAweEUzLCAweDVFLCAweDNGLCAw eDlCLCAweEY1LAorLSAgICAweEI2LCAweEYzLCAweEYyLCAweDVFLCAweDc0LCAweEM5LCAweDgz LCAweDgxLCAweDQ3LCAweEYwLCAweEM1LCAweDQ1LAorLSAgICAweDBBLCAweEU5LCAweDhFLCAw eDM4LCAweEQ3LCAweDE4LCAweEM2LCAweDJBLCAweDBGLCAweEY4LCAweEI3LCAweDMxLAorLSAg ICAweEQ2LCAweDU1LCAweEU0LCAweDY2LCAweDc4LCAweDgxLCAweEQ0LCAweEU2LCAweERCLCAw eDlGLCAweEJBLCAweEU4LAorLSAgICAweDIzLCAweEI1LCAweDdGLCAweERDLCAweDA4LCAweEVB LCAweEQ1LCAweDI2LCAweDFFLCAweDIwLCAweDI1LCAweDg0LAorLSAgICAweDI2LCAweEM2LCAw eDc5LCAweEM5LCAweDlCLCAweDNELCAweDdFLCAweEE5CisrICAgIDB4QzIsIDB4ODAsIDB4ODIs IDB4NTYsIDB4RDgsIDB4QTcsIDB4QjIsIDB4OUMsIDB4RjUsIDB4RDYsIDB4M0MsIDB4RTMsCisr ICAgIDB4QkYsIDB4RTksIDB4M0EsIDB4NTMsIDB4NDAsIDB4QUUsIDB4RjIsIDB4QTksIDB4NkEs IDB4MzksIDB4NDksIDB4NUIsCisrICAgIDB4MDUsIDB4N0YsIDB4NjcsIDB4MzgsIDB4MkUsIDB4 MUQsIDB4RTEsIDB4OTMsIDB4MjIsIDB4NjUsIDB4NzksIDB4ODQsCisrICAgIDB4NjgsIDB4RkEs IDB4RDgsIDB4QUYsIDB4QTEsIDB4OTgsIDB4NjEsIDB4NkYsIDB4NDQsIDB4MjcsIDB4QTYsIDB4 OEIsCisrICAgIDB4Q0YsIDB4MEUsIDB4MTMsIDB4QTksIDB4Q0UsIDB4RDcsIDB4NkMsIDB4RDIs IDB4MzgsIDB4QjUsIDB4MTYsIDB4QjksCisrICAgIDB4NjYsIDB4OTQsIDB4NDgsIDB4REUsIDB4 OUUsIDB4MTksIDB4M0QsIDB4NkYsIDB4QjMsIDB4QTEsIDB4OUEsIDB4MTksCisrICAgIDB4REYs IDB4RkIsIDB4QUIsIDB4QTUsIDB4OUYsIDB4MzgsIDB4REEsIDB4QzksIDB4MjEsIDB4OEYsIDB4 Q0UsIDB4OTgsCisrICAgIDB4MDEsIDB4M0EsIDB4QzgsIDB4RTAsIDB4REYsIDB4REEsIDB4RkMs IDB4RjAsIDB4QTYsIDB4ODYsIDB4MjksIDB4QjUsCisrICAgIDB4N0YsIDB4NjEsIDB4RkIsIDB4 QkEsIDB4QzUsIDB4NDksIDB4QjIsIDB4N0MsIDB4NkEsIDB4MjYsIDB4ODIsIDB4QzQsCisrICAg IDB4OEYsIDB4QUEsIDB4NUIsIDB4MTAsIDB4RDUsIDB4RUUsIDB4QTAsIDB4NTUsIDB4NDIsIDB4 RUYsIDB4MzIsIDB4NUEsCisrICAgIDB4M0YsIDB4NTUsIDB4QjMsIDB4MkMsIDB4MjIsIDB4RTks IDB4NjUsIDB4REEsIDB4OEQsIDB4MEEsIDB4QjksIDB4NzAsCisrICAgIDB4NDMsIDB4Q0MsIDB4 M0YsIDB4NjQsIDB4OUMsIDB4QjUsIDB4NjUsIDB4NDksIDB4QkQsIDB4N0YsIDB4MzUsIDB4QzEs CisrICAgIDB4MjAsIDB4ODUsIDB4MjQsIDB4RkUsIDB4QUEsIDB4NkIsIDB4MzcsIDB4MDQsIDB4 QTEsIDB4MEUsIDB4OUQsIDB4NUMsCisrICAgIDB4QkEsIDB4N0YsIDB4MTQsIDB4NjksIDB4QzUs IDB4OTMsIDB4QjIsIDB4MzMsIDB4QzIsIDB4QzAsIDB4QzcsIDB4REYsCisrICAgIDB4N0UsIDB4 OUUsIDB4QTQsIDB4QjAsIDB4QTAsIDB4NjQsIDB4RDIsIDB4QUMsIDB4RkMsIDB4RkQsIDB4RkQs IDB4OTksCisrICAgIDB4OEYsIDB4NkEsIDB4NDAsIDB4MjYsIDB4QzEsIDB4MkUsIDB4NEUsIDB4 OEIsIDB4MzMsIDB4QkUsIDB4RjEsIDB4NDUsCisrICAgIDB4NTksIDB4OEYsIDB4MzMsIDB4NDAs IDB4MUQsIDB4MkEsIDB4RDIsIDB4RjcsIDB4NTAsIDB4ODMsIDB4ODksIDB4Q0YsCisrICAgIDB4 OTQsIDB4QzYsIDB4RjgsIDB4MzYsIDB4RjAsIDB4ODQsIDB4MEIsIDB4ODUsIDB4QTUsIDB4MDIs IDB4QTksIDB4MEYsCisrICAgIDB4NDEsIDB4N0EsIDB4NzcsIDB4QTMsIDB4MkYsIDB4NDcsIDB4 MUUsIDB4MUQsIDB4RUMsIDB4RTYsIDB4RDMsIDB4MDEsCisrICAgIDB4MUUsIDB4NkYsIDB4N0Es IDB4OTYsIDB4NTAsIDB4MzcsIDB4MzcsIDB4NEIsIDB4MjcsIDB4NTIsIDB4MEIsIDB4REMsCisr ICAgIDB4REIsIDB4QzcsIDB4QTksIDB4MzEsIDB4QjIsIDB4NDAsIDB4RUUsIDB4NjAsIDB4NDEs IDB4MjYsIDB4NkEsIDB4MDUsCisrICAgIDB4Q0UsIDB4MDgsIDB4MUQsIDB4ODkKKyB9OworIAor IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTIyNFtdID0geworLSAg ICAweDM5LCAweDRBLCAweDZBLCAweDIwLCAweEJDLCAweEU5LCAweDMzLCAweEVELCAweEVGLCAw eEM1LCAweDU4LCAweEE3LAorLSAgICAweEZFLCAweDgxLCAweEM0LCAweDM2LCAweDUwLCAweDlB LCAweDJDLCAweDgyLCAweDk4LCAweDA4LCAweDk1LCAweEZBLAorLSAgICAweEIxLCAweDlFLCAw eEQyLCAweDU1LCAweDYxLCAweDg3LCAweDIxLCAweDU5LCAweDg3LCAweDdCLCAweDFGLCAweDU3 LAorLSAgICAweDMwLCAweDlELCAweDBELCAweDRBLCAweDA2LCAweEVCLCAweDUyLCAweDM3LCAw eDU1LCAweDU0LCAweDFDLCAweDg5LAorLSAgICAweDgzLCAweDc1LCAweDU5LCAweDY1LCAweDY0 LCAweDkwLCAweDJFLCAweDE2LCAweENDLCAweDg2LCAweDA1LCAweEVFLAorLSAgICAweEIxLCAw eEU2LCAweDdCLCAweEJBLCAweDE2LCAweDc1LCAweDBELCAweDBDLCAweDY0LCAweDBCLCAweEFC LCAweDIyLAorLSAgICAweDE1LCAweDc4LCAweDZCLCAweDZGLCAweEE0LCAweEZCLCAweDc3LCAw eDQwLCAweDY0LCAweDYyLCAweEQxLCAweEI1LAorLSAgICAweDM3LCAweDFFLCAweEUwLCAweDNE LCAweEE4LCAweEY5LCAweEQyLCAweEJELCAweEFBLCAweDM4LCAweDI0LCAweDQ5LAorLSAgICAw eDU4LCAweEQyLCAweDc0LCAweDg1LCAweEY0LCAweEI1LCAweDkzLCAweDhFLCAweEY1LCAweDAz LCAweEVBLCAweDJELAorLSAgICAweEM4LCAweDUyLCAweEZBLCAweENGLCAweDdFLCAweDM1LCAw eEIwLCAweDZBLCAweEFGLCAweDk1LCAweEMwLCAweDAwLAorLSAgICAweDU0LCAweDc2LCAweDNE LCAweDBDLCAweDlDLCAweEIyLCAweEVFLCAweEMwCisrICAgIDB4QjQsIDB4MDEsIDB4OTMsIDB4 MTYsIDB4MDUsIDB4RjYsIDB4RUIsIDB4RTIsIDB4QTQsIDB4RUIsIDB4NDgsIDB4QUEsCisrICAg IDB4MDAsIDB4RjQsIDB4QTEsIDB4OTksIDB4MEEsIDB4QjQsIDB4QjYsIDB4NjMsIDB4RTksIDB4 NjgsIDB4Q0EsIDB4QjMsCisrICAgIDB4MTMsIDB4RDcsIDB4NjYsIDB4NkEsIDB4Q0QsIDB4Q0Is IDB4MzMsIDB4OUYsIDB4RTUsIDB4ODQsIDB4RTIsIDB4QzMsCisrICAgIDB4MEIsIDB4NTMsIDB4 RTUsIDB4OEIsIDB4OTYsIDB4NEIsIDB4REIsIDB4MkQsIDB4ODAsIDB4QTQsIDB4MUQsIDB4RTMs CisrICAgIDB4ODEsIDB4REMsIDB4NTIsIDB4OTksIDB4QkEsIDB4OUIsIDB4NkEsIDB4OUQsIDB4 NDgsIDB4MUYsIDB4NzMsIDB4RjcsCisrICAgIDB4QUMsIDB4MDksIDB4MTMsIDB4QTEsIDB4MTYs IDB4MkMsIDB4NjAsIDB4RkIsIDB4QkMsIDB4MjUsIDB4RjcsIDB4NTMsCisrICAgIDB4RDEsIDB4 MDQsIDB4NUEsIDB4M0YsIDB4OTUsIDB4MDksIDB4NUUsIDB4RTUsIDB4QTIsIDB4N0QsIDB4RkMs IDB4MkEsCisrICAgIDB4NTEsIDB4MUQsIDB4MjEsIDB4Q0UsIDB4MkIsIDB4NEUsIDB4MUIsIDB4 QjgsIDB4Q0IsIDB4REQsIDB4MjQsIDB4RUUsCisrICAgIDB4OTksIDB4MUQsIDB4MzcsIDB4REMs IDB4RUQsIDB4NUYsIDB4MkYsIDB4NDgsIDB4NUUsIDB4MzMsIDB4OTQsIDB4MDYsCisrICAgIDB4 MTksIDB4Q0QsIDB4NUEsIDB4MjYsIDB4ODUsIDB4NzcsIDB4OUQsIDB4QUYsIDB4ODYsIDB4OTcs IDB4QzksIDB4MDgsCisrICAgIDB4RDUsIDB4ODEsIDB4MEUsIDB4QjgsIDB4OUYsIDB4QjYsIDB4 QUYsIDB4MjAsIDB4NzIsIDB4REMsIDB4MTMsIDB4NEQsCisrICAgIDB4N0EsIDB4RTQsIDB4NUMs IDB4ODEsIDB4REUsIDB4QzAsIDB4M0QsIDB4MTksIDB4OUMsIDB4MzMsIDB4MTEsIDB4MDcsCisr ICAgIDB4RDUsIDB4QTksIDB4NTEsIDB4NjcsIDB4Q0QsIDB4RkQsIDB4MzcsIDB4NjEsIDB4MTQs IDB4OUYsIDB4RTcsIDB4NzAsCisrICAgIDB4MTgsIDB4MzIsIDB4QzMsIDB4MzQsIDB4NTQsIDB4 MEQsIDB4NEYsIDB4QjQsIDB4QUUsIDB4OUYsIDB4RUMsIDB4NjQsCisrICAgIDB4RDgsIDB4QjIs IDB4MTYsIDB4QTQsIDB4QjIsIDB4OTksIDB4OTIsIDB4Q0IsIDB4N0YsIDB4MUYsIDB4MDYsIDB4 MTcsCisrICAgIDB4NUYsIDB4QTEsIDB4MDcsIDB4NjgsIDB4QUUsIDB4QTcsIDB4MkQsIDB4MDMs IDB4OTEsIDB4MkEsIDB4OUQsIDB4NjksCisrICAgIDB4QzIsIDB4OUQsIDB4OTAsIDB4RjcsIDB4 RjksIDB4NjYsIDB4NUQsIDB4MTMsIDB4QjcsIDB4N0YsIDB4RDMsIDB4OTcsCisrICAgIDB4NDUs IDB4OTcsIDB4NDMsIDB4RDgsIDB4Q0UsIDB4M0MsIDB4RjIsIDB4OTgsIDB4OTgsIDB4REQsIDB4 RTIsIDB4MkQsCisrICAgIDB4Q0YsIDB4QTEsIDB4QzQsIDB4MjUsIDB4NDYsIDB4MkUsIDB4RDIs IDB4RTUsIDB4NUYsIDB4QzYsIDB4MDEsIDB4QzUsCisrICAgIDB4NEYsIDB4NDIsIDB4MkIsIDB4 REUsIDB4MEYsIDB4RUEsIDB4NEEsIDB4NEYsIDB4QzMsIDB4NUIsIDB4REYsIDB4OUIsCisrICAg IDB4NUQsIDB4MzAsIDB4MTgsIDB4OTMsIDB4RDAsIDB4REUsIDB4QzUsIDB4MDksIDB4QUEsIDB4 NTcsIDB4NTcsIDB4QkQsCisrICAgIDB4MkQsIDB4ODQsIDB4MDMsIDB4QjcKKyB9OworIAorIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTI1NltdID0geworLSAgICAw eDZELCAweDNELCAweEJFLCAweDhGLCAweDYwLCAweDZELCAweDI1LCAweDE0LCAweEYwLCAweDMx LCAweEUzLCAweDg5LAorLSAgICAweDAwLCAweDk3LCAweEZBLCAweDk5LCAweDcxLCAweDI4LCAw eEU1LCAweDEwLCAweDI1LCAweDlBLCAweEYzLCAweDhGLAorLSAgICAweDdCLCAweEM1LCAweEE4 LCAweDRBLCAweDc0LCAweDUxLCAweDM2LCAweEUyLCAweDhELCAweDdELCAweDczLCAweDI4LAor LSAgICAweEMxLCAweDc3LCAweEM2LCAweDI3LCAweDk3LCAweDAwLCAweDhCLCAweDAwLCAweEEz LCAweDk2LCAweDczLCAweDRFLAorLSAgICAweDdELCAweDJFLCAweDJDLCAweDM0LCAweDY4LCAw eDhDLCAweDhFLCAweERGLCAweDlELCAweDQ5LCAweDQ3LCAweDA1LAorLSAgICAweEFCLCAweEY1 LCAweDAxLCAweEQ2LCAweDgxLCAweDQ3LCAweDcwLCAweEY1LCAweDFELCAweDZELCAweDI2LCAw eEJBLAorLSAgICAweDJGLCAweDdBLCAweDU0LCAweDUzLCAweDRFLCAweEVELCAweDcxLCAweEQ5 LCAweDVBLCAweEYzLCAweERBLCAweEI2LAorLSAgICAweDBCLCAweDQ3LCAweDM0LCAweEFGLCAw eDkwLCAweERDLCAweEM4LCAweEQ5LCAweDZGLCAweDU2LCAweENELCAweDlGLAorLSAgICAweDIx LCAweEI3LCAweDdFLCAweEFELCAweDdDLCAweDJGLCAweDc1LCAweDUwLCAweDQ3LCAweDEyLCAw eEU0LCAweDZELAorLSAgICAweDVGLCAweEI3LCAweDAxLCAweERGLCAweEMzLCAweDExLCAweDZD LCAweEE5LCAweDlFLCAweDQ5LCAweEI5LCAweEY2LAorLSAgICAweDcyLCAweEY0LCAweEY2LCAw eEVGLCAweDg4LCAweDFFLCAweDJELCAweDFDCisrICAgIDB4MzgsIDB4REEsIDB4OTksIDB4NTEs IDB4MjYsIDB4MzgsIDB4QzYsIDB4N0YsIDB4QzQsIDB4ODEsIDB4NTcsIDB4MTksCisrICAgIDB4 MzUsIDB4QzYsIDB4RjYsIDB4MUUsIDB4OTAsIDB4NDcsIDB4MjAsIDB4NTUsIDB4NDcsIDB4NTYs IDB4MjYsIDB4RTksCisrICAgIDB4RjIsIDB4QTgsIDB4MzksIDB4NkMsIDB4RDUsIDB4Q0QsIDB4 Q0IsIDB4NTUsIDB4RkMsIDB4MEMsIDB4QzUsIDB4Q0IsCisrICAgIDB4RjcsIDB4NDAsIDB4MTcs IDB4M0IsIDB4Q0YsIDB4RTQsIDB4MDUsIDB4MDMsIDB4M0IsIDB4QTAsIDB4QjIsIDB4QzksCisr ICAgIDB4MEQsIDB4NUUsIDB4NDgsIDB4M0EsIDB4RTksIDB4QUQsIDB4MjgsIDB4NzEsIDB4N0Qs IDB4OEYsIDB4ODksIDB4MTYsCisrICAgIDB4NTksIDB4OTMsIDB4MzUsIDB4REMsIDB4NEQsIDB4 N0IsIDB4REYsIDB4ODQsIDB4RTQsIDB4NjgsIDB4QUEsIDB4MzMsCisrICAgIDB4QUEsIDB4REMs IDB4NjYsIDB4NTAsIDB4QzgsIDB4QTksIDB4MzIsIDB4MTIsIDB4REMsIDB4QzYsIDB4OTAsIDB4 NDksCisrICAgIDB4MEIsIDB4NzUsIDB4RkYsIDB4OUIsIDB4OTUsIDB4MDAsIDB4OUEsIDB4OTAs IDB4RTAsIDB4RDQsIDB4MEUsIDB4NjcsCisrICAgIDB4QUIsIDB4M0MsIDB4NDcsIDB4MzYsIDB4 QzUsIDB4MkUsIDB4MUMsIDB4NDYsIDB4RjAsIDB4MkQsIDB4RDMsIDB4OEIsCisrICAgIDB4NDIs IDB4MDgsIDB4REUsIDB4MEQsIDB4QjYsIDB4MkMsIDB4ODYsIDB4QjAsIDB4MzUsIDB4NzEsIDB4 MTgsIDB4NkIsCisrICAgIDB4ODksIDB4NjcsIDB4QzAsIDB4MDUsIDB4QUQsIDB4RjQsIDB4MUQs IDB4NjIsIDB4NEUsIDB4NzUsIDB4RUMsIDB4RDYsCisrICAgIDB4QzIsIDB4REIsIDB4MDcsIDB4 QjAsIDB4QjYsIDB4OEQsIDB4MTUsIDB4QUQsIDB4Q0QsIDB4QkYsIDB4RjUsIDB4NjAsCisrICAg IDB4NzYsIDB4QUUsIDB4NDgsIDB4QjgsIDB4NzcsIDB4N0YsIDB4QzUsIDB4MDEsIDB4RDksIDB4 MjksIDB4QkIsIDB4RDYsCisrICAgIDB4MTcsIDB4QTIsIDB4MjAsIDB4NUEsIDB4QzAsIDB4NEEs IDB4M0IsIDB4MzQsIDB4QzgsIDB4QjksIDB4MzksIDB4Q0YsCisrICAgIDB4MDYsIDB4ODksIDB4 OTUsIDB4NkYsIDB4QzcsIDB4Q0EsIDB4QzQsIDB4RTQsIDB4NDMsIDB4REYsIDB4NUEsIDB4MjMs CisrICAgIDB4RTIsIDB4ODksIDB4QTMsIDB4MzgsIDB4NzgsIDB4MzEsIDB4MzgsIDB4QzYsIDB4 QTQsIDB4NkYsIDB4NUYsIDB4NzMsCisrICAgIDB4NUEsIDB4RTUsIDB4OUUsIDB4MDksIDB4RTcs IDB4NkYsIDB4RDQsIDB4RjgsIDB4M0UsIDB4QjcsIDB4QjAsIDB4NTYsCisrICAgIDB4OUEsIDB4 RjMsIDB4NjUsIDB4RjAsIDB4QzIsIDB4QTYsIDB4OEEsIDB4MDgsIDB4QkEsIDB4NDQsIDB4QUMs IDB4OTcsCisrICAgIDB4REUsIDB4QjQsIDB4MTYsIDB4ODMsIDB4REYsIDB4RTMsIDB4RUUsIDB4 NzEsIDB4RkEsIDB4RjksIDB4NTEsIDB4NTAsCisrICAgIDB4MTQsIDB4REMsIDB4RkQsIDB4NkEs IDB4ODIsIDB4MjAsIDB4NjgsIDB4NjQsIDB4N0QsIDB4NEUsIDB4ODIsIDB4NjgsCisrICAgIDB4 RDcsIDB4NDUsIDB4RkEsIDB4NkEsIDB4RTQsIDB4RTUsIDB4MjksIDB4M0EsIDB4NzAsIDB4RkIs IDB4RTQsIDB4NjIsCisrICAgIDB4MkIsIDB4MzEsIDB4QjksIDB4N0QKKyB9OworIAorIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTM4NFtdID0geworLSAgICAweDQw LCAweEZCLCAweEExLCAweDIxLCAweEY0LCAweEIyLCAweDQwLCAweDlBLCAweEI0LCAweDMxLCAw eEE4LCAweEYyLAorLSAgICAweEVDLCAweDFDLCAweEM0LCAweEM4LCAweDdDLCAweDIyLCAweDY1 LCAweDlDLCAweDU3LCAweDQ1LCAweENELCAweDVFLAorLSAgICAweDg2LCAweDAwLCAweEY3LCAw eDI1LCAweDc4LCAweERFLCAweERDLCAweDdBLCAweDcxLCAweDQ0LCAweDlBLCAweENELAorLSAg ICAweEFBLCAweDI1LCAweEY0LCAweEIyLCAweEZDLCAweEYwLCAweDc1LCAweEQ5LCAweDJGLCAw eDc4LCAweDIzLCAweDdGLAorLSAgICAweDZGLCAweDAyLCAweEVGLCAweEMxLCAweEFGLCAweEE2 LCAweDI4LCAweDE2LCAweDMxLCAweERDLCAweDQyLCAweDZDLAorLSAgICAweEIyLCAweDQ0LCAw eEU1LCAweDRELCAweDY2LCAweEEyLCAweEU2LCAweDcxLCAweEYzLCAweEFDLCAweDRGLCAweEZC LAorLSAgICAweDkxLCAweENBLCAweEY1LCAweDcwLCAweEVGLCAweDZCLCAweDlELCAweEE0LCAw eEVGLCAweEQ5LCAweDNELCAweDJGLAorLSAgICAweDNBLCAweEJFLCAweDg5LCAweDM4LCAweDU5 LCAweDAxLCAweEJBLCAweERBLCAweDMyLCAweEFELCAweDQyLCAweDg5LAorLSAgICAweDk4LCAw eDhCLCAweDM5LCAweDQ0LCAweEYwLCAweEZDLCAweDM4LCAweEFDLCAweDg3LCAweDFGLCAweENB LCAweDZGLAorLSAgICAweDQ4LCAweEY2LCAweEFFLCAweEQ3LCAweDQ1LCAweEVFLCAweEFFLCAw eDg4LCAweDBFLCAweDYwLCAweEY0LCAweDU1LAorLSAgICAweDQ4LCAweDQ0LCAweEVFLCAweDFG LCAweDkwLCAweDE4LCAweDRCLCAweEYxCisrICAgIDB4OTksIDB4MDIsIDB4QzksIDB4MUUsIDB4 MzEsIDB4ODIsIDB4QjQsIDB4RTYsIDB4MUIsIDB4MzIsIDB4Q0UsIDB4NUQsCisrICAgIDB4NDEs IDB4MUQsIDB4MDAsIDB4MkYsIDB4MDQsIDB4OEIsIDB4QkQsIDB4MzcsIDB4NzksIDB4Q0YsIDB4 NzcsIDB4MDMsCisrICAgIDB4MDUsIDB4NkEsIDB4MjEsIDB4QzcsIDB4OEQsIDB4MjQsIDB4NjAs IDB4NDksIDB4MzksIDB4NTgsIDB4QzUsIDB4MjcsCisrICAgIDB4OEYsIDB4QzUsIDB4OTcsIDB4 NEEsIDB4QjIsIDB4RTEsIDB4RDQsIDB4MzYsIDB4NTcsIDB4QkQsIDB4NDMsIDB4Q0MsCisrICAg IDB4N0IsIDB4Q0UsIDB4RjIsIDB4QTUsIDB4MzAsIDB4RjgsIDB4NzIsIDB4MTQsIDB4QkIsIDB4 RDAsIDB4OUYsIDB4QzEsCisrICAgIDB4NDksIDB4QzgsIDB4MUMsIDB4QUYsIDB4Q0QsIDB4OTUs IDB4NzgsIDB4NzIsIDB4MjUsIDB4RjksIDB4NDUsIDB4QzYsCisrICAgIDB4NUIsIDB4NjIsIDB4 NUUsIDB4MDEsIDB4RDcsIDB4NDAsIDB4NUUsIDB4QzgsIDB4Q0EsIDB4MEEsIDB4RjMsIDB4QkEs CisrICAgIDB4MDgsIDB4MDcsIDB4ODgsIDB4Q0EsIDB4NDksIDB4MzYsIDB4ODQsIDB4N0QsIDB4 RjYsIDB4RkMsIDB4NUEsIDB4REIsCisrICAgIDB4RkMsIDB4NTAsIDB4RDMsIDB4RUIsIDB4M0Qs IDB4ODMsIDB4QjAsIDB4RjUsIDB4OTQsIDB4NUUsIDB4ODgsIDB4QzMsCisrICAgIDB4ODIsIDB4 Q0QsIDB4NTMsIDB4NDAsIDB4OTYsIDB4MTgsIDB4NkIsIDB4NEEsIDB4NkMsIDB4OUMsIDB4RkUs IDB4RTUsCisrICAgIDB4M0IsIDB4NzUsIDB4RjksIDB4RUIsIDB4QTUsIDB4NzcsIDB4MTEsIDB4 RUYsIDB4ODgsIDB4MUMsIDB4MjUsIDB4NzAsCisrICAgIDB4N0QsIDB4ODgsIDB4NUQsIDB4QzMs IDB4Q0EsIDB4RTEsIDB4NDksIDB4MTQsIDB4OTAsIDB4QUQsIDB4RjIsIDB4NUUsCisrICAgIDB4 NDksIDB4RDcsIDB4OTksIDB4QTUsIDB4N0IsIDB4NzcsIDB4M0IsIDB4OEUsIDB4QjgsIDB4REIs IDB4RjEsIDB4NEMsCisrICAgIDB4RDYsIDB4OUEsIDB4REMsIDB4RTUsIDB4N0EsIDB4MUMsIDB4 RTEsIDB4Q0UsIDB4OUQsIDB4RjEsIDB4RjMsIDB4QTAsCisrICAgIDB4MEEsIDB4MzUsIDB4NTIs IDB4OUQsIDB4QjksIDB4NDYsIDB4OTQsIDB4ODIsIDB4MEYsIDB4RjcsIDB4QjIsIDB4NjIsCisr ICAgIDB4NTEsIDB4NzAsIDB4NzUsIDB4RDIsIDB4MzcsIDB4OTYsIDB4NjcsIDB4MkYsIDB4RDAs IDB4MjIsIDB4RDgsIDB4MDcsCisrICAgIDB4OEQsIDB4NjksIDB4OUUsIDB4NkQsIDB4MEIsIDB4 NDAsIDB4NEYsIDB4NzAsIDB4RUMsIDB4MEIsIDB4Q0EsIDB4ODgsCisrICAgIDB4ODAsIDB4OEQs IDB4OUEsIDB4RjQsIDB4RjksIDB4MTgsIDB4NTAsIDB4MjcsIDB4MDgsIDB4RkEsIDB4Q0MsIDB4 QzcsCisrICAgIDB4M0YsIDB4RTQsIDB4ODQsIDB4ODMsIDB4QTEsIDB4QjYsIDB4MUQsIDB4MjMs IDB4MzQsIDB4RkUsIDB4NDgsIDB4RTUsCisrICAgIDB4RTMsIDB4QUUsIDB4NEQsIDB4OTgsIDB4 QkMsIDB4QTYsIDB4OEEsIDB4OUYsIDB4RkQsIDB4NEQsIDB4REIsIDB4OUQsCisrICAgIDB4Rjcs IDB4RUIsIDB4NEUsIDB4QjYsIDB4NkYsIDB4MjUsIDB4RUEsIDB4N0EsIDB4RTksIDB4ODUsIDB4 QjIsIDB4RUYsCisrICAgIDB4OTAsIDB4RDIsIDB4QTYsIDB4MkIKKyB9OworIAorIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTUxMltdID0geworLSAgICAweDA3LCAw eDFFLCAweEQ4LCAweEQ1LCAweDA1LCAweEU4LCAweEU2LCAweEU2LCAweDU3LCAweEFFLCAweDYz LCAweDhDLAorLSAgICAweEM2LCAweDgzLCAweEI3LCAweEEwLCAweDU5LCAweEJCLCAweEYyLCAw eEM2LCAweDhGLCAweDEyLCAweDUzLCAweDlBLAorLSAgICAweDlCLCAweDU0LCAweDlFLCAweEIz LCAweEMxLCAweDFELCAweDIzLCAweDRELCAweDUxLCAweEVELCAweDlFLCAweERELAorLSAgICAw eDRCLCAweEYzLCAweDQ2LCAweDlCLCAweDZCLCAweEY2LCAweDdDLCAweDI0LCAweDYwLCAweDc5 LCAweDIzLCAweDM5LAorLSAgICAweDAxLCAweDFDLCAweDUxLCAweENCLCAweEQ4LCAweEU5LCAw eDlBLCAweDAxLCAweDY3LCAweDVGLCAweEZFLCAweEQ3LAorLSAgICAweDdDLCAweEUzLCAweDdG LCAweEVELCAweERCLCAweDg3LCAweEJCLCAweEYwLCAweDNELCAweDc4LCAweDU1LCAweDYxLAor LSAgICAweDU3LCAweEUzLCAweDBGLCAweEUzLCAweEQyLCAweDlELCAweDBDLCAweDJBLCAweDIw LCAweEIwLCAweDg1LCAweDEzLAorLSAgICAweEM1LCAweDQ3LCAweDM0LCAweDBELCAweDMyLCAw eDE1LCAweEM4LCAweEFFLCAweDlBLCAweDZBLCAweDM5LCAweDYzLAorLSAgICAweDJELCAweDYw LCAweEY1LCAweDRDLCAweERGLCAweDhBLCAweDQ4LCAweDRCLCAweEJGLCAweEY0LCAweEE4LCAw eEZFLAorLSAgICAweDc2LCAweEYyLCAweDMyLCAweDFCLCAweDlDLCAweDdDLCAweENBLCAweEZF LCAweDdGLCAweDgwLCAweEMyLCAweDg4LAorLSAgICAweDVDLCAweDk3LCAweDcwLCAweEI0LCAw eDI2LCAweEM5LCAweDE0LCAweDhCCisrICAgIDB4M0YsIDB4ODMsIDB4NDMsIDB4NzgsIDB4MjUs IDB4QkUsIDB4ODEsIDB4QjIsIDB4NkUsIDB4NzgsIDB4MTEsIDB4MzIsCisrICAgIDB4RDAsIDB4 ODgsIDB4MDUsIDB4NTMsIDB4OTUsIDB4RUQsIDB4ODEsIDB4MTIsIDB4Q0UsIDB4NTAsIDB4RDks IDB4MDYsCisrICAgIDB4NDIsIDB4ODksIDB4QTAsIDB4NTUsIDB4N0EsIDB4MDUsIDB4MTMsIDB4 OTQsIDB4MzUsIDB4OUIsIDB4Q0EsIDB4NUQsCisrICAgIDB4Q0IsIDB4QjIsIDB4MzIsIDB4RTEs IDB4MDQsIDB4OTksIDB4RUMsIDB4RTcsIDB4QTYsIDB4NjksIDB4NEQsIDB4MkIsCisrICAgIDB4 QzEsIDB4NTcsIDB4MTMsIDB4NDgsIDB4MEQsIDB4NkIsIDB4NEQsIDB4ODMsIDB4MjgsIDB4MDYs IDB4NzksIDB4OUQsCisrICAgIDB4QjQsIDB4NzAsIDB4Q0UsIDB4QzAsIDB4RkMsIDB4M0IsIDB4 NjksIDB4QjMsIDB4OTEsIDB4NTQsIDB4QTksIDB4NDQsCisrICAgIDB4MkUsIDB4REEsIDB4NEEs IDB4QzUsIDB4QzIsIDB4OTksIDB4RjAsIDB4REUsIDB4Q0EsIDB4NzcsIDB4OTksIDB4NkIsCisr ICAgIDB4MEMsIDB4NzksIDB4RTUsIDB4MjksIDB4NzQsIDB4ODMsIDB4NjksIDB4RUEsIDB4Qjgs IDB4NzIsIDB4MzAsIDB4M0QsCisrICAgIDB4N0EsIDB4MzAsIDB4RTEsIDB4MDMsIDB4N0IsIDB4 MDksIDB4RTYsIDB4MTEsIDB4QzAsIDB4REMsIDB4RkYsIDB4RkQsCisrICAgIDB4QkQsIDB4RUMs IDB4OUMsIDB4Q0MsIDB4NDYsIDB4N0IsIDB4NEMsIDB4NEMsIDB4NTksIDB4QkUsIDB4ODIsIDB4 N0MsCisrICAgIDB4RjUsIDB4NjAsIDB4NUEsIDB4QzMsIDB4RTgsIDB4QTgsIDB4OEEsIDB4Mzgs IDB4OUUsIDB4MDEsIDB4NTcsIDB4RjEsCisrICAgIDB4NzksIDB4M0EsIDB4N0MsIDB4QTMsIDB4 OUYsIDB4MTIsIDB4MUEsIDB4NEYsIDB4MkUsIDB4QTIsIDB4RTUsIDB4MEEsCisrICAgIDB4QUIs IDB4QzAsIDB4RjQsIDB4QTUsIDB4RTMsIDB4NUYsIDB4ODksIDB4MUMsIDB4OEYsIDB4QTQsIDB4 NUUsIDB4Q0UsCisrICAgIDB4MEQsIDB4OTEsIDB4MDUsIDB4MUIsIDB4MTcsIDB4NjIsIDB4NDgs IDB4RkUsIDB4QTUsIDB4NEMsIDB4RUYsIDB4MkQsCisrICAgIDB4MjgsIDB4RjEsIDB4NUUsIDB4 RTYsIDB4RDEsIDB4MzAsIDB4ODksIDB4MEEsIDB4QUQsIDB4MTgsIDB4QUYsIDB4NkYsCisrICAg IDB4MDQsIDB4MDksIDB4MzYsIDB4OUEsIDB4RkYsIDB4Q0EsIDB4QTEsIDB4QTcsIDB4MDUsIDB4 N0YsIDB4RDQsIDB4QkYsCisrICAgIDB4M0EsIDB4QjUsIDB4NDIsIDB4NkQsIDB4RTksIDB4MDcs IDB4MjksIDB4NjUsIDB4OEIsIDB4QUQsIDB4NEQsIDB4MEYsCisrICAgIDB4MjIsIDB4RTEsIDB4 NTksIDB4NDMsIDB4NjgsIDB4ODcsIDB4QTgsIDB4OEIsIDB4QkMsIDB4NjksIDB4QTEsIDB4OTQs CisrICAgIDB4MjIsIDB4M0UsIDB4OEEsIDB4NDksIDB4RTgsIDB4QTMsIDB4NkYsIDB4QzIsIDB4 OTMsIDB4NTgsIDB4RTcsIDB4QUUsCisrICAgIDB4QzksIDB4MUYsIDB4Q0YsIDB4NjEsIDB4OTMs IDB4RkMsIDB4QzEsIDB4RjYsIDB4RjMsIDB4MjcsIDB4N0YsIDB4MEEsCisrICAgIDB4OTAsIDB4 RTAsIDB4NjUsIDB4MzIsIDB4NTcsIDB4NDcsIDB4RTIsIDB4RUQsIDB4MDgsIDB4NTksIDB4QTYs IDB4RjAsCisrICAgIDB4MTcsIDB4MkMsIDB4MTMsIDB4RTAKKyB9OworIAorIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfU0hBMVtdID0geworLSAgICAweDcxLCAweEVFLCAweDFB LCAweEMwLCAweEZFLCAweDAxLCAweDkzLCAweDU0LCAweDc5LCAweDVDLCAweEYyLCAweDRDLAor LSAgICAweDRBLCAweEZELCAweDFBLCAweDA1LCAweDhGLCAweDY0LCAweEIxLCAweDZELCAweDYx LCAweDMzLCAweDhELCAweDlCLAorLSAgICAweEU3LCAweEZELCAweDYwLCAweEEzLCAweDgzLCAw eEI1LCAweEEzLCAweDUxLCAweDU1LCAweDc3LCAweDkwLCAweENGLAorLSAgICAweERDLCAweDIy LCAweDM3LCAweDhFLCAweEQwLCAweEUxLCAweEFFLCAweDA5LCAweEUzLCAweDNELCAweDFFLCAw eEY4LAorLSAgICAweDgwLCAweEQxLCAweDhCLCAweEMyLCAweEVDLCAweDBBLCAweEQ3LCAweDZC LCAweDg4LCAweDhCLCAweDhCLCAweEExLAorLSAgICAweDIwLCAweDIyLCAweEJFLCAweDU5LCAw eDVCLCAweEUwLCAweDIzLCAweDI0LCAweEExLCAweDQ5LCAweDMwLCAweEJBLAorLSAgICAweEE5 LCAweDlFLCAweEU4LCAweEIxLCAweDhBLCAweDYyLCAweDE2LCAweEJGLCAweDRFLCAweENBLCAw eDJFLCAweDRFLAorLSAgICAweEJDLCAweDI5LCAweEE4LCAweDY3LCAweDEzLCAweEI3LCAweDlG LCAweDFELCAweDA0LCAweDQ0LCAweEU1LCAweDVGLAorLSAgICAweDM1LCAweDA3LCAweDExLCAw eEJDLCAweEVELCAweDE5LCAweDM3LCAweDIxLCAweENGLCAweDIzLCAweDQ4LCAweDFGLAorLSAg ICAweDcyLCAweDA1LCAweERFLCAweEU2LCAweEU4LCAweDdGLCAweDMzLCAweDhBLCAweDc2LCAw eDRCLCAweDJGLCAweDk1LAorLSAgICAweERGLCAweEYxLCAweDVGLCAweDg0LCAweDgwLCAweEQ5 LCAweDQ2LCAweEI0CisrICAgIDB4M0IsIDB4NjAsIDB4NEIsIDB4RkMsIDB4NTQsIDB4MjgsIDB4 MjMsIDB4RTYsIDB4MkYsIDB4MDUsIDB4MDQsIDB4QkEsCisrICAgIDB4OUQsIDB4RTQsIDB4M0Ms IDB4QjgsIDB4NUIsIDB4NjAsIDB4NUMsIDB4Q0QsIDB4OUQsIDB4RUEsIDB4QzMsIDB4NEMsCisr ICAgIDB4QzIsIDB4MzMsIDB4RTYsIDB4QzYsIDB4MjEsIDB4NDgsIDB4NzYsIDB4RUMsIDB4QjIs IDB4RjUsIDB4MTEsIDB4REUsCisrICAgIDB4NDQsIDB4QjQsIDB4QUYsIDB4MTYsIDB4MTEsIDB4 QzMsIDB4MTgsIDB4MTYsIDB4QjMsIDB4NjksIDB4QkIsIDB4OTQsCisrICAgIDB4RUQsIDB4RTgs IDB4QjMsIDB4OUUsIDB4QjEsIDB4NDMsIDB4OEUsIDB4Q0UsIDB4QjQsIDB4MzQsIDB4OUIsIDB4 MDgsCisrICAgIDB4MjIsIDB4QUYsIDB4MzEsIDB4NzMsIDB4QjUsIDB4RkEsIDB4MTEsIDB4N0Us IDB4OEYsIDB4MTMsIDB4NTIsIDB4RUMsCisrICAgIDB4QzksIDB4MDMsIDB4RUUsIDB4MEQsIDB4 MkIsIDB4OTEsIDB4MzIsIDB4RjIsIDB4OEUsIDB4REYsIDB4MDIsIDB4RTAsCisrICAgIDB4MEEs IDB4NDcsIDB4RDIsIDB4MEEsIDB4NTEsIDB4MDAsIDB4MUEsIDB4MzAsIDB4NkYsIDB4MEMsIDB4 QjMsIDB4NTQsCisrICAgIDB4NjQsIDB4MjAsIDB4OTAsIDB4MEMsIDB4MDEsIDB4QkUsIDB4QzAs IDB4NDIsIDB4OEMsIDB4NUQsIDB4MTgsIDB4NkYsCisrICAgIDB4MzIsIDB4NzUsIDB4NDUsIDB4 N0IsIDB4MUMsIDB4MDQsIDB4QTIsIDB4OUYsIDB4ODQsIDB4RDcsIDB4RjUsIDB4M0EsCisrICAg IDB4OTUsIDB4RDQsIDB4RTgsIDB4OEQsIDB4RUMsIDB4OTksIDB4RUYsIDB4MTgsIDB4NUUsIDB4 NjQsIDB4RDMsIDB4QUYsCisrICAgIDB4RjgsIDB4RDQsIDB4RkYsIDB4M0MsIDB4ODcsIDB4QTAs IDB4M0YsIDB4QzcsIDB4MjIsIDB4MDUsIDB4RkQsIDB4RkQsCisrICAgIDB4MjksIDB4OEEsIDB4 MjgsIDB4REEsIDB4QTksIDB4OEEsIDB4OEIsIDB4MjMsIDB4NjIsIDB4OUQsIDB4NDIsIDB4Qjgs CisrICAgIDB4NEEsIDB4NzYsIDB4MEQsIDB4OUYsIDB4OUEsIDB4RTAsIDB4RTYsIDB4REQsIDB4 QUQsIDB4NUUsIDB4NUYsIDB4RDUsCisrICAgIDB4MzIsIDB4RTksIDB4NEIsIDB4OTcsIDB4N0Qs IDB4NjIsIDB4MEEsIDB4QjMsIDB4QkUsIDB4RjIsIDB4OEMsIDB4MUYsCisrICAgIDB4MkIsIDB4 MjIsIDB4MDYsIDB4MTUsIDB4MzMsIDB4NzEsIDB4RUQsIDB4OUIsIDB4QTAsIDB4ODIsIDB4Q0Us IDB4QkYsCisrICAgIDB4M0IsIDB4MDgsIDB4NUYsIDB4QTcsIDB4MjAsIDB4OTQsIDB4MDksIDB4 RUIsIDB4ODIsIDB4QTUsIDB4NDEsIDB4NjAsCisrICAgIDB4RjEsIDB4MDgsIDB4RUIsIDB4OEQs IDB4Q0MsIDB4OEQsIDB4QzksIDB4NTIsIDB4MEEsIDB4QUYsIDB4RjQsIDB4RjksCisrICAgIDB4 OUYsIDB4ODIsIDB4RDgsIDB4MEIsIDB4NzUsIDB4NUUsIDB4RTQsIDB4QUYsIDB4NjUsIDB4OTYs IDB4QUYsIDB4RkMsCisrICAgIDB4MzMsIDB4QkYsIDB4OUYsIDB4M0UsIDB4QTQsIDB4N0IsIDB4 ODYsIDB4QzcsIDB4RjcsIDB4NDcsIDB4QUIsIDB4MzcsCisrICAgIDB4MDUsIDB4RDYsIDB4MEQs IDB4MzEsIDB4NzIsIDB4OEMsIDB4ODAsIDB4MUUsIDB4QTksIDB4NTQsIDB4RkMsIDB4REYsCisr ICAgIDB4MjcsIDB4OTAsIDB4RTIsIDB4MDEKKyB9OworIAorIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGthdF9SU0FfU0hBMjI0W10gPSB7CistICAgIDB4NjIsIDB4QUEsIDB4NzksIDB4QTks IDB4MTgsIDB4MEUsIDB4NUYsIDB4OEMsIDB4QkIsIDB4QjcsIDB4MTUsIDB4RjksCistICAgIDB4 MjUsIDB4QkIsIDB4RkEsIDB4RDQsIDB4M0EsIDB4MzQsIDB4RUQsIDB4OUUsIDB4QTAsIDB4QTks IDB4MTgsIDB4OEQsCistICAgIDB4NUIsIDB4NTUsIDB4OUEsIDB4N0UsIDB4MUUsIDB4MDgsIDB4 MDgsIDB4NjAsIDB4QzUsIDB4MUEsIDB4QzUsIDB4ODksCistICAgIDB4MDgsIDB4RTIsIDB4MUIs IDB4QkQsIDB4NjIsIDB4NTAsIDB4MTcsIDB4NzYsIDB4MzAsIDB4MkMsIDB4OUUsIDB4Q0QsCist ICAgIDB4QTQsIDB4MDIsIDB4QUQsIDB4QjEsIDB4NkQsIDB4NDQsIDB4NkQsIDB4RDUsIDB4QzYs IDB4NDUsIDB4NDEsIDB4RTUsCistICAgIDB4RUUsIDB4MUYsIDB4OEQsIDB4N0UsIDB4MDgsIDB4 MTYsIDB4QTYsIDB4RTEsIDB4NUUsIDB4MEIsIDB4QTksIDB4Q0MsCistICAgIDB4REIsIDB4NTks IDB4NTUsIDB4ODcsIDB4MDksIDB4MjUsIDB4NzAsIDB4ODYsIDB4ODQsIDB4MDIsIDB4QzYsIDB4 M0IsCistICAgIDB4MEIsIDB4NDQsIDB4NEMsIDB4NDYsIDB4OTUsIDB4RjQsIDB4RjgsIDB4NUEs IDB4OTEsIDB4MjgsIDB4M0UsIDB4QjIsCistICAgIDB4NTgsIDB4MkUsIDB4MDYsIDB4NDUsIDB4 NDksIDB4RTAsIDB4OTIsIDB4RTIsIDB4QzAsIDB4NjYsIDB4RTYsIDB4MzUsCistICAgIDB4RDks IDB4NzksIDB4N0YsIDB4MTcsIDB4NUUsIDB4MDIsIDB4NzMsIDB4MDQsIDB4NzcsIDB4ODIsIDB4 RTYsIDB4REMsCistICAgIDB4NDAsIDB4MjEsIDB4ODksIDB4OEIsIDB4MzcsIDB4M0UsIDB4MUUs IDB4OEQKKysgICAgMHhBMiwgMHhEOCwgMHg0MiwgMHg1MywgMHhERCwgMHhCRiwgMHgxRiwgMHg2 QiwgMHgwNywgMHhFMCwgMHg2MCwgMHg4NiwKKysgICAgMHg1QSwgMHg2MCwgMHgwNiwgMHg4Riwg MHg0NCwgMHhEOSwgMHhCMCwgMHg0QSwgMHhBQSwgMHg5MCwgMHg3MSwgMHhCOCwKKysgICAgMHhC MiwgMHhCQywgMHgzMCwgMHg0MSwgMHg1MCwgMHhCQiwgMHhGRCwgMHg0NiwgMHg5OCwgMHg0RCwg MHhDMCwgMHg4OSwKKysgICAgMHg1NywgMHg4NSwgMHg4QSwgMHg5NywgMHg0OSwgMHgyNSwgMHhB OCwgMHgwQywgMHg2OSwgMHg3MCwgMHgxOSwgMHgzOSwKKysgICAgMHg2NiwgMHgyNCwgMHhCNCwg MHg2OSwgMHg0NywgMHhEMiwgMHg3QywgMHhERSwgMHgyRCwgMHgzNywgMHg1OSwgMHhCMywKKysg ICAgMHhFMywgMHhDNywgMHg2QiwgMHhERCwgMHhCRSwgMHhFMSwgMHhFNiwgMHgyOCwgMHg5QSwg MHg4RCwgMHg0MiwgMHgzRSwKKysgICAgMHgyOCwgMHgwMSwgMHhENywgMHgwMywgMHhDOSwgMHg3 MywgMHhDMywgMHg2QiwgMHgwMywgMHhFQywgMHgxRSwgMHhGOCwKKysgICAgMHg1MywgMHg4Qiwg MHg1MiwgMHg0MiwgMHg4OSwgMHg1NSwgMHhCNywgMHg4NywgMHhBOSwgMHg5NCwgMHhDMiwgMHhC NCwKKysgICAgMHg0QiwgMHg3NiwgMHhGNSwgMHg2MSwgMHg0NywgMHhFMSwgMHg0NCwgMHg3Qiwg MHhFQywgMHhCNCwgMHgyNSwgMHg2NiwKKysgICAgMHhDMCwgMHhGRiwgMHhFQiwgMHg4NiwgMHgy NCwgMHhBQSwgMHhBOCwgMHg3MiwgMHhDNywgMHhGQiwgMHhGQiwgMHhGNiwKKysgICAgMHg4NCwg MHhBNywgMHg1QiwgMHhENCwgMHg4NywgMHhFNSwgMHg4NCwgMHg1NiwgMHgxRSwgMHg0QywgMHhF NSwgMHhCQywKKysgICAgMHg4NywgMHg5NCwgMHhBQywgMHg5QywgMHgxQiwgMHgzRCwgMHhGNywg MHhENCwgMHgzNiwgMHg4NSwgMHg5RiwgMHhDOSwKKysgICAgMHhGNiwgMHg0MywgMHgzRiwgMHhC NiwgMHgyNSwgMHgzMywgMHg0OCwgMHgwRiwgMHhFNSwgMHg3QywgMHhDRCwgMHg1MywKKysgICAg MHg0OCwgMHhFQiwgMHgwMiwgMHgxMSwgMHhCOSwgMHg5RSwgMHhDMywgMHhCNCwgMHhFMSwgMHg1 NCwgMHhENiwgMHhBQSwKKysgICAgMHgxQSwgMHg5RSwgMHgxMCwgMHhFMSwgMHgyNywgMHgyNSwg MHhGMiwgMHhFMSwgMHhBQiwgMHhBQiwgMHg2QywgMHg0NSwKKysgICAgMHg2MSwgMHhENSwgMHhB MywgMHg2QywgMHhCNiwgMHgzMywgMHg1MiwgMHhBRSwgMHgzRCwgMHhGRCwgMHgyMiwgMHhGQywK KysgICAgMHgzQSwgMHhBQiwgMHg2MywgMHg5NCwgMHhCNSwgMHgzQSwgMHg2OSwgMHgxMSwgMHhB QywgMHg5OSwgMHg0RiwgMHgzMywKKysgICAgMHg2NywgMHgwQSwgMHgxQSwgMHg3MCwgMHgxRSwg MHhCOSwgMHhFMiwgMHgyNiwgMHgyNywgMHg2OCwgMHhFQSwgMHhGNSwKKysgICAgMHg5NywgMHg1 NSwgMHhBQywgMHg4MywgMHg2QSwgMHg0MCwgMHgzQiwgMHg1NiwgMHhBRSwgMHgxMywgMHg4OCwg MHhFOCwKKysgICAgMHg5OCwgMHg3MiwgMHg1MiwgMHg5MSwgMHg3RiwgMHg3OCwgMHgwQSwgMHgx OCwgMHhENCwgMHg0NCwgMHg3OCwgMHg4MywKKysgICAgMHgwRCwgMHg0NCwgMHg3NywgMHhBNiwg MHhGMywgMHgwNCwgMHhGMSwgMHg4QywgMHhCQywgMHgyRiwgMHhGOSwgMHg1QiwKKysgICAgMHhE QiwgMHg3MCwgMHgwMCwgMHhGNgorIH07CisgCisgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg a2F0X1JTQV9TSEEyNTZbXSA9IHsKKy0gICAgMHgwRCwgMHg1NSwgMHhFMiwgMHhBQSwgMHg4MSwg MHhEQiwgMHg4RSwgMHg4MiwgMHgwNSwgMHgxNywgMHhBNSwgMHgyMywKKy0gICAgMHhFNywgMHgz QiwgMHgxRCwgMHhBRiwgMHhGQiwgMHg4QywgMHhEMCwgMHg4MSwgMHgyMCwgMHg3QiwgMHhBQSwg MHgyMywKKy0gICAgMHg5MiwgMHg4NywgMHg4QywgMHhEMSwgMHg1MywgMHg4NSwgMHgxNiwgMHhE QywgMHhCRSwgMHhBRCwgMHg2RiwgMHgzNSwKKy0gICAgMHg5OCwgMHgyRCwgMHg2OSwgMHg4NCwg MHhCRiwgMHhEOSwgMHg4QSwgMHgwMSwgMHgxNywgMHg1OCwgMHhCMiwgMHg2RSwKKy0gICAgMHgy QywgMHg0NCwgMHg5QiwgMHg5MCwgMHhGMSwgMHhGQiwgMHg1MSwgMHhFOCwgMHg2QSwgMHg5MCwg MHgyRCwgMHgxOCwKKy0gICAgMHgwRSwgMHhDMCwgMHg5MCwgMHgxMCwgMHgyNCwgMHhBOSwgMHgx RCwgMHhCMywgMHg1OCwgMHg3QSwgMHg5MSwgMHgzMCwKKy0gICAgMHhCRSwgMHgyMiwgMHhDNywg MHhEMywgMHhFQywgMHhDMywgMHgwOSwgMHg1RCwgMHhCRiwgMHhFMiwgMHg4MCwgMHgzQSwKKy0g ICAgMHg3QywgMHg4NSwgMHhCNCwgMHhCQywgMHhEMSwgMHhFOSwgMHhGMCwgMHg1QywgMHhERSwg MHg4MSwgMHhBNiwgMHgzOCwKKy0gICAgMHhCOCwgMHg0MiwgMHhCQiwgMHg4NiwgMHhDNSwgMHg5 RCwgMHhDRSwgMHg3QywgMHgyQywgMHhFRSwgMHhEMSwgMHhEQSwKKy0gICAgMHgyNywgMHg0OCwg MHgyQiwgMHhGNSwgMHhBQiwgMHhCOSwgMHhGNywgMHg4MCwgMHhEMSwgMHg5MCwgMHgyNywgMHg5 MCwKKy0gICAgMHhCRCwgMHg0NCwgMHg5NywgMHg2MCwgMHhDRCwgMHg1NywgMHhDMCwgMHg3QQor KyAgICAweEMyLCAweEIxLCAweDk3LCAweDAwLCAweDlBLCAweEU1LCAweDgwLCAweDZBLCAweEUy LCAweDUxLCAweDY4LCAweEI5LAorKyAgICAweDdBLCAweDBDLCAweEYyLCAweEI0LCAweDc3LCAw eEVELCAweDE1LCAweDBDLCAweDRFLCAweEUxLCAweERDLCAweEZGLAorKyAgICAweDhFLCAweEJD LCAweERFLCAweEM3LCAweDlBLCAweDk2LCAweEYxLCAweDQ3LCAweDQ1LCAweDI0LCAweDlELCAw eDZGLAorKyAgICAweEE2LCAweEYzLCAweDFELCAweDBELCAweDM1LCAweDRDLCAweDFBLCAweEYz LCAweDU4LCAweDJDLCAweDZDLCAweDA2LAorKyAgICAweEQ2LCAweDIyLCAweDM3LCAweDc3LCAw eDhDLCAweDMzLCAweEU1LCAweDA3LCAweDUzLCAweDkzLCAweDI4LCAweENGLAorKyAgICAweDY3 LCAweEZBLCAweEM0LCAweDFGLCAweDFCLCAweDI0LCAweERCLCAweDRDLCAweEM1LCAweDJBLCAw eDUxLCAweEEyLAorKyAgICAweDYwLCAweDE1LCAweDhDLCAweDU0LCAweEI0LCAweDMwLCAweEUy LCAweDI0LCAweDQ3LCAweDg2LCAweEYyLCAweEY4LAorKyAgICAweDZDLCAweEQ2LCAweDEyLCAw eDU5LCAweDJDLCAweDc0LCAweDlBLCAweDM3LCAweEYzLCAweEM0LCAweEEyLCAweEQ1LAorKyAg ICAweDRFLCAweDFGLCAweDc3LCAweEYwLCAweDI3LCAweENFLCAweDc3LCAweEY4LCAweDRBLCAw eDc5LCAweDAzLCAweEJFLAorKyAgICAweEM4LCAweDA2LCAweDJELCAweEE3LCAweEE2LCAweDQ2 LCAweEY1LCAweDU1LCAweDc5LCAweEQ3LCAweDVDLCAweEM2LAorKyAgICAweDVCLCAweEIxLCAw eDAwLCAweDRFLCAweDdDLCAweEQ5LCAweDExLCAweDg1LCAweEUwLCAweEIxLCAweDRELCAweDJE LAorKyAgICAweDEzLCAweEQ3LCAweEFDLCAweEVBLCAweDY0LCAweEQxLCAweEFDLCAweDhGLCAw eDhELCAweDhGLCAweEVBLCAweDQyLAorKyAgICAweDdGLCAweEY5LCAweEI3LCAweDdELCAweDJD LCAweDY4LCAweDQ5LCAweDA3LCAweDdBLCAweDc0LCAweEVGLCAweEI0LAorKyAgICAweEM5LCAw eDk3LCAweDE2LCAweDVDLCAweDZDLCAweDZFLCAweDVDLCAweDA5LCAweDJFLCAweDhFLCAweDEz LCAweDJFLAorKyAgICAweDFBLCAweDhELCAweEE2LCAweDBDLCAweDZFLCAweDBDLCAweDFDLCAw eDBGLCAweENDLCAweEIyLCAweDc4LCAweDhBLAorKyAgICAweDA3LCAweEZDLCAweDVDLCAweEMy LCAweEY1LCAweDY1LCAweEVDLCAweEFCLCAweDhCLCAweDNDLCAweENBLCAweDkxLAorKyAgICAw eDZGLCAweDg0LCAweDdDLCAweDIxLCAweDBFLCAweEI4LCAweERBLCAweDdCLCAweDZDLCAweEY3 LCAweERGLCAweEFCLAorKyAgICAweDdFLCAweDE1LCAweEZELCAweDg1LCAweDBCLCAweDMzLCAw eDlCLCAweDZBLCAweDNBLCAweEMzLCAweEVGLCAweDY1LAorKyAgICAweDA0LCAweDZFLCAweEIy LCAweEFDLCAweDk4LCAweEZELCAweEVCLCAweDAyLCAweEY1LCAweEMwLCAweDBCLCAweDVFLAor KyAgICAweENCLCAweEQ0LCAweDgzLCAweDgyLCAweDE4LCAweDFCLCAweERBLCAweEI0LCAweENE LCAweEU4LCAweDcxLCAweDZCLAorKyAgICAweDFELCAweEI1LCAweDRGLCAweEU5LCAweEQ2LCAw eDQzLCAweEEwLCAweDBBLCAweDE0LCAweEEwLCAweEU3LCAweDVELAorKyAgICAweDQ3LCAweDlE LCAweDE4LCAweEQ3CisgfTsKKyAKKyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNB X1NIQTM4NFtdID0geworLSAgICAweDFELCAweEUzLCAweDZBLCAweERELCAweDI3LCAweDRDLCAw eEMwLCAweEE1LCAweDI3LCAweEVGLCAweEU2LCAweDFGLAorLSAgICAweEQyLCAweDkxLCAweDY4 LCAweDU5LCAweDA0LCAweEFFLCAweEJELCAweDk5LCAweDYzLCAweDU2LCAweDQ3LCAweEM3LAor LSAgICAweDZGLCAweDIyLCAweDE2LCAweDQ4LCAweEQwLCAweEY5LCAweDE4LCAweEE5LCAweENB LCAweEZBLCAweDVELCAweDVDLAorLSAgICAweEE3LCAweDY1LCAweDUyLCAweDhBLCAweEM4LCAw eDQ0LCAweDdFLCAweDg2LCAweDVELCAweEE5LCAweEE2LCAweDU1LAorLSAgICAweDY1LCAweDNF LCAweEQ5LCAweDJELCAweDAyLCAweDM4LCAweEE4LCAweDc5LCAweDI4LCAweDdGLCAweEI2LCAw eENGLAorLSAgICAweDgyLCAweERELCAweDdFLCAweDU1LCAweEUxLCAweEIxLCAweEJDLCAweEUy LCAweDE5LCAweDJCLCAweDMwLCAweEMyLAorLSAgICAweDFCLCAweDJCLCAweEIwLCAweDgyLCAw eDQ2LCAweEFDLCAweDRCLCAweEQxLCAweEUyLCAweDdELCAweEVCLCAweDhDLAorLSAgICAweEZG LCAweDk1LCAweEU5LCAweDZBLCAweDFDLCAweDNELCAweDRELCAweEJGLCAweDhGLCAweDhCLCAw eDlDLCAweENELAorLSAgICAweEVBLCAweDg1LCAweEVFLCAweDAwLCAweERDLCAweDFDLCAweEE3 LCAweEVCLCAweEQwLCAweDhGLCAweDk5LCAweEYxLAorLSAgICAweDE2LCAweDI4LCAweDI0LCAw eDY0LCAweDA0LCAweDM5LCAweDJELCAweDU4LCAweDFFLCAweDM3LCAweERDLCAweDA0LAorLSAg ICAweEJELCAweDMxLCAweEEyLCAweDJGLCAweEIzLCAweDM1LCAweDU2LCAweEJGCisrICAgIDB4 MTEsIDB4NUUsIDB4NjMsIDB4RkUsIDB4NDcsIDB4QUEsIDB4NkEsIDB4ODQsIDB4RUIsIDB4NDQs IDB4OUEsIDB4MDAsCisrICAgIDB4OTYsIDB4NEEsIDB4RUQsIDB4RDIsIDB4QTcsIDB4NjcsIDB4 M0EsIDB4NjQsIDB4ODIsIDB4MzAsIDB4NjEsIDB4MkQsCisrICAgIDB4RTMsIDB4RjUsIDB4NDks IDB4NjgsIDB4NUUsIDB4NjAsIDB4RDIsIDB4NEQsIDB4RUYsIDB4RjIsIDB4QTQsIDB4QjIsCisr ICAgIDB4OUEsIDB4ODEsIDB4MUQsIDB4NDEsIDB4QTUsIDB4NzMsIDB4NTksIDB4RUIsIDB4QkIs IDB4QzQsIDB4OUUsIDB4MkIsCisrICAgIDB4RUIsIDB4QzMsIDB4REUsIDB4M0EsIDB4RUEsIDB4 RjUsIDB4QUQsIDB4REEsIDB4ODcsIDB4MDgsIDB4NjgsIDB4Q0YsCisrICAgIDB4MTIsIDB4OUIs IDB4QzEsIDB4RTQsIDB4QTcsIDB4NzEsIDB4RjgsIDB4QkQsIDB4NkIsIDB4NkYsIDB4NTAsIDB4 RjEsCisrICAgIDB4RDEsIDB4RkYsIDB4Q0UsIDB4NkMsIDB4RDksIDB4QkUsIDB4REEsIDB4NzYs IDB4RjMsIDB4RUIsIDB4QUIsIDB4OUMsCisrICAgIDB4NDEsIDB4NkUsIDB4NEYsIDB4MzUsIDB4 N0EsIDB4NjEsIDB4MjcsIDB4QkMsIDB4MDMsIDB4M0UsIDB4QUUsIDB4M0UsCisrICAgIDB4MUIs IDB4REQsIDB4QUMsIDB4RDksIDB4MUEsIDB4RkYsIDB4RDMsIDB4RjUsIDB4NjYsIDB4NDMsIDB4 MDcsIDB4NzYsCisrICAgIDB4OEEsIDB4NjksIDB4MkQsIDB4MTQsIDB4QjEsIDB4QkUsIDB4NTUs IDB4NDksIDB4OTAsIDB4ODksIDB4NEIsIDB4QzQsCisrICAgIDB4MTEsIDB4NjcsIDB4RDUsIDB4 OUQsIDB4QjAsIDB4QjIsIDB4RUUsIDB4OEQsIDB4MEEsIDB4NDcsIDB4NEEsIDB4RDksCisrICAg IDB4MEUsIDB4RDEsIDB4MjQsIDB4RjAsIDB4MzAsIDB4MkIsIDB4RjIsIDB4NzksIDB4NDcsIDB4 REIsIDB4NzAsIDB4QjQsCisrICAgIDB4NDYsIDB4RjIsIDB4RjgsIDB4QjcsIDB4QjQsIDB4RjYs IDB4MzQsIDB4NzksIDB4QTgsIDB4MkQsIDB4M0QsIDB4NTYsCisrICAgIDB4RDUsIDB4OUEsIDB4 NjAsIDB4N0EsIDB4MDQsIDB4QzcsIDB4NjYsIDB4MUQsIDB4Q0QsIDB4M0MsIDB4RDUsIDB4Mzks CisrICAgIDB4MzcsIDB4MTIsIDB4NTEsIDB4NUUsIDB4OUYsIDB4RjgsIDB4MUEsIDB4QUYsIDB4 MTMsIDB4QzEsIDB4MTMsIDB4MDAsCisrICAgIDB4MzUsIDB4RDUsIDB4OEQsIDB4MTcsIDB4RTMs IDB4MDIsIDB4MjgsIDB4RDksIDB4RUMsIDB4REUsIDB4RDEsIDB4MkYsCisrICAgIDB4OTMsIDB4 NDksIDB4MDMsIDB4MTEsIDB4M0UsIDB4NTYsIDB4OUQsIDB4QzIsIDB4MzEsIDB4RjgsIDB4QUYs IDB4MkQsCisrICAgIDB4RDksIDB4OTksIDB4QjcsIDB4OEEsIDB4QUMsIDB4NUEsIDB4ODYsIDB4 MjAsIDB4M0EsIDB4ODMsIDB4MjksIDB4MjYsCisrICAgIDB4OUQsIDB4MDMsIDB4NTIsIDB4MkIs IDB4MzQsIDB4NTYsIDB4NDAsIDB4MTYsIDB4NTMsIDB4NTAsIDB4ODIsIDB4QzksCisrICAgIDB4 QzcsIDB4RDUsIDB4NTEsIDB4NEMsIDB4RUQsIDB4QjMsIDB4RTIsIDB4RTEsIDB4Q0YsIDB4QTgs IDB4Q0UsIDB4QkQsCisrICAgIDB4QjEsIDB4NDgsIDB4QTYsIDB4OEEsIDB4NzksIDB4MTcsIDB4 NTUsIDB4MTEsIDB4RUYsIDB4RTgsIDB4MTQsIDB4RjQsCisrICAgIDB4N0UsIDB4MzcsIDB4MUQs IDB4OTYKKyB9OworIAorIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfU0hBNTEy W10gPSB7CistICAgIDB4NjksIDB4NTIsIDB4MUIsIDB4NTEsIDB4NUUsIDB4MDYsIDB4Q0EsIDB4 OUIsIDB4MTYsIDB4NTEsIDB4NUQsIDB4Q0YsCistICAgIDB4NDksIDB4MjUsIDB4NEEsIDB4QTEs IDB4NkEsIDB4NzcsIDB4NEMsIDB4MzYsIDB4NDAsIDB4RjgsIDB4QjIsIDB4OUEsCistICAgIDB4 MTUsIDB4RUEsIDB4NUMsIDB4RTUsIDB4RTYsIDB4ODIsIDB4RTAsIDB4ODYsIDB4ODIsIDB4NkIs IDB4MzIsIDB4RjEsCistICAgIDB4MDQsIDB4QzEsIDB4NUEsIDB4MUEsIDB4RUQsIDB4MUUsIDB4 OUEsIDB4QjYsIDB4NEMsIDB4NTQsIDB4OUYsIDB4RDgsCistICAgIDB4OEQsIDB4Q0MsIDB4QUMs IDB4OEEsIDB4QkIsIDB4OUMsIDB4ODIsIDB4M0YsIDB4QTYsIDB4NTMsIDB4NjIsIDB4QjUsCist ICAgIDB4ODAsIDB4RTIsIDB4QkMsIDB4REQsIDB4NjcsIDB4MkIsIDB4RDksIDB4M0YsIDB4RTQs IDB4NzUsIDB4OTIsIDB4NkIsCistICAgIDB4QUYsIDB4NjIsIDB4N0MsIDB4NTIsIDB4RjAsIDB4 RUUsIDB4MzMsIDB4REYsIDB4MUIsIDB4MUQsIDB4NDcsIDB4RTYsCistICAgIDB4NTksIDB4NTYs IDB4QTUsIDB4QjksIDB4NUMsIDB4RTYsIDB4NzcsIDB4NzgsIDB4MTYsIDB4NjMsIDB4ODQsIDB4 MDUsCistICAgIDB4NkYsIDB4MEUsIDB4MkIsIDB4MzEsIDB4OUQsIDB4RjcsIDB4N0YsIDB4QjIs IDB4NjQsIDB4NzEsIDB4RTAsIDB4MkQsCistICAgIDB4M0UsIDB4NjIsIDB4Q0UsIDB4QjUsIDB4 M0YsIDB4ODgsIDB4REYsIDB4MkQsIDB4QUIsIDB4OTgsIDB4NjUsIDB4OTEsCistICAgIDB4REYs IDB4NzAsIDB4MTQsIDB4QTUsIDB4M0YsIDB4MzYsIDB4QUIsIDB4ODQKKysgICAgMHgzNSwgMHg2 RCwgMHhGMSwgMHg5RSwgMHhDRiwgMHhCMSwgMHhGNiwgMHgwQywgMHgwNCwgMHgyMSwgMHgxNywg MHhCMywKKysgICAgMHhDNCwgMHg5RCwgMHhGRSwgMHg2MiwgMHgxQywgMHgxQSwgMHg0NSwgMHgw MCwgMHgyRSwgMHg2QiwgMHhCNiwgMHg5RiwKKysgICAgMHg1QywgMHhCMSwgMHhDQiwgMHhDRiwg MHhGOSwgMHg2NywgMHhFQSwgMHg2MiwgMHg4QSwgMHhFQiwgMHg3NywgMHgwMiwKKysgICAgMHg0 MiwgMHgzMCwgMHg4OCwgMHhCMSwgMHg0OCwgMHhERiwgMHgxMiwgMHg2MCwgMHg2RSwgMHg5Miwg MHhCQiwgMHg0QiwKKysgICAgMHgwOSwgMHg2OCwgMHhEMSwgMHg3MCwgMHgyQiwgMHg1OSwgMHhF RSwgMHg1NywgMHg5NiwgMHhGOSwgMHhFQSwgMHhBMywKKysgICAgMHg0QywgMHhFOSwgMHhDOSwg MHhCRCwgMHgyNSwgMHgzNCwgMHg2NiwgMHgxNSwgMHg2QywgMHhDOSwgMHg4MSwgMHhEMSwKKysg ICAgMHg0OCwgMHgwRiwgMHgzMywgMHg1RiwgMHgwNSwgMHg0RiwgMHhDMiwgMHhDNCwgMHhERCwg MHgwOSwgMHg1NCwgMHg3OSwKKysgICAgMHhBMSwgMHg1NywgMHgwNywgMHg3MCwgMHhBMCwgMHgz MywgMHgwMiwgMHg0RCwgMHg1RCwgMHhFOSwgMHgyNCwgMHhEMSwKKysgICAgMHhFRiwgMHhGMCwg MHg2MSwgMHhEMCwgMHgxRCwgMHg0MSwgMHhFMiwgMHg5QiwgMHgyQiwgMHg3QywgMHhEMCwgMHg0 RSwKKysgICAgMHg1NSwgMHhEOSwgMHg2RCwgMHhBMSwgMHgxNiwgMHg5RiwgMHhEQSwgMHhDMywg MHgzQiwgMHhGMSwgMHg3NCwgMHhEMSwKKysgICAgMHg5OSwgMHhGMSwgMHg2MywgMHg1NywgMHhB RCwgMHhDNywgMHg1NSwgMHhGNCwgMHg5NywgMHg0MywgMHgxQywgMHhFRCwKKysgICAgMHgxQiwg MHg3QSwgMHgzMiwgMHhDQiwgMHgyNCwgMHhBNiwgMHgzRCwgMHg5MywgMHgzNywgMHg5MCwgMHg3 NCwgMHhFRSwKKysgICAgMHhEMiwgMHg4RCwgMHg0QiwgMHhCQywgMHg3MiwgMHhEQSwgMHgyNSwg MHgyQiwgMHg2NCwgMHhFOSwgMHhDQSwgMHg2OSwKKysgICAgMHgzNiwgMHhCNiwgMHhFQywgMHg2 RSwgMHg4RiwgMHgzMywgMHgwRSwgMHg3NCwgMHg0MCwgMHg0OCwgMHg1MSwgMHhFMiwKKysgICAg MHg1NCwgMHg2RiwgMHhBRiwgMHg2RSwgMHgzNiwgMHg1NCwgMHgzQSwgMHhFQywgMHg3OCwgMHgz NywgMHhFNiwgMHgxRiwKKysgICAgMHg3NiwgMHhBNSwgMHg0RCwgMHhBNiwgMHhEOSwgMHhCMywg MHg2QiwgMHgxNywgMHg2RCwgMHg2MSwgMHhGQywgMHhBMywKKysgICAgMHg4NSwgMHg0QSwgMHhD QywgMHhEQSwgMHg1MiwgMHhBQywgMHg1QiwgMHhEQSwgMHg1MSwgMHhFNSwgMHg3RiwgMHg1QiwK KysgICAgMHg1MiwgMHg4QiwgMHg3NCwgMHg3NSwgMHg5OSwgMHg1QywgMHgwMSwgMHhGRCwgMHgy NSwgMHgzRSwgMHhDRCwgMHg4NiwKKysgICAgMHg2RiwgMHg3QSwgMHhDMCwgMHhEOCwgMHgxNywg MHg2RiwgMHhEMSwgMHhEMiwgMHg2QiwgMHhBQiwgMHgxNCwgMHgxRiwKKysgICAgMHgzQiwgMHhC OCwgMHgxNSwgMHgwNSwgMHg4NiwgMHg0MCwgMHgzNiwgMHhDRiwgMHhEQSwgMHg1OSwgMHgyQiwg MHg5QSwKKysgICAgMHhFOSwgMHgxRSwgMHg2RSwgMHhEMywgMHg2QiwgMHhBMSwgMHgxOSwgMHhD NSwgMHhFNiwgMHgzRiwgMHhFOSwgMHgyRSwKKysgICAgMHg0MywgMHhBOCwgMHgzNCwgMHgwQQor IH07CisgCistc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMxX1NIQTFbXSA9 IHsKKy0gICAgMHg4NiwgMHhCNCwgMHgxOCwgMHhCQSwgMHhEMSwgMHg4MCwgMHhCNiwgMHg3Qywg MHg0MiwgMHg0NSwgMHg0RCwgMHhERiwKKy0gICAgMHhFOSwgMHgyRCwgMHhFMSwgMHg4MywgMHg1 RiwgMHhCNSwgMHgyRiwgMHhDOSwgMHhDRCwgMHhDNCwgMHhCMiwgMHg3NSwKKy0gICAgMHg4MCwg MHhBNCwgMHhGMSwgMHg0QSwgMHhFNywgMHg4MywgMHgxMiwgMHgxRSwgMHgxRSwgMHgxNCwgMHhC OCwgMHhBQywKKy0gICAgMHgzNSwgMHhFMiwgMHhBQSwgMHgwQiwgMHg1QywgMHhGOCwgMHgzOCwg MHg0RCwgMHgwNCwgMHhFRSwgMHhBOSwgMHg5NywKKy0gICAgMHg3MCwgMHhGQiwgMHg1RSwgMHhF NywgMHhCNywgMHhFMywgMHg2MiwgMHgyMywgMHg0QiwgMHgzOCwgMHhCRSwgMHhENiwKKy0gICAg MHg1MywgMHgxNSwgMHhGNywgMHhERiwgMHg4NywgMHhCNCwgMHgwRSwgMHhDQywgMHhCMSwgMHgx QSwgMHgxMSwgMHgxOSwKKy0gICAgMHhFRSwgMHg1MSwgMHhDQywgMHg5MiwgMHhERCwgMHhCQywg MHg2MywgMHgyOSwgMHg2MywgMHgwQywgMHg1OSwgMHhENywKKy0gICAgMHg2RiwgMHg0QywgMHgz QywgMHgzNywgMHg1QiwgMHgzNywgMHgwMywgMHg2MSwgMHg3RCwgMHgyNCwgMHgxQywgMHg5OSwK Ky0gICAgMHg0OCwgMHhBRiwgMHg4MiwgMHhGRSwgMHgzMiwgMHg0MSwgMHg5QiwgMHhCMiwgMHhE QiwgMHhFQSwgMHhFRCwgMHg3NiwKKy0gICAgMHg4RSwgMHg2RSwgMHhDQSwgMHg3RSwgMHg0RSwg MHgxNCwgMHhCQSwgMHgzMCwgMHg4NCwgMHgxQywgMHhCMywgMHg2NywKKy0gICAgMHhBMywgMHgy OSwgMHg4MCwgMHg3MCwgMHg1NCwgMHg2OCwgMHg3RCwgMHg0OQorLX07Cisrc3RhdGljIGludCBm aXBzX3JzYV9lbmNyeXB0X3Rlc3QoUlNBICpyc2EsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBsYWlu dGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHRsZW4pCisrewor KyAgICB1bnNpZ25lZCBjaGFyICpjdGJ1ZiA9IE5VTEwsICpwdGJ1ZiA9IE5VTEw7CisrICAgIGlu dCByZXQgPSAwOworKyAgICBpbnQgbGVuOworIAorLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGthdF9SU0FfWDkzMV9TSEEyNTZbXSA9IHsKKy0gICAgMHg3RSwgMHhBMiwgMHg3NywgMHhGRSwg MHhCOCwgMHg1NCwgMHg4QSwgMHhDNywgMHg3RiwgMHg2NCwgMHg1NCwgMHg4OSwKKy0gICAgMHhF NSwgMHg1MiwgMHgxNSwgMHg4RSwgMHg1MiwgMHg5NiwgMHg0RSwgMHhBNiwgMHg1OCwgMHg5Miwg MHgxQywgMHhERCwKKy0gICAgMHhFQSwgMHhBMiwgMHgyRCwgMHg1QywgMHhEMSwgMHg2MiwgMHgw MCwgMHg0OSwgMHgwNSwgMHg5NSwgMHg3MywgMHhDRiwKKy0gICAgMHgxNiwgMHg3NiwgMHg2OCwg MHhGNiwgMHhDNiwgMHg1RSwgMHg4MCwgMHhCOCwgMHhCOCwgMHg3QiwgMHhDOCwgMHg5QiwKKy0g ICAgMHhDNiwgMHg1MywgMHg4OCwgMHgyNiwgMHgyMCwgMHg4OCwgMHg3MywgMHhCNiwgMHgxMywg MHhCOCwgMHhGMCwgMHg0QiwKKy0gICAgMHgwMCwgMHg4NSwgMHhGMywgMHhERCwgMHgwNywgMHg1 MCwgMHhFQiwgMHgyMCwgMHhDNCwgMHgzOCwgMHgwRSwgMHg5OCwKKy0gICAgMHhBRCwgMHg0RSwg MHg0OSwgMHgyQywgMHhENywgMHg2NSwgMHhBNSwgMHgxOSwgMHgwRSwgMHg1OSwgMHgwMSwgMHhF QywKKy0gICAgMHg3RSwgMHg3NSwgMHg4OSwgMHg2OSwgMHgyRSwgMHg2MywgMHg3NiwgMHg4NSwg MHg0NiwgMHg4RCwgMHhBMCwgMHg4QywKKy0gICAgMHgzMywgMHgxRCwgMHg4MiwgMHg4QywgMHgw MywgMHhFQSwgMHg2OSwgMHg4OCwgMHgzNSwgMHhBMSwgMHg0MiwgMHhCRCwKKy0gICAgMHgyMSwg MHhFRCwgMHg4RCwgMHhCQywgMHhCQywgMHhEQiwgMHgzMCwgMHhGRiwgMHg4NiwgMHhGMCwgMHg1 QiwgMHhEQywKKy0gICAgMHhFMywgMHhFMiwgMHhFOCwgMHgwQSwgMHgwQSwgMHgyOSwgMHg5NCwg MHg4MAorLX07CisrICAgIGN0YnVmID0gT1BFTlNTTF9tYWxsb2MoUlNBX3NpemUocnNhKSk7Cisr ICAgIGlmICghY3RidWYpCisrICAgICAgICBnb3RvIGVycjsKKyAKKy1zdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBrYXRfUlNBX1g5MzFfU0hBMzg0W10gPSB7CistICAgIDB4NUMsIDB4N0QsIDB4 OTYsIDB4MzUsIDB4RUMsIDB4N0UsIDB4MTEsIDB4MzgsIDB4QkIsIDB4N0IsIDB4RUMsIDB4N0Is CistICAgIDB4RjIsIDB4ODIsIDB4OEUsIDB4OTksIDB4QkQsIDB4RUYsIDB4RDgsIDB4QUUsIDB4 RDcsIDB4MzksIDB4MzcsIDB4Q0IsCistICAgIDB4RTYsIDB4NEYsIDB4NUUsIDB4MEEsIDB4MTMs IDB4RTQsIDB4MkUsIDB4NDAsIDB4QjksIDB4QkUsIDB4MkUsIDB4RTMsCistICAgIDB4RUYsIDB4 NzgsIDB4ODMsIDB4MTgsIDB4NDQsIDB4MzUsIDB4OUMsIDB4OEUsIDB4RDcsIDB4NEEsIDB4NjMs IDB4RjYsCistICAgIDB4NTcsIDB4QzIsIDB4QjAsIDB4MDgsIDB4NTEsIDB4NzMsIDB4Q0YsIDB4 Q0EsIDB4OTksIDB4NjYsIDB4RUUsIDB4MzEsCistICAgIDB4RDgsIDB4NjksIDB4RTksIDB4QUIs IDB4MTMsIDB4MjcsIDB4N0IsIDB4NDEsIDB4MUUsIDB4NkQsIDB4OEQsIDB4RjEsCistICAgIDB4 M0UsIDB4OUMsIDB4MzUsIDB4OTUsIDB4NTgsIDB4REQsIDB4MkIsIDB4RDUsIDB4QTAsIDB4NjAs IDB4NDEsIDB4NzksCistICAgIDB4MjQsIDB4MjIsIDB4RTQsIDB4QjcsIDB4QkYsIDB4NDcsIDB4 NTMsIDB4RjYsIDB4MzQsIDB4RDUsIDB4N0MsIDB4RkYsCistICAgIDB4MEUsIDB4MDksIDB4RUUs IDB4MkUsIDB4RTIsIDB4MzcsIDB4QjksIDB4REUsIDB4QzUsIDB4MTIsIDB4NDQsIDB4MzUsCist ICAgIDB4RUYsIDB4MDEsIDB4RTYsIDB4NUUsIDB4MzksIDB4MzEsIDB4MkQsIDB4NzEsIDB4QTUs IDB4REMsIDB4QzYsIDB4NkQsCistICAgIDB4RTIsIDB4Q0QsIDB4ODUsIDB4REIsIDB4NzMsIDB4 ODIsIDB4NjUsIDB4MjgKKy19OworKyAgICBsZW4gPSBSU0FfcHVibGljX2VuY3J5cHQocHRsZW4s IHBsYWludGV4dCwgY3RidWYsIHJzYSwgUlNBX1BLQ1MxX1BBRERJTkcpOworKyAgICBpZiAobGVu IDw9IDApCisrICAgICAgICBnb3RvIGVycjsKKysgICAgLyogQ2hlY2sgY2lwaGVydGV4dCBkb2Vz bid0IG1hdGNoIHBsYWludGV4dCAqLworKyAgICBpZiAobGVuID49IHB0bGVuICYmICFtZW1jbXAo cGxhaW50ZXh0LCBjdGJ1ZiwgcHRsZW4pKQorKyAgICAgICAgZ290byBlcnI7CisgCistc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMxX1NIQTUxMltdID0geworLSAgICAweEE2 LCAweDY1LCAweEEyLCAweDc3LCAweDRGLCAweEIzLCAweDg2LCAweENCLCAweDY0LCAweDNBLCAw eEMxLCAweDYzLAorLSAgICAweEZDLCAweEExLCAweEFBLCAweENCLCAweDlCLCAweDc5LCAweERE LCAweDRCLCAweEUxLCAweEQ5LCAweERBLCAweEFDLAorLSAgICAweEU3LCAweDQ3LCAweDA5LCAw eEIyLCAweDExLCAweDRCLCAweDhBLCAweEFBLCAweDA1LCAweDlFLCAweDc3LCAweEQ3LAorLSAg ICAweDNBLCAweEJELCAweDVFLCAweDUzLCAweDA5LCAweDRBLCAweEU2LCAweDBGLCAweDVFLCAw eEY5LCAweDE0LCAweDI4LAorLSAgICAweEEwLCAweDk5LCAweDc0LCAweDY0LCAweDcwLCAweDRF LCAweEYyLCAweEUzLCAweEZBLCAweEM3LCAweEY4LCAweEM1LAorLSAgICAweDZFLCAweDJCLCAw eDc5LCAweDk2LCAweDBELCAweDBDLCAweEM4LCAweDEwLCAweDM0LCAweDUzLCAweEQyLCAweEFG LAorLSAgICAweDE3LCAweDBFLCAweEUwLCAweEJGLCAweDc5LCAweEY2LCAweDA0LCAweDcyLCAw eDEwLCAweEUwLCAweEY2LCAweEQwLAorLSAgICAweENFLCAweDhBLCAweDZGLCAweEExLCAweDk1 LCAweDg5LCAweEJGLCAweDU4LCAweDhGLCAweDQ2LCAweDVGLCAweDA5LAorLSAgICAweDlGLCAw eDA5LCAweENBLCAweDg0LCAweDE1LCAweDg1LCAweEUwLCAweEVELCAweDA0LCAweDJELCAweEZC LCAweDdDLAorLSAgICAweDM2LCAweDM1LCAweDIxLCAweDMxLCAweEMzLCAweEZELCAweDkyLCAw eDQyLCAweDExLCAweDMwLCAweDcxLCAweDFCLAorLSAgICAweDYwLCAweDgzLCAweDE4LCAweDg4 LCAweEEzLCAweEY1LCAweDU5LCAweEMzCistfTsKKysgICAgcHRidWYgPSBPUEVOU1NMX21hbGxv YyhSU0Ffc2l6ZShyc2EpKTsKKysgICAgaWYgKCFwdGJ1ZikKKysgICAgICAgIGdvdG8gZXJyOwor KworKyAgICBsZW4gPSBSU0FfcHJpdmF0ZV9kZWNyeXB0KGxlbiwgY3RidWYsIHB0YnVmLCByc2Es IFJTQV9QS0NTMV9QQURESU5HKTsKKysgICAgaWYgKGxlbiAhPSBwdGxlbikKKysgICAgICAgIGdv dG8gZXJyOworKyAgICBpZiAobWVtY21wKHB0YnVmLCBwbGFpbnRleHQsIGxlbikpCisrICAgICAg ICBnb3RvIGVycjsKKysKKysgICAgcmV0ID0gMTsKKysKKysgZXJyOgorKyAgICBpZiAoY3RidWYp CisrICAgICAgICBPUEVOU1NMX2ZyZWUoY3RidWYpOworKyAgICBpZiAocHRidWYpCisrICAgICAg ICBPUEVOU1NMX2ZyZWUocHRidWYpOworKyAgICByZXR1cm4gcmV0OworK30KKyAKKyBpbnQgRklQ U19zZWxmdGVzdF9yc2EoKQorIHsKK0BAIC0zNTIsNyArNDgzLDcgQEAgaW50IEZJUFNfc2VsZnRl c3RfcnNhKCkKKyAgICAgaWYgKChwayA9IEVWUF9QS0VZX25ldygpKSA9PSBOVUxMKQorICAgICAg ICAgZ290byBlcnI7CisgCistICAgIEVWUF9QS0VZX2Fzc2lnbl9SU0EocGssIGtleSk7CisrICAg IEVWUF9QS0VZX3NldDFfUlNBKHBrLCBrZXkpOworIAorICAgICBpZiAoIWZpcHNfcGtleV9zaWdu YXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9TSEExLCBzaXplb2Yoa2F0X1JTQV9TSEEx KSwKK0BAIC00MDYsMjkgKzUzNyw3IEBAIGludCBGSVBTX3NlbGZ0ZXN0X3JzYSgpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19QQURfUFNTLCAiUlNB IFNIQTUxMiBQU1MiKSkKKyAgICAgICAgIGdvdG8gZXJyOworIAorLSAgICBpZiAoIWZpcHNfcGtl eV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9YOTMxX1NIQTEsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1g5MzFfU0hBMSksIEVW UF9zaGExKCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhf RkxBR19QQURfWDkzMSwgIlJTQSBTSEExIFg5MzEiKSkKKy0gICAgICAgIGdvdG8gZXJyOworLSAg ICAvKiBOQjogU0hBMjI0IG5vdCBzdXBwb3J0ZWQgaW4gWDkuMzEgKi8KKy0gICAgaWYgKCFmaXBz X3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfWDkzMV9TSEEyNTYsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1g5MzFfU0hB MjU2KSwgRVZQX3NoYTI1NigpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF VlBfTURfQ1RYX0ZMQUdfUEFEX1g5MzEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJSU0EgU0hBMjU2IFg5MzEiKSkKKy0gICAgICAgIGdvdG8gZXJyOworLSAgICBpZiAoIWZp cHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9YOTMxX1NIQTM4NCwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGthdF9SU0FfWDkzMV9T SEEzODQpLCBFVlBfc2hhMzg0KCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlJTQSBTSEEzODQgWDkzMSIpKQorLSAgICAgICAgZ290byBlcnI7CistICAgIGlmICgh Zmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAx LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1g5MzFfU0hBNTEy LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2F0X1JTQV9YOTMx X1NIQTUxMiksIEVWUF9zaGE1MTIoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRVZQX01EX0NUWF9GTEFHX1BBRF9YOTMxLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiUlNBIFNIQTUxMiBYOTMxIikpCisrICAgIGlmICghZmlwc19yc2FfZW5jcnlwdF90 ZXN0KGtleSwga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSkpCisgICAgICAgICBnb3RvIGVy cjsKKyAKKyAgICAgcmV0ID0gMTsKK0BAIC00MzYsNyArNTQ1LDcgQEAgaW50IEZJUFNfc2VsZnRl c3RfcnNhKCkKKyAgZXJyOgorICAgICBpZiAocGspCisgICAgICAgICBFVlBfUEtFWV9mcmVlKHBr KTsKKy0gICAgZWxzZSBpZiAoa2V5KQorKyAgICBpZiAoa2V5KQorICAgICAgICAgUlNBX2ZyZWUo a2V5KTsKKyAgICAgcmV0dXJuIHJldDsKKyB9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9NYWtlZmlsZS5maXBzLXJlcXMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvTWFr ZWZpbGUKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9NYWtlZmlsZS5maXBzLXJlcXMJ MjAxNS0wNC0yMiAxNTowNjozNy44OTUwMDM1OTQgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZmlwcy9NYWtlZmlsZQkyMDE1LTA0LTIyIDE1OjA2OjM3LjkxMDAwMzk1MSArMDIwMAor QEAgLTI0LDEzICsyNCwxNSBAQCBMSUJTUkM9Zmlwc19hZXNfc2VsZnRlc3QuYyBmaXBzX2Rlc19z ZWxmCisgICAgIGZpcHNfcnNhX3NlbGZ0ZXN0LmMgZmlwc19zaGFfc2VsZnRlc3QuYyBmaXBzLmMg Zmlwc19kc2Ffc2VsZnRlc3QuYyAgZmlwc19yYW5kLmMgXAorICAgICBmaXBzX3JzYV94OTMxZy5j IGZpcHNfcG9zdC5jIGZpcHNfZHJiZ19jdHIuYyBmaXBzX2RyYmdfaGFzaC5jIGZpcHNfZHJiZ19o bWFjLmMgXAorICAgICBmaXBzX2RyYmdfbGliLmMgZmlwc19kcmJnX3JhbmQuYyBmaXBzX2RyYmdf c2VsZnRlc3QuYyBmaXBzX3JhbmRfbGliLmMgXAorLSAgICBmaXBzX2NtYWNfc2VsZnRlc3QuYyBm aXBzX2VjZGhfc2VsZnRlc3QuYyBmaXBzX2VjZHNhX3NlbGZ0ZXN0LmMgZmlwc19lbmMuYyBmaXBz X21kLmMKKysgICAgZmlwc19jbWFjX3NlbGZ0ZXN0LmMgZmlwc19lY2RoX3NlbGZ0ZXN0LmMgZmlw c19lY2RzYV9zZWxmdGVzdC5jIGZpcHNfZW5jLmMgZmlwc19tZC5jIFwKKysgICAgZmlwc19kaF9z ZWxmdGVzdC5jCisgCisgTElCT0JKPWZpcHNfYWVzX3NlbGZ0ZXN0Lm8gZmlwc19kZXNfc2VsZnRl c3QubyBmaXBzX2htYWNfc2VsZnRlc3QubyBmaXBzX3JhbmRfc2VsZnRlc3QubyBcCisgICAgIGZp cHNfcnNhX3NlbGZ0ZXN0Lm8gZmlwc19zaGFfc2VsZnRlc3QubyBmaXBzLm8gZmlwc19kc2Ffc2Vs ZnRlc3QubyAgZmlwc19yYW5kLm8gXAorICAgICBmaXBzX3JzYV94OTMxZy5vIGZpcHNfcG9zdC5v IGZpcHNfZHJiZ19jdHIubyBmaXBzX2RyYmdfaGFzaC5vIGZpcHNfZHJiZ19obWFjLm8gXAorICAg ICBmaXBzX2RyYmdfbGliLm8gZmlwc19kcmJnX3JhbmQubyBmaXBzX2RyYmdfc2VsZnRlc3QubyBm aXBzX3JhbmRfbGliLm8gXAorLSAgICBmaXBzX2NtYWNfc2VsZnRlc3QubyBmaXBzX2VjZGhfc2Vs ZnRlc3QubyBmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm8gZmlwc19lbmMubyBmaXBzX21kLm8KKysgICAg Zmlwc19jbWFjX3NlbGZ0ZXN0Lm8gZmlwc19lY2RoX3NlbGZ0ZXN0Lm8gZmlwc19lY2RzYV9zZWxm dGVzdC5vIGZpcHNfZW5jLm8gZmlwc19tZC5vIFwKKysgICAgZmlwc19kaF9zZWxmdGVzdC5vCisg CisgTElCQ1JZUFRPPS1MLi4gLWxjcnlwdG8KKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9yYW5kL3JhbmRfbGNsLmguZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yYW5k L3JhbmRfbGNsLmgKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmFuZC9yYW5kX2xjbC5oLmZp cHMtcmVxcwkyMDE1LTA0LTIyIDE1OjA2OjM3LjU5OTk5NjU3NCArMDIwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9yYW5kL3JhbmRfbGNsLmgJMjAxNS0wNC0yMiAxNTowNjozNy45MTAwMDM5 NTEgKzAyMDAKK0BAIC0xMTIsNyArMTEyLDcgQEAKKyAjaWZuZGVmIEhFQURFUl9SQU5EX0xDTF9I CisgIyBkZWZpbmUgSEVBREVSX1JBTkRfTENMX0gKKyAKKy0jIGRlZmluZSBFTlRST1BZX05FRURF RCAzMiAgICAgIC8qIHJlcXVpcmUgMjU2IGJpdHMgPSAzMiBieXRlcyBvZiByYW5kb21uZXNzICov CisrIyBkZWZpbmUgRU5UUk9QWV9ORUVERUQgNDggICAgICAvKiByZXF1aXJlIDM4NCBiaXRzID0g NDggYnl0ZXMgb2YgcmFuZG9tbmVzcyAqLworIAorICMgaWYgIWRlZmluZWQoVVNFX01ENV9SQU5E KSAmJiAhZGVmaW5lZChVU0VfU0hBMV9SQU5EKSAmJiAhZGVmaW5lZChVU0VfTURDMl9SQU5EKSAm JiAhZGVmaW5lZChVU0VfTUQyX1JBTkQpCisgIyAgaWYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEp ICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBMSkKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9yYW5kL3JhbmRfbGliLmMuZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yYW5k L3JhbmRfbGliLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmFuZC9yYW5kX2xpYi5jLmZp cHMtcmVxcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9yYW5kL3JhbmRfbGliLmMJMjAxNS0wNC0yMiAxNTowNjozNy45MTAwMDM5 NTEgKzAyMDAKK0BAIC0yMzYsMTIgKzIzNiwyMiBAQCBzdGF0aWMgaW50IGRyYmdfcmFuZF9hZGQo RFJCR19DVFggKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGVudHJvcHkp CisgeworICAgICBSQU5EX1NTTGVheSgpLT5hZGQoaW4sIGlubGVuLCBlbnRyb3B5KTsKKysgICAg aWYgKEZJUFNfcmFuZF9zdGF0dXMoKSkgeworKyAgICAgICAgQ1JZUFRPX3dfbG9jayhDUllQVE9f TE9DS19SQU5EKTsKKysgICAgICAgIEZJUFNfZHJiZ19yZXNlZWQoY3R4LCBOVUxMLCAwKTsKKysg ICAgICAgIENSWVBUT193X3VubG9jayhDUllQVE9fTE9DS19SQU5EKTsKKysgICAgfQorICAgICBy ZXR1cm4gMTsKKyB9CisgCisgc3RhdGljIGludCBkcmJnX3JhbmRfc2VlZChEUkJHX0NUWCAqY3R4 LCBjb25zdCB2b2lkICppbiwgaW50IGlubGVuKQorIHsKKyAgICAgUkFORF9TU0xlYXkoKS0+c2Vl ZChpbiwgaW5sZW4pOworKyAgICBpZiAoRklQU19yYW5kX3N0YXR1cygpKSB7CisrICAgICAgICBD UllQVE9fd19sb2NrKENSWVBUT19MT0NLX1JBTkQpOworKyAgICAgICAgRklQU19kcmJnX3Jlc2Vl ZChjdHgsIE5VTEwsIDApOworKyAgICAgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JB TkQpOworKyAgICB9CisgICAgIHJldHVybiAxOworIH0KKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9yc2EvcnNhX2dlbi5jLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v cnNhL3JzYV9nZW4uYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2dlbi5jLmZp cHMtcmVxcwkyMDE1LTA0LTIyIDE1OjA2OjM3Ljg1ODAwMjcxNCArMDIwMAorKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9yc2EvcnNhX2dlbi5jCTIwMTUtMDQtMjIgMTU6MDY6MzcuOTEwMDAzOTUx ICswMjAwCitAQCAtMSw1ICsxLDYgQEAKKyAvKiBjcnlwdG8vcnNhL3JzYV9nZW4uYyAqLworIC8q IENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKQor KyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWQgSGF0LCBJbmMuCisgICogQWxsIHJpZ2h0cyByZXNl cnZlZC4KKyAgKgorICAqIFRoaXMgcGFja2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3Jp dHRlbgorQEAgLTE2OSw2ICsxNzAsMjU5IEBAIGludCBSU0FfZ2VuZXJhdGVfa2V5X2V4KFJTQSAq cnNhLCBpbnQgYmkKKyAgICAgcmV0dXJuIHJzYV9idWlsdGluX2tleWdlbihyc2EsIGJpdHMsIGVf dmFsdWUsIGNiKTsKKyB9CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworK3N0YXRpYyBpbnQgRklQ U19yc2FfYnVpbHRpbl9rZXlnZW4oUlNBICpyc2EsIGludCBiaXRzLCBCSUdOVU0gKmVfdmFsdWUs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCTl9HRU5DQiAqY2IpCisrewor KyAgICBCSUdOVU0gKnIwID0gTlVMTCwgKnIxID0gTlVMTCwgKnIyID0gTlVMTCwgKnIzID0gTlVM TCwgKnRtcDsKKysgICAgQklHTlVNIGxvY2FsX3IwLCBsb2NhbF9kLCBsb2NhbF9wOworKyAgICBC SUdOVU0gKnByMCwgKmQsICpwOworKyAgICBCTl9DVFggKmN0eCA9IE5VTEw7CisrICAgIGludCBv ayA9IC0xOworKyAgICBpbnQgaTsKKysgICAgaW50IG4gPSAwOworKyAgICBpbnQgdGVzdCA9IDA7 CisrICAgIGludCBwYml0cyA9IGJpdHMgLyAyOworKworKyAgICBpZiAoRklQU19zZWxmdGVzdF9m YWlsZWQoKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0JVSUxUSU5fS0VZR0VOLCBG SVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0K KysKKysgICAgaWYgKChwYml0cyAmIDB4RkYpCisrICAgICAgICB8fCAoZ2V0ZW52KCJPUEVOU1NM X0VORk9SQ0VfTU9EVUxVU19CSVRTIikgJiYgYml0cyAhPSAyMDQ4CisrICAgICAgICAgICAgJiYg Yml0cyAhPSAzMDcyKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0JVSUxUSU5fS0VZ R0VOLCBGSVBTX1JfSU5WQUxJRF9LRVlfTEVOR1RIKTsKKysgICAgICAgIHJldHVybiAwOworKyAg ICB9CisrCisrICAgIGN0eCA9IEJOX0NUWF9uZXcoKTsKKysgICAgaWYgKGN0eCA9PSBOVUxMKQor KyAgICAgICAgZ290byBlcnI7CisrICAgIEJOX0NUWF9zdGFydChjdHgpOworKyAgICByMCA9IEJO X0NUWF9nZXQoY3R4KTsKKysgICAgcjEgPSBCTl9DVFhfZ2V0KGN0eCk7CisrICAgIHIyID0gQk5f Q1RYX2dldChjdHgpOworKyAgICByMyA9IEJOX0NUWF9nZXQoY3R4KTsKKysKKysgICAgaWYgKHIz ID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgLyogV2UgbmVlZCB0aGUgUlNB IGNvbXBvbmVudHMgbm9uLU5VTEwgKi8KKysgICAgaWYgKCFyc2EtPm4gJiYgKChyc2EtPm4gPSBC Tl9uZXcoKSkgPT0gTlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFyc2EtPmQg JiYgKChyc2EtPmQgPSBCTl9uZXcoKSkgPT0gTlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysg ICAgaWYgKCFyc2EtPmUgJiYgKChyc2EtPmUgPSBCTl9uZXcoKSkgPT0gTlVMTCkpCisrICAgICAg ICBnb3RvIGVycjsKKysgICAgaWYgKCFyc2EtPnAgJiYgKChyc2EtPnAgPSBCTl9uZXcoKSkgPT0g TlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFyc2EtPnEgJiYgKChyc2EtPnEg PSBCTl9uZXcoKSkgPT0gTlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFyc2Et PmRtcDEgJiYgKChyc2EtPmRtcDEgPSBCTl9uZXcoKSkgPT0gTlVMTCkpCisrICAgICAgICBnb3Rv IGVycjsKKysgICAgaWYgKCFyc2EtPmRtcTEgJiYgKChyc2EtPmRtcTEgPSBCTl9uZXcoKSkgPT0g TlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFyc2EtPmlxbXAgJiYgKChyc2Et PmlxbXAgPSBCTl9uZXcoKSkgPT0gTlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAg aWYgKCFCTl9zZXRfd29yZChyMCwgUlNBX0Y0KSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBp ZiAoQk5fY21wKGVfdmFsdWUsIHIwKSA8IDAgfHwgQk5fbnVtX2JpdHMoZV92YWx1ZSkgPiAyNTYp IHsKKysgICAgICAgIG9rID0gMDsgICAgICAgICAgICAgICAgIC8qIHdlIHNldCBvdXIgb3duIGVy ciAqLworKyAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9CVUlMVElOX0tFWUdFTiwgUlNBX1JfQkFE X0VfVkFMVUUpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyogcHJlcGFy ZSBhcHByb3hpbWF0ZSBtaW5pbXVtIHAgYW5kIHEgKi8KKysgICAgaWYgKCFCTl9zZXRfd29yZChy MCwgMHhCNTA0RjMzNCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFCTl9sc2hpZnQo cjAsIHIwLCBwYml0cyAtIDMyKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICAvKiBwcmVw YXJlIG1pbmltdW0gcCBhbmQgcSBkaWZmZXJlbmNlICovCisrICAgIGlmICghQk5fb25lKHIzKSkK KysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIUJOX2xzaGlmdChyMywgcjMsIHBiaXRzIC0g MTAwKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBCTl9jb3B5KHJzYS0+ZSwgZV92YWx1 ZSk7CisrCisrICAgIGlmICghQk5faXNfemVybyhyc2EtPnApICYmICFCTl9pc196ZXJvKHJzYS0+ cSkpCisrICAgICAgICB0ZXN0ID0gMTsKKysKKysgcmV0cnk6CisrICAgIC8qIGdlbmVyYXRlIHAg YW5kIHEgKi8KKysgICAgZm9yIChpID0gMDsgaSA8IDUgKiBwYml0czsgaSsrKSB7CisrIHBsb29w OgorKyAgICAgICAgaWYgKCF0ZXN0KQorKyAgICAgICAgICAgIGlmICghQk5fcmFuZChyc2EtPnAs IHBiaXRzLCAwLCAxKSkKKysgICAgICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICBpZiAo Qk5fY21wKHJzYS0+cCwgcjApIDwgMCkgeworKyAgICAgICAgICAgIGlmICh0ZXN0KQorKyAgICAg ICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICBnb3RvIHBsb29wOworKyAgICAgICAg fQorKworKyAgICAgICAgaWYgKCFCTl9zdWIocjIsIHJzYS0+cCwgQk5fdmFsdWVfb25lKCkpKQor KyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgaWYgKCFCTl9nY2QocjEsIHIyLCByc2Et PmUsIGN0eCkpCisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICBpZiAoQk5faXNfb25l KHIxKSkgeworKyAgICAgICAgICAgIGludCByOworKyAgICAgICAgICAgIHIgPSBCTl9pc19wcmlt ZV9mYXN0dGVzdF9leChyc2EtPnAsIHBiaXRzID4gMTAyNCA/IDQgOiA1LCBjdHgsIDAsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiKTsKKysgICAgICAgICAgICBp ZiAociA9PSAtMSB8fCAodGVzdCAmJiByIDw9IDApKQorKyAgICAgICAgICAgICAgICBnb3RvIGVy cjsKKysgICAgICAgICAgICBpZiAociA+IDApCisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAg ICAgICAgfQorKworKyAgICAgICAgaWYgKCFCTl9HRU5DQl9jYWxsKGNiLCAyLCBuKyspKQorKyAg ICAgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGlmICghQk5fR0VOQ0JfY2FsbChj YiwgMywgMCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgaWYgKGkgPj0gNSAqIHBiaXRz KQorKyAgICAgICAgLyogcHJpbWUgbm90IGZvdW5kICovCisrICAgICAgICBnb3RvIGVycjsKKysK KysgICAgZm9yIChpID0gMDsgaSA8IDUgKiBwYml0czsgaSsrKSB7CisrIHFsb29wOgorKyAgICAg ICAgaWYgKCF0ZXN0KQorKyAgICAgICAgICAgIGlmICghQk5fcmFuZChyc2EtPnEsIHBiaXRzLCAw LCAxKSkKKysgICAgICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICBpZiAoQk5fY21wKHJz YS0+cSwgcjApIDwgMCkgeworKyAgICAgICAgICAgIGlmICh0ZXN0KQorKyAgICAgICAgICAgICAg ICBnb3RvIGVycjsKKysgICAgICAgICAgICBnb3RvIHFsb29wOworKyAgICAgICAgfQorKyAgICAg ICAgaWYgKCFCTl9zdWIocjIsIHJzYS0+cSwgcnNhLT5wKSkKKysgICAgICAgICAgICBnb3RvIGVy cjsKKysgICAgICAgIGlmIChCTl91Y21wKHIyLCByMykgPD0gMCkgeworKyAgICAgICAgICAgIGlm ICh0ZXN0KQorKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICBnb3RvIHFs b29wOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCFCTl9zdWIocjIsIHJzYS0+cSwgQk5f dmFsdWVfb25lKCkpKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgaWYgKCFCTl9n Y2QocjEsIHIyLCByc2EtPmUsIGN0eCkpCisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAg ICBpZiAoQk5faXNfb25lKHIxKSkgeworKyAgICAgICAgICAgIGludCByOworKyAgICAgICAgICAg IHIgPSBCTl9pc19wcmltZV9mYXN0dGVzdF9leChyc2EtPnEsIHBiaXRzID4gMTAyNCA/IDQgOiA1 LCBjdHgsIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiKTsK KysgICAgICAgICAgICBpZiAociA9PSAtMSB8fCAodGVzdCAmJiByIDw9IDApKQorKyAgICAgICAg ICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICBpZiAociA+IDApCisrICAgICAgICAgICAg ICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCFCTl9HRU5DQl9jYWxsKGNi LCAyLCBuKyspKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGlmICgh Qk5fR0VOQ0JfY2FsbChjYiwgMywgMSkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgaWYg KGkgPj0gNSAqIHBiaXRzKQorKyAgICAgICAgLyogcHJpbWUgbm90IGZvdW5kICovCisrICAgICAg ICBnb3RvIGVycjsKKysKKysgICAgaWYgKHRlc3QpIHsKKysgICAgICAgIC8qIGRvIG5vdCB0cnkg dG8gY2FsY3VsYXRlIHRoZSByZW1haW5pbmcga2V5IHZhbHVlcyAqLworKyAgICAgICAgQk5fY2xl YXIocnNhLT5uKTsKKysgICAgICAgIG9rID0gMTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9 CisrCisrICAgIGlmIChCTl9jbXAocnNhLT5wLCByc2EtPnEpIDwgMCkgeworKyAgICAgICAgdG1w ID0gcnNhLT5wOworKyAgICAgICAgcnNhLT5wID0gcnNhLT5xOworKyAgICAgICAgcnNhLT5xID0g dG1wOworKyAgICB9CisrCisrICAgIC8qIGNhbGN1bGF0ZSBuICovCisrICAgIGlmICghQk5fbXVs KHJzYS0+biwgcnNhLT5wLCByc2EtPnEsIGN0eCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysg ICAgLyogY2FsY3VsYXRlIGQgKi8KKysgICAgaWYgKCFCTl9zdWIocjEsIHJzYS0+cCwgQk5fdmFs dWVfb25lKCkpKQorKyAgICAgICAgZ290byBlcnI7ICAgICAgICAgICAgICAgLyogcC0xICovCisr ICAgIGlmICghQk5fc3ViKHIyLCByc2EtPnEsIEJOX3ZhbHVlX29uZSgpKSkKKysgICAgICAgIGdv dG8gZXJyOyAgICAgICAgICAgICAgIC8qIHEtMSAqLworKworKyAgICBpZiAoIUJOX2djZChyMCwg cjEsIHIyLCBjdHgpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghKHJzYS0+ZmxhZ3Mg JiBSU0FfRkxBR19OT19DT05TVFRJTUUpKSB7CisrICAgICAgICBwcjAgPSAmbG9jYWxfcjA7Cisr ICAgICAgICBCTl93aXRoX2ZsYWdzKHByMCwgcjAsIEJOX0ZMR19DT05TVFRJTUUpOworKyAgICB9 IGVsc2UKKysgICAgICAgIHByMCA9IHIwOworKyAgICBpZiAoIUJOX2RpdihyMCwgTlVMTCwgcjEs IHByMCwgY3R4KSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIUJOX211bChyMCwgcjAs IHIyLCBjdHgpKQorKyAgICAgICAgZ290byBlcnI7ICAgICAgICAgICAgICAgLyogbGNtKHAtMSwg cS0xKSAqLworKworKyAgICBpZiAoIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9fQ09OU1RUSU1F KSkgeworKyAgICAgICAgcHIwID0gJmxvY2FsX3IwOworKyAgICAgICAgQk5fd2l0aF9mbGFncyhw cjAsIHIwLCBCTl9GTEdfQ09OU1RUSU1FKTsKKysgICAgfSBlbHNlCisrICAgICAgICBwcjAgPSBy MDsKKysgICAgaWYgKCFCTl9tb2RfaW52ZXJzZShyc2EtPmQsIHJzYS0+ZSwgcHIwLCBjdHgpKQor KyAgICAgICAgZ290byBlcnI7ICAgICAgICAgICAgICAgLyogZCAqLworKworKyAgICBpZiAoQk5f bnVtX2JpdHMocnNhLT5kKSA8IHBiaXRzKQorKyAgICAgICAgZ290byByZXRyeTsgICAgICAgICAg ICAgLyogZCBpcyB0b28gc21hbGwgKi8KKysKKysgICAgLyogc2V0IHVwIGQgZm9yIGNvcnJlY3Qg Qk5fRkxHX0NPTlNUVElNRSBmbGFnICovCisrICAgIGlmICghKHJzYS0+ZmxhZ3MgJiBSU0FfRkxB R19OT19DT05TVFRJTUUpKSB7CisrICAgICAgICBkID0gJmxvY2FsX2Q7CisrICAgICAgICBCTl93 aXRoX2ZsYWdzKGQsIHJzYS0+ZCwgQk5fRkxHX0NPTlNUVElNRSk7CisrICAgIH0gZWxzZQorKyAg ICAgICAgZCA9IHJzYS0+ZDsKKysKKysgICAgLyogY2FsY3VsYXRlIGQgbW9kIChwLTEpICovCisr ICAgIGlmICghQk5fbW9kKHJzYS0+ZG1wMSwgZCwgcjEsIGN0eCkpCisrICAgICAgICBnb3RvIGVy cjsKKysKKysgICAgLyogY2FsY3VsYXRlIGQgbW9kIChxLTEpICovCisrICAgIGlmICghQk5fbW9k KHJzYS0+ZG1xMSwgZCwgcjIsIGN0eCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgLyog Y2FsY3VsYXRlIGludmVyc2Ugb2YgcSBtb2QgcCAqLworKyAgICBpZiAoIShyc2EtPmZsYWdzICYg UlNBX0ZMQUdfTk9fQ09OU1RUSU1FKSkgeworKyAgICAgICAgcCA9ICZsb2NhbF9wOworKyAgICAg ICAgQk5fd2l0aF9mbGFncyhwLCByc2EtPnAsIEJOX0ZMR19DT05TVFRJTUUpOworKyAgICB9IGVs c2UKKysgICAgICAgIHAgPSByc2EtPnA7CisrICAgIGlmICghQk5fbW9kX2ludmVyc2UocnNhLT5p cW1wLCByc2EtPnEsIHAsIGN0eCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgaWYgKGZp cHNfcnNhX3BhaXJ3aXNlX2ZhaWwpCisrICAgICAgICBCTl9hZGRfd29yZChyc2EtPm4sIDEpOwor KworKyAgICBpZiAoIWZpcHNfY2hlY2tfcnNhKHJzYSkpCisrICAgICAgICBnb3RvIGVycjsKKysK KysgICAgb2sgPSAxOworKyBlcnI6CisrICAgIGlmIChvayA9PSAtMSkgeworKyAgICAgICAgUlNB ZXJyKFJTQV9GX1JTQV9CVUlMVElOX0tFWUdFTiwgRVJSX0xJQl9CTik7CisrICAgICAgICBvayA9 IDA7CisrICAgIH0KKysgICAgaWYgKGN0eCAhPSBOVUxMKSB7CisrICAgICAgICBCTl9DVFhfZW5k KGN0eCk7CisrICAgICAgICBCTl9DVFhfZnJlZShjdHgpOworKyAgICB9CisrCisrICAgIHJldHVy biBvazsKKyt9CisrI2VuZGlmCisrCisgc3RhdGljIGludCByc2FfYnVpbHRpbl9rZXlnZW4oUlNB ICpyc2EsIGludCBiaXRzLCBCSUdOVU0gKmVfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQk5fR0VOQ0IgKmNiKQorIHsKK0BAIC0xODAsMTUgKzQzNCwxMSBAQCBzdGF0aWMg aW50IHJzYV9idWlsdGluX2tleWdlbihSU0EgKnJzYSwKKyAKKyAjaWZkZWYgT1BFTlNTTF9GSVBT CisgICAgIGlmIChGSVBTX21vZHVsZV9tb2RlKCkpIHsKKy0gICAgICAgIGlmIChGSVBTX3NlbGZ0 ZXN0X2ZhaWxlZCgpKSB7CistICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0JVSUxUSU5f S0VZR0VOLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworLSAgICAgICAgICAgIHJldHVy biAwOworLSAgICAgICAgfQorLQorICAgICAgICAgaWYgKGJpdHMgPCBPUEVOU1NMX1JTQV9GSVBT X01JTl9NT0RVTFVTX0JJVFMpIHsKKyAgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9SU0FfQlVJ TFRJTl9LRVlHRU4sIEZJUFNfUl9LRVlfVE9PX1NIT1JUKTsKKyAgICAgICAgICAgICByZXR1cm4g MDsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybiBGSVBTX3JzYV9idWlsdGluX2tleWdlbihy c2EsIGJpdHMsIGVfdmFsdWUsIGNiKTsKKyAgICAgfQorICNlbmRpZgorIAorQEAgLTMxNywxNiAr NTY3LDYgQEAgc3RhdGljIGludCByc2FfYnVpbHRpbl9rZXlnZW4oUlNBICpyc2EsCisgICAgIGlm ICghQk5fbW9kX2ludmVyc2UocnNhLT5pcW1wLCByc2EtPnEsIHAsIGN0eCkpCisgICAgICAgICBn b3RvIGVycjsKKyAKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgIGlmIChGSVBTX21vZHVsZV9t b2RlKCkpIHsKKy0gICAgICAgIGlmIChmaXBzX3JzYV9wYWlyd2lzZV9mYWlsKQorLSAgICAgICAg ICAgIEJOX2FkZF93b3JkKHJzYS0+biwgMSk7CistCistICAgICAgICBpZiAoIWZpcHNfY2hlY2tf cnNhKHJzYSkpCistICAgICAgICAgICAgZ290byBlcnI7CistICAgIH0KKy0jZW5kaWYKKy0KKyAg ICAgb2sgPSAxOworICBlcnI6CisgICAgIGlmIChvayA9PSAtMSkgeworZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmEvc3NsL3QxX2VuYy5jLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yYS9zc2wvdDFfZW5j LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9zc2wvdDFfZW5jLmMuZmlwcy1yZXFzCTIwMTUtMDMtMTkg MTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvc3NsL3QxX2VuYy5j CTIwMTUtMDQtMjIgMTU6MDY6MzcuOTExMDAzOTc1ICswMjAwCitAQCAtMjkyLDYgKzI5MiwyMyBA QCBzdGF0aWMgaW50IHRsczFfUFJGKGxvbmcgZGlnZXN0X21hc2ssCisgICAgIHJldHVybiByZXQ7 CisgfQorIAorK2ludCBwcml2YXRlX3RsczFfUFJGKGxvbmcgZGlnZXN0X21hc2ssCisrICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqc2VlZDEsIGludCBzZWVkMV9sZW4sCisrICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqc2VlZDIsIGludCBzZWVkMl9sZW4sCisrICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqc2VlZDMsIGludCBzZWVkM19sZW4sCisrICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqc2VlZDQsIGludCBzZWVkNF9sZW4sCisrICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqc2VlZDUsIGludCBzZWVkNV9sZW4sCisrICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VjLCBpbnQgc2xlbiwKKysgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQxLCB1bnNpZ25lZCBjaGFyICpvdXQy LCBpbnQgb2xlbikKKyt7CisrICAgIHJldHVybiB0bHMxX1BSRihkaWdlc3RfbWFzaywKKysgICAg ICAgICAgICAgICAgICAgIHNlZWQxLCBzZWVkMV9sZW4sCisrICAgICAgICAgICAgICAgICAgICBz ZWVkMiwgc2VlZDJfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgc2VlZDMsIHNlZWQzX2xlbiwK KysgICAgICAgICAgICAgICAgICAgIHNlZWQ0LCBzZWVkNF9sZW4sCisrICAgICAgICAgICAgICAg ICAgICBzZWVkNSwgc2VlZDVfbGVuLCBzZWMsIHNsZW4sIG91dDEsIG91dDIsIG9sZW4pOworK30K KysKKyBzdGF0aWMgaW50IHRsczFfZ2VuZXJhdGVfa2V5X2Jsb2NrKFNTTCAqcywgdW5zaWduZWQg Y2hhciAqa20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyICp0bXAsIGludCBudW0pCisgewoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLW5vLW1k NS12ZXJpZnkucGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS1uby1tZDUtdmVyaWZ5LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZTY2NjMKLS0tIC9kZXYvbnVsbAorKysg Yi9vcGVuc3NsLTEuMC4yYS1uby1tZDUtdmVyaWZ5LnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK2Rp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9hc24xL2FfdmVyaWZ5LmMubm8tbWQ1LXZlcmlm eSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vYXNuMS9hX3ZlcmlmeS5jCistLS0gb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2FzbjEvYV92ZXJpZnkuYy5uby1tZDUtdmVyaWZ5CTIwMTUtMDQtMDkgMTg6MjA6 NTguODI5NjgwODI5ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2FzbjEvYV92ZXJp ZnkuYwkyMDE1LTA0LTA5IDE4OjIwOjU0LjQ5NTU4MDcxMCArMDIwMAorQEAgLTU2LDYgKzU2LDkg QEAKKyAgKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGljIExpY2VuY2UuXQorICAqLworIAorKy8q IGZvciBzZWN1cmVfZ2V0ZW52ICovCisrI2RlZmluZSBfR05VX1NPVVJDRQorKworICNpbmNsdWRl IDxzdGRpby5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisgCitAQCAtMTcxLDYgKzE3NCwxMSBAQCBp bnQgQVNOMV9pdGVtX3ZlcmlmeShjb25zdCBBU04xX0lURU0gKml0CisgICAgICAgICBpZiAocmV0 ICE9IDIpCisgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICByZXQgPSAtMTsKKysgICAg fSBlbHNlIGlmIChtZG5pZCA9PSBOSURfbWQ1CisrICAgICAgICAgICAgICAgJiYgc2VjdXJlX2dl dGVudigiT1BFTlNTTF9FTkFCTEVfTUQ1X1ZFUklGWSIpID09IE5VTEwpIHsKKysgICAgICAgIEFT TjFlcnIoQVNOMV9GX0FTTjFfSVRFTV9WRVJJRlksCisrICAgICAgICAgICAgICAgIEFTTjFfUl9V TktOT1dOX01FU1NBR0VfRElHRVNUX0FMR09SSVRITSk7CisrICAgICAgICBnb3RvIGVycjsKKyAg ICAgfSBlbHNlIHsKKyAgICAgICAgIGNvbnN0IEVWUF9NRCAqdHlwZTsKKyAgICAgICAgIHR5cGUg PSBFVlBfZ2V0X2RpZ2VzdGJ5bmlkKG1kbmlkKTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4y YS1uby1ycGF0aC5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLW5vLXJwYXRoLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYWZlZmQKLS0tIC9kZXYvbnVsbAorKysgYi9v cGVuc3NsLTEuMC4yYS1uby1ycGF0aC5wYXRjaApAQCAtMCwwICsxLDEyIEBACitkaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9NYWtlZmlsZS5zaGFyZWQubm8tcnBhdGggb3BlbnNzbC0xLjAuMmEvTWFr ZWZpbGUuc2hhcmVkCistLS0gb3BlbnNzbC0xLjAuMmEvTWFrZWZpbGUuc2hhcmVkLm5vLXJwYXRo CTIwMTUtMDQtMDkgMTg6MTQ6MzkuNjQ3OTIxNjYzICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEv TWFrZWZpbGUuc2hhcmVkCTIwMTUtMDQtMDkgMTg6MTQ6MzQuNDIzODAwOTg1ICswMjAwCitAQCAt MTUzLDcgKzE1Myw3IEBAIERPX0dOVV9TTz0kKENBTENfVkVSU0lPTlMpOyBcCisgCU5PQUxMU1lN U0ZMQUdTPSctV2wsLS1uby13aG9sZS1hcmNoaXZlJzsgXAorIAlTSEFSRURGTEFHUz0iJChDRkxB R1MpICQoU0hBUkVEX0xERkxBR1MpIC1zaGFyZWQgLVdsLC1Cc3ltYm9saWMgLVdsLC1zb25hbWU9 JCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCIKKyAKKy1ET19HTlVfQVBQPUxERkxB R1M9IiQoQ0ZMQUdTKSAtV2wsLXJwYXRoLCQoTElCUlBBVEgpIgorK0RPX0dOVV9BUFA9TERGTEFH Uz0iJChDRkxBR1MpIgorIAorICNUaGlzIGlzIHJhdGhlciBzcGVjaWFsLiAgSXQncyBhIHNwZWNp YWwgdGFyZ2V0IHdpdGggd2hpY2ggb25lIGNhbiBsaW5rCisgI2FwcGxpY2F0aW9ucyB3aXRob3V0 IGJvdGhlcmluZyB3aXRoIGFueSBmZWF0dXJlcyB0aGF0IGhhdmUgYW55dGhpbmcgdG8KCmRpZmYg LS1naXQgYS9vcGVuc3NsLTEuMC4yYS1wYWRsb2NrNjQucGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS1w YWRsb2NrNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlkMzk1 OAotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjJhLXBhZGxvY2s2NC5wYXRjaApAQCAt MCwwICsxLDE5OCBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvZW5naW5lcy9lX3BhZGxvY2su Yy5wYWRsb2NrNjQgb3BlbnNzbC0xLjAuMmEvZW5naW5lcy9lX3BhZGxvY2suYworLS0tIG9wZW5z c2wtMS4wLjJhL2VuZ2luZXMvZV9wYWRsb2NrLmMucGFkbG9jazY0CTIwMTUtMDMtMTkgMTQ6MTk6 MDAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvZW5naW5lcy9lX3BhZGxvY2su YwkyMDE1LTA0LTIyIDE2OjIzOjQ0LjEwNTYxNzQ2OCArMDIwMAorQEAgLTEwMSw3ICsxMDEsMTAg QEAKKyAgKi8KKyAjICB1bmRlZiBDT01QSUxFX0hXX1BBRExPQ0sKKyAjICBpZiAhZGVmaW5lZChJ Mzg2X09OTFkpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fSU5MSU5FX0FTTSkKKy0jICAgaWYgKGRl ZmluZWQoX19HTlVDX18pICYmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9faTM4Nikp KSB8fCBcCisrIyAgaWYgKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fPj0yICYmIFwKKysg ICAgICAgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19pMzg2KSB8fCBcCisrICAgICAg ICBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194ODZfNjQpKSBcCisrICAgICApIHx8 IFwKKyAgICAgIChkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9NX0lYODYpKQorICMgICAg ZGVmaW5lIENPTVBJTEVfSFdfUEFETE9DSworICMgICBlbmRpZgorQEAgLTE0MCw3ICsxNDMsNyBA QCB2b2lkIEVOR0lORV9sb2FkX3BhZGxvY2sodm9pZCkKKyAjICAgIGVuZGlmCisgIyAgIGVsaWYg ZGVmaW5lZChfX0dOVUNfXykKKyAjICAgIGlmbmRlZiBhbGxvY2EKKy0jICAgICBkZWZpbmUgYWxs b2NhKHMpIF9fYnVpbHRpbl9hbGxvY2EocykKKysjICAgICBkZWZpbmUgYWxsb2NhKHMpIF9fYnVp bHRpbl9hbGxvY2EoKHMpKQorICMgICAgZW5kaWYKKyAjICAgZW5kaWYKKyAKK0BAIC0zMDMsNiAr MzA2LDcgQEAgc3RhdGljIHZvbGF0aWxlIHN0cnVjdCBwYWRsb2NrX2NpcGhlcl9kYQorICAqID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAg Ki8KKyAjICAgaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18+PTIKKysjICAgIGlmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19pMzg2KQorIC8qCisgICogQXMgZm9yIGV4Y2Vz c2l2ZSAicHVzaCAlZWJ4Ii8icG9wICVlYngiIGZvdW5kIGFsbCBvdmVyLgorICAqIFdoZW4gZ2Vu ZXJhdGluZyBwb3NpdGlvbi1pbmRlcGVuZGVudCBjb2RlIEdDQyB3b24ndCBsZXQKK0BAIC0zNzks MjIgKzM4Myw2IEBAIHN0YXRpYyBpbnQgcGFkbG9ja19hdmFpbGFibGUodm9pZCkKKyAgICAgcmV0 dXJuIHBhZGxvY2tfdXNlX2FjZSArIHBhZGxvY2tfdXNlX3JuZzsKKyB9CisgCistIyAgICBpZm5k ZWYgT1BFTlNTTF9OT19BRVMKKy0jICAgICBpZm5kZWYgQUVTX0FTTQorLS8qIE91ciBvd24gaHRv bmwoKS9udG9obCgpICovCistc3RhdGljIGlubGluZSB2b2lkIHBhZGxvY2tfYnN3YXBsKEFFU19L RVkgKmtzKQorLXsKKy0gICAgc2l6ZV90IGkgPSBzaXplb2Yoa3MtPnJkX2tleSkgLyBzaXplb2Yo a3MtPnJkX2tleVswXSk7CistICAgIHVuc2lnbmVkIGludCAqa2V5ID0ga3MtPnJkX2tleTsKKy0K Ky0gICAgd2hpbGUgKGktLSkgeworLSAgICAgICAgYXNtIHZvbGF0aWxlICgiYnN3YXBsICUwIjoi K3IiICgqa2V5KSk7CistICAgICAgICBrZXkrKzsKKy0gICAgfQorLX0KKy0jICAgICBlbmRpZgor LSMgICAgZW5kaWYKKy0KKyAvKgorICAqIEZvcmNlIGtleSByZWxvYWQgZnJvbSBtZW1vcnkgdG8g dGhlIENQVSBtaWNyb2NvZGUuIExvYWRpbmcgRUZMQUdTIGZyb20gdGhlCisgICogc3RhY2sgY2xl YXJzIEVGTEFHU1szMF0gd2hpY2ggZG9lcyB0aGUgdHJpY2suCitAQCAtNDA0LDcgKzM5Miw3IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBwYWRsb2NrX3JlbG9hZF9rZXkodm8KKyAgICAgYXNtIHZvbGF0 aWxlICgicHVzaGZsOyBwb3BmbCIpOworIH0KKyAKKy0jICAgIGlmbmRlZiBPUEVOU1NMX05PX0FF UworKyMgICAgIGlmbmRlZiBPUEVOU1NMX05PX0FFUworIC8qCisgICogVGhpcyBpcyBoZXVyaXN0 aWMga2V5IGNvbnRleHQgdHJhY2luZy4gQXQgZmlyc3Qgb25lCisgICogYmVsaWV2ZXMgdGhhdCBv bmUgc2hvdWxkIHVzZSBhdG9taWMgc3dhcCBpbnN0cnVjdGlvbnMsCitAQCAtNDQ4LDYgKzQzNiwx MDEgQEAgc3RhdGljIGlubGluZSB2b2lkICpuYW1lKHNpemVfdCBjbnQsCisgICAgICAgICAgICAg ICAgIDogImVkeCIsICJjYyIsICJtZW1vcnkiKTsgICAgICAgXAorICAgICAgICAgcmV0dXJuIGl2 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyB9CisrIyAgICAgZW5kaWYKKysKKysj ICAgIGVsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feDg2XzY0KQorKworKy8q IExvYWQgc3VwcG9ydGVkIGZlYXR1cmVzIG9mIHRoZSBDUFUgdG8gc2VlIGlmCisrICAgdGhlIFBh ZExvY2sgaXMgYXZhaWxhYmxlLiAqLworK3N0YXRpYyBpbnQgcGFkbG9ja19hdmFpbGFibGUodm9p ZCkKKyt7CisrICAgIGNoYXIgdmVuZG9yX3N0cmluZ1sxNl07CisrICAgIHVuc2lnbmVkIGludCBl YXgsIGVkeDsKKysKKysgICAgLyogQXJlIHdlIHJ1bm5pbmcgb24gdGhlIENlbnRhdXIgKFZJQSkg Q1BVPyAqLworKyAgICBlYXggPSAweDAwMDAwMDAwOworKyAgICB2ZW5kb3Jfc3RyaW5nWzEyXSA9 IDA7CisrICAgIGFzbSB2b2xhdGlsZSAoImNwdWlkXG4iCisrICAgICAgICAgICAgICAgICAgIm1v dmwgICAlJWVieCwoJTEpXG4iCisrICAgICAgICAgICAgICAgICAgIm1vdmwgICAlJWVkeCw0KCUx KVxuIgorKyAgICAgICAgICAgICAgICAgICJtb3ZsICAgJSVlY3gsOCglMSlcbiI6IithIiAoZWF4 KToiciIodmVuZG9yX3N0cmluZyk6InJieCIsCisrICAgICAgICAgICAgICAgICAgInJjeCIsICJy ZHgiKTsKKysgICAgaWYgKHN0cmNtcCh2ZW5kb3Jfc3RyaW5nLCAiQ2VudGF1ckhhdWxzIikgIT0g MCkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICAvKiBDaGVjayBmb3IgQ2VudGF1ciBFeHRl bmRlZCBGZWF0dXJlIEZsYWdzIHByZXNlbmNlICovCisrICAgIGVheCA9IDB4QzAwMDAwMDA7Cisr ICAgIGFzbSB2b2xhdGlsZSAoImNwdWlkIjoiK2EiIChlYXgpOjoicmJ4IiwgInJjeCIsICJyZHgi KTsKKysgICAgaWYgKGVheCA8IDB4QzAwMDAwMDEpCisrICAgICAgICByZXR1cm4gMDsKKysKKysg ICAgLyogUmVhZCB0aGUgQ2VudGF1ciBFeHRlbmRlZCBGZWF0dXJlIEZsYWdzICovCisrICAgIGVh eCA9IDB4QzAwMDAwMDE7CisrICAgIGFzbSB2b2xhdGlsZSAoImNwdWlkIjoiK2EiIChlYXgpLCAi PWQiKGVkeCk6OiJyYngiLCAicmN4Iik7CisrCisrICAgIC8qIEZpbGwgdXAgc29tZSBmbGFncyAq LworKyAgICBwYWRsb2NrX3VzZV9hY2UgPSAoKGVkeCAmICgweDMgPDwgNikpID09ICgweDMgPDwg NikpOworKyAgICBwYWRsb2NrX3VzZV9ybmcgPSAoKGVkeCAmICgweDMgPDwgMikpID09ICgweDMg PDwgMikpOworKworKyAgICByZXR1cm4gcGFkbG9ja191c2VfYWNlICsgcGFkbG9ja191c2Vfcm5n OworK30KKysKKysvKiBGb3JjZSBrZXkgcmVsb2FkIGZyb20gbWVtb3J5IHRvIHRoZSBDUFUgbWlj cm9jb2RlLgorKyAgIExvYWRpbmcgRUZMQUdTIGZyb20gdGhlIHN0YWNrIGNsZWFycyBFRkxBR1Nb MzBdCisrICAgd2hpY2ggZG9lcyB0aGUgdHJpY2suICovCisrc3RhdGljIGlubGluZSB2b2lkIHBh ZGxvY2tfcmVsb2FkX2tleSh2b2lkKQorK3sKKysgICAgYXNtIHZvbGF0aWxlICgicHVzaGZxOyBw b3BmcSIpOworK30KKysKKysjICAgICBpZm5kZWYgT1BFTlNTTF9OT19BRVMKKysvKgorKyAqIFRo aXMgaXMgaGV1cmlzdGljIGtleSBjb250ZXh0IHRyYWNpbmcuIEF0IGZpcnN0IG9uZQorKyAqIGJl bGlldmVzIHRoYXQgb25lIHNob3VsZCB1c2UgYXRvbWljIHN3YXAgaW5zdHJ1Y3Rpb25zLAorKyAq IGJ1dCBpdCdzIG5vdCBhY3R1YWxseSBuZWNlc3NhcnkuIFBvaW50IGlzIHRoYXQgaWYKKysgKiBw YWRsb2NrX3NhdmVkX2NvbnRleHQgd2FzIGNoYW5nZWQgYnkgYW5vdGhlciB0aHJlYWQKKysgKiBh ZnRlciB3ZSd2ZSByZWFkIGl0IGFuZCBiZWZvcmUgd2UgY29tcGFyZSBpdCB3aXRoIGNkYXRhLAor KyAqIG91ciBrZXkgKnNoYWxsKiBiZSByZWxvYWRlZCB1cG9uIHRocmVhZCBjb250ZXh0IHN3aXRj aAorKyAqIGFuZCB3ZSBhcmUgdGhlcmVmb3JlIHNldCBpbiBlaXRoZXIgY2FzZS4uLgorKyAqLwor K3N0YXRpYyBpbmxpbmUgdm9pZCBwYWRsb2NrX3ZlcmlmeV9jb250ZXh0KHN0cnVjdCBwYWRsb2Nr X2NpcGhlcl9kYXRhICpjZGF0YSkKKyt7CisrICAgIGFzbSB2b2xhdGlsZSAoInB1c2hmcVxuIgor KyAgICAgICAgICAgICAgICAgICIgICAgICAgYnRsICAgICAkMzAsKCUlcnNwKVxuIgorKyAgICAg ICAgICAgICAgICAgICIgICAgICAgam5jICAgICAxZlxuIgorKyAgICAgICAgICAgICAgICAgICIg ICAgICAgY21wcSAgICAlMiwlMVxuIgorKyAgICAgICAgICAgICAgICAgICIgICAgICAgamUgICAg ICAxZlxuIgorKyAgICAgICAgICAgICAgICAgICIgICAgICAgcG9wZnFcbiIKKysgICAgICAgICAg ICAgICAgICAiICAgICAgIHN1YnEgICAgJDgsJSVyc3BcbiIKKysgICAgICAgICAgICAgICAgICAi MTogICAgIGFkZHEgICAgJDgsJSVyc3BcbiIKKysgICAgICAgICAgICAgICAgICAiICAgICAgIG1v dnEgICAgJTIsJTAiOiIrbSIgKHBhZGxvY2tfc2F2ZWRfY29udGV4dCkKKysgICAgICAgICAgICAg ICAgICA6InIiKHBhZGxvY2tfc2F2ZWRfY29udGV4dCksICJyIihjZGF0YSk6ImNjIik7CisrfQor KworKy8qIFRlbXBsYXRlIGZvciBwYWRsb2NrX3hjcnlwdF8qIG1vZGVzICovCisrLyogQklHIEZB VCBXQVJOSU5HOgorKyAqICAgICAgVGhlIG9mZnNldHMgdXNlZCB3aXRoICdsZWFsJyBpbnN0cnVj dGlvbnMKKysgKiAgICAgIGRlc2NyaWJlIGl0ZW1zIG9mIHRoZSAncGFkbG9ja19jaXBoZXJfZGF0 YScKKysgKiAgICAgIHN0cnVjdHVyZS4KKysgKi8KKysjICAgICAgZGVmaW5lIFBBRExPQ0tfWENS WVBUX0FTTShuYW1lLHJlcF94Y3J5cHQpICAgICBcCisrc3RhdGljIGlubGluZSB2b2lkICpuYW1l KHNpemVfdCBjbnQsICAgICAgICAgICAgXAorKyAgICAgICAgc3RydWN0IHBhZGxvY2tfY2lwaGVy X2RhdGEgKmNkYXRhLCAgICAgIFwKKysgICAgICAgIHZvaWQgKm91dCwgY29uc3Qgdm9pZCAqaW5w KSAgICAgICAgICAgICBcCisreyAgICAgICB2b2lkICppdjsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICAgICAgYXNtIHZvbGF0aWxlICggImxlYXEgICAgMTYoJTApLCUlcmR4 XG4iIFwKKysgICAgICAgICAgICAgICAgIiAgICAgICBsZWFxICAgIDMyKCUwKSwlJXJieFxuIiBc CisrICAgICAgICAgICAgICAgICAgICAgICAgcmVwX3hjcnlwdCAiXG4iICAgICAgICAgXAorKyAg ICAgICAgICAgICAgICA6ICI9YSIoaXYpLCAiPWMiKGNudCksICI9RCIob3V0KSwgIj1TIihpbnAp IFwKKysgICAgICAgICAgICAgICAgOiAiMCIoY2RhdGEpLCAiMSIoY250KSwgIjIiKG91dCksICIz IihpbnApICBcCisrICAgICAgICAgICAgICAgIDogInJieCIsICJyZHgiLCAiY2MiLCAibWVtb3J5 Iik7ICAgICAgICBcCisrICAgICAgICByZXR1cm4gaXY7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorK30KKysjICAgICBlbmRpZgorKworKyMgICAgZW5kaWYgICAgICAgICAgICAgICAg ICAgICAgLyogY3B1ICovCisrCisrIyAgICBpZm5kZWYgT1BFTlNTTF9OT19BRVMKKyAKKyAvKiBH ZW5lcmF0ZSBhbGwgZnVuY3Rpb25zIHdpdGggYXBwcm9wcmlhdGUgb3Bjb2RlcyAqLworIC8qIHJl cCB4Y3J5cHRlY2IgKi8KK0BAIC00NTgsNiArNTQxLDIwIEBAIFBBRExPQ0tfWENSWVBUX0FTTShw YWRsb2NrX3hjcnlwdF9lY2IsICIKKyAgICAgUEFETE9DS19YQ1JZUFRfQVNNKHBhZGxvY2tfeGNy eXB0X2NmYiwgIi5ieXRlIDB4ZjMsMHgwZiwweGE3LDB4ZTAiKQorIC8qIHJlcCB4Y3J5cHRvZmIg Ki8KKyAgICAgUEFETE9DS19YQ1JZUFRfQVNNKHBhZGxvY2tfeGNyeXB0X29mYiwgIi5ieXRlIDB4 ZjMsMHgwZiwweGE3LDB4ZTgiKQorKworKyMgICAgIGlmbmRlZiBBRVNfQVNNCisrLyogT3VyIG93 biBodG9ubCgpL250b2hsKCkgKi8KKytzdGF0aWMgaW5saW5lIHZvaWQgcGFkbG9ja19ic3dhcGwo QUVTX0tFWSAqa3MpCisreworKyAgICBzaXplX3QgaSA9IHNpemVvZihrcy0+cmRfa2V5KSAvIHNp emVvZihrcy0+cmRfa2V5WzBdKTsKKysgICAgdW5zaWduZWQgaW50ICprZXkgPSBrcy0+cmRfa2V5 OworKworKyAgICB3aGlsZSAoaS0tKSB7CisrICAgICAgICBhc20gdm9sYXRpbGUgKCJic3dhcGwg JTAiOiIrciIgKCprZXkpKTsKKysgICAgICAgIGtleSsrOworKyAgICB9CisrfQorKyMgICAgIGVu ZGlmCisgIyAgICBlbmRpZgorIC8qIFRoZSBSTkcgY2FsbCBpdHNlbGYgKi8KKyBzdGF0aWMgaW5s aW5lIHVuc2lnbmVkIGludCBwYWRsb2NrX3hzdG9yZSh2b2lkICphZGRyLCB1bnNpZ25lZCBpbnQg ZWR4X2luKQorQEAgLTQ4NSw4ICs1ODIsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBw YWRsb2NrX3hzdG9yCisgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpwYWRsb2NrX21lbWNw eSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVfdCBuKQorIHsKKy0gICAgbG9uZyAqZCA9IGRzdDsKKy0g ICAgY29uc3QgbG9uZyAqcyA9IHNyYzsKKysgICAgc2l6ZV90ICpkID0gZHN0OworKyAgICBjb25z dCBzaXplX3QgKnMgPSBzcmM7CisgCisgICAgIG4gLz0gc2l6ZW9mKCpkKTsKKyAgICAgZG8gewoK ZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLXBrZ2NvbmZpZy1rcmI1LnBhdGNoIGIvb3BlbnNz bC0xLjAuMmEtcGtnY29uZmlnLWtyYjUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uOGVlMmM0ZAotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjJhLXBrZ2Nv bmZpZy1rcmI1LnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJh L01ha2VmaWxlLm9yZy5rcmI1IG9wZW5zc2wtMS4wLjJhL01ha2VmaWxlLm9yZworLS0tIG9wZW5z c2wtMS4wLjJhL01ha2VmaWxlLm9yZy5rcmI1CTIwMTUtMDQtMjEgMTc6MDg6NDEuMTU3NDY0NDU5 ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvTWFrZWZpbGUub3JnCTIwMTUtMDQtMjEgMTc6MTE6 NTYuODg3MDM5MDA1ICswMjAwCitAQCAtMzcyLDcgKzM3Miw3IEBAIGxpYmNyeXB0by5wYzogTWFr ZWZpbGUKKyAJICAgIGVjaG8gJ1JlcXVpcmVzOiAnOyBcCisgCSAgICBlY2hvICdMaWJzOiAtTCQk e2xpYmRpcn0gLWxjcnlwdG8nOyBcCisgCSAgICBlY2hvICdMaWJzLnByaXZhdGU6ICQoRVhfTElC UyknOyBcCistCSAgICBlY2hvICdDZmxhZ3M6IC1JJCR7aW5jbHVkZWRpcn0gJChLUkI1X0lOQ0xV REVTKScgKSA+IGxpYmNyeXB0by5wYworKwkgICAgZWNobyAnQ2ZsYWdzOiAtSSQke2luY2x1ZGVk aXJ9JyApID4gbGliY3J5cHRvLnBjCisgCisgbGlic3NsLnBjOiBNYWtlZmlsZQorIAlAICggZWNo byAncHJlZml4PSQoSU5TVEFMTFRPUCknOyBcCitAQCAtMzg1LDcgKzM4NSw3IEBAIGxpYnNzbC5w YzogTWFrZWZpbGUKKyAJICAgIGVjaG8gJ1ZlcnNpb246ICckKFZFUlNJT04pOyBcCisgCSAgICBl Y2hvICdSZXF1aXJlcy5wcml2YXRlOiBsaWJjcnlwdG8nOyBcCisgCSAgICBlY2hvICdMaWJzOiAt TCQke2xpYmRpcn0gLWxzc2wnOyBcCistCSAgICBlY2hvICdMaWJzLnByaXZhdGU6ICQoRVhfTElC UyknOyBcCisrCSAgICBlY2hvICdMaWJzLnByaXZhdGU6ICQoRVhfTElCUykgJChMSUJLUkI1KSc7 IFwKKyAJICAgIGVjaG8gJ0NmbGFnczogLUkkJHtpbmNsdWRlZGlyfSAkKEtSQjVfSU5DTFVERVMp JyApID4gbGlic3NsLnBjCisgCisgb3BlbnNzbC5wYzogTWFrZWZpbGUKCmRpZmYgLS1naXQgYS9v cGVuc3NsLTEuMC4yYS1yZWFkbWUtd2FybmluZy5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLXJlYWRt ZS13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNjk5 ODkKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4yYS1yZWFkbWUtd2FybmluZy5wYXRj aApAQCAtMCwwICsxLDUwIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9SRUFETUUud2Fybmlu ZyBvcGVuc3NsLTEuMC4yYS9SRUFETUUKKy0tLSBvcGVuc3NsLTEuMC4yYS9SRUFETUUud2Fybmlu ZwkyMDE1LTAzLTIwIDE2OjAwOjQ3LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJh L1JFQURNRQkyMDE1LTAzLTIxIDA5OjA2OjExLjAwMDAwMDAwMCArMDEwMAorQEAgLTUsNiArNSw0 NiBAQAorICBDb3B5cmlnaHQgKGMpIDE5OTUtMTk5OCBFcmljIEEuIFlvdW5nLCBUaW0gSi4gSHVk c29uCisgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgCisrIFdBUk5JTkcKKysgLS0tLS0tLQorKwor KyBUaGlzIHZlcnNpb24gb2YgT3BlblNTTCBpcyBidWlsdCBpbiBhIHdheSB0aGF0IHN1cHBvcnRz IG9wZXJhdGlvbiBpbgorKyB0aGUgc28gY2FsbGVkIEZJUFMgbW9kZS4gTm90ZSB0aG91Z2ggdGhh dCB0aGUgbGlicmFyeSBhcyB3ZSBidWlsZCBpdAorKyBpcyBub3QgRklQUyAxNDAtMiB2YWxpZGF0 ZWQgYW5kIHRoZSBGSVBTIG1vZGUgaXMgcHJlc2VudCBmb3IgdGVzdGluZworKyBwdXJwb3NlcyBv bmx5LgorKworKyBUaGlzIHZlcnNpb24gYWxzbyBjb250YWlucyBhIGZldyBkaWZmZXJlbmNlcyBm cm9tIHRoZSB1cHN0cmVhbSBjb2RlCisrIHNvbWUgb2Ygd2hpY2ggYXJlOgorKyAgICogVGhlIEZJ UFMgdmFsaWRhdGlvbiBzdXBwb3J0IGlzIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGZyb20gdGhl CisrICAgICB1cHN0cmVhbSBGSVBTIHN1cHBvcnQuIEZvciBleGFtcGxlIHRoZSBGSVBTIGludGVn cml0eSB2ZXJpZmljYXRpb24KKysgICAgIGNoZWNrIGlzIGltcGxlbWVudGVkIGRpZmZlcmVudGx5 IGFzIHRoZSBGSVBTIG1vZHVsZSBpcyBidWlsdCBpbnNpZGUKKysgICAgIHRoZSBzaGFyZWQgbGli cmFyeS4gVGhlIEhNQUMtU0hBMjU2IGNoZWNrc3VtcyBvZiB0aGUgd2hvbGUgc2hhcmVkCisrICAg ICBsaWJyYXJpZXMgYXJlIHZlcmlmaWVkLiBBbHNvIG5vdGUgdGhhdCB0aGUgRklQUyBpbnRlZ3Jp dHkKKysgICAgIHZlcmlmaWNhdGlvbiBjaGVjayByZXF1aXJlcyB0aGF0IHRoZSBsaWJjcnlwdG8g YW5kIGxpYnNzbCBzaGFyZWQKKysgICAgIGxpYnJhcnkgZmlsZXMgYXJlIHVubW9kaWZpZWQgd2hp Y2ggbWVhbnMgdGhhdCBpdCB3aWxsIGZhaWwgaWYgdGhlc2UKKysgICAgIGZpbGVzIGFyZSBjaGFu Z2VkIGZvciBleGFtcGxlIGJ5IHByZWxpbmsuCisrICAgKiBJZiB0aGUgZmlsZSAvZXRjL3N5c3Rl bS1maXBzIGlzIHByZXNlbnQgdGhlIGludGVncml0eSB2ZXJpZmljYXRpb24KKysgICAgIGFuZCBz ZWxmdGVzdHMgb2YgdGhlIGNyeXB0byBhbGdvcml0aG1zIGFyZSBydW4gaW5zaWRlIHRoZSBsaWJy YXJ5CisrICAgICBjb25zdHJ1Y3RvciBjb2RlLgorKyAgICogV2l0aCB0aGUgL2V0Yy9zeXN0ZW0t ZmlwcyBwcmVzZW50IHRoZSBtb2R1bGUgcmVzcGVjdHMgdGhlIGtlcm5lbAorKyAgICAgRklQUyBm bGFnIC9wcm9jL3N5cy9jcnlwdG8vZmlwcyBhbmQgdHJpZXMgdG8gaW5pdGlhbGl6ZSB0aGUgRklQ UyBtb2RlCisrICAgICBpZiBpdCBpcyBzZXQgdG8gMSBhYm9ydGluZyBpZiB0aGUgRklQUyBtb2Rl IGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4KKysgICAgIFdpdGggdGhlIC9ldGMvc3lzdGVtLWZp cHMgcHJlc2VudCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGZvcmNlIHRoZQorKyAgICAgT3BlblNT TCBsaWJyYXJ5IHRvIEZJUFMgbW9kZSBlc3BlY2lhbGx5IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMg YnkKKysgICAgIHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE9QRU5TU0xfRk9SQ0Vf RklQU19NT0RFLgorKyAgICogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE9QRU5TU0xfTk9f REVGQVVMVF9aTElCIGlzIHNldCB0aGUgbW9kdWxlCisrICAgICB3aWxsIG5vdCBhdXRvbWF0aWNh bGx5IGxvYWQgdGhlIGJ1aWx0IGluIGNvbXByZXNzaW9uIG1ldGhvZCBaTElCCisrICAgICB3aGVu IGluaXRpYWxpemVkLiBBcHBsaWNhdGlvbnMgY2FuIHN0aWxsIGV4cGxpY2l0ZWx5IGFzayBmb3Ig WkxJQgorKyAgICAgY29tcHJlc3Npb24gbWV0aG9kLgorKyAgICogVGhlIGxpYnJhcnkgd2FzIHBh dGNoZWQgc28gdGhlIGNlcnRpZmljYXRlcywgQ1JMcyBhbmQgb3RoZXIgb2JqZWN0cworKyAgICAg c2lnbmVkIHdpdGggdXNlIG9mIE1ENSBmYWlsIHZlcmlmaWNhdGlvbiBhcyB0aGUgTUQ1IGlzIHRv byBpbnNlY3VyZQorKyAgICAgdG8gYmUgdXNlZCBmb3Igc2lnbmF0dXJlcy4gSWYgdGhlIGVudmly b25tZW50IHZhcmlhYmxlCisrICAgICBPUEVOU1NMX0VOQUJMRV9NRDVfVkVSSUZZIGlzIHNldCwg dGhlIHZlcmlmaWNhdGlvbiBjYW4gcHJvY2VlZAorKyAgICAgbm9ybWFsbHkuCisrICAgKiBJZiB0 aGUgT1BFTlNTTF9FTkZPUkNFX01PRFVMVVNfQklUUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBz ZXQsCisrICAgICB0aGUgbGlicmFyeSB3aWxsIG5vdCBhbGxvdyBnZW5lcmF0aW9uIG9mIERTQSBh bmQgUlNBIGtleXMgd2l0aAorKyAgICAgb3RoZXIgbGVuZ3RocyB0aGFuIHNwZWNpZmllZCBpbiB0 aGUgRklQUyAxODYtNCBzdGFuZGFyZC4KKysKKyAgREVTQ1JJUFRJT04KKyAgLS0tLS0tLS0tLS0K KyAKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1ycG1idWlsZC5wYXRjaCBiL29wZW5zc2wt MS4wLjJhLXJwbWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjRlZmI2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4yYS1ycG1idWlsZC5wYXRj aApAQCAtMCwwICsxLDExNCBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlLnJw bWJ1aWxkIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQorLS0tIG9wZW5zc2wtMS4wLjJhL0NvbmZp Z3VyZS5ycG1idWlsZAkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9w ZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQkyMDE1LTA0LTIwIDE0OjM1OjAzLjUxNjMxODI1MiArMDIw MAorQEAgLTM0OCw4ICszNDgsOCBAQCBteSAldGFibGU9KAorICMjIyMKKyAjICotZ2VuZXJpYyog aXMgZW5kaWFuLW5ldXRyYWwgdGFyZ2V0LCBidXQgLi9jb25maWcgaXMgZnJlZSB0bworICMgdGhy b3cgaW4gLURbQkxdX0VORElBTiwgd2hpY2hldmVyIGFwcHJvcHJpYXRlLi4uCistImxpbnV4LWdl bmVyaWMzMiIsImdjYzotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFO VDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJG X1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFK T1IpLlwkKFNITElCX01JTk9SKSIsCistImxpbnV4LXBwYyIsCSJnY2M6LURCX0VORElBTiAtTzMg LVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVT X1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVk Oi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWdl bmVyaWMzMiIsImdjYzotV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2ws LXoscmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5S T0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRf RkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKKysibGludXgtcHBjIiwJImdjYzotREJf RU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxy byAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDok e3BwYzMyX2FzbX06bGludXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9G TEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAorIAorICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgIyBO b3RlIHRoYXQgLW1hcmNoIGlzIG5vdCBhbW9uZyBjb21waWxlciBvcHRpb25zIGluIGJlbG93IGxp bnV4LWFybXY0CitAQCAtMzc4LDMwICszNzgsMzAgQEAgbXkgJXRhYmxlPSgKKyAjCisgIyAgICAg ICAuL0NvbmZpZ3VyZSBsaW51eC1hcm12NCAtbWFyY2g9YXJtdjYgLURfX0FSTV9NQVhfQVJDSF9f PTgKKyAjCistImxpbnV4LWFybXY0IiwJImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1s ZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6 JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9S KS5cJChTSExJQl9NSU5PUikiLAorLSJsaW51eC1hYXJjaDY0IiwiZ2NjOiAtTzMgLVdhbGw6Oi1E X1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBE RVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YWFyY2g2NF9hc219OmxpbnV4NjQ6ZGxmY246bGlu dXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisr ImxpbnV4LWFybXY0IiwJImdjYzotV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5U OjotV2wsLXoscmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBE RVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwk KFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKKysibGludXgtYWFyY2g2 NCIsImdjYzotRExfRU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6 Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5L IERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthYXJjaDY0X2FzbX06bGludXg2NDpkbGZjbjps aW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZF UikiLAorICMgQ29uZmlndXJlIHNjcmlwdCBhZGRzIG1pbmltYWxseSByZXF1aXJlZCAtbWFyY2gg Zm9yIGFzc2VtYmx5IHN1cHBvcnQsCisgIyBpZiBubyAtbWFyY2ggd2FzIHNwZWNpZmllZCBhdCBj b21tYW5kIGxpbmUuIG1pcHMzMiBhbmQgbWlwczY0IGJlbG93CisgIyByZWZlciB0byBjb250ZW1w b3JhcnkgTUlQUyBBcmNoaXRlY3R1cmUgc3BlY2lmaWNhdGlvbnMsIE1JUFMzMiBhbmQKKyAjIE1J UFM2NCwgcmF0aGVyIHRoYW4gdG8ga2VybmVsIGJpdG5lc3MuCistImxpbnV4LW1pcHMzMiIsCSJn Y2M6LW1hYmk9MzIgLU8zIC1XYWxsIC1EQk5fRElWM1c6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9M TE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21pcHMz Ml9hc219Om8zMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUiku XCQoU0hMSUJfTUlOT1IpIiwKKy0ibGludXgtbWlwczY0IiwgICAiZ2NjOi1tYWJpPW4zMiAtTzMg LVdhbGwgLURCTl9ESVYzVzo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUIFJDNF9D SEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bWlwczY0X2FzbX06bjMy OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbWFiaT1uMzI6LnNvLlwkKFNITElCX01BSk9SKS5c JChTSExJQl9NSU5PUik6OjozMiIsCistImxpbnV4NjQtbWlwczY0IiwgICAiZ2NjOi1tYWJpPTY0 IC1PMyAtV2FsbCAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRf TE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21pcHM2 NF9hc219OjY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbWFiaT02NDouc28uXCQoU0hMSUJf TUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKKysibGludXgtbWlwczMyIiwJImdjYzotbWFi aT0zMiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1X bCwteixyZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19V TlJPTEwgQkZfUFRSOiR7bWlwczMyX2FzbX06bzMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzpc JChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKSIsCisrImxpbnV4LW1pcHM2 NCIsICAgImdjYzotbWFiaT1uMzIgLVdhbGwgXCQoUlBNX09QVF9GTEFHUykgLURCTl9ESVYzVzo6 LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hBUiBS QzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21pcHM2NF9hc219Om4zMjpkbGZj bjpsaW51eC1zaGFyZWQ6LWZQSUM6LW1hYmk9bjMyIFwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChT SExJQl9TT05BTUVWRVIpOjo6MzIiLAorKyJsaW51eDY0LW1pcHM2NCIsICAgImdjYzotbWFiaT02 NCAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1XbCwt eixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19J TlQgREVTX1VOUk9MTCBCRl9QVFI6JHttaXBzNjRfYXNtfTo2NDpkbGZjbjpsaW51eC1zaGFyZWQ6 LWZQSUM6LW1hYmk9NjQgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6 Ojo2NCIsCisgIyMjIyBJQS0zMiB0YXJnZXRzLi4uCisgImxpbnV4LWlhMzItaWNjIiwJImljYzot RExfRU5ESUFOIC1PMjo6LURfUkVFTlRSQU5UOjotbGRsIC1ub19jcHBydDpCTl9MTE9ORyAke3g4 Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hh cmVkOi1LUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCistImxpbnV4 LWVsZiIsCSJnY2M6LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1E X1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306 JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFK T1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWVsZiIsCSJnY2M6LURMX0VORElBTiAtV2Fs bCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpCTl9M TE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246 bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVW RVIpIiwKKyAibGludXgtYW91dCIsCSJnY2M6LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBv aW50ZXIgLW1hcmNoPWk0ODYgLVdhbGw6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19k ZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OmEub3V0IiwKKyAjIyMjCistImxpbnV4LWdl bmVyaWM2NCIsImdjYzotTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJ VF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bm9f YXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hM SUJfTUlOT1IpIiwKKy0ibGludXgtcHBjNjQiLAkiZ2NjOi1tNjQgLURCX0VORElBTiAtTzMgLVdh bGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9D SFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51 eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6 OjY0IiwKKy0ibGludXgtcHBjNjRsZSIsImdjYzotbTY0IC1ETF9FTkRJQU4gLU8zIC1XYWxsOjot RF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksg REVTX1JJU0MxIERFU19VTlJPTEw6JHBwYzY0X2FzbTpsaW51eDY0bGU6ZGxmY246bGludXgtc2hh cmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjoiLAor LSJsaW51eC1pYTY0IiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVF TlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVT X0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9N QUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtZ2VuZXJpYzY0IiwiZ2NjOi1XYWxsIFwk KFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZX0ZP VVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6 JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzpcJChSUE1fT1BUX0ZMQUdTKTouc28u XCQoU0hMSUJfU09OQU1FVkVSKSIsCisrImxpbnV4LXBwYzY0IiwJImdjYzotbTY0IC1EQl9FTkRJ QU4gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJvIC1s ZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19V TlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQg XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIsCisrImxpbnV4 LXBwYzY0bGUiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjot RF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NI QVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiRwcGM2NF9hc206bGludXg2NGxlOmRs ZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0IFwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJ Ql9TT05BTUVWRVIpOjo6NjQiLAorKyJsaW51eC1pYTY0IiwJImdjYzotRExfRU5ESUFOIC1XYWxs IFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZ X0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX0lOVDoke2lhNjRfYXNtfTpk bGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NP TkFNRVZFUikiLAorICJsaW51eC1pYTY0LWljYyIsImljYzotRExfRU5ESUFOIC1PMiAtV2FsbDo6 LURfUkVFTlRSQU5UOjotbGRsIC1ub19jcHBydDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVO SyBERVNfUklTQzEgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6 Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKy0ibGludXgteDg2XzY0IiwJ ImdjYzotbTY0IC1ETF9FTkRJQU4gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlf Rk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06 ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQo U0hMSUJfTUlOT1IpOjo6NjQiLAorKyJsaW51eC14ODZfNjQiLAkiZ2NjOi1tNjQgLURMX0VORElB TiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxk bDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZf NjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQgXCQoUlBNX09QVF9GTEFH Uyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIsCisgImxpbnV4LXg4Nl82NC1jbGFuZyIs CSJjbGFuZzogLW02NCAtRExfRU5ESUFOIC1PMyAtV2V2ZXJ5dGhpbmcgJGNsYW5nX2Rpc2FibGVk X3dhcm5pbmdzIC1RdW51c2VkLWFyZ3VtZW50czo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZP VVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVs ZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNI TElCX01JTk9SKTo6OjY0IiwKKyAibGludXgteDg2XzY0LWljYyIsICJpY2M6LURMX0VORElBTiAt TzI6Oi1EX1JFRU5UUkFOVDo6LWxkbCAtbm9fY3BwcnQ6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRf Q0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNo YXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCisg ImxpbnV4LXgzMiIsCSJnY2M6LW14MzIgLURMX0VORElBTiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFO VDo6LWxkbDpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBERVNfVU5ST0xMOiR7 eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbXgzMjouc28uXCQoU0hM SUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OngzMiIsCistImxpbnV4NjQtczM5MHgiLAkiZ2Nj Oi1tNjQgLURCX0VORElBTiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VS X0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHtzMzkweF9h c219OjY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUiku XCQoU0hMSUJfTUlOT1IpOjo6NjQiLAorKyJsaW51eDY0LXMzOTB4IiwJImdjYzotbTY0IC1EQl9F TkRJQU4gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJv IC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNf VU5ST0xMOiR7czM5MHhfYXNtfTo2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NCBcJChS UE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKTo6OjY0IiwKKyAjIyMjIFNvIGNh bGxlZCAiaGlnaGdwcnMiIHRhcmdldCBmb3Igei9BcmNoaXRlY3R1cmUgQ1BVcworICMgIkhpZ2hn cHJzIiBpcyBrZXJuZWwgZmVhdHVyZSBmaXJzdCBpbXBsZW1lbnRlZCBpbiBMaW51eCAyLjYuMzIs IHNlZQorICMgL3Byb2MvY3B1aW5mby4gVGhlIGlkZWEgaXMgdG8gcHJlc2VydmUgbW9zdCBzaWdu aWZpY2FudCBiaXRzIG9mCitAQCAtNDE5LDEyICs0MTksMTIgQEAgbXkgJXRhYmxlPSgKKyAjIyMj IFNQQVJDIExpbnV4IHNldHVwcworICMgUmF5IE1pbGxlciA8cmF5Lm1pbGxlckBjb21wdXRpbmct c2VydmljZXMub3hmb3JkLmFjLnVrPiBoYXMgcGF0aWVudGx5CisgIyBhc3Npc3RlZCB3aXRoIGRl YnVnZ2luZyBvZiBmb2xsb3dpbmcgdHdvIGNvbmZpZ3MuCistImxpbnV4LXNwYXJjdjgiLCJnY2M6 LW12OCAtREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtREJOX0RJVjJX OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJP TEwgQkZfUFRSOiR7c3BhcmN2OF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwk KFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1zcGFyY3Y4IiwiZ2NjOi1t djggLURCX0VORElBTiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtREJOX0RJVjJXOjotRF9SRUVO VFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNf VU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQo UlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAorICMgaXQncyBhIHJlYWwg bWVzcyB3aXRoIC1tY3B1PXVsdHJhc3BhcmMgb3B0aW9uIHVuZGVyIExpbnV4LCBidXQKKyAjIC1X YSwtQXY4cGx1cyBzaG91bGQgZG8gdGhlIHRyaWNrIG5vIG1hdHRlciB3aGF0LgorLSJsaW51eC1z cGFyY3Y5IiwiZ2NjOi1tMzIgLW1jcHU9dWx0cmFzcGFyYyAtREJfRU5ESUFOIC1PMyAtZm9taXQt ZnJhbWUtcG9pbnRlciAtV2FsbCAtV2EsLUF2OHBsdXMgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5U OlVMVFJBU1BBUkM6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBC Rl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tMzI6LnNvLlwk KFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1zcGFyY3Y5IiwiZ2NjOi1t MzIgLW1jcHU9dWx0cmFzcGFyYyAtREJfRU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpIC1X YSwtQXY4cGx1cyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6VUxUUkFTUEFSQzotV2wsLXoscmVs cm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtz cGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tMzIgXCQoUlBNX09QVF9GTEFH Uyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAorICMgR0NDIDMuMSBpcyBhIHJlcXVpcmVtZW50 CistImxpbnV4NjQtc3BhcmN2OSIsImdjYzotbTY0IC1tY3B1PXVsdHJhc3BhcmMgLURCX0VORElB TiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJD Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklT QzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1m UElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCisrImxp bnV4NjQtc3BhcmN2OSIsImdjYzotbTY0IC1tY3B1PXVsdHJhc3BhcmMgLURCX0VORElBTiAtV2Fs bCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LVdsLC16LHJlbHJv IC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklT QzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1m UElDOi1tNjQgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIs CisgIyMjIyBBbHBoYSBMaW51eCB3aXRoIEdOVSBDIGFuZCBDb21wYXEgQyBzZXR1cHMKKyAjIFNw ZWNpYWwgbm90ZXM6CisgIyAtIGxpbnV4LWFscGhhK2J3eC1nY2MgaXMgbWVudCB0byBiZSB1c2Vk IGZyb20gLi9jb25maWcgb25seS4gSWYgeW91CitAQCAtMTczNyw3ICsxNzM3LDcgQEAgd2hpbGUg KDxJTj4pCisgCWVsc2lmICgkc2hhcmVkX2V4dGVuc2lvbiBuZSAiIiAmJiAkc2hhcmVkX2V4dGVu c2lvbiA9fiAvXlwucyhbb2xdKVwuW15cLl0qXC5bXlwuXSokLykKKyAJCXsKKyAJCW15ICRzb3Rt cCA9ICQxOworLQkJcy9eU0hBUkVEX0xJQlNfTElOS19FWFRTPS4qL1NIQVJFRF9MSUJTX0xJTktf RVhUUz0ucyRzb3RtcC5cJChTSExJQl9NQUpPUikgLnMkc290bXAvOworKwkJcy9eU0hBUkVEX0xJ QlNfTElOS19FWFRTPS4qL1NIQVJFRF9MSUJTX0xJTktfRVhUUz0ucyRzb3RtcC5cJChTSExJQl9T T05BTUVWRVIpIC5zJHNvdG1wLzsKKyAJCX0KKyAJZWxzaWYgKCRzaGFyZWRfZXh0ZW5zaW9uIG5l ICIiICYmICRzaGFyZWRfZXh0ZW5zaW9uID1+IC9eXC5bXlwuXSpcLlteXC5dKlwuZHlsaWIkLykK KyAJCXsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL01ha2VmaWxlLm9yZy5ycG1idWlsZCBvcGVu c3NsLTEuMC4yYS9NYWtlZmlsZS5vcmcKKy0tLSBvcGVuc3NsLTEuMC4yYS9NYWtlZmlsZS5vcmcu cnBtYnVpbGQJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3Ns LTEuMC4yYS9NYWtlZmlsZS5vcmcJMjAxNS0wNC0yMCAxNDoxMTo1Mi4xNTI4NDcwOTMgKzAyMDAK K0BAIC0xMCw2ICsxMCw3IEBAIFNITElCX1ZFUlNJT05fSElTVE9SWT0KKyBTSExJQl9NQUpPUj0K KyBTSExJQl9NSU5PUj0KKyBTSExJQl9FWFQ9CisrU0hMSUJfU09OQU1FVkVSPTEwCisgUExBVEZP Uk09ZGlzdAorIE9QVElPTlM9CisgQ09ORklHVVJFX0FSR1M9CitAQCAtMzM1LDEwICszMzYsOSBA QCBjbGVhbi1zaGFyZWQ6CisgbGluay1zaGFyZWQ6CisgCUAgc2V0IC1lOyBmb3IgaSBpbiAkKFNI TElCRElSUyk7IGRvIFwKKyAJCSQoTUFLRSkgLWYgJChIRVJFKS9NYWtlZmlsZS5zaGFyZWQgLWUg JChCVUlMREVOVikgXAorLQkJCUxJQk5BTUU9JCRpIExJQlZFUlNJT049JChTSExJQl9NQUpPUiku JChTSExJQl9NSU5PUikgXAorKwkJCUxJQk5BTUU9JCRpIExJQlZFUlNJT049JChTSExJQl9TT05B TUVWRVIpIFwKKyAJCQlMSUJDT01QQVRWRVJTSU9OUz0iOyQoU0hMSUJfVkVSU0lPTl9ISVNUT1JZ KSIgXAorIAkJCXN5bWxpbmsuJChTSExJQl9UQVJHRVQpOyBcCistCQlsaWJzPSIkJGxpYnMgLWwk JGkiOyBcCisgCWRvbmUKKyAKKyBidWlsZC1zaGFyZWQ6IGRvXyQoU0hMSUJfVEFSR0VUKSBsaW5r LXNoYXJlZAorQEAgLTM0OSw3ICszNDksNyBAQCBkb18kKFNITElCX1RBUkdFVCk6CisgCQkJbGli cz0iJChMSUJLUkI1KSAkJGxpYnMiOyBcCisgCQlmaTsgXAorIAkJJChDTEVBUkVOVikgJiYgJChN QUtFKSAtZiBNYWtlZmlsZS5zaGFyZWQgLWUgJChCVUlMREVOVikgXAorLQkJCUxJQk5BTUU9JCRp IExJQlZFUlNJT049JChTSExJQl9NQUpPUikuJChTSExJQl9NSU5PUikgXAorKwkJCUxJQk5BTUU9 JCRpIExJQlZFUlNJT049JChTSExJQl9TT05BTUVWRVIpIFwKKyAJCQlMSUJDT01QQVRWRVJTSU9O Uz0iOyQoU0hMSUJfVkVSU0lPTl9ISVNUT1JZKSIgXAorIAkJCUxJQkRFUFM9IiQkbGlicyAkKEVY X0xJQlMpIiBcCisgCQkJbGlua19hLiQoU0hMSUJfVEFSR0VUKTsgXAoKZGlmZiAtLWdpdCBhL29w ZW5zc2wtMS4wLjJhLXJzYS14OTMxLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtcnNhLXg5MzEucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRlNzE2YQotLS0gL2Rldi9u dWxsCisrKyBiL29wZW5zc2wtMS4wLjJhLXJzYS14OTMxLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAK K2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvZ2VucnNhLmMueDkzMSBvcGVuc3NsLTEuMC4y YS9hcHBzL2dlbnJzYS5jCistLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9nZW5yc2EuYy54OTMxCTIw MTUtMDQtMDkgMTg6MTg6MjQuMTMyMTA3Mjg3ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvYXBw cy9nZW5yc2EuYwkyMDE1LTA0LTA5IDE4OjE4OjE4Ljg1Mjk4NTMzOSArMDIwMAorQEAgLTk3LDYg Kzk3LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICBpbnQgcmV0ID0g MTsKKyAgICAgaW50IGksIG51bSA9IERFRkJJVFM7CisgICAgIGxvbmcgbDsKKysgICAgaW50IHVz ZV94OTMxID0gMDsKKyAgICAgY29uc3QgRVZQX0NJUEhFUiAqZW5jID0gTlVMTDsKKyAgICAgdW5z aWduZWQgbG9uZyBmNCA9IFJTQV9GNDsKKyAgICAgY2hhciAqb3V0ZmlsZSA9IE5VTEw7CitAQCAt MTM5LDYgKzE0MCw4IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAg ICAgICBmNCA9IDM7CisgICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICItRjQiKSA9PSAw IHx8IHN0cmNtcCgqYXJndiwgIi1mNCIpID09IDApCisgICAgICAgICAgICAgZjQgPSBSU0FfRjQ7 CisrICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICIteDkzMSIpID09IDApCisrICAgICAg ICAgICAgdXNlX3g5MzEgPSAxOworICMgaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCisgICAgICAg ICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICItZW5naW5lIikgPT0gMCkgeworICAgICAgICAgICAg IGlmICgtLWFyZ2MgPCAxKQorQEAgLTI3OCw3ICsyODEsMTMgQEAgaW50IE1BSU4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQorICAgICBpZiAoIXJzYSkKKyAgICAgICAgIGdvdG8gZXJyOworIAorLSAg ICBpZiAoIUJOX3NldF93b3JkKGJuLCBmNCkgfHwgIVJTQV9nZW5lcmF0ZV9rZXlfZXgocnNhLCBu dW0sIGJuLCAmY2IpKQorKyAgICBpZiAodXNlX3g5MzEpIHsKKysgICAgICAgIGlmICghQk5fc2V0 X3dvcmQoYm4sIGY0KSkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIGlmICghUlNB X1g5MzFfZ2VuZXJhdGVfa2V5X2V4KHJzYSwgbnVtLCBibiwgJmNiKSkKKysgICAgICAgICAgICBn b3RvIGVycjsKKysgICAgfSBlbHNlIGlmICghQk5fc2V0X3dvcmQoYm4sIGY0KQorKyAgICAgICAg ICAgICAgIHx8ICFSU0FfZ2VuZXJhdGVfa2V5X2V4KHJzYSwgbnVtLCBibiwgJmNiKSkKKyAgICAg ICAgIGdvdG8gZXJyOworIAorICAgICBhcHBfUkFORF93cml0ZV9maWxlKE5VTEwsIGJpb19lcnIp OwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLXNlY3VyZS1nZXRlbnYucGF0Y2ggYi9vcGVu c3NsLTEuMC4yYS1zZWN1cmUtZ2V0ZW52LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmY0OTQ4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4yYS1zZWN1 cmUtZ2V0ZW52LnBhdGNoCkBAIC0wLDAgKzEsMjQxIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vY29uZi9jb25mX2FwaS5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2NvbmYvY29uZl9hcGkuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9jb25mL2NvbmZf YXBpLmMuc2VjdXJlLWdldGVudgkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAor KysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9jb25mL2NvbmZfYXBpLmMJMjAxNS0wNC0yMSAxNzox NDoxMi43NTcyMTQ1MzIgKzAyMDAKK0BAIC02Myw2ICs2Myw4IEBACisgIyBkZWZpbmUgTkRFQlVH CisgI2VuZGlmCisgCisrLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KKysjZGVmaW5lIF9HTlVfU09V UkNFCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVk ZSA8c3RyaW5nLmg+CitAQCAtMTQxLDcgKzE0Myw3IEBAIGNoYXIgKl9DT05GX2dldF9zdHJpbmco Y29uc3QgQ09ORiAqY29uZiwKKyAgICAgICAgICAgICBpZiAodiAhPSBOVUxMKQorICAgICAgICAg ICAgICAgICByZXR1cm4gKHYtPnZhbHVlKTsKKyAgICAgICAgICAgICBpZiAoc3RyY21wKHNlY3Rp b24sICJFTlYiKSA9PSAwKSB7CistICAgICAgICAgICAgICAgIHAgPSBnZXRlbnYobmFtZSk7Cisr ICAgICAgICAgICAgICAgIHAgPSBzZWN1cmVfZ2V0ZW52KG5hbWUpOworICAgICAgICAgICAgICAg ICBpZiAocCAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwKTsKKyAgICAg ICAgICAgICB9CitAQCAtMTU0LDcgKzE1Niw3IEBAIGNoYXIgKl9DT05GX2dldF9zdHJpbmcoY29u c3QgQ09ORiAqY29uZiwKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICByZXR1cm4gKE5VTEwp OworICAgICB9IGVsc2UKKy0gICAgICAgIHJldHVybiAoZ2V0ZW52KG5hbWUpKTsKKysgICAgICAg IHJldHVybiAoc2VjdXJlX2dldGVudihuYW1lKSk7CisgfQorIAorICNpZiAwICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogVGhlcmUncyBubyB3YXkgdG8gcHJvdmlkZSBlcnJvciBjaGVja2lu ZworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2NvbmYvY29uZl9tb2QuYy5zZWN1cmUt Z2V0ZW52IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9jb25mL2NvbmZfbW9kLmMKKy0tLSBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vY29uZi9jb25mX21vZC5jLnNlY3VyZS1nZXRlbnYJMjAxNS0wMy0xOSAx NDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vY29uZi9j b25mX21vZC5jCTIwMTUtMDQtMjEgMTc6MTM6MjQuMTY1MDc4ODQ4ICswMjAwCitAQCAtNTcsNiAr NTcsOCBAQAorICAqCisgICovCisgCisrLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KKysjZGVmaW5l IF9HTlVfU09VUkNFCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPGN0eXBlLmg+Cisg I2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+CitAQCAtNTI2LDcgKzUyOCw3IEBAIGNoYXIgKkNP TkZfZ2V0MV9kZWZhdWx0X2NvbmZpZ19maWxlKHZvaWQKKyAgICAgY2hhciAqZmlsZTsKKyAgICAg aW50IGxlbjsKKyAKKy0gICAgZmlsZSA9IGdldGVudigiT1BFTlNTTF9DT05GIik7CisrICAgIGZp bGUgPSBzZWN1cmVfZ2V0ZW52KCJPUEVOU1NMX0NPTkYiKTsKKyAgICAgaWYgKGZpbGUpCisgICAg ICAgICByZXR1cm4gQlVGX3N0cmR1cChmaWxlKTsKKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9lbmdpbmUvZW5nX2xpc3QuYy5zZWN1cmUtZ2V0ZW52IG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9lbmdpbmUvZW5nX2xpc3QuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lbmdpbmUv ZW5nX2xpc3QuYy5zZWN1cmUtZ2V0ZW52CTIwMTUtMDQtMjEgMTc6MTM6MjQuMTY1MDc4ODQ4ICsw MjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VuZ2luZS9lbmdfbGlzdC5jCTIwMTUtMDQt MjEgMTc6MTU6NTMuMTgwNTYxNjAzICswMjAwCitAQCAtNjIsNiArNjIsOCBAQAorICAqIFNVTiBN SUNST1NZU1RFTVMsIElOQy4sIGFuZCBjb250cmlidXRlZCB0byB0aGUgT3BlblNTTCBwcm9qZWN0 LgorICAqLworIAorKy8qIGZvciBzZWN1cmVfZ2V0ZW52ICovCisrI2RlZmluZSBfR05VX1NPVVJD RQorICNpbmNsdWRlICJlbmdfaW50LmgiCisgCisgLyoKK0BAIC0zNjgsMTAgKzM3MCwxMCBAQCBF TkdJTkUgKkVOR0lORV9ieV9pZChjb25zdCBjaGFyICppZCkKKyAgICAgICovCisgICAgIGlmIChz dHJjbXAoaWQsICJkeW5hbWljIikpIHsKKyAjIGlmZGVmIE9QRU5TU0xfU1lTX1ZNUworLSAgICAg ICAgaWYgKChsb2FkX2RpciA9IGdldGVudigiT1BFTlNTTF9FTkdJTkVTIikpID09IDApCisrICAg ICAgICBpZiAoT1BFTlNTTF9pc3NldHVnaWQoKSB8fCAobG9hZF9kaXIgPSBnZXRlbnYoIk9QRU5T U0xfRU5HSU5FUyIpKSA9PSAwKQorICAgICAgICAgICAgIGxvYWRfZGlyID0gIlNTTFJPT1Q6W0VO R0lORVNdIjsKKyAjIGVsc2UKKy0gICAgICAgIGlmICgobG9hZF9kaXIgPSBnZXRlbnYoIk9QRU5T U0xfRU5HSU5FUyIpKSA9PSAwKQorKyAgICAgICAgaWYgKChsb2FkX2RpciA9IHNlY3VyZV9nZXRl bnYoIk9QRU5TU0xfRU5HSU5FUyIpKSA9PSAwKQorICAgICAgICAgICAgIGxvYWRfZGlyID0gRU5H SU5FU0RJUjsKKyAjIGVuZGlmCisgICAgICAgICBpdGVyYXRvciA9IEVOR0lORV9ieV9pZCgiZHlu YW1pYyIpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21kNS9tZDVfZGdzdC5jLnNl Y3VyZS1nZXRlbnYgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21kNS9tZDVfZGdzdC5jCistLS0gb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL21kNS9tZDVfZGdzdC5jLnNlY3VyZS1nZXRlbnYJMjAxNS0wNC0y MSAxNzoxMzoyNC4xNTYwNzg2MzcgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWQ1 L21kNV9kZ3N0LmMJMjAxNS0wNC0yMSAxNzoxMzoyNC4xNjUwNzg4NDggKzAyMDAKK0BAIC01Niw2 ICs1Niw4IEBACisgICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KKyAgKi8K KyAKKysvKiBmb3Igc2VjdXJlX2dldGVudiAqLworKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5j bHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAibWQ1X2xvY2wuaCIKKyAjaW5jbHVkZSA8b3BlbnNz bC9vcGVuc3Nsdi5oPgorQEAgLTc1LDcgKzc3LDggQEAgY29uc3QgY2hhciBNRDVfdmVyc2lvbltd ID0gIk1ENSIgT1BFTlNTTAorIGludCBNRDVfSW5pdChNRDVfQ1RYICpjKQorICNpZmRlZiBPUEVO U1NMX0ZJUFMKKyB7CistICAgIGlmIChGSVBTX21vZGUoKSAmJiBnZXRlbnYoIk9QRU5TU0xfRklQ U19OT05fQVBQUk9WRURfTUQ1X0FMTE9XIikgPT0gTlVMTCkKKysgICAgaWYgKEZJUFNfbW9kZSgp CisrICAgICAgICAmJiBzZWN1cmVfZ2V0ZW52KCJPUEVOU1NMX0ZJUFNfTk9OX0FQUFJPVkVEX01E NV9BTExPVyIpID09IE5VTEwpCisgICAgICAgICBPcGVuU1NMRGllKF9fRklMRV9fLCBfX0xJTkVf XywgIkRpZ2VzdCBNRDUgZm9yYmlkZGVuIGluIEZJUFMgbW9kZSEiKTsKKyAgICAgcmV0dXJuIHBy aXZhdGVfTUQ1X0luaXQoYyk7CisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL29f aW5pdC5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL29faW5pdC5jCistLS0g b3BlbnNzbC0xLjAuMmEvY3J5cHRvL29faW5pdC5jLnNlY3VyZS1nZXRlbnYJMjAxNS0wNC0yMSAx NzoxMzoyNC4xNDIwNzgzMTAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb19pbml0 LmMJMjAxNS0wNC0yMSAxNzoxMzoyNC4xNjUwNzg4NDggKzAyMDAKK0BAIC01Myw2ICs1Myw4IEBA CisgICoKKyAgKi8KKyAKKysvKiBmb3Igc2VjdXJlX2dldGVudiAqLworKyNkZWZpbmUgX0dOVV9T T1VSQ0UKKyAjaW5jbHVkZSA8ZV9vcy5oPgorICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorICNp ZmRlZiBPUEVOU1NMX0ZJUFMKK0BAIC03Miw3ICs3NCw3IEBAIHN0YXRpYyB2b2lkIGluaXRfZmlw c19tb2RlKHZvaWQpCisgICAgIGNoYXIgYnVmWzJdID0gIjAiOworICAgICBpbnQgZmQ7CisgCist ICAgIGlmIChnZXRlbnYoIk9QRU5TU0xfRk9SQ0VfRklQU19NT0RFIikgIT0gTlVMTCkgeworKyAg ICBpZiAoc2VjdXJlX2dldGVudigiT1BFTlNTTF9GT1JDRV9GSVBTX01PREUiKSAhPSBOVUxMKSB7 CisgICAgICAgICBidWZbMF0gPSAnMSc7CisgICAgIH0gZWxzZSBpZiAoKGZkID0gb3BlbihGSVBT X01PREVfU1dJVENIX0ZJTEUsIE9fUkRPTkxZKSkgPj0gMCkgeworICAgICAgICAgd2hpbGUgKHJl YWQoZmQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpIDwgMCAmJiBlcnJubyA9PSBFSU5UUikgOworZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JhbmQvcmFuZGZpbGUuYy5zZWN1cmUtZ2V0ZW52IG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9yYW5kL3JhbmRmaWxlLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vcmFuZC9yYW5kZmlsZS5jLnNlY3VyZS1nZXRlbnYJMjAxNS0wMy0xOSAxNDoxOTowMC4w MDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmFuZC9yYW5kZmlsZS5j CTIwMTUtMDQtMjEgMTc6MTM6MjQuMTY1MDc4ODQ4ICswMjAwCitAQCAtNjAsNiArNjAsOCBAQAor ICNpZiAhZGVmaW5lZChPUEVOU1NMX1NZU19WWFdPUktTKQorICMgZGVmaW5lIF9YT1BFTl9TT1VS Q0UgNTAwCisgI2VuZGlmCisrLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KKysjZGVmaW5lIF9HTlVf U09VUkNFCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CitAQCAt MjkyLDE0ICsyOTQsMTIgQEAgY29uc3QgY2hhciAqUkFORF9maWxlX25hbWUoY2hhciAqYnVmLCBz aQorICAgICBzdHJ1Y3Qgc3RhdCBzYjsKKyAjZW5kaWYKKyAKKy0gICAgaWYgKE9QRU5TU0xfaXNz ZXR1Z2lkKCkgPT0gMCkKKy0gICAgICAgIHMgPSBnZXRlbnYoIlJBTkRGSUxFIik7CisrICAgIHMg PSBzZWN1cmVfZ2V0ZW52KCJSQU5ERklMRSIpOworICAgICBpZiAocyAhPSBOVUxMICYmICpzICYm IHN0cmxlbihzKSArIDEgPCBzaXplKSB7CisgICAgICAgICBpZiAoQlVGX3N0cmxjcHkoYnVmLCBz LCBzaXplKSA+PSBzaXplKQorICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICB9IGVsc2Ug eworLSAgICAgICAgaWYgKE9QRU5TU0xfaXNzZXR1Z2lkKCkgPT0gMCkKKy0gICAgICAgICAgICBz ID0gZ2V0ZW52KCJIT01FIik7CisrICAgICAgICBzID0gc2VjdXJlX2dldGVudigiSE9NRSIpOwor ICNpZmRlZiBERUZBVUxUX0hPTUUKKyAgICAgICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAg ICAgICBzID0gREVGQVVMVF9IT01FOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3g1 MDkvYnlfZGlyLmMuc2VjdXJlLWdldGVudiBvcGVuc3NsLTEuMC4yYS9jcnlwdG8veDUwOS9ieV9k aXIuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by94NTA5L2J5X2Rpci5jLnNlY3VyZS1nZXRl bnYJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4y YS9jcnlwdG8veDUwOS9ieV9kaXIuYwkyMDE1LTA0LTIxIDE3OjEzOjI0LjE2NTA3ODg0OCArMDIw MAorQEAgLTU2LDYgKzU2LDggQEAKKyAgKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGljIExpY2Vu Y2UuXQorICAqLworIAorKy8qIGZvciBzZWN1cmVfZ2V0ZW52ICovCisrI2RlZmluZSBfR05VX1NP VVJDRQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUg PGVycm5vLmg+CitAQCAtMTI4LDcgKzEzMCw3IEBAIHN0YXRpYyBpbnQgZGlyX2N0cmwoWDUwOV9M T09LVVAgKmN0eCwgaW4KKyAgICAgc3dpdGNoIChjbWQpIHsKKyAgICAgY2FzZSBYNTA5X0xfQURE X0RJUjoKKyAgICAgICAgIGlmIChhcmdsID09IFg1MDlfRklMRVRZUEVfREVGQVVMVCkgeworLSAg ICAgICAgICAgIGRpciA9IChjaGFyICopZ2V0ZW52KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXJf ZW52KCkpOworKyAgICAgICAgICAgIGRpciA9IChjaGFyICopc2VjdXJlX2dldGVudihYNTA5X2dl dF9kZWZhdWx0X2NlcnRfZGlyX2VudigpKTsKKyAgICAgICAgICAgICBpZiAoZGlyKQorICAgICAg ICAgICAgICAgICByZXQgPSBhZGRfY2VydF9kaXIobGQsIGRpciwgWDUwOV9GSUxFVFlQRV9QRU0p OworICAgICAgICAgICAgIGVsc2UKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by94NTA5 L2J5X2ZpbGUuYy5zZWN1cmUtZ2V0ZW52IG9wZW5zc2wtMS4wLjJhL2NyeXB0by94NTA5L2J5X2Zp bGUuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by94NTA5L2J5X2ZpbGUuYy5zZWN1cmUtZ2V0 ZW52CTIwMTUtMDQtMjEgMTc6MTM6MjQuMTE4MDc3NzQ5ICswMjAwCisrKysgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL3g1MDkvYnlfZmlsZS5jCTIwMTUtMDQtMjEgMTc6MTM6MjQuMTY2MDc4ODcxICsw MjAwCitAQCAtNTYsNiArNTYsOCBAQAorICAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGlj ZW5jZS5dCisgICovCisgCisrLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KKysjZGVmaW5lIF9HTlVf U09VUkNFCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVk ZSA8ZXJybm8uaD4KK0BAIC05Nyw3ICs5OSw3IEBAIHN0YXRpYyBpbnQgYnlfZmlsZV9jdHJsKFg1 MDlfTE9PS1VQICpjdHgKKyAgICAgc3dpdGNoIChjbWQpIHsKKyAgICAgY2FzZSBYNTA5X0xfRklM RV9MT0FEOgorICAgICAgICAgaWYgKGFyZ2wgPT0gWDUwOV9GSUxFVFlQRV9ERUZBVUxUKSB7Cist ICAgICAgICAgICAgZmlsZSA9IChjaGFyICopZ2V0ZW52KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9m aWxlX2VudigpKTsKKysgICAgICAgICAgICBmaWxlID0gKGNoYXIgKilzZWN1cmVfZ2V0ZW52KFg1 MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlX2VudigpKTsKKyAgICAgICAgICAgICBpZiAoZmlsZSkK KyAgICAgICAgICAgICAgICAgb2sgPSAoWDUwOV9sb2FkX2NlcnRfY3JsX2ZpbGUoY3R4LCBmaWxl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYNTA5X0ZJ TEVUWVBFX1BFTSkgIT0gMCk7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8veDUwOS94 NTA5X3ZmeS5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3g1MDkveDUwOV92 ZnkuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by94NTA5L3g1MDlfdmZ5LmMuc2VjdXJlLWdl dGVudgkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by94NTA5L3g1MDlfdmZ5LmMJMjAxNS0wNC0yMSAxNzoxOToxNC45NDgyNzcyNzIg KzAyMDAKK0BAIC01Niw2ICs1Niw4IEBACisgICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBM aWNlbmNlLl0KKyAgKi8KKyAKKysvKiBmb3Igc2VjdXJlX2dldGVudiAqLworKyNkZWZpbmUgX0dO VV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8dGltZS5oPgorICNpbmNs dWRlIDxlcnJuby5oPgorQEAgLTU1MCw3ICs1NTIsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2NoYWlu X2V4dGVuc2lvbnMoWDUwOV9TCisgICAgICAgICAgKiBBIGhhY2sgdG8ga2VlcCBwZW9wbGUgd2hv IGRvbid0IHdhbnQgdG8gbW9kaWZ5IHRoZWlyIHNvZnR3YXJlCisgICAgICAgICAgKiBoYXBweQor ICAgICAgICAgICovCistICAgICAgICBpZiAoZ2V0ZW52KCJPUEVOU1NMX0FMTE9XX1BST1hZX0NF UlRTIikpCisrICAgICAgICBpZiAoc2VjdXJlX2dldGVudigiT1BFTlNTTF9BTExPV19QUk9YWV9D RVJUUyIpKQorICAgICAgICAgICAgIGFsbG93X3Byb3h5X2NlcnRzID0gMTsKKyAgICAgICAgIHB1 cnBvc2UgPSBjdHgtPnBhcmFtLT5wdXJwb3NlOworICAgICB9CitkaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9lbmdpbmVzL2NjZ29zdC9nb3N0X2N0bC5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjAu MmEvZW5naW5lcy9jY2dvc3QvZ29zdF9jdGwuYworLS0tIG9wZW5zc2wtMS4wLjJhL2VuZ2luZXMv Y2Nnb3N0L2dvc3RfY3RsLmMuc2VjdXJlLWdldGVudgkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAw MDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2VuZ2luZXMvY2Nnb3N0L2dvc3RfY3RsLmMJ MjAxNS0wNC0yMSAxNzoxOTo1My44OTcxODc1NzcgKzAyMDAKK0BAIC02LDYgKzYsOCBAQAorICAq ICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBjb250cm9sIGNvbW1hbmRzIGZvciBHT1NUIGVuZ2lu ZSAgICAgICAgICAqCisgICogICAgICAgICAgICBPcGVuU1NMIDAuOS45IGxpYnJhcmllcyByZXF1 aXJlZCAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysvKiBmb3Ig c2VjdXJlX2dldGVudiAqLworKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkbGli Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgor QEAgLTY0LDcgKzY2LDcgQEAgY29uc3QgY2hhciAqZ2V0X2dvc3RfZW5naW5lX3BhcmFtKGludCBw YQorICAgICBpZiAoZ29zdF9wYXJhbXNbcGFyYW1dICE9IE5VTEwpIHsKKyAgICAgICAgIHJldHVy biBnb3N0X3BhcmFtc1twYXJhbV07CisgICAgIH0KKy0gICAgdG1wID0gZ2V0ZW52KGdvc3RfZW52 bmFtZXNbcGFyYW1dKTsKKysgICAgdG1wID0gc2VjdXJlX2dldGVudihnb3N0X2Vudm5hbWVzW3Bh cmFtXSk7CisgICAgIGlmICh0bXApIHsKKyAgICAgICAgIGlmIChnb3N0X3BhcmFtc1twYXJhbV0p CisgICAgICAgICAgICAgT1BFTlNTTF9mcmVlKGdvc3RfcGFyYW1zW3BhcmFtXSk7CitAQCAtNzks NyArODEsNyBAQCBpbnQgZ29zdF9zZXRfZGVmYXVsdF9wYXJhbShpbnQgcGFyYW0sIGNvCisgICAg IGNvbnN0IGNoYXIgKnRtcDsKKyAgICAgaWYgKHBhcmFtIDwgMCB8fCBwYXJhbSA+IEdPU1RfUEFS QU1fTUFYKQorICAgICAgICAgcmV0dXJuIDA7CistICAgIHRtcCA9IGdldGVudihnb3N0X2Vudm5h bWVzW3BhcmFtXSk7CisrICAgIHRtcCA9IHNlY3VyZV9nZXRlbnYoZ29zdF9lbnZuYW1lc1twYXJh bV0pOworICAgICAvKgorICAgICAgKiBpZiB0aGVyZSBpcyB2YWx1ZSBpbiB0aGUgZW52aXJvbm1l bnQsIHVzZSBpdCwgZWxzZSAtcGFzc2VkIHN0cmluZyAqCisgICAgICAqLwoKZGlmZiAtLWdpdCBh L29wZW5zc2wtMS4wLjJhLXN5c3RlbS1jaXBoZXJsaXN0LnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEt c3lzdGVtLWNpcGhlcmxpc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNDgyZmVjYwotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjJhLXN5c3RlbS1jaXBo ZXJsaXN0LnBhdGNoCkBAIC0wLDAgKzEsMjg1IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9D b25maWd1cmUuc3lzdGVtIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQorLS0tIG9wZW5zc2wtMS4w LjJhL0NvbmZpZ3VyZS5zeXN0ZW0JMjAxNS0wNC0yMiAxNToyMzo0Ny45NzA2MzM2NTAgKzAyMDAK KysrKyBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUJMjAxNS0wNC0yMiAxNToyMzo0OC4wNDI2MzU0 MDcgKzAyMDAKK0BAIC0xMCw3ICsxMCw3IEBAIHVzZSBzdHJpY3Q7CisgCisgIyBzZWUgSU5TVEFM TCBmb3IgaW5zdHJ1Y3Rpb25zLgorIAorLW15ICR1c2FnZT0iVXNhZ2U6IENvbmZpZ3VyZSBbbm8t PGNpcGhlcj4gLi4uXSBbZW5hYmxlLTxjaXBoZXI+IC4uLl0gW2V4cGVyaW1lbnRhbC08Y2lwaGVy PiAuLi5dIFstRHh4eF0gWy1seHh4XSBbLUx4eHhdIFstZnh4eF0gWy1LeHh4XSBbbm8taHcteHh4 fG5vLWh3XSBbW25vLV10aHJlYWRzXSBbW25vLV1zaGFyZWRdIFtbbm8tXXpsaWJ8emxpYi1keW5h bWljXSBbbm8tYXNtXSBbbm8tZHNvXSBbbm8ta3JiNV0gW3NjdHBdIFszODZdIFstLXByZWZpeD1E SVJdIFstLW9wZW5zc2xkaXI9T1BFTlNTTERJUl0gWy0td2l0aC14eHhbPXZ2dl1dIFstLXRlc3Qt c2FuaXR5XSBvcy9jb21waWxlcls6ZmxhZ3NdXG4iOworK215ICR1c2FnZT0iVXNhZ2U6IENvbmZp Z3VyZSBbbm8tPGNpcGhlcj4gLi4uXSBbZW5hYmxlLTxjaXBoZXI+IC4uLl0gW2V4cGVyaW1lbnRh bC08Y2lwaGVyPiAuLi5dIFstRHh4eF0gWy1seHh4XSBbLUx4eHhdIFstZnh4eF0gWy1LeHh4XSBb bm8taHcteHh4fG5vLWh3XSBbW25vLV10aHJlYWRzXSBbW25vLV1zaGFyZWRdIFtbbm8tXXpsaWJ8 emxpYi1keW5hbWljXSBbbm8tYXNtXSBbbm8tZHNvXSBbbm8ta3JiNV0gW3NjdHBdIFszODZdIFst LXByZWZpeD1ESVJdIFstLW9wZW5zc2xkaXI9T1BFTlNTTERJUl0gWy0tc3lzdGVtLWNpcGhlcnMt ZmlsZT1TWVNURU1DSVBIRVJGSUxFXSBbLS13aXRoLXh4eFs9dnZ2XV0gWy0tdGVzdC1zYW5pdHld IG9zL2NvbXBpbGVyWzpmbGFnc11cbiI7CisgCisgIyBPcHRpb25zOgorICMKK0BAIC0zNSw2ICsz NSw5IEBAIG15ICR1c2FnZT0iVXNhZ2U6IENvbmZpZ3VyZSBbbm8tPGNpcGhlcj4KKyAjIC0td2l0 aC1rcmI1LWZsYXZvciAgRGVjbGFyZSB3aGF0IGZsYXZvciBvZiBLZXJiZXJvcyA1IGlzIHVzZWQu ICBDdXJyZW50bHkKKyAjCQlzdXBwb3J0ZWQgdmFsdWVzIGFyZSAiTUlUIiBhbmQgIkhlaW1kYWwi LiAgQSB2YWx1ZSBpcyByZXF1aXJlZC4KKyAjCisrIyAtLXN5c3RlbS1jaXBoZXJzLWZpbGUgIEEg ZmlsZSB0byByZWFkIGNpcGhlciBzdHJpbmcgZnJvbSB3aGVuIHRoZSBQUk9GSUxFPVNZU1RFTQor KyMJCWNpcGhlciBpcyBzcGVjaWZpZWQgKGRlZmF1bHQpLgorKyMKKyAjIC0tdGVzdC1zYW5pdHkg TWFrZSBhIG51bWJlciBvZiBzYW5pdHkgY2hlY2tzIG9uIHRoZSBkYXRhIGluIHRoaXMgZmlsZS4K KyAjICAgICAgICAgICAgICAgVGhpcyBpcyBhIGRlYnVnZ2luZyB0b29sIGZvciBPcGVuU1NMIGRl dmVsb3BlcnMuCisgIworQEAgLTcwMyw2ICs3MDYsNyBAQCBteSAkcHJlZml4PSIiOworIG15ICRs aWJkaXI9IiI7CisgbXkgJG9wZW5zc2xkaXI9IiI7CisgbXkgJGVuZ2luZXNkaXI9IiI7CisrbXkg JHN5c3RlbV9jaXBoZXJzX2ZpbGU9IiI7CisgbXkgJGV4ZV9leHQ9IiI7CisgbXkgJGluc3RhbGxf cHJlZml4PSAiJEVOVnsnSU5TVEFMTF9QUkVGSVgnfSI7CisgbXkgJGNyb3NzX2NvbXBpbGVfcHJl Zml4PSIiOworQEAgLTkzNCw2ICs5MzgsMTAgQEAgUFJPQ0VTU19BUkdTOgorIAkJCQl7CisgCQkJ CSRlbmdpbmVzZGlyPSQxOworIAkJCQl9CisrCQkJZWxzaWYgKC9eLS1zeXN0ZW0tY2lwaGVycy1m aWxlPSguKikkLykKKysJCQkJeworKwkJCQkkc3lzdGVtX2NpcGhlcnNfZmlsZT0kMTsKKysJCQkJ fQorIAkJCWVsc2lmICgvXi0taW5zdGFsbC5wcmVmaXg9KC4qKSQvKQorIAkJCQl7CisgCQkJCSRp bnN0YWxsX3ByZWZpeD0kMTsKK0BAIC0xMDk2LDYgKzExMDQsNyBAQCBwcmludCAiQ29uZmlndXJp bmcgZm9yICR0YXJnZXRcbiI7CisgCisgJnVzYWdlIGlmICghZGVmaW5lZCgkdGFibGV7JHRhcmdl dH0pKTsKKyAKKytjaG9wICRzeXN0ZW1fY2lwaGVyc19maWxlIGlmICRzeXN0ZW1fY2lwaGVyc19m aWxlID1+IC9cLyQvOworIAorIGZvcmVhY2ggKHNvcnQgKGtleXMgJWRpc2FibGVkKSkKKyAJewor QEAgLTE2NjcsNiArMTY3Niw3IEBAIHdoaWxlICg8SU4+KQorIAlzL15JTlNUQUxMVE9QPS4qJC9J TlNUQUxMVE9QPSRwcmVmaXgvOworIAlzL15NVUxUSUxJQj0uKiQvTVVMVElMSUI9JG11bHRpbGli LzsKKyAJcy9eT1BFTlNTTERJUj0uKiQvT1BFTlNTTERJUj0kb3BlbnNzbGRpci87CisrCXMvXlNZ U1RFTV9DSVBIRVJTX0ZJTEU9LiokL1NZU1RFTV9DSVBIRVJTX0ZJTEU9JHN5c3RlbV9jaXBoZXJz X2ZpbGUvOworIAlzL15MSUJESVI9LiokL0xJQkRJUj0kbGliZGlyLzsKKyAJcy9eSU5TVEFMTF9Q UkVGSVg9LiokL0lOU1RBTExfUFJFRklYPSRpbnN0YWxsX3ByZWZpeC87CisgCXMvXlBMQVRGT1JN PS4qJC9QTEFURk9STT0kdGFyZ2V0LzsKK0BAIC0xODc3LDYgKzE4ODcsMTQgQEAgd2hpbGUgKDxJ Tj4pCisgCQkkZm9vID1+IHMvXFwvXFxcXC9nOworIAkJcHJpbnQgT1VUICIjZGVmaW5lIEVOR0lO RVNESVIgXCIkZm9vXCJcbiI7CisgCQl9CisrCWVsc2lmCSgvXiMoKGRlZmluZSl8KHVuZGVmKSlc cytTWVNURU1fQ0lQSEVSU19GSUxFLykKKysJCXsKKysJCW15ICRmb28gPSAiJHN5c3RlbV9jaXBo ZXJzX2ZpbGUiOworKwkJaWYgKCRmb28gbmUgJycpIHsKKysJCQkkZm9vID1+IHMvXFwvXFxcXC9n OworKwkJCXByaW50IE9VVCAiI2RlZmluZSBTWVNURU1fQ0lQSEVSU19GSUxFIFwiJGZvb1wiXG4i OworKwkJfQorKwkJfQorIAllbHNpZgkoL14jKChkZWZpbmUpfCh1bmRlZikpXHMrT1BFTlNTTF9F WFBPUlRfVkFSX0FTX0ZVTkNUSU9OLykKKyAJCXsgcHJpbnRmIE9VVCAiI3VuZGVmIE9QRU5TU0xf RVhQT1JUX1ZBUl9BU19GVU5DVElPTlxuIgorIAkJCWlmICRleHBvcnRfdmFyX2FzX2ZuOworZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL29wZW5zc2xjb25mLmguaW4uc3lzdGVtIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9vcGVuc3NsY29uZi5oLmluCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL29wZW5zc2xjb25mLmguaW4uc3lzdGVtCTIwMTUtMDQtMjIgMTU6MjM6NDcuOTg4NjM0MDg5 ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL29wZW5zc2xjb25mLmguaW4JMjAxNS0w NC0yMiAxNToyMzo0OC4wNDI2MzU0MDcgKzAyMDAKK0BAIC0yNSw2ICsyNSw4IEBACisgI2VuZGlm CisgI2VuZGlmCisgCisrI3VuZGVmIFNZU1RFTV9DSVBIRVJTX0ZJTEUKKysKKyAjdW5kZWYgT1BF TlNTTF9VTklTVEQKKyAjZGVmaW5lIE9QRU5TU0xfVU5JU1REIDx1bmlzdGQuaD4KKyAKK2RpZmYg LXVwIG9wZW5zc2wtMS4wLjJhL3NzbC9zc2xfY2lwaC5jLnN5c3RlbSBvcGVuc3NsLTEuMC4yYS9z c2wvc3NsX2NpcGguYworLS0tIG9wZW5zc2wtMS4wLjJhL3NzbC9zc2xfY2lwaC5jLnN5c3RlbQky MDE1LTA0LTIyIDE1OjIzOjQ3Ljk5MzYzNDIxMSArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL3Nz bC9zc2xfY2lwaC5jCTIwMTUtMDQtMjIgMTU6Mjk6MzAuMTg1OTgyMzU2ICswMjAwCitAQCAtMTQ2 Myw2ICsxNDYzLDUwIEBAIHN0YXRpYyBpbnQgY2hlY2tfc3VpdGViX2NpcGhlcl9saXN0KGNvbnMK KyB9CisgI2VuZGlmCisgCisrI2lmZGVmIFNZU1RFTV9DSVBIRVJTX0ZJTEUKKytzdGF0aWMgY2hh ciAqbG9hZF9zeXN0ZW1fc3RyKGNvbnN0IGNoYXIgKnN1ZmZpeCkKKyt7CisrICAgIEZJTEUgKmZw OworKyAgICBjaGFyIGJ1ZlsxMDI0XTsKKysgICAgY2hhciAqbmV3X3J1bGVzOworKyAgICB1bnNp Z25lZCBsZW4sIHNsZW47CisrCisrICAgIGZwID0gZm9wZW4oU1lTVEVNX0NJUEhFUlNfRklMRSwg InIiKTsKKysgICAgaWYgKGZwID09IE5VTEwgfHwgZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZnAp ID09IE5VTEwpIHsKKysgICAgICAgIC8qIGNhbm5vdCBvcGVuIG9yIGZpbGUgaXMgZW1wdHkgKi8K KysgICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcyIsIFNTTF9ERUZBVUxUX0NJ UEhFUl9MSVNUKTsKKysgICAgfQorKworKyAgICBpZiAoZnApCisrICAgICAgICBmY2xvc2UoZnAp OworKworKyAgICBzbGVuID0gc3RybGVuKHN1ZmZpeCk7CisrICAgIGxlbiA9IHN0cmxlbihidWYp OworKworKyAgICBpZiAoYnVmW2xlbiAtIDFdID09ICdcbicpIHsKKysgICAgICAgIGxlbi0tOwor KyAgICAgICAgYnVmW2xlbl0gPSAwOworKyAgICB9CisrICAgIGlmIChidWZbbGVuIC0gMV0gPT0g J1xyJykgeworKyAgICAgICAgbGVuLS07CisrICAgICAgICBidWZbbGVuXSA9IDA7CisrICAgIH0K KysKKysgICAgbmV3X3J1bGVzID0gT1BFTlNTTF9tYWxsb2MobGVuICsgc2xlbiArIDEpOworKyAg ICBpZiAobmV3X3J1bGVzID09IDApCisrICAgICAgICByZXR1cm4gTlVMTDsKKysKKysgICAgbWVt Y3B5KG5ld19ydWxlcywgYnVmLCBsZW4pOworKyAgICBpZiAoc2xlbiA+IDApIHsKKysgICAgICAg IG1lbWNweSgmbmV3X3J1bGVzW2xlbl0sIHN1ZmZpeCwgc2xlbik7CisrICAgICAgICBsZW4gKz0g c2xlbjsKKysgICAgfQorKyAgICBuZXdfcnVsZXNbbGVuXSA9IDA7CisrCisrICAgIHJldHVybiBu ZXdfcnVsZXM7CisrfQorKyNlbmRpZgorKworIFNUQUNLX09GKFNTTF9DSVBIRVIpICpzc2xfY3Jl YXRlX2NpcGhlcl9saXN0KGNvbnN0IFNTTF9NRVRIT0QgKnNzbF9tZXRob2QsIFNUQUNLX09GKFNT TF9DSVBIRVIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KipjaXBoZXJfbGlzdCwgU1RBQ0tfT0YoU1NMX0NJUEhFUikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqKmNpcGhlcl9saXN0X2J5X2lkLAorQEAgLTE0NzEs MTkgKzE1MTUsMjkgQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyXwor ICAgICBpbnQgb2ssIG51bV9vZl9jaXBoZXJzLCBudW1fb2ZfYWxpYXNfbWF4LCBudW1fb2ZfZ3Jv dXBfYWxpYXNlczsKKyAgICAgdW5zaWduZWQgbG9uZyBkaXNhYmxlZF9ta2V5LCBkaXNhYmxlZF9h dXRoLCBkaXNhYmxlZF9lbmMsIGRpc2FibGVkX21hYywKKyAgICAgICAgIGRpc2FibGVkX3NzbDsK Ky0gICAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKmNpcGhlcnN0YWNrLCAqdG1wX2NpcGhlcl9saXN0 OworKyAgICBTVEFDS19PRihTU0xfQ0lQSEVSKSAqY2lwaGVyc3RhY2sgPSBOVUxMLCAqdG1wX2Np cGhlcl9saXN0OworICAgICBjb25zdCBjaGFyICpydWxlX3A7CisgICAgIENJUEhFUl9PUkRFUiAq Y29fbGlzdCA9IE5VTEwsICpoZWFkID0gTlVMTCwgKnRhaWwgPSBOVUxMLCAqY3VycjsKKyAgICAg Y29uc3QgU1NMX0NJUEhFUiAqKmNhX2xpc3QgPSBOVUxMOworKyNpZmRlZiBTWVNURU1fQ0lQSEVS U19GSUxFCisrICAgIGNoYXIgKm5ld19ydWxlcyA9IE5VTEw7CisrCisrICAgIGlmIChydWxlX3N0 ciAhPSBOVUxMICYmIHN0cm5jbXAocnVsZV9zdHIsICJQUk9GSUxFPVNZU1RFTSIsIDE0KSA9PSAw KSB7CisrICAgICAgICBjaGFyICpwID0gcnVsZV9zdHIgKyAxNDsKKysgICAgCisrICAgICAgICBu ZXdfcnVsZXMgPSBsb2FkX3N5c3RlbV9zdHIocCk7CisrICAgICAgICBydWxlX3N0ciA9IG5ld19y dWxlczsKKysgICAgfQorKyNlbmRpZgorIAorICAgICAvKgorICAgICAgKiBSZXR1cm4gd2l0aCBl cnJvciBpZiBub3RoaW5nIHRvIGRvLgorICAgICAgKi8KKyAgICAgaWYgKHJ1bGVfc3RyID09IE5V TEwgfHwgY2lwaGVyX2xpc3QgPT0gTlVMTCB8fCBjaXBoZXJfbGlzdF9ieV9pZCA9PSBOVUxMKQor LSAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgICAgICBnb3RvIGVuZDsKKyAjaWZuZGVmIE9QRU5T U0xfTk9fRUMKKyAgICAgaWYgKCFjaGVja19zdWl0ZWJfY2lwaGVyX2xpc3Qoc3NsX21ldGhvZCwg YywgJnJ1bGVfc3RyKSkKKy0gICAgICAgIHJldHVybiBOVUxMOworKyAgICAgICAgZ290byBlbmQ7 CisgI2VuZGlmCisgCisgICAgIC8qCitAQCAtMTUwNyw3ICsxNTYxLDcgQEAgU1RBQ0tfT0YoU1NM X0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyXworICAgICAgICAgKENJUEhFUl9PUkRFUiAqKU9Q RU5TU0xfbWFsbG9jKHNpemVvZihDSVBIRVJfT1JERVIpICogbnVtX29mX2NpcGhlcnMpOworICAg ICBpZiAoY29fbGlzdCA9PSBOVUxMKSB7CisgICAgICAgICBTU0xlcnIoU1NMX0ZfU1NMX0NSRUFU RV9DSVBIRVJfTElTVCwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworLSAgICAgICAgcmV0dXJuIChO VUxMKTsgICAgICAgICAgLyogRmFpbHVyZSAqLworKyAgICAgICAgZ290byBlbmQ7CisgICAgIH0K KyAKKyAgICAgc3NsX2NpcGhlcl9jb2xsZWN0X2NpcGhlcnMoc3NsX21ldGhvZCwgbnVtX29mX2Np cGhlcnMsCitAQCAtMTU2OCw4ICsxNjIyLDcgQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9j cmVhdGVfY2lwaGVyXworICAgICAgKiBpbiBmb3JjZSB3aXRoaW4gZWFjaCBjbGFzcworICAgICAg Ki8KKyAgICAgaWYgKCFzc2xfY2lwaGVyX3N0cmVuZ3RoX3NvcnQoJmhlYWQsICZ0YWlsKSkgewor LSAgICAgICAgT1BFTlNTTF9mcmVlKGNvX2xpc3QpOworLSAgICAgICAgcmV0dXJuIE5VTEw7Cisr ICAgICAgICBnb3RvIGVuZDsKKyAgICAgfQorIAorICAgICAvKiBOb3cgZGlzYWJsZSBldmVyeXRo aW5nIChtYWludGFpbmluZyB0aGUgb3JkZXJpbmchKSAqLworQEAgLTE1ODcsOSArMTY0MCw4IEBA IFNUQUNLX09GKFNTTF9DSVBIRVIpICpzc2xfY3JlYXRlX2NpcGhlcl8KKyAgICAgbnVtX29mX2Fs aWFzX21heCA9IG51bV9vZl9jaXBoZXJzICsgbnVtX29mX2dyb3VwX2FsaWFzZXMgKyAxOworICAg ICBjYV9saXN0ID0gT1BFTlNTTF9tYWxsb2Moc2l6ZW9mKFNTTF9DSVBIRVIgKikgKiBudW1fb2Zf YWxpYXNfbWF4KTsKKyAgICAgaWYgKGNhX2xpc3QgPT0gTlVMTCkgeworLSAgICAgICAgT1BFTlNT TF9mcmVlKGNvX2xpc3QpOworICAgICAgICAgU1NMZXJyKFNTTF9GX1NTTF9DUkVBVEVfQ0lQSEVS X0xJU1QsIEVSUl9SX01BTExPQ19GQUlMVVJFKTsKKy0gICAgICAgIHJldHVybiAoTlVMTCk7ICAg ICAgICAgIC8qIEZhaWx1cmUgKi8KKysgICAgICAgIGdvdG8gZW5kOworICAgICB9CisgICAgIHNz bF9jaXBoZXJfY29sbGVjdF9hbGlhc2VzKGNhX2xpc3QsIG51bV9vZl9ncm91cF9hbGlhc2VzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZF9ta2V5LCBkaXNhYmxlZF9h dXRoLCBkaXNhYmxlZF9lbmMsCitAQCAtMTYxNSw4ICsxNjY3LDcgQEAgU1RBQ0tfT0YoU1NMX0NJ UEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyXworICAgICBPUEVOU1NMX2ZyZWUoKHZvaWQgKiljYV9s aXN0KTsgLyogTm90IG5lZWRlZCBhbnltb3JlICovCisgCisgICAgIGlmICghb2spIHsgICAgICAg ICAgICAgICAgICAvKiBSdWxlIHByb2Nlc3NpbmcgZmFpbHVyZSAqLworLSAgICAgICAgT1BFTlNT TF9mcmVlKGNvX2xpc3QpOworLSAgICAgICAgcmV0dXJuIChOVUxMKTsKKysgICAgICAgIGdvdG8g ZW5kOworICAgICB9CisgCisgICAgIC8qCitAQCAtMTYyNCw4ICsxNjc1LDcgQEAgU1RBQ0tfT0Yo U1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyXworICAgICAgKiBpZiB3ZSBjYW5ub3QgZ2V0 IG9uZS4KKyAgICAgICovCisgICAgIGlmICgoY2lwaGVyc3RhY2sgPSBza19TU0xfQ0lQSEVSX25l d19udWxsKCkpID09IE5VTEwpIHsKKy0gICAgICAgIE9QRU5TU0xfZnJlZShjb19saXN0KTsKKy0g ICAgICAgIHJldHVybiAoTlVMTCk7CisrICAgICAgICBnb3RvIGVuZDsKKyAgICAgfQorIAorICAg ICAvKgorQEAgLTE2NDYsMTIgKzE2OTYsMTIgQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9j cmVhdGVfY2lwaGVyXworICNlbmRpZgorICAgICAgICAgfQorICAgICB9CistICAgIE9QRU5TU0xf ZnJlZShjb19saXN0KTsgICAgICAvKiBOb3QgbmVlZGVkIGFueSBsb25nZXIgKi8KKyAKKyAgICAg dG1wX2NpcGhlcl9saXN0ID0gc2tfU1NMX0NJUEhFUl9kdXAoY2lwaGVyc3RhY2spOworICAgICBp ZiAodG1wX2NpcGhlcl9saXN0ID09IE5VTEwpIHsKKyAgICAgICAgIHNrX1NTTF9DSVBIRVJfZnJl ZShjaXBoZXJzdGFjayk7CistICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAgIGNpcGhlcnN0 YWNrID0gTlVMTDsKKysgICAgICAgIGdvdG8gZW5kOworICAgICB9CisgICAgIGlmICgqY2lwaGVy X2xpc3QgIT0gTlVMTCkKKyAgICAgICAgIHNrX1NTTF9DSVBIRVJfZnJlZSgqY2lwaGVyX2xpc3Qp OworQEAgLTE2NjMsNiArMTcxMywxMiBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0 ZV9jaXBoZXJfCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9jaXBo ZXJfcHRyX2lkX2NtcCk7CisgCisgICAgIHNrX1NTTF9DSVBIRVJfc29ydCgqY2lwaGVyX2xpc3Rf YnlfaWQpOworKworKyBlbmQ6CisrICAgIE9QRU5TU0xfZnJlZShjb19saXN0KTsKKysjaWZkZWYg U1lTVEVNX0NJUEhFUlNfRklMRQorKyAgICBPUEVOU1NMX2ZyZWUobmV3X3J1bGVzKTsKKysjZW5k aWYKKyAgICAgcmV0dXJuIChjaXBoZXJzdGFjayk7CisgfQorIAorZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmEvc3NsL3NzbC5oLnN5c3RlbSBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsLmgKKy0tLSBvcGVu c3NsLTEuMC4yYS9zc2wvc3NsLmguc3lzdGVtCTIwMTUtMDQtMjIgMTU6MjM6NDguMDQzNjM1NDMx ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvc3NsL3NzbC5oCTIwMTUtMDQtMjIgMTU6MzU6NDMu NjY2MDkzNzk5ICswMjAwCitAQCAtMzQ1LDYgKzM0NSwxMSBAQCBleHRlcm4gIkMiIHsKKyAgKiB0 aHJvd2luZyBvdXQgYW5vbnltb3VzIGFuZCB1bmVuY3J5cHRlZCBjaXBoZXJzdWl0ZXMhIChUaGUg bGF0dGVyIGFyZSBub3QKKyAgKiBhY3R1YWxseSBlbmFibGVkIGJ5IEFMTCwgYnV0ICJBTEw6UlNB IiB3b3VsZCBlbmFibGUgc29tZSBvZiB0aGVtLikKKyAgKi8KKysjIGlmZGVmIFNZU1RFTV9DSVBI RVJTX0ZJTEUKKysjICBkZWZpbmUgU1NMX1NZU1RFTV9ERUZBVUxUX0NJUEhFUl9MSVNUICJQUk9G SUxFPVNZU1RFTSIKKysjIGVsc2UKKysjICBkZWZpbmUgU1NMX1NZU1RFTV9ERUZBVUxUX0NJUEhF Ul9MSVNUIFNTTF9ERUZBVUxUX0NJUEhFUl9MSVNUCisrIyBlbmRpZgorIAorIC8qIFVzZWQgaW4g U1NMX3NldF9zaHV0ZG93bigpL1NTTF9nZXRfc2h1dGRvd24oKTsgKi8KKyAjIGRlZmluZSBTU0xf U0VOVF9TSFVURE9XTiAgICAgICAxCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsX2xp Yi5jLnN5c3RlbSBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsX2xpYi5jCistLS0gb3BlbnNzbC0xLjAu MmEvc3NsL3NzbF9saWIuYy5zeXN0ZW0JMjAxNS0wNC0yMiAxNToyMzo0OC4wNDQ2MzU0NTUgKzAy MDAKKysrKyBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsX2xpYi5jCTIwMTUtMDQtMjIgMTU6MzE6NTUu Nzk0NTM0NjMxICswMjAwCitAQCAtMjczLDcgKzI3Myw3IEBAIGludCBTU0xfQ1RYX3NldF9zc2xf dmVyc2lvbihTU0xfQ1RYICpjdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYo Y3R4LT5jaXBoZXJfbGlzdF9ieV9pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtZXRoLT52ZXJzaW9uID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0wy X1ZFUlNJT04gPyAiU1NMdjIiIDoKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNT TF9ERUZBVUxUX0NJUEhFUl9MSVNULCBjdHgtPmNlcnQpOworKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU1NMX1NZU1RFTV9ERUZBVUxUX0NJUEhFUl9MSVNULCBjdHgtPmNlcnQpOwor ICAgICBpZiAoKHNrID09IE5VTEwpIHx8IChza19TU0xfQ0lQSEVSX251bShzaykgPD0gMCkpIHsK KyAgICAgICAgIFNTTGVycihTU0xfRl9TU0xfQ1RYX1NFVF9TU0xfVkVSU0lPTiwKKyAgICAgICAg ICAgICAgICBTU0xfUl9TU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyk7CitAQCAtMTk0NSw3ICsx OTQ1LDcgQEAgU1NMX0NUWCAqU1NMX0NUWF9uZXcoY29uc3QgU1NMX01FVEhPRCAqbQorICAgICBz c2xfY3JlYXRlX2NpcGhlcl9saXN0KHJldC0+bWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZyZXQtPmNpcGhlcl9saXN0LCAmcmV0LT5jaXBoZXJfbGlzdF9ieV9pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtZXRoLT52ZXJzaW9uID09CistICAgICAgICAgICAgICAg ICAgICAgICAgICAgU1NMMl9WRVJTSU9OID8gIlNTTHYyIiA6IFNTTF9ERUZBVUxUX0NJUEhFUl9M SVNULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTDJfVkVSU0lPTiA/ICJTU0x2MiIg OiBTU0xfU1lTVEVNX0RFRkFVTFRfQ0lQSEVSX0xJU1QsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0LT5jZXJ0KTsKKyAgICAgaWYgKHJldC0+Y2lwaGVyX2xpc3QgPT0gTlVMTCB8fCBz a19TU0xfQ0lQSEVSX251bShyZXQtPmNpcGhlcl9saXN0KSA8PSAwKSB7CisgICAgICAgICBTU0xl cnIoU1NMX0ZfU1NMX0NUWF9ORVcsIFNTTF9SX0xJQlJBUllfSEFTX05PX0NJUEhFUlMpOwoKZGlm ZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLXRlc3QtdXNlLWxvY2FsaG9zdC5wYXRjaCBiL29wZW5z c2wtMS4wLjJhLXRlc3QtdXNlLWxvY2FsaG9zdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi40NTEwZTZlCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmEt dGVzdC11c2UtbG9jYWxob3N0LnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJhL3NzbC9zc2x0ZXN0LmMudXNlLWxvY2FsaG9zdCBvcGVuc3NsLTEuMC4yYS9zc2wv c3NsdGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMmEvc3NsL3NzbHRlc3QuYy51c2UtbG9jYWxob3N0 CTIwMTUtMDQtMjAgMTQ6NDM6MDcuMTcyNjAxNjYzICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEv c3NsL3NzbHRlc3QuYwkyMDE1LTA0LTIwIDE0OjQ1OjAyLjgzMTI5OTg0OSArMDIwMAorQEAgLTE1 MTYsMTYgKzE1MTYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAorICNp Zm5kZWYgT1BFTlNTTF9OT19LUkI1CisgICAgIGlmIChjX3NzbCAmJiBjX3NzbC0+a3NzbF9jdHgp IHsKKy0gICAgICAgIGNoYXIgbG9jYWxob3N0W01BWEhPU1ROQU1FTEVOICsgMl07CistCistICAg ICAgICBpZiAoZ2V0aG9zdG5hbWUobG9jYWxob3N0LCBzaXplb2YgbG9jYWxob3N0IC0gMSkgPT0g MCkgeworLSAgICAgICAgICAgIGxvY2FsaG9zdFtzaXplb2YgbG9jYWxob3N0IC0gMV0gPSAnXDAn OworLSAgICAgICAgICAgIGlmIChzdHJsZW4obG9jYWxob3N0KSA9PSBzaXplb2YgbG9jYWxob3N0 IC0gMSkgeworLSAgICAgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJsb2NhbGhvc3Qg bmFtZSB0b28gbG9uZ1xuIik7CistICAgICAgICAgICAgICAgIGdvdG8gZW5kOworLSAgICAgICAg ICAgIH0KKy0gICAgICAgICAgICBrc3NsX2N0eF9zZXRzdHJpbmcoY19zc2wtPmtzc2xfY3R4LCBL U1NMX1NFUlZFUiwgbG9jYWxob3N0KTsKKy0gICAgICAgIH0KKysgICAgICAgIGtzc2xfY3R4X3Nl dHN0cmluZyhjX3NzbC0+a3NzbF9jdHgsIEtTU0xfU0VSVkVSLCAibG9jYWxob3N0Iik7CisgICAg IH0KKyAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9QRU5TU0xfTk9fS1JCNSAq LworIAoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLXRydXN0ZWQtZmlyc3QtZG9jLnBhdGNo IGIvb3BlbnNzbC0xLjAuMmEtdHJ1c3RlZC1maXJzdC1kb2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uODMzMzc1MQotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wt MS4wLjJhLXRydXN0ZWQtZmlyc3QtZG9jLnBhdGNoCkBAIC0wLDAgKzEsMjg2IEBACitkaWZmIC11 cCBvcGVuc3NsLTEuMC4yYS9hcHBzL2Ntcy5jLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmEv YXBwcy9jbXMuYworLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvY21zLmMudHJ1c3RlZC1maXJzdAky MDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2Fw cHMvY21zLmMJMjAxNS0wNC0yMiAxNjoyNTozMS44MzkxNjQwNjEgKzAyMDAKK0BAIC02NDYsNiAr NjQ2LDggQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgICAg ICAgICAiLUNBcGF0aCBkaXIgICAgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZGlyZWN0b3J5XG4iKTsK KyAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgIi1DQWZpbGUgZmlsZSAgIHRydXN0ZWQgY2Vy dGlmaWNhdGVzIGZpbGVcbiIpOworICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAorKyAgICAg ICAgICAgICAgICAgICAiLXRydXN0ZWRfZmlyc3QgdXNlIHRydXN0ZWQgY2VydGlmaWNhdGVzIGZp cnN0IHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluXG4iKTsKKysgICAgICAgIEJJT19wcmlu dGYoYmlvX2VyciwKKyAgICAgICAgICAgICAgICAgICAgIi1jcmxfY2hlY2sgICAgIGNoZWNrIHJl dm9jYXRpb24gc3RhdHVzIG9mIHNpZ25lcidzIGNlcnRpZmljYXRlIHVzaW5nIENSTHNcbiIpOwor ICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAorICAgICAgICAgICAgICAgICAgICAiLWNybF9j aGVja19hbGwgY2hlY2sgcmV2b2NhdGlvbiBzdGF0dXMgb2Ygc2lnbmVyJ3MgY2VydGlmaWNhdGUg Y2hhaW4gdXNpbmcgQ1JMc1xuIik7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL29jc3Au Yy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJhL2FwcHMvb2NzcC5jCistLS0gb3BlbnNzbC0x LjAuMmEvYXBwcy9vY3NwLmMudHJ1c3RlZC1maXJzdAkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAw MDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvb2NzcC5jCTIwMTUtMDQtMjIgMTY6 MjU6MzEuODQwMTY0MDg1ICswMjAwCitAQCAtNTM2LDYgKzUzNiw4IEBAIGludCBNQUlOKGludCBh cmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKKyAgICAgICAg ICAgICAgICAgICAgIi1DQWZpbGUgZmlsZSAgICAgICAgIHRydXN0ZWQgY2VydGlmaWNhdGVzIGZp bGVcbiIpOworICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAorKyAgICAgICAgICAgICAgICAg ICAiLXRydXN0ZWRfZmlyc3QgICAgICAgdXNlIHRydXN0ZWQgY2VydGlmaWNhdGVzIGZpcnN0IHdo ZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluXG4iKTsKKysgICAgICAgIEJJT19wcmludGYoYmlv X2VyciwKKyAgICAgICAgICAgICAgICAgICAgIi1WQWZpbGUgZmlsZSAgICAgICAgIHZhbGlkYXRv ciBjZXJ0aWZpY2F0ZXMgZmlsZVxuIik7CisgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCisg ICAgICAgICAgICAgICAgICAgICItdmFsaWRpdHlfcGVyaW9kIG4gICBtYXhpbXVtIHZhbGlkaXR5 IGRpc2NyZXBhbmN5IGluIHNlY29uZHNcbiIpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBw cy9zX2NsaWVudC5jLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5j CistLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5jLnRydXN0ZWQtZmlyc3QJMjAxNS0w NC0yMiAxNjoyNTozMS43OTkxNjMxMTUgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nf Y2xpZW50LmMJMjAxNS0wNC0yMiAxNjoyNTozMS44NDAxNjQwODUgKzAyMDAKK0BAIC0zMzMsNiAr MzMzLDggQEAgc3RhdGljIHZvaWQgc2NfdXNhZ2Uodm9pZCkKKyAgICAgQklPX3ByaW50ZihiaW9f ZXJyLCAiIC1DQXBhdGggYXJnICAgLSBQRU0gZm9ybWF0IGRpcmVjdG9yeSBvZiBDQSdzXG4iKTsK KyAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiIC1DQWZpbGUgYXJnICAgLSBQRU0gZm9ybWF0IGZp bGUgb2YgQ0Enc1xuIik7CisgICAgIEJJT19wcmludGYoYmlvX2VyciwKKysgICAgICAgICAgICAg ICAiIC10cnVzdGVkX2ZpcnN0IC0gVXNlIHRydXN0ZWQgQ0EncyBmaXJzdCB3aGVuIGJ1aWxkaW5n IHRoZSB0cnVzdCBjaGFpblxuIik7CisrICAgIEJJT19wcmludGYoYmlvX2VyciwKKyAgICAgICAg ICAgICAgICAiIC1yZWNvbm5lY3QgICAgLSBEcm9wIGFuZCByZS1tYWtlIHRoZSBjb25uZWN0aW9u IHdpdGggdGhlIHNhbWUgU2Vzc2lvbi1JRFxuIik7CisgICAgIEJJT19wcmludGYoYmlvX2VyciwK KyAgICAgICAgICAgICAgICAiIC1wYXVzZSAgICAgICAgLSBzbGVlcCgxKSBhZnRlciBlYWNoIHJl YWQoMikgYW5kIHdyaXRlKDIpIHN5c3RlbSBjYWxsXG4iKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjJhL2FwcHMvc21pbWUuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJhL2FwcHMvc21pbWUu YworLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvc21pbWUuYy50cnVzdGVkLWZpcnN0CTIwMTUtMDMt MTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMmEvYXBwcy9zbWlt ZS5jCTIwMTUtMDQtMjIgMTY6MjU6MzEuODQwMTY0MDg1ICswMjAwCitAQCAtNDQyLDYgKzQ0Miw4 IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICAgICAgICAg Ii1DQXBhdGggZGlyICAgIHRydXN0ZWQgY2VydGlmaWNhdGVzIGRpcmVjdG9yeVxuIik7CisgICAg ICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICItQ0FmaWxlIGZpbGUgICB0cnVzdGVkIGNlcnRpZmlj YXRlcyBmaWxlXG4iKTsKKyAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKKysgICAgICAgICAg ICAgICAgICAgIi10cnVzdGVkX2ZpcnN0IHVzZSB0cnVzdGVkIGNlcnRpZmljYXRlcyBmaXJzdCB3 aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpblxuIik7CisrICAgICAgICBCSU9fcHJpbnRmKGJp b19lcnIsCisgICAgICAgICAgICAgICAgICAgICItY3JsX2NoZWNrICAgICBjaGVjayByZXZvY2F0 aW9uIHN0YXR1cyBvZiBzaWduZXIncyBjZXJ0aWZpY2F0ZSB1c2luZyBDUkxzXG4iKTsKKyAgICAg ICAgIEJJT19wcmludGYoYmlvX2VyciwKKyAgICAgICAgICAgICAgICAgICAgIi1jcmxfY2hlY2tf YWxsIGNoZWNrIHJldm9jYXRpb24gc3RhdHVzIG9mIHNpZ25lcidzIGNlcnRpZmljYXRlIGNoYWlu IHVzaW5nIENSTHNcbiIpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NlcnZlci5j LnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NlcnZlci5jCistLS0gb3BlbnNz bC0xLjAuMmEvYXBwcy9zX3NlcnZlci5jLnRydXN0ZWQtZmlyc3QJMjAxNS0wNC0yMiAxNjoyNToz MS44MDYxNjMyODEgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nfc2VydmVyLmMJMjAx NS0wNC0yMiAxNjoyNTozMS44NDExNjQxMDggKzAyMDAKK0BAIC01NjksNiArNTY5LDggQEAgc3Rh dGljIHZvaWQgc3ZfdXNhZ2Uodm9pZCkKKyAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiIC1DQXBh dGggYXJnICAgLSBQRU0gZm9ybWF0IGRpcmVjdG9yeSBvZiBDQSdzXG4iKTsKKyAgICAgQklPX3By aW50ZihiaW9fZXJyLCAiIC1DQWZpbGUgYXJnICAgLSBQRU0gZm9ybWF0IGZpbGUgb2YgQ0Enc1xu Iik7CisgICAgIEJJT19wcmludGYoYmlvX2VyciwKKysgICAgICAgICAgICAgICAiIC10cnVzdGVk X2ZpcnN0IC0gVXNlIHRydXN0ZWQgQ0EncyBmaXJzdCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBj aGFpblxuIik7CisrICAgIEJJT19wcmludGYoYmlvX2VyciwKKyAgICAgICAgICAgICAgICAiIC1u b2NlcnQgICAgICAgLSBEb24ndCB1c2UgYW55IGNlcnRpZmljYXRlcyAoQW5vbi1ESClcbiIpOwor ICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCisgICAgICAgICAgICAgICAgIiAtY2lwaGVyIGFyZyAg IC0gcGxheSB3aXRoICdvcGVuc3NsIGNpcGhlcnMnIHRvIHNlZSB3aGF0IGdvZXMgaGVyZVxuIik7 CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfdGltZS5jLnRydXN0ZWQtZmlyc3Qgb3Bl bnNzbC0xLjAuMmEvYXBwcy9zX3RpbWUuYworLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvc190aW1l LmMudHJ1c3RlZC1maXJzdAkyMDE1LTA0LTIyIDE2OjI1OjMxLjc1NTE2MjA3NSArMDIwMAorKysr IG9wZW5zc2wtMS4wLjJhL2FwcHMvc190aW1lLmMJMjAxNS0wNC0yMiAxNjoyNTozMS44NDExNjQx MDggKzAyMDAKK0BAIC0xODIsNiArMTgyLDcgQEAgc3RhdGljIHZvaWQgc190aW1lX3VzYWdlKHZv aWQpCisgICAgICAgICAgICAgICAgIGZpbGUgaWYgbm90IHNwZWNpZmllZCBieSB0aGlzIG9wdGlv blxuXAorIC1DQXBhdGggYXJnICAgLSBQRU0gZm9ybWF0IGRpcmVjdG9yeSBvZiBDQSdzXG5cCisg LUNBZmlsZSBhcmcgICAtIFBFTSBmb3JtYXQgZmlsZSBvZiBDQSdzXG5cCisrLXRydXN0ZWRfZmly c3QgLSBVc2UgdHJ1c3RlZCBDQSdzIGZpcnN0IHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWlu XG5cCisgLWNpcGhlciAgICAgICAtIHByZWZlcnJlZCBjaXBoZXIgdG8gdXNlLCBwbGF5IHdpdGgg J29wZW5zc2wgY2lwaGVycydcblxuIjsKKyAKKyAgICAgcHJpbnRmKCJ1c2FnZTogc190aW1lIDxh cmdzPlxuXG4iKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvdHMuYy50cnVzdGVkLWZp cnN0IG9wZW5zc2wtMS4wLjJhL2FwcHMvdHMuYworLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvdHMu Yy50cnVzdGVkLWZpcnN0CTIwMTUtMDQtMjIgMTY6MjU6MzEuNzk3MTYzMDY4ICswMjAwCisrKysg b3BlbnNzbC0xLjAuMmEvYXBwcy90cy5jCTIwMTUtMDQtMjIgMTY6MjU6MzEuODQxMTY0MTA4ICsw MjAwCitAQCAtMzUyLDcgKzM1Miw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikK KyAgICAgICAgICAgICAgICAidHMgLXZlcmlmeSBbLWRhdGEgZmlsZV90b19oYXNoXSBbLWRpZ2Vz dCBkaWdlc3RfYnl0ZXNdICIKKyAgICAgICAgICAgICAgICAiWy1xdWVyeWZpbGUgcmVxdWVzdC50 c3FdICIKKyAgICAgICAgICAgICAgICAiLWluIHJlc3BvbnNlLnRzciBbLXRva2VuX2luXSAiCist ICAgICAgICAgICAgICAgIi1DQXBhdGggY2FfcGF0aCAtQ0FmaWxlIGNhX2ZpbGUucGVtICIKKysg ICAgICAgICAgICAgICAiLUNBcGF0aCBjYV9wYXRoIC1DQWZpbGUgY2FfZmlsZS5wZW0gLXRydXN0 ZWRfZmlyc3QiCisgICAgICAgICAgICAgICAgIi11bnRydXN0ZWQgY2VydF9maWxlLnBlbVxuIik7 CisgIGNsZWFudXA6CisgICAgIC8qIENsZWFuIHVwLiAqLworZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmEvYXBwcy92ZXJpZnkuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJhL2FwcHMvdmVyaWZ5 LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3ZlcmlmeS5jLnRydXN0ZWQtZmlyc3QJMjAxNS0w My0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3Zl cmlmeS5jCTIwMTUtMDQtMjIgMTY6MjU6MzEuODQxMTY0MTA4ICswMjAwCitAQCAtMjMxLDcgKzIz MSw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgZW5kOgorICAgICBpZiAo cmV0ID09IDEpIHsKKyAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKKy0gICAgICAgICAgICAg ICAgICAgInVzYWdlOiB2ZXJpZnkgWy12ZXJib3NlXSBbLUNBcGF0aCBwYXRoXSBbLUNBZmlsZSBm aWxlXSBbLXB1cnBvc2UgcHVycG9zZV0gWy1jcmxfY2hlY2tdIik7CisrICAgICAgICAgICAgICAg ICAgICJ1c2FnZTogdmVyaWZ5IFstdmVyYm9zZV0gWy1DQXBhdGggcGF0aF0gWy1DQWZpbGUgZmls ZV0gWy10cnVzdGVkX2ZpcnN0XSBbLXB1cnBvc2UgcHVycG9zZV0gWy1jcmxfY2hlY2tdIik7Cisg ICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICIgWy1hdHRpbWUgdGltZXN0YW1wXSIpOworICNp Zm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKKyAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgIiBb LWVuZ2luZSBlXSIpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvY21zLnBvZC50 cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL2Ntcy5wb2QKKy0tLSBvcGVuc3Ns LTEuMC4yYS9kb2MvYXBwcy9jbXMucG9kLnRydXN0ZWQtZmlyc3QJMjAxNS0wMy0xOSAxNDozMDoz Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9jbXMucG9kCTIw MTUtMDQtMjIgMTY6MjU6MzEuODQyMTY0MTMyICswMjAwCitAQCAtMzUsNiArMzUsNyBAQCBCPG9w ZW5zc2w+IEI8Y21zPgorIFtCPC1wcmludD5dCisgW0I8LUNBZmlsZSBmaWxlPl0KKyBbQjwtQ0Fw YXRoIGRpcj5dCisrW0I8LXRydXN0ZWRfZmlyc3Q+XQorIFtCPC1tZCBkaWdlc3Q+XQorIFtCPC1b Y2lwaGVyXT5dCisgW0I8LW5vaW50ZXJuPl0KK0BAIC0yNDQsNiArMjQ1LDEyIEBAIEI8LXZlcmlm eT4uIFRoaXMgZGlyZWN0b3J5IG11c3QgYmUgYSBzdGEKKyBpcyBhIGhhc2ggb2YgZWFjaCBzdWJq ZWN0IG5hbWUgKHVzaW5nIEI8eDUwOSAtaGFzaD4pIHNob3VsZCBiZSBsaW5rZWQKKyB0byBlYWNo IGNlcnRpZmljYXRlLgorIAorKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+CisrCisrVXNlIGNlcnRp ZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBiZWZvcmUgdW50cnVzdGVkIGNlcnRp ZmljYXRlcworK2Zyb20gdGhlIG1lc3NhZ2Ugd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW4g dG8gdmVyaWZ5IGNlcnRpZmljYXRlcy4KKytUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52aXJv bm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCisrCisgPWl0ZW0g QjwtbWQgZGlnZXN0PgorIAorIGRpZ2VzdCBhbGdvcml0aG0gdG8gdXNlIHdoZW4gc2lnbmluZyBv ciByZXNpZ25pbmcuIElmIG5vdCBwcmVzZW50IHRoZW4gdGhlCitkaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9kb2MvYXBwcy9vY3NwLnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJhL2RvYy9h cHBzL29jc3AucG9kCistLS0gb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvb2NzcC5wb2QudHJ1c3Rl ZC1maXJzdAkyMDE1LTA0LTIyIDE2OjI1OjMxLjc5ODE2MzA5MiArMDIwMAorKysrIG9wZW5zc2wt MS4wLjJhL2RvYy9hcHBzL29jc3AucG9kCTIwMTUtMDQtMjIgMTY6MjU6MzEuODQyMTY0MTMyICsw MjAwCitAQCAtMjksNiArMjksNyBAQCBCPG9wZW5zc2w+IEI8b2NzcD4KKyBbQjwtcGF0aD5dCisg W0I8LUNBcGF0aCBkaXI+XQorIFtCPC1DQWZpbGUgZmlsZT5dCisrW0I8LXRydXN0ZWRfZmlyc3Q+ XQorIFtCPC1WQWZpbGUgZmlsZT5dCisgW0I8LXZhbGlkaXR5X3BlcmlvZCBuPl0KKyBbQjwtc3Rh dHVzX2FnZSBuPl0KK0BAIC0xNDMsNiArMTQ0LDEzIEBAIGNvbm5lY3Rpb24gdGltZW91dCB0byB0 aGUgT0NTUCByZXNwb25kZXIKKyBmaWxlIG9yIHBhdGhuYW1lIGNvbnRhaW5pbmcgdHJ1c3RlZCBD QSBjZXJ0aWZpY2F0ZXMuIFRoZXNlIGFyZSB1c2VkIHRvIHZlcmlmeQorIHRoZSBzaWduYXR1cmUg b24gdGhlIE9DU1AgcmVzcG9uc2UuCisgCisrPWl0ZW0gQjwtdHJ1c3RlZF9maXJzdD4KKysKKytV c2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3IgQ0EgZGlyZWN0b3J5IG92ZXIgY2VydGlmaWNh dGVzIHByb3ZpZGVkCisraW4gdGhlIHJlc3BvbnNlIG9yIHJlc2lkaW5nIGluIG90aGVyIGNlcnRp ZmljYXRlcyBmaWxlIHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0CisrY2hhaW4gdG8gdmVyaWZ5IHJl c3BvbmRlciBjZXJ0aWZpY2F0ZS4KKytUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1l bnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCisrCisgPWl0ZW0gQjwt dmVyaWZ5X290aGVyIGZpbGU+CisgCisgZmlsZSBjb250YWluaW5nIGFkZGl0aW9uYWwgY2VydGlm aWNhdGVzIHRvIHNlYXJjaCB3aGVuIGF0dGVtcHRpbmcgdG8gbG9jYXRlCitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9kb2MvYXBwcy9zX2NsaWVudC5wb2QudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEu MC4yYS9kb2MvYXBwcy9zX2NsaWVudC5wb2QKKy0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9z X2NsaWVudC5wb2QudHJ1c3RlZC1maXJzdAkyMDE1LTA0LTIyIDE2OjI1OjMxLjgxNDE2MzQ3MCAr MDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3NfY2xpZW50LnBvZAkyMDE1LTA0LTIy IDE2OjI1OjMxLjg0MzE2NDE1NiArMDIwMAorQEAgLTE5LDYgKzE5LDcgQEAgQjxvcGVuc3NsPiBC PHNfY2xpZW50PgorIFtCPC1wYXNzIGFyZz5dCisgW0I8LUNBcGF0aCBkaXJlY3Rvcnk+XQorIFtC PC1DQWZpbGUgZmlsZW5hbWU+XQorK1tCPC10cnVzdGVkX2ZpcnN0Pl0KKyBbQjwtcmVjb25uZWN0 Pl0KKyBbQjwtcGF1c2U+XQorIFtCPC1zaG93Y2VydHM+XQorQEAgLTEyMyw3ICsxMjQsNyBAQCBh bHNvIHVzZWQgd2hlbiBidWlsZGluZyB0aGUgY2xpZW50IGNlcnRpCisgQSBmaWxlIGNvbnRhaW5p bmcgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgdG8gdXNlIGR1cmluZyBzZXJ2ZXIgYXV0aGVudGljYXRp b24KKyBhbmQgdG8gdXNlIHdoZW4gYXR0ZW1wdGluZyB0byBidWlsZCB0aGUgY2xpZW50IGNlcnRp ZmljYXRlIGNoYWluLgorIAorLT1pdGVtIEI8LXB1cnBvc2UsIC1pZ25vcmVfY3JpdGljYWwsIC1p c3N1ZXJfY2hlY2tzLCAtY3JsX2NoZWNrLCAtY3JsX2NoZWNrX2FsbCwgLXBvbGljeV9jaGVjaywg LWV4dGVuZGVkX2NybCwgLXg1MDlfc3RyaWN0LCAtcG9saWN5IC1jaGVja19zc19zaWc+CisrPWl0 ZW0gQjwtcHVycG9zZSwgLWlnbm9yZV9jcml0aWNhbCwgLWlzc3Vlcl9jaGVja3MsIC1jcmxfY2hl Y2ssIC1jcmxfY2hlY2tfYWxsLCAtcG9saWN5X2NoZWNrLCAtZXh0ZW5kZWRfY3JsLCAteDUwOV9z dHJpY3QsIC1wb2xpY3kgLWNoZWNrX3NzX3NpZywgLXRydXN0ZWRfZmlyc3Q+CisgCisgU2V0IHZh cmlvdXMgY2VydGlmaWNhdGUgY2hhaW4gdmFsaWFkaXRpb24gb3B0aW9uLiBTZWUgdGhlCisgTDxC PHZlcmlmeT58dmVyaWZ5KDEpPiBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KK2RpZmYgLXVwIG9w ZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3NtaW1lLnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4w LjJhL2RvYy9hcHBzL3NtaW1lLnBvZAorLS0tIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3NtaW1l LnBvZC50cnVzdGVkLWZpcnN0CTIwMTUtMDEtMjAgMTM6MzM6MzYuMDAwMDAwMDAwICswMTAwCisr Kysgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvc21pbWUucG9kCTIwMTUtMDQtMjIgMTY6MjU6MzEu ODQzMTY0MTU2ICswMjAwCitAQCAtMTUsNiArMTUsOSBAQCBCPG9wZW5zc2w+IEI8c21pbWU+Cisg W0I8LXBrN291dD5dCisgW0I8LVtjaXBoZXJdPl0KKyBbQjwtaW4gZmlsZT5dCisrW0I8LUNBZmls ZSBmaWxlPl0KKytbQjwtQ0FwYXRoIGRpcj5dCisrW0I8LXRydXN0ZWRfZmlyc3Q+XQorIFtCPC1j ZXJ0ZmlsZSBmaWxlPl0KKyBbQjwtc2lnbmVyIGZpbGU+XQorIFtCPC1yZWNpcCAgZmlsZT5dCitA QCAtMTQ2LDYgKzE0OSwxMiBAQCBCPC12ZXJpZnk+LiBUaGlzIGRpcmVjdG9yeSBtdXN0IGJlIGEg c3RhCisgaXMgYSBoYXNoIG9mIGVhY2ggc3ViamVjdCBuYW1lICh1c2luZyBCPHg1MDkgLWhhc2g+ KSBzaG91bGQgYmUgbGlua2VkCisgdG8gZWFjaCBjZXJ0aWZpY2F0ZS4KKyAKKys9aXRlbSBCPC10 cnVzdGVkX2ZpcnN0PgorKworK1VzZSBjZXJ0aWZpY2F0ZXMgaW4gQ0EgZmlsZSBvciBDQSBkaXJl Y3Rvcnkgb3ZlciBjZXJ0aWZpY2F0ZXMgcHJvdmlkZWQKKytpbiB0aGUgbWVzc2FnZSB3aGVuIGJ1 aWxkaW5nIHRoZSB0cnVzdCBjaGFpbiB0byB2ZXJpZnkgYSBjZXJ0aWZpY2F0ZS4KKytUaGlzIGlz IG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNl cnRpZmllZCBDQXMuCisrCisgPWl0ZW0gQjwtbWQgZGlnZXN0PgorIAorIGRpZ2VzdCBhbGdvcml0 aG0gdG8gdXNlIHdoZW4gc2lnbmluZyBvciByZXNpZ25pbmcuIElmIG5vdCBwcmVzZW50IHRoZW4g dGhlCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX3NlcnZlci5wb2QudHJ1c3Rl ZC1maXJzdCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX3NlcnZlci5wb2QKKy0tLSBvcGVuc3Ns LTEuMC4yYS9kb2MvYXBwcy9zX3NlcnZlci5wb2QudHJ1c3RlZC1maXJzdAkyMDE1LTA0LTIyIDE2 OjI1OjMxLjgxNDE2MzQ3MCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3Nfc2Vy dmVyLnBvZAkyMDE1LTA0LTIyIDE2OjI1OjMxLjg0MzE2NDE1NiArMDIwMAorQEAgLTMzLDYgKzMz LDcgQEAgQjxvcGVuc3NsPiBCPHNfc2VydmVyPgorIFtCPC1zdGF0ZT5dCisgW0I8LUNBcGF0aCBk aXJlY3Rvcnk+XQorIFtCPC1DQWZpbGUgZmlsZW5hbWU+XQorK1tCPC10cnVzdGVkX2ZpcnN0Pl0K KyBbQjwtbm9jZXJ0Pl0KKyBbQjwtY2lwaGVyIGNpcGhlcmxpc3Q+XQorIFtCPC1zZXJ2ZXJwcmVm Pl0KK0BAIC0xNzQsNiArMTc1LDEyIEBAIGFuZCB0byB1c2Ugd2hlbiBhdHRlbXB0aW5nIHRvIGJ1 aWxkIHRoZQorIGlzIGFsc28gdXNlZCBpbiB0aGUgbGlzdCBvZiBhY2NlcHRhYmxlIGNsaWVudCBD QXMgcGFzc2VkIHRvIHRoZSBjbGllbnQgd2hlbgorIGEgY2VydGlmaWNhdGUgaXMgcmVxdWVzdGVk LgorIAorKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+CisrCisrVXNlIGNlcnRpZmljYXRlcyBpbiBD QSBmaWxlIG9yIENBIGRpcmVjdG9yeSBiZWZvcmUgb3RoZXIgY2VydGlmaWNhdGVzIAorK3doZW4g YnVpbGRpbmcgdGhlIHRydXN0IGNoYWluIHRvIHZlcmlmeSBjbGllbnQgY2VydGlmaWNhdGVzLgor K1RoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbiBlbnZpcm9ubWVudHMgd2l0aCBCcmlkZ2UgQ0Egb3Ig Q3Jvc3MtQ2VydGlmaWVkIENBcy4KKysKKyA9aXRlbSBCPC1zdGF0ZT4KKyAKKyBwcmludHMgb3V0 IHRoZSBTU0wgc2Vzc2lvbiBzdGF0ZXMuCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBw cy9zX3RpbWUucG9kLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvc190aW1l LnBvZAorLS0tIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3NfdGltZS5wb2QudHJ1c3RlZC1maXJz dAkyMDE1LTAxLTE1IDE1OjQzOjQ5LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjJh L2RvYy9hcHBzL3NfdGltZS5wb2QJMjAxNS0wNC0yMiAxNjoyNTozMS44NDMxNjQxNTYgKzAyMDAK K0BAIC0xNCw2ICsxNCw3IEBAIEI8b3BlbnNzbD4gQjxzX3RpbWU+CisgW0I8LWtleSBmaWxlbmFt ZT5dCisgW0I8LUNBcGF0aCBkaXJlY3Rvcnk+XQorIFtCPC1DQWZpbGUgZmlsZW5hbWU+XQorK1tC PC10cnVzdGVkX2ZpcnN0Pl0KKyBbQjwtcmV1c2U+XQorIFtCPC1uZXc+XQorIFtCPC12ZXJpZnkg ZGVwdGg+XQorQEAgLTc2LDYgKzc3LDEyIEBAIGFsc28gdXNlZCB3aGVuIGJ1aWxkaW5nIHRoZSBj bGllbnQgY2VydGkKKyBBIGZpbGUgY29udGFpbmluZyB0cnVzdGVkIGNlcnRpZmljYXRlcyB0byB1 c2UgZHVyaW5nIHNlcnZlciBhdXRoZW50aWNhdGlvbgorIGFuZCB0byB1c2Ugd2hlbiBhdHRlbXB0 aW5nIHRvIGJ1aWxkIHRoZSBjbGllbnQgY2VydGlmaWNhdGUgY2hhaW4uCisgCisrPWl0ZW0gQjwt dHJ1c3RlZF9maXJzdD4KKysKKytVc2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3IgQ0EgZGly ZWN0b3J5IG92ZXIgdGhlIGNlcnRpZmljYXRlcyBwcm92aWRlZAorK2J5IHRoZSBzZXJ2ZXIgd2hl biBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW4gdG8gdmVyaWZ5IHNlcnZlciBjZXJ0aWZpY2F0ZS4K KytUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9y IENyb3NzLUNlcnRpZmllZCBDQXMuCisrCisgPWl0ZW0gQjwtbmV3PgorIAorIHBlcmZvcm1zIHRo ZSB0aW1pbmcgdGVzdCB1c2luZyBhIG5ldyBzZXNzaW9uIElEIGZvciBlYWNoIGNvbm5lY3Rpb24u CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy90cy5wb2QudHJ1c3RlZC1maXJzdCBv cGVuc3NsLTEuMC4yYS9kb2MvYXBwcy90cy5wb2QKKy0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBw cy90cy5wb2QudHJ1c3RlZC1maXJzdAkyMDE1LTAxLTIwIDEzOjMzOjM2LjAwMDAwMDAwMCArMDEw MAorKysrIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3RzLnBvZAkyMDE1LTA0LTIyIDE2OjI1OjMx Ljg0MzE2NDE1NiArMDIwMAorQEAgLTQ2LDYgKzQ2LDcgQEAgQjwtdmVyaWZ5PgorIFtCPC10b2tl bl9pbj5dCisgW0I8LUNBcGF0aD4gdHJ1c3RlZF9jZXJ0X3BhdGhdCisgW0I8LUNBZmlsZT4gdHJ1 c3RlZF9jZXJ0cy5wZW1dCisrW0I8LXRydXN0ZWRfZmlyc3Q+XQorIFtCPC11bnRydXN0ZWQ+IGNl cnRfZmlsZS5wZW1dCisgCisgPWhlYWQxIERFU0NSSVBUSU9OCitAQCAtMzI0LDYgKzMyNSwxMiBA QCBMPHZlcmlmeSgxKXx2ZXJpZnkoMSk+IGZvciBhZGRpdGlvbmFsIGRlCisgb3IgQjwtQ0FwYXRo PiBtdXN0IGJlIHNwZWNpZmllZC4KKyAoT3B0aW9uYWwpCisgCisrPWl0ZW0gQjwtdHJ1c3RlZF9m aXJzdD4KKysKKytVc2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3IgQ0EgZGlyZWN0b3J5IGJl Zm9yZSBvdGhlciBjZXJ0aWZpY2F0ZXMKKyt3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpbiB0 byB2ZXJpZnkgY2VydGlmaWNhdGVzLgorK1RoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbiBlbnZpcm9u bWVudHMgd2l0aCBCcmlkZ2UgQ0Egb3IgQ3Jvc3MtQ2VydGlmaWVkIENBcy4KKysKKyA9aXRlbSBC PC11bnRydXN0ZWQ+IGNlcnRfZmlsZS5wZW0KKyAKKyBTZXQgb2YgYWRkaXRpb25hbCB1bnRydXN0 ZWQgY2VydGlmaWNhdGVzIGluIFBFTSBmb3JtYXQgd2hpY2ggbWF5IGJlCitkaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9kb2MvYXBwcy92ZXJpZnkucG9kLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAu MmEvZG9jL2FwcHMvdmVyaWZ5LnBvZAorLS0tIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3Zlcmlm eS5wb2QudHJ1c3RlZC1maXJzdAkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAor KysrIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3ZlcmlmeS5wb2QJMjAxNS0wNC0yMiAxNjoyNToz MS44NDMxNjQxNTYgKzAyMDAKK0BAIC05LDYgKzksNyBAQCB2ZXJpZnkgLSBVdGlsaXR5IHRvIHZl cmlmeSBjZXJ0aWZpY2F0ZXMuCisgQjxvcGVuc3NsPiBCPHZlcmlmeT4KKyBbQjwtQ0FwYXRoIGRp cmVjdG9yeT5dCisgW0I8LUNBZmlsZSBmaWxlPl0KKytbQjwtdHJ1c3RlZF9maXJzdD5dCisgW0I8 LXB1cnBvc2UgcHVycG9zZT5dCisgW0I8LXBvbGljeSBhcmc+XQorIFtCPC1pZ25vcmVfY3JpdGlj YWw+XQorQEAgLTc4LDYgKzc5LDEyIEBAIElmIGEgdmFsaWQgQ1JMIGNhbm5vdCBiZSBmb3VuZCBh biBlcnJvcgorIEEgZmlsZSBvZiB1bnRydXN0ZWQgY2VydGlmaWNhdGVzLiBUaGUgZmlsZSBzaG91 bGQgY29udGFpbiBtdWx0aXBsZSBjZXJ0aWZpY2F0ZXMKKyBpbiBQRU0gZm9ybWF0IGNvbmNhdGVu YXRlZCB0b2dldGhlci4KKyAKKys9aXRlbSBCPC10cnVzdGVkX2ZpcnN0PgorKworK1VzZSBjZXJ0 aWZpY2F0ZXMgaW4gQ0EgZmlsZSBvciBDQSBkaXJlY3RvcnkgYmVmb3JlIHRoZSBjZXJ0aWZpY2F0 ZXMgaW4gdGhlIHVudHJ1c3RlZAorK2ZpbGUgd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW4g dG8gdmVyaWZ5IGNlcnRpZmljYXRlcy4KKytUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52aXJv bm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCisrCisgPWl0ZW0g QjwtcHVycG9zZSBwdXJwb3NlPgorIAorIFRoZSBpbnRlbmRlZCB1c2UgZm9yIHRoZSBjZXJ0aWZp Y2F0ZS4gSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwKCmRpZmYgLS1naXQgYS9vcGVu c3NsLTEuMC4yYS12ZXJzaW9uLWFkZC1lbmdpbmVzLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtdmVy c2lvbi1hZGQtZW5naW5lcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5iNzkzNmIzCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmEtdmVyc2lvbi1hZGQt ZW5naW5lcy5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9h cHBzL3ZlcnNpb24uYy52ZXJzaW9uLWFkZC1lbmdpbmVzIG9wZW5zc2wtMS4wLjJhL2FwcHMvdmVy c2lvbi5jCistLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy92ZXJzaW9uLmMudmVyc2lvbi1hZGQtZW5n aW5lcwkyMDE1LTA0LTA5IDE4OjE2OjQyLjM0NTc1NjAwNSArMDIwMAorKysrIG9wZW5zc2wtMS4w LjJhL2FwcHMvdmVyc2lvbi5jCTIwMTUtMDQtMDkgMTg6MTY6MzYuNTczNjIyNjY3ICswMjAwCitA QCAtMTMxLDYgKzEzMSw3IEBACisgI2lmbmRlZiBPUEVOU1NMX05PX0JGCisgIyBpbmNsdWRlIDxv cGVuc3NsL2Jsb3dmaXNoLmg+CisgI2VuZGlmCisrI2luY2x1ZGUgPG9wZW5zc2wvZW5naW5lLmg+ CisgCisgI3VuZGVmIFBST0cKKyAjZGVmaW5lIFBST0cgICAgdmVyc2lvbl9tYWluCitAQCAtMTQw LDcgKzE0MSw4IEBAIGludCBNQUlOKGludCwgY2hhciAqKik7CisgaW50IE1BSU4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQorIHsKKyAgICAgaW50IGksIHJldCA9IDA7CistICAgIGludCBjZmxhZ3Mg PSAwLCB2ZXJzaW9uID0gMCwgZGF0ZSA9IDAsIG9wdGlvbnMgPSAwLCBwbGF0Zm9ybSA9IDAsIGRp ciA9IDA7CisrICAgIGludCBjZmxhZ3MgPSAwLCB2ZXJzaW9uID0gMCwgZGF0ZSA9IDAsIG9wdGlv bnMgPSAwLCBwbGF0Zm9ybSA9IDAsIGRpciA9CisrICAgICAgICAwLCBlbmdpbmVzID0gMDsKKyAK KyAgICAgYXBwc19zdGFydHVwKCk7CisgCitAQCAtMTY0LDcgKzE2Niw3IEBAIGludCBNQUlOKGlu dCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2W2ldLCAi LWQiKSA9PSAwKQorICAgICAgICAgICAgIGRpciA9IDE7CisgICAgICAgICBlbHNlIGlmIChzdHJj bXAoYXJndltpXSwgIi1hIikgPT0gMCkKKy0gICAgICAgICAgICBkYXRlID0gdmVyc2lvbiA9IGNm bGFncyA9IG9wdGlvbnMgPSBwbGF0Zm9ybSA9IGRpciA9IDE7CisrICAgICAgICAgICAgZGF0ZSA9 IHZlcnNpb24gPSBjZmxhZ3MgPSBvcHRpb25zID0gcGxhdGZvcm0gPSBkaXIgPSBlbmdpbmVzID0g MTsKKyAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgInVz YWdlOnZlcnNpb24gLVthdmJvZnBkXVxuIik7CisgICAgICAgICAgICAgcmV0ID0gMTsKK0BAIC0y MDgsNiArMjEwLDE2IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAg IHByaW50ZigiJXNcbiIsIFNTTGVheV92ZXJzaW9uKFNTTEVBWV9DRkxBR1MpKTsKKyAgICAgaWYg KGRpcikKKyAgICAgICAgIHByaW50ZigiJXNcbiIsIFNTTGVheV92ZXJzaW9uKFNTTEVBWV9ESVIp KTsKKysgICAgaWYgKGVuZ2luZXMpIHsKKysgICAgICAgIEVOR0lORSAqZTsKKysgICAgICAgIHBy aW50ZigiZW5naW5lczogICIpOworKyAgICAgICAgZSA9IEVOR0lORV9nZXRfZmlyc3QoKTsKKysg ICAgICAgIHdoaWxlIChlKSB7CisrICAgICAgICAgICAgcHJpbnRmKCIlcyAiLCBFTkdJTkVfZ2V0 X2lkKGUpKTsKKysgICAgICAgICAgICBlID0gRU5HSU5FX2dldF9uZXh0KGUpOworKyAgICAgICAg fQorKyAgICAgICAgcHJpbnRmKCJcbiIpOworKyAgICB9CisgIGVuZDoKKyAgICAgYXBwc19zaHV0 ZG93bigpOworICAgICBPUEVOU1NMX0VYSVQocmV0KTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEu MC4yYS12ZXJzaW9uLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtdmVyc2lvbi5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWRmZmY1Ci0tLSAvZGV2L251bGwKKysrIGIv b3BlbnNzbC0xLjAuMmEtdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDgzIEBACitkaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vY3ZlcnNpb24uYy52ZXJzaW9uIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9jdmVyc2lvbi5jCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2N2ZXJzaW9uLmMudmVy c2lvbgkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9jdmVyc2lvbi5jCTIwMTUtMDQtMjEgMTY6NDg6NTYuMjg1NTM1MzE2ICswMjAw CitAQCAtNjIsNyArNjIsNyBAQAorICMgaW5jbHVkZSAiYnVpbGRpbmYuaCIKKyAjZW5kaWYKKyAK Ky1jb25zdCBjaGFyICpTU0xlYXlfdmVyc2lvbihpbnQgdCkKKytjb25zdCBjaGFyICpfY3VycmVu dF9TU0xlYXlfdmVyc2lvbihpbnQgdCkKKyB7CisgICAgIGlmICh0ID09IFNTTEVBWV9WRVJTSU9O KQorICAgICAgICAgcmV0dXJuIE9QRU5TU0xfVkVSU0lPTl9URVhUOworQEAgLTEwMSw3ICsxMDEs NDAgQEAgY29uc3QgY2hhciAqU1NMZWF5X3ZlcnNpb24oaW50IHQpCisgICAgIHJldHVybiAoIm5v dCBhdmFpbGFibGUiKTsKKyB9CisgCistdW5zaWduZWQgbG9uZyBTU0xlYXkodm9pZCkKKytjb25z dCBjaGFyICpfb3JpZ2luYWxfU1NMZWF5X3ZlcnNpb24oaW50IHQpCisreworKyAgICBpZiAodCA9 PSBTU0xFQVlfVkVSU0lPTikKKysgICAgICAgIHJldHVybiAiT3BlblNTTCAxLjAuMC1maXBzIDI5 IE1hciAyMDEwIjsKKysgICAgZWxzZQorKyAgICAgICAgcmV0dXJuIF9jdXJyZW50X1NTTGVheV92 ZXJzaW9uKHQpOworK30KKysKKytjb25zdCBjaGFyICpfb3JpZ2luYWwxMDFfU1NMZWF5X3ZlcnNp b24oaW50IHQpCisreworKyAgICBpZiAodCA9PSBTU0xFQVlfVkVSU0lPTikKKysgICAgICAgIHJl dHVybiAiT3BlblNTTCAxLjAuMWUtZmlwcyAxMSBGZWIgMjAxMyI7CisrICAgIGVsc2UKKysgICAg ICAgIHJldHVybiBfY3VycmVudF9TU0xlYXlfdmVyc2lvbih0KTsKKyt9CisrCisrdW5zaWduZWQg bG9uZyBfb3JpZ2luYWxfU1NMZWF5KHZvaWQpCisreworKyAgICByZXR1cm4gKDB4MTAwMDAwMDNM KTsKKyt9CisrCisrdW5zaWduZWQgbG9uZyBfb3JpZ2luYWwxMDFfU1NMZWF5KHZvaWQpCisrewor KyAgICByZXR1cm4gKDB4MTAwMDEwNWZMKTsKKyt9CisrCisrdW5zaWduZWQgbG9uZyBfY3VycmVu dF9TU0xlYXkodm9pZCkKKyB7CisgICAgIHJldHVybiAoU1NMRUFZX1ZFUlNJT05fTlVNQkVSKTsK KyB9CisrCisrX19hc21fXygiLnN5bXZlciBfb3JpZ2luYWxfU1NMZWF5LFNTTGVheUAiKTsKKytf X2FzbV9fKCIuc3ltdmVyIF9vcmlnaW5hbF9TU0xlYXlfdmVyc2lvbixTU0xlYXlfdmVyc2lvbkAi KTsKKytfX2FzbV9fKCIuc3ltdmVyIF9vcmlnaW5hbDEwMV9TU0xlYXksU1NMZWF5QE9QRU5TU0xf MS4wLjEiKTsKKytfX2FzbV9fKCIuc3ltdmVyIF9vcmlnaW5hbDEwMV9TU0xlYXlfdmVyc2lvbixT U0xlYXlfdmVyc2lvbkBPUEVOU1NMXzEuMC4xIik7CisrX19hc21fXygiLnN5bXZlciBfY3VycmVu dF9TU0xlYXksU1NMZWF5QEBPUEVOU1NMXzEuMC4yIik7CisrX19hc21fXygiLnN5bXZlciBfY3Vy cmVudF9TU0xlYXlfdmVyc2lvbixTU0xlYXlfdmVyc2lvbkBAT1BFTlNTTF8xLjAuMiIpOworZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvTWFrZWZpbGUuc2hhcmVkLnZlcnNpb24gb3BlbnNzbC0xLjAu MmEvTWFrZWZpbGUuc2hhcmVkCistLS0gb3BlbnNzbC0xLjAuMmEvTWFrZWZpbGUuc2hhcmVkLnZl cnNpb24JMjAxNS0wNC0yMSAxNjo0MzowMi42MjQxNzA2NDggKzAyMDAKKysrKyBvcGVuc3NsLTEu MC4yYS9NYWtlZmlsZS5zaGFyZWQJMjAxNS0wNC0yMSAxNjo0MzowMi42NzYxNzE4NzkgKzAyMDAK K0BAIC0xNTEsNyArMTUxLDcgQEAgRE9fR05VX1NPPSQoQ0FMQ19WRVJTSU9OUyk7IFwKKyAJU0hM SUJfU1VGRklYPTsgXAorIAlBTExTWU1TRkxBR1M9Jy1XbCwtLXdob2xlLWFyY2hpdmUnOyBcCisg CU5PQUxMU1lNU0ZMQUdTPSctV2wsLS1uby13aG9sZS1hcmNoaXZlJzsgXAorLQlTSEFSRURGTEFH Uz0iJChDRkxBR1MpICQoU0hBUkVEX0xERkxBR1MpIC1zaGFyZWQgLVdsLC1Cc3ltYm9saWMgLVds LC1zb25hbWU9JCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCIKKysJU0hBUkVERkxB R1M9IiQoQ0ZMQUdTKSAkKFNIQVJFRF9MREZMQUdTKSAtc2hhcmVkIC1XbCwtQnN5bWJvbGljIC1X bCwtLWRlZmF1bHQtc3ltdmVyLC0tdmVyc2lvbi1zY3JpcHQ9dmVyc2lvbi5tYXAgLVdsLC1zb25h bWU9JCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCIKKyAKKyBET19HTlVfQVBQPUxE RkxBR1M9IiQoQ0ZMQUdTKSIKKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL3ZlcnNpb24ubWFw LnZlcnNpb24gb3BlbnNzbC0xLjAuMmEvdmVyc2lvbi5tYXAKKy0tLSBvcGVuc3NsLTEuMC4yYS92 ZXJzaW9uLm1hcC52ZXJzaW9uCTIwMTUtMDQtMjEgMTY6NDM6MDIuNjc2MTcxODc5ICswMjAwCisr Kysgb3BlbnNzbC0xLjAuMmEvdmVyc2lvbi5tYXAJMjAxNS0wNC0yMSAxNjo1MTo0OS42MjE2MzA1 ODkgKzAyMDAKK0BAIC0wLDAgKzEsMTMgQEAKKytPUEVOU1NMXzEuMC4xIHsKKysgICAgZ2xvYmFs OgorKwkgICAgU1NMZWF5OworKwkgICAgU1NMZWF5X3ZlcnNpb247CisrICAgIGxvY2FsOgorKwkg ICAgX29yaWdpbmFsKjsKKysJICAgIF9jdXJyZW50KjsKKyt9OworK09QRU5TU0xfMS4wLjIgewor KyAgICBnbG9iYWw6CisrCSAgICBTU0xlYXk7CisrCSAgICBTU0xlYXlfdmVyc2lvbjsKKyt9IE9Q RU5TU0xfMS4wLjE7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtd2Vhay1jaXBoZXJzLnBh dGNoIGIvb3BlbnNzbC0xLjAuMmEtd2Vhay1jaXBoZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjdjYjcwOGQKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEu MC4yYS13ZWFrLWNpcGhlcnMucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmEvc3NsL3NzbC5oLndlYWstY2lwaGVycyBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsLmgK Ky0tLSBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsLmgud2Vhay1jaXBoZXJzCTIwMTUtMDQtMjIgMTU6 MTE6MTQuMDI2NTc0NDE0ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvc3NsL3NzbC5oCTIwMTUt MDQtMjIgMTU6MTQ6NTEuMzAyNzQ0NzEzICswMjAwCitAQCAtMzM4LDcgKzMzOCw3IEBAIGV4dGVy biAiQyIgeworICAqIFRoZSBmb2xsb3dpbmcgY2lwaGVyIGxpc3QgaXMgdXNlZCBieSBkZWZhdWx0 LiBJdCBhbHNvIGlzIHN1YnN0aXR1dGVkIHdoZW4KKyAgKiBhbiBhcHBsaWNhdGlvbi1kZWZpbmVk IGNpcGhlciBsaXN0IHN0cmluZyBzdGFydHMgd2l0aCAnREVGQVVMVCcuCisgICovCistIyBkZWZp bmUgU1NMX0RFRkFVTFRfQ0lQSEVSX0xJU1QgIkFMTDohRVhQT1JUOiFhTlVMTDohZU5VTEw6IVNT THYyIgorKyMgZGVmaW5lIFNTTF9ERUZBVUxUX0NJUEhFUl9MSVNUICJBTEw6IUVYUE9SVDohYU5V TEw6IWVOVUxMOiFTU0x2MjohREVTIgorIC8qCisgICogQXMgb2YgT3BlblNTTCAxLjAuMCwgc3Ns X2NyZWF0ZV9jaXBoZXJfbGlzdCgpIGluIHNzbC9zc2xfY2lwaC5jIGFsd2F5cworICAqIHN0YXJ0 cyB3aXRoIGEgcmVhc29uYWJsZSBvcmRlciwgYW5kIGFsbCB3ZSBoYXZlIHRvIGRvIGZvciBERUZB VUxUIGlzCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtd3JhcC1wYWQucGF0Y2ggYi9vcGVu c3NsLTEuMC4yYS13cmFwLXBhZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5mZjFhMTMzCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmEtd3JhcC1wYWQu cGF0Y2gKQEAgLTAsMCArMSw1NTUgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9l dnAvY19hbGxjLmMud3JhcCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2NfYWxsYy5jCistLS0g b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9jX2FsbGMuYy53cmFwCTIwMTUtMDQtMjIgMTU6NDE6 MzIuMTQ3NDg4MTA3ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9jX2FsbGMu YwkyMDE1LTA0LTIyIDE1OjQ3OjI1LjQ4Njk0NjIzOSArMDIwMAorQEAgLTE3OSw2ICsxNzksNyBA QCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzKHZvaWQpCisgICAgIEVWUF9hZGRfY2lwaGVy KEVWUF9hZXNfMTI4X3h0cygpKTsKKyAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY2Nt KCkpOworICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF93cmFwKCkpOworKyAgICBFVlBf YWRkX2NpcGhlcihFVlBfYWVzXzEyOF93cmFwX3BhZCgpKTsKKyAgICAgRVZQX2FkZF9jaXBoZXJf YWxpYXMoU05fYWVzXzEyOF9jYmMsICJBRVMxMjgiKTsKKyAgICAgRVZQX2FkZF9jaXBoZXJfYWxp YXMoU05fYWVzXzEyOF9jYmMsICJhZXMxMjgiKTsKKyAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18xOTJfZWNiKCkpOworQEAgLTE5MSw2ICsxOTIsNyBAQCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9j aXBoZXJzKHZvaWQpCisgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2djbSgpKTsKKyAg ICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY2NtKCkpOworICAgICBFVlBfYWRkX2NpcGhl cihFVlBfYWVzXzE5Ml93cmFwKCkpOworKyAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml93 cmFwX3BhZCgpKTsKKyAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzE5Ml9jYmMsICJB RVMxOTIiKTsKKyAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzE5Ml9jYmMsICJhZXMx OTIiKTsKKyAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZWNiKCkpOworQEAgLTIwNCw2 ICsyMDYsNyBAQCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzKHZvaWQpCisgICAgIEVWUF9h ZGRfY2lwaGVyKEVWUF9hZXNfMjU2X3h0cygpKTsKKyAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18yNTZfY2NtKCkpOworICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl93cmFwKCkpOwor KyAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl93cmFwX3BhZCgpKTsKKyAgICAgRVZQX2Fk ZF9jaXBoZXJfYWxpYXMoU05fYWVzXzI1Nl9jYmMsICJBRVMyNTYiKTsKKyAgICAgRVZQX2FkZF9j aXBoZXJfYWxpYXMoU05fYWVzXzI1Nl9jYmMsICJhZXMyNTYiKTsKKyAjIGlmICFkZWZpbmVkKE9Q RU5TU0xfTk9fU0hBKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQTEpCitAQCAtMjU4LDYgKzI2 MSw3IEBAIHZvaWQgT3BlblNTTF9hZGRfYWxsX2NpcGhlcnModm9pZCkKKyAKKyAgICAgICAgIEVW UF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlKCkpOworICAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQ X2Rlc19lZGUzKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUzX3dyYXAo KSk7CisgIyBlbmRpZgorIAorICMgaWZuZGVmIE9QRU5TU0xfTk9fQUVTCitAQCAtMjcyLDYgKzI3 Niw3IEBAIHZvaWQgT3BlblNTTF9hZGRfYWxsX2NpcGhlcnModm9pZCkKKyAgICAgICAgIEVWUF9h ZGRfY2lwaGVyKEVWUF9hZXNfMTI4X3h0cygpKTsKKyAgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVW UF9hZXNfMTI4X2NjbSgpKTsKKyAgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X3dy YXAoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF93cmFwX3BhZCgpKTsK KyAgICAgICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xMjhfY2JjLCAiQUVTMTI4Iik7 CisgICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9hZXNfMTI4X2NiYywgImFlczEyOCIp OworICAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfZWNiKCkpOworQEAgLTI4NCw2 ICsyODksNyBAQCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzKHZvaWQpCisgICAgICAgICBF VlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9nY20oKSk7CisgICAgICAgICBFVlBfYWRkX2NpcGhl cihFVlBfYWVzXzE5Ml9jY20oKSk7CisgICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5 Ml93cmFwKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfd3JhcF9wYWQo KSk7CisgICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9hZXNfMTkyX2NiYywgIkFFUzE5 MiIpOworICAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzE5Ml9jYmMsICJhZXMx OTIiKTsKKyAgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2VjYigpKTsKK0BAIC0y OTcsNiArMzAzLDcgQEAgdm9pZCBPcGVuU1NMX2FkZF9hbGxfY2lwaGVycyh2b2lkKQorICAgICAg ICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfeHRzKCkpOworICAgICAgICAgRVZQX2FkZF9j aXBoZXIoRVZQX2Flc18yNTZfY2NtKCkpOworICAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18yNTZfd3JhcCgpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X3dyYXBf cGFkKCkpOworICAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzI1Nl9jYmMsICJB RVMyNTYiKTsKKyAgICAgICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18yNTZfY2JjLCAi YWVzMjU2Iik7CisgIyBlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9l X2Flcy5jLndyYXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9lX2Flcy5jCistLS0gb3BlbnNz bC0xLjAuMmEvY3J5cHRvL2V2cC9lX2Flcy5jLndyYXAJMjAxNS0wNC0yMiAxNTo0MTozMi4xNDg0 ODgxMzEgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2VfYWVzLmMJMjAxNS0w NC0yMiAxNTo1MjoyMS44MDkwMzk1MDYgKzAyMDAKK0BAIC0xLDUgKzEsNSBAQAorIC8qID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4g IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMTQgVGhlIE9w ZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK KyAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMKK0BAIC0xOTUyLDcgKzE5NTIsNyBAQCBzdGF0aWMgaW50IGFlc193cmFw X2luaXRfa2V5KEVWUF9DSVBIRVJfCisgICAgICAgICAgICAgd2N0eC0+aXYgPSBOVUxMOworICAg ICB9CisgICAgIGlmIChpdikgeworLSAgICAgICAgbWVtY3B5KGN0eC0+aXYsIGl2LCA4KTsKKysg ICAgICAgIG1lbWNweShjdHgtPml2LCBpdiwgRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKGN0eCkp OworICAgICAgICAgd2N0eC0+aXYgPSBjdHgtPml2OworICAgICB9CisgICAgIHJldHVybiAxOwor QEAgLTE5NjMsMzAgKzE5NjMsNTcgQEAgc3RhdGljIGludCBhZXNfd3JhcF9jaXBoZXIoRVZQX0NJ UEhFUl9DVAorIHsKKyAgICAgRVZQX0FFU19XUkFQX0NUWCAqd2N0eCA9IGN0eC0+Y2lwaGVyX2Rh dGE7CisgICAgIHNpemVfdCBydjsKKysgICAgLyogQUVTIHdyYXAgd2l0aCBwYWRkaW5nIGhhcyBJ ViBsZW5ndGggb2YgNCwgd2l0aG91dCBwYWRkaW5nIDggKi8KKysgICAgaW50IHBhZCA9IEVWUF9D SVBIRVJfQ1RYX2l2X2xlbmd0aChjdHgpID09IDQ7CisrICAgIC8qIE5vIGZpbmFsIG9wZXJhdGlv biBzbyBhbHdheXMgcmV0dXJuIHplcm8gbGVuZ3RoICovCisgICAgIGlmICghaW4pCisgICAgICAg ICByZXR1cm4gMDsKKy0gICAgaWYgKGlubGVuICUgOCkKKysgICAgLyogSW5wdXQgbGVuZ3RoIG11 c3QgYWx3YXlzIGJlIG5vbi16ZXJvICovCisrICAgIGlmICghaW5sZW4pCisgICAgICAgICByZXR1 cm4gLTE7CistICAgIGlmIChjdHgtPmVuY3J5cHQgJiYgaW5sZW4gPCA4KQorKyAgICAvKiBJZiBk ZWNyeXB0aW5nIG5lZWQgYXQgbGVhc3QgMTYgYnl0ZXMgYW5kIG11bHRpcGxlIG9mIDggKi8KKysg ICAgaWYgKCFjdHgtPmVuY3J5cHQgJiYgKGlubGVuIDwgMTYgfHwgaW5sZW4gJiAweDcpKQorICAg ICAgICAgcmV0dXJuIC0xOworLSAgICBpZiAoIWN0eC0+ZW5jcnlwdCAmJiBpbmxlbiA8IDE2KQor KyAgICAvKiBJZiBub3QgcGFkZGluZyBpbnB1dCBtdXN0IGJlIG11bHRpcGxlIG9mIDggKi8KKysg ICAgaWYgKCFwYWQgJiYgaW5sZW4gJiAweDcpCisgICAgICAgICByZXR1cm4gLTE7CisgICAgIGlm ICghb3V0KSB7CistICAgICAgICBpZiAoY3R4LT5lbmNyeXB0KQorKyAgICAgICAgaWYgKGN0eC0+ ZW5jcnlwdCkgeworKyAgICAgICAgICAgIC8qIElmIHBhZGRpbmcgcm91bmQgdXAgdG8gbXVsdGlw bGUgb2YgOCAqLworKyAgICAgICAgICAgIGlmIChwYWQpCisrICAgICAgICAgICAgICAgIGlubGVu ID0gKGlubGVuICsgNykgLyA4ICogODsKKysgICAgICAgICAgICAvKiA4IGJ5dGUgcHJlZml4ICov CisgICAgICAgICAgICAgcmV0dXJuIGlubGVuICsgODsKKy0gICAgICAgIGVsc2UKKysgICAgICAg IH0gZWxzZSB7CisrICAgICAgICAgICAgLyogSWYgbm90IHBhZGRpbmcgb3V0cHV0IHdpbGwgYmUg ZXhhY3RseSA4IGJ5dGVzCisrICAgICAgICAgICAgICogc21hbGxlciB0aGFuIGlucHV0LiBJZiBw YWRkaW5nIGl0IHdpbGwgYmUgYXQKKysgICAgICAgICAgICAgKiBsZWFzdCA4IGJ5dGVzIHNtYWxs ZXIgYnV0IHdlIGRvbid0IGtub3cgaG93CisrICAgICAgICAgICAgICogbXVjaC4KKysgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgICByZXR1cm4gaW5sZW4gLSA4OworICAgICB9CisrICAgIH0K KysgICAgaWYgKHBhZCkgeworICAgICBpZiAoY3R4LT5lbmNyeXB0KQorLSAgICAgICAgcnYgPSBD UllQVE9fMTI4X3dyYXAoJndjdHgtPmtzLmtzLCB3Y3R4LT5pdiwgb3V0LCBpbiwgaW5sZW4sCisr ICAgICAgICAgICAgcnYgPSBDUllQVE9fMTI4X3dyYXBfcGFkKCZ3Y3R4LT5rcy5rcywgd2N0eC0+ aXYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCwgaW4sIGlubGVu LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsb2NrMTI4X2YpIEFFU19lbmNyeXB0 KTsKKyAgICAgZWxzZQorLSAgICAgICAgcnYgPSBDUllQVE9fMTI4X3Vud3JhcCgmd2N0eC0+a3Mu a3MsIHdjdHgtPml2LCBvdXQsIGluLCBpbmxlbiwKKysgICAgICAgICAgICBydiA9IENSWVBUT18x MjhfdW53cmFwX3BhZCgmd2N0eC0+a3Mua3MsIHdjdHgtPml2LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG91dCwgaW4sIGlubGVuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoYmxvY2sxMjhfZikgQUVTX2RlY3J5cHQpOworKyAgICB9IGVsc2Ugewor KyAgICAgICAgaWYgKGN0eC0+ZW5jcnlwdCkKKysgICAgICAgICAgICBydiA9IENSWVBUT18xMjhf d3JhcCgmd2N0eC0+a3Mua3MsIHdjdHgtPml2LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG91dCwgaW4sIGlubGVuLCAoYmxvY2sxMjhfZikgQUVTX2VuY3J5cHQpOworKyAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIHJ2ID0gQ1JZUFRPXzEyOF91bndyYXAoJndjdHgtPmtzLmtz LCB3Y3R4LT5pdiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCwgaW4s IGlubGVuLCAoYmxvY2sxMjhfZikgQUVTX2RlY3J5cHQpOworKyAgICB9CisgICAgIHJldHVybiBy diA/IChpbnQpcnYgOiAtMTsKKyB9CisgCistI2RlZmluZSBXUkFQX0ZMQUdTICAgICAgKEVWUF9D SVBIX1dSQVBfTU9ERSBcCisrIyBkZWZpbmUgV1JBUF9GTEFHUyAgICAgIChFVlBfQ0lQSF9XUkFQ X01PREUgfCBFVlBfQ0lQSF9GTEFHX0ZJUFMgXAorICAgICAgICAgICAgICAgICB8IEVWUF9DSVBI X0NVU1RPTV9JViB8IEVWUF9DSVBIX0ZMQUdfQ1VTVE9NX0NJUEhFUiBcCisgICAgICAgICAgICAg ICAgIHwgRVZQX0NJUEhfQUxXQVlTX0NBTExfSU5JVCB8IEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9B U04xKQorIAorQEAgLTIwMzEsMyArMjA1OCw0NSBAQCBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVz XzI1Nl93cmFwKHZvaWQpCisgeworICAgICByZXR1cm4gJmFlc18yNTZfd3JhcDsKKyB9CisrCisr c3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgYWVzXzEyOF93cmFwX3BhZCA9IHsKKysgICAgTklEX2lk X2FlczEyOF93cmFwX3BhZCwKKysgICAgOCwgMTYsIDQsIFdSQVBfRkxBR1MsCisrICAgIGFlc193 cmFwX2luaXRfa2V5LCBhZXNfd3JhcF9jaXBoZXIsCisrICAgIE5VTEwsCisrICAgIHNpemVvZihF VlBfQUVTX1dSQVBfQ1RYKSwKKysgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAorK307CisrCisr Y29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xMjhfd3JhcF9wYWQodm9pZCkKKyt7CisrICAgIHJl dHVybiAmYWVzXzEyOF93cmFwX3BhZDsKKyt9CisrCisrc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIg YWVzXzE5Ml93cmFwX3BhZCA9IHsKKysgICAgTklEX2lkX2FlczE5Ml93cmFwX3BhZCwKKysgICAg OCwgMjQsIDQsIFdSQVBfRkxBR1MsCisrICAgIGFlc193cmFwX2luaXRfa2V5LCBhZXNfd3JhcF9j aXBoZXIsCisrICAgIE5VTEwsCisrICAgIHNpemVvZihFVlBfQUVTX1dSQVBfQ1RYKSwKKysgICAg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTAorK307CisrCisrY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Fl c18xOTJfd3JhcF9wYWQodm9pZCkKKyt7CisrICAgIHJldHVybiAmYWVzXzE5Ml93cmFwX3BhZDsK Kyt9CisrCisrc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgYWVzXzI1Nl93cmFwX3BhZCA9IHsKKysg ICAgTklEX2lkX2FlczI1Nl93cmFwX3BhZCwKKysgICAgOCwgMzIsIDQsIFdSQVBfRkxBR1MsCisr ICAgIGFlc193cmFwX2luaXRfa2V5LCBhZXNfd3JhcF9jaXBoZXIsCisrICAgIE5VTEwsCisrICAg IHNpemVvZihFVlBfQUVTX1dSQVBfQ1RYKSwKKysgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAor K307CisrCisrY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18yNTZfd3JhcF9wYWQodm9pZCkKKyt7 CisrICAgIHJldHVybiAmYWVzXzI1Nl93cmFwX3BhZDsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZXZwL2VfZGVzMy5jLndyYXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9l X2RlczMuYworLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZV9kZXMzLmMud3JhcAkyMDE1 LTA0LTIyIDE1OjQxOjQwLjMwMTY4MzMwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9ldnAvZV9kZXMzLmMJMjAxNS0wNC0yMiAxNTo1MzozOS41Mjk4OTk5NjQgKzAyMDAKK0BAIC00 NzMsNyArNDczLDcgQEAgc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgZGVzM193cmFwID0geworICAg ICBOSURfaWRfc21pbWVfYWxnX0NNUzNERVN3cmFwLAorICAgICA4LCAyNCwgMCwKKyAgICAgRVZQ X0NJUEhfV1JBUF9NT0RFIHwgRVZQX0NJUEhfQ1VTVE9NX0lWIHwgRVZQX0NJUEhfRkxBR19DVVNU T01fQ0lQSEVSCistICAgICAgICB8IEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xLAorKyAgICAg ICAgfCBFVlBfQ0lQSF9GTEFHX0RFRkFVTFRfQVNOMSB8IEVWUF9DSVBIX0ZMQUdfRklQUywKKyAg ICAgZGVzX2VkZTNfaW5pdF9rZXksIGRlc19lZGUzX3dyYXBfY2lwaGVyLAorICAgICBOVUxMLAor ICAgICBzaXplb2YoREVTX0VERV9LRVkpLAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2V2cC9ldnAuaC53cmFwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZXZwLmgKKy0tLSBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZXZwL2V2cC5oLndyYXAJMjAxNS0wNC0yMiAxOTozMDo1Ny4wMDAw MDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2V2cC5oCTIwMTUtMDQt MjIgMTk6NTE6MDYuMzUyODMyNTE2ICswMjAwCitAQCAtODMyLDYgKzgzMiw3IEBAIGNvbnN0IEVW UF9DSVBIRVIgKkVWUF9hZXNfMTI4X2NjbSh2b2lkKTsKKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBf YWVzXzEyOF9nY20odm9pZCk7CisgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xMjhfeHRzKHZv aWQpOworIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTI4X3dyYXAodm9pZCk7CisrY29uc3Qg RVZQX0NJUEhFUiAqRVZQX2Flc18xMjhfd3JhcF9wYWQodm9pZCk7CisgY29uc3QgRVZQX0NJUEhF UiAqRVZQX2Flc18xOTJfZWNiKHZvaWQpOworIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTky X2NiYyh2b2lkKTsKKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzE5Ml9jZmIxKHZvaWQpOwor QEAgLTg0Myw2ICs4NDQsNyBAQCBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzE5Ml9jdHIodm9p ZCk7CisgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xOTJfY2NtKHZvaWQpOworIGNvbnN0IEVW UF9DSVBIRVIgKkVWUF9hZXNfMTkyX2djbSh2b2lkKTsKKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBf YWVzXzE5Ml93cmFwKHZvaWQpOworK2NvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTkyX3dyYXBf cGFkKHZvaWQpOworIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMjU2X2VjYih2b2lkKTsKKyBj b25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzI1Nl9jYmModm9pZCk7CisgY29uc3QgRVZQX0NJUEhF UiAqRVZQX2Flc18yNTZfY2ZiMSh2b2lkKTsKK0BAIC04NTUsNiArODU3LDcgQEAgY29uc3QgRVZQ X0NJUEhFUiAqRVZQX2Flc18yNTZfY2NtKHZvaWQpOworIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9h ZXNfMjU2X2djbSh2b2lkKTsKKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzI1Nl94dHModm9p ZCk7CisgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18yNTZfd3JhcCh2b2lkKTsKKytjb25zdCBF VlBfQ0lQSEVSICpFVlBfYWVzXzI1Nl93cmFwX3BhZCh2b2lkKTsKKyAjICBpZiAhZGVmaW5lZChP UEVOU1NMX05PX1NIQSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEExKQorIGNvbnN0IEVWUF9D SVBIRVIgKkVWUF9hZXNfMTI4X2NiY19obWFjX3NoYTEodm9pZCk7CisgY29uc3QgRVZQX0NJUEhF UiAqRVZQX2Flc18yNTZfY2JjX2htYWNfc2hhMSh2b2lkKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9ldnAvZXZwdGVzdHMudHh0LndyYXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2 cC9ldnB0ZXN0cy50eHQKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2V2cHRlc3RzLnR4 dC53cmFwCTIwMTUtMDQtMjIgMTU6NDE6NDcuMTk0ODQ4MzA3ICswMjAwCisrKysgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2V2cC9ldnB0ZXN0cy50eHQJMjAxNS0wNC0yMiAxNjowMTowOC4xNzQ1NDA5 NzcgKzAyMDAKK0BAIC0zOTksMyArMzk5LDcgQEAgaWQtYWVzMjU2LXdyYXA6MDAwMTAyMDMwNDA1 MDYwNzA4MDkwQTBCMAorIGlkLWFlczE5Mi13cmFwOjAwMDEwMjAzMDQwNTA2MDcwODA5MEEwQjBD MEQwRTBGMTAxMTEyMTMxNDE1MTYxNzo6MDAxMTIyMzM0NDU1NjY3Nzg4OTlBQUJCQ0NEREVFRkYw MDAxMDIwMzA0MDUwNjA3OjAzMUQzMzI2NEUxNUQzMzI2OEYyNEVDMjYwNzQzRURDRTFDNkM3RERF RTcyNUE5MzZCQTgxNDkxNUM2NzYyRDIKKyBpZC1hZXMyNTYtd3JhcDowMDAxMDIwMzA0MDUwNjA3 MDgwOTBBMEIwQzBEMEUwRjEwMTExMjEzMTQxNTE2MTcxODE5MUExQjFDMUQxRTFGOjowMDExMjIz MzQ0NTU2Njc3ODg5OUFBQkJDQ0RERUVGRjAwMDEwMjAzMDQwNTA2MDc6QThGOUJDMTYxMkM2OEIz RkY2RTZGNEZCRTMwRTcxRTQ3NjlDOEI4MEEzMkNCODk1OENENUQxN0Q2QjI1NERBMQorIGlkLWFl czI1Ni13cmFwOjAwMDEwMjAzMDQwNTA2MDcwODA5MEEwQjBDMEQwRTBGMTAxMTEyMTMxNDE1MTYx NzE4MTkxQTFCMUMxRDFFMUY6OjAwMTEyMjMzNDQ1NTY2Nzc4ODk5QUFCQkNDRERFRUZGMDAwMTAy MDMwNDA1MDYwNzA4MDkwQTBCMEMwRDBFMEY6MjhDOUY0MDRDNEI4MTBGNENCQ0NCMzVDRkI4N0Y4 MjYzRjU3ODZFMkQ4MEVEMzI2Q0JDN0YwRTcxQTk5RjQzQkZCOTg4QjlCN0EwMkREMjEKKysjIEFF UyB3cmFwIHRlc3RzIGZyb20gUkZDNTY0OQorK2lkLWFlczE5Mi13cmFwLXBhZDo1ODQwZGY2ZTI5 YjAyYWYxYWI0OTNiNzA1YmYxNmVhMWFlODMzOGY0ZGNjMTc2YTg6OmMzN2I3ZTY0OTI1ODQzNDBi ZWQxMjIwNzgwODk0MTE1NTA2OGY3Mzg6MTM4YmRlYWE5YjhmYTdmYzYxZjk3NzQyZTcyMjQ4ZWU1 YWU2YWU1MzYwZDFhZTZhNWY1NGYzNzNmYTU0M2I2YQorK2lkLWFlczE5Mi13cmFwLXBhZDo1ODQw ZGY2ZTI5YjAyYWYxYWI0OTNiNzA1YmYxNmVhMWFlODMzOGY0ZGNjMTc2YTg6OjQ2NmY3MjUwNjE3 MzY5OmFmYmViMGYwN2RmYmY1NDE5MjAwZjJjY2I1MGJiMjRmCisrCitkaWZmIC11cCBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vbW9kZXMvbW9kZXMuaC53cmFwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9t b2Rlcy9tb2Rlcy5oCistLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21vZGVzL21vZGVzLmgud3Jh cAkyMDE1LTA0LTIyIDE1OjQxOjQ5LjIyODg5Njk5NyArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9tb2Rlcy9tb2Rlcy5oCTIwMTUtMDQtMjIgMTY6MDM6NDAuNzI0MTUyODU1ICswMjAw CitAQCAtMTU3LDYgKzE1NywxMiBAQCBzaXplX3QgQ1JZUFRPXzEyOF91bndyYXAodm9pZCAqa2V5 LCBjb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBp bmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sxMjhfZiBibG9jayk7Cisrc2l6 ZV90IENSWVBUT18xMjhfd3JhcF9wYWQodm9pZCAqa2V5LCBjb25zdCB1bnNpZ25lZCBjaGFyICpp Y3YsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBjb25z dCB1bnNpZ25lZCBjaGFyICppbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg aW5sZW4sIGJsb2NrMTI4X2YgYmxvY2spOworK3NpemVfdCBDUllQVE9fMTI4X3Vud3JhcF9wYWQo dm9pZCAqa2V5LCBjb25zdCB1bnNpZ25lZCBjaGFyICppY3YsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlubGVuLCBibG9jazEyOF9mIGJs b2NrKTsKKyAKKyAjaWZkZWYgIF9fY3BsdXNwbHVzCisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL21vZGVzL3dyYXAxMjguYy53cmFwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9tb2Rl cy93cmFwMTI4LmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbW9kZXMvd3JhcDEyOC5jLndy YXAJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vbW9kZXMvd3JhcDEyOC5jCTIwMTUtMDQtMjIgMTY6MDY6MTYuNzk4ODQ4MTk3ICsw MjAwCitAQCAtMiw2ICsyLDcgQEAKKyAvKgorICAqIFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhl bnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAorICAqIHByb2plY3QuCisr ICogTW9kZSB3aXRoIHBhZGRpbmcgY29udHJpYnV0ZWQgYnkgUGV0ciBTcGFjZWsgKHBzcGFjZWtA cmVkaGF0LmNvbSkuCisgICovCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgKiBDb3B5cmlnaHQgKGMpIDIw MTMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCitAQCAtNTIsMTkg KzUzLDQ0IEBACisgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgKi8KKyAKKysvKiogIEJld2FyZSEKKysgKgor KyAqICBGb2xsb3dpbmcgd3JhcHBpbmcgbW9kZXMgd2VyZSBkZXNpZ25lZCBmb3IgQUVTIGJ1dCB0 aGlzIGltcGxlbWVudGF0aW9uCisrICogIGFsbG93cyB5b3UgdG8gdXNlIHRoZW0gZm9yIGFueSAx MjggYml0IGJsb2NrIGNpcGhlci4KKysgKi8KKysKKyAjaW5jbHVkZSAiY3J5cHRsaWIuaCIKKyAj aW5jbHVkZSA8b3BlbnNzbC9tb2Rlcy5oPgorIAorKy8qKiBSRkMgMzM5NCBzZWN0aW9uIDIuMi4z LjEgRGVmYXVsdCBJbml0aWFsIFZhbHVlICovCisgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg ZGVmYXVsdF9pdltdID0geworICAgICAweEE2LCAweEE2LCAweEE2LCAweEE2LCAweEE2LCAweEE2 LCAweEE2LCAweEE2LAorIH07CisgCistLyoKKy0gKiBJbnB1dCBzaXplIGxpbWl0OiBsb3dlciB0 aGFuIG1heGltdW0gb2Ygc3RhbmRhcmRzIGJ1dCBmYXIgbGFyZ2VyIHRoYW4KKysvKiogUkZDIDU2 NDkgc2VjdGlvbiAzIEFsdGVybmF0aXZlIEluaXRpYWwgVmFsdWUgMzItYml0IGNvbnN0YW50ICov Cisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGVmYXVsdF9haXZbXSA9IHsKKysgICAgMHhB NiwgMHg1OSwgMHg1OSwgMHhBNgorK307CisrCisrLyoqIElucHV0IHNpemUgbGltaXQ6IGxvd2Vy IHRoYW4gbWF4aW11bSBvZiBzdGFuZGFyZHMgYnV0IGZhciBsYXJnZXIgdGhhbgorICAqIGFueXRo aW5nIHRoYXQgd2lsbCBiZSB1c2VkIGluIHByYWN0aWNlLgorICAqLworICNkZWZpbmUgQ1JZUFRP MTI4X1dSQVBfTUFYICgxVUwgPDwgMzEpCisgCisrLyoqIFdyYXBwaW5nIGFjY29yZGluZyB0byBS RkMgMzM5NCBzZWN0aW9uIDIuMi4xLgorKyAqCisrICogIEBwYXJhbVtpbl0gIGtleSAgICBLZXkg dmFsdWUuIAorKyAqICBAcGFyYW1baW5dICBpdiAgICAgSVYgdmFsdWUuIExlbmd0aCA9IDggYnl0 ZXMuIE5VTEwgPSB1c2UgZGVmYXVsdF9pdi4KKysgKiAgQHBhcmFtW2luXSAgaW4gICAgIFBsYWlu IHRleHQgYXMgbiA2NC1iaXQgYmxvY2tzLCBuID49IDIuCisrICogIEBwYXJhbVtpbl0gIGlubGVu ICBMZW5ndGggb2YgaW4uCisrICogIEBwYXJhbVtvdXRdIG91dCAgICBDaXBoZXIgdGV4dC4gTWlu aW1hbCBidWZmZXIgbGVuZ3RoID0gKGlubGVuICsgOCkgYnl0ZXMuCisrICogICAgICAgICAgICAg ICAgICAgICBJbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgY2FuIG92ZXJsYXAgaWYgYmxvY2sgZnVu Y3Rpb24KKysgKiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIHRoYXQuCisrICogIEBwYXJh bVtpbl0gIGJsb2NrICBCbG9jayBwcm9jZXNzaW5nIGZ1bmN0aW9uLgorKyAqICBAcmV0dXJuICAg ICAgICAgICAgMCBpZiBpbmxlbiBkb2VzIG5vdCBjb25zaXN0IG9mIG4gNjQtYml0IGJsb2Nrcywg biA+PSAyLgorKyAqICAgICAgICAgICAgICAgICAgICAgb3IgaWYgaW5sZW4gPiBDUllQVE8xMjhf V1JBUF9NQVguCisrICogICAgICAgICAgICAgICAgICAgICBPdXRwdXQgbGVuZ3RoIGlmIHdyYXBw aW5nIHN1Y2NlZWRlZC4KKysgKi8KKyBzaXplX3QgQ1JZUFRPXzEyOF93cmFwKHZvaWQgKmtleSwg Y29uc3QgdW5zaWduZWQgY2hhciAqaXYsCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBjaGFyICpvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICppbiwgc2l6ZV90IGlubGVuLAorQEAgLTcyLDExICs5OCwxMSBAQCBzaXplX3QgQ1JZUFRPXzEy OF93cmFwKHZvaWQgKmtleSwgY29uc3QKKyB7CisgICAgIHVuc2lnbmVkIGNoYXIgKkEsIEJbMTZd LCAqUjsKKyAgICAgc2l6ZV90IGksIGosIHQ7CistICAgIGlmICgoaW5sZW4gJiAweDcpIHx8IChp bmxlbiA8IDgpIHx8IChpbmxlbiA+IENSWVBUTzEyOF9XUkFQX01BWCkpCisrICAgIGlmICgoaW5s ZW4gJiAweDcpIHx8IChpbmxlbiA8IDE2KSB8fCAoaW5sZW4gPiBDUllQVE8xMjhfV1JBUF9NQVgp KQorICAgICAgICAgcmV0dXJuIDA7CisgICAgIEEgPSBCOworICAgICB0ID0gMTsKKy0gICAgbWVt Y3B5KG91dCArIDgsIGluLCBpbmxlbik7CisrICAgIG1lbW1vdmUob3V0ICsgOCwgaW4sIGlubGVu KTsKKyAgICAgaWYgKCFpdikKKyAgICAgICAgIGl2ID0gZGVmYXVsdF9pdjsKKyAKK0BAIC0xMDAs NyArMTI2LDIzIEBAIHNpemVfdCBDUllQVE9fMTI4X3dyYXAodm9pZCAqa2V5LCBjb25zdAorICAg ICByZXR1cm4gaW5sZW4gKyA4OworIH0KKyAKKy1zaXplX3QgQ1JZUFRPXzEyOF91bndyYXAodm9p ZCAqa2V5LCBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwKKysvKiogVW53cmFwcGluZyBhY2NvcmRp bmcgdG8gUkZDIDMzOTQgc2VjdGlvbiAyLjIuMiBzdGVwcyAxLTIuCisrICogIElWIGNoZWNrIChz dGVwIDMpIGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIuCisrICoKKysgKiAgQHBhcmFt W2luXSAga2V5ICAgIEtleSB2YWx1ZS4gCisrICogIEBwYXJhbVtvdXRdIGl2ICAgICBVbmNoZWNr ZWQgSVYgdmFsdWUuIE1pbmltYWwgYnVmZmVyIGxlbmd0aCA9IDggYnl0ZXMuCisrICogIEBwYXJh bVtvdXRdIG91dCAgICBQbGFpbiB0ZXh0IHdpdGhvdXQgSVYuCisrICogICAgICAgICAgICAgICAg ICAgICBNaW5pbWFsIGJ1ZmZlciBsZW5ndGggPSAoaW5sZW4gLSA4KSBieXRlcy4KKysgKiAgICAg ICAgICAgICAgICAgICAgIElucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBjYW4gb3ZlcmxhcCBpZiBi bG9jayBmdW5jdGlvbgorKyAqICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgdGhhdC4KKysg KiAgQHBhcmFtW2luXSAgaW4gICAgIENpcGhlcnRleHQgdGV4dCBhcyBuIDY0LWJpdCBibG9ja3MK KysgKiAgQHBhcmFtW2luXSAgaW5sZW4gIExlbmd0aCBvZiBpbi4KKysgKiAgQHBhcmFtW2luXSAg YmxvY2sgIEJsb2NrIHByb2Nlc3NpbmcgZnVuY3Rpb24uCisrICogIEByZXR1cm4gICAgICAgICAg ICAwIGlmIGlubGVuIGlzIG91dCBvZiByYW5nZSBbMjQsIENSWVBUTzEyOF9XUkFQX01BWF0KKysg KiAgICAgICAgICAgICAgICAgICAgIG9yIGlmIGlubGVuIGlzIG5vdCBtdWx0aXBseSBvZiA4Lgor KyAqICAgICAgICAgICAgICAgICAgICAgT3V0cHV0IGxlbmd0aCBvdGhlcndpc2UuCisrICovCisr c3RhdGljIHNpemVfdCBjcnlwdG9fMTI4X3Vud3JhcF9yYXcodm9pZCAqa2V5LCB1bnNpZ25lZCBj aGFyICppdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90 IGlubGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazEyOF9mIGJsb2NrKQorQEAg LTExMyw3ICsxNTUsNyBAQCBzaXplX3QgQ1JZUFRPXzEyOF91bndyYXAodm9pZCAqa2V5LCBjb25z CisgICAgIEEgPSBCOworICAgICB0ID0gNiAqIChpbmxlbiA+PiAzKTsKKyAgICAgbWVtY3B5KEEs IGluLCA4KTsKKy0gICAgbWVtY3B5KG91dCwgaW4gKyA4LCBpbmxlbik7CisrICAgIG1lbW1vdmUo b3V0LCBpbiArIDgsIGlubGVuKTsKKyAgICAgZm9yIChqID0gMDsgaiA8IDY7IGorKykgeworICAg ICAgICAgUiA9IG91dCArIGlubGVuIC0gODsKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbmxl bjsgaSArPSA4LCB0LS0sIFIgLT0gOCkgeworQEAgLTEyOCwxMSArMTcwLDE5MCBAQCBzaXplX3Qg Q1JZUFRPXzEyOF91bndyYXAodm9pZCAqa2V5LCBjb25zCisgICAgICAgICAgICAgbWVtY3B5KFIs IEIgKyA4LCA4KTsKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICBtZW1jcHkoaXYsIEEsIDgpOwor KyAgICByZXR1cm4gaW5sZW47CisrfQorKworKy8qKiBVbndyYXBwaW5nIGFjY29yZGluZyB0byBS RkMgMzM5NCBzZWN0aW9uIDIuMi4yIGluY2x1ZGluZyBJViBjaGVjay4KKysgKiAgRmlyc3QgYmxv Y2sgb2YgcGxhaW4gdGV4dCBoYXZlIHRvIG1hdGNoIHN1cHBsaWVkIElWIG90aGVyd2lzZSBhbiBl cnJvciBpcworKyAqICByZXR1cm5lZC4KKysgKgorKyAqICBAcGFyYW1baW5dICBrZXkgICAgS2V5 IHZhbHVlLiAKKysgKiAgQHBhcmFtW291dF0gaXYgICAgIFVuY2hlY2tlZCBJViB2YWx1ZS4gTWlu aW1hbCBidWZmZXIgbGVuZ3RoID0gOCBieXRlcy4KKysgKiAgQHBhcmFtW291dF0gb3V0ICAgIFBs YWluIHRleHQgd2l0aG91dCBJVi4KKysgKiAgICAgICAgICAgICAgICAgICAgIE1pbmltYWwgYnVm ZmVyIGxlbmd0aCA9IChpbmxlbiAtIDgpIGJ5dGVzLgorKyAqICAgICAgICAgICAgICAgICAgICAg SW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGNhbiBvdmVybGFwIGlmIGJsb2NrIGZ1bmN0aW9uCisr ICogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0cyB0aGF0LgorKyAqICBAcGFyYW1baW5dICBp biAgICAgQ2lwaGVydGV4dCB0ZXh0IGFzIG4gNjQtYml0IGJsb2NrcworKyAqICBAcGFyYW1baW5d ICBpbmxlbiAgTGVuZ3RoIG9mIGluLgorKyAqICBAcGFyYW1baW5dICBibG9jayAgQmxvY2sgcHJv Y2Vzc2luZyBmdW5jdGlvbi4KKysgKiAgQHJldHVybiAgICAgICAgICAgIDAgaWYgaW5sZW4gaXMg b3V0IG9mIHJhbmdlIFsyNCwgQ1JZUFRPMTI4X1dSQVBfTUFYXQorKyAqICAgICAgICAgICAgICAg ICAgICAgb3IgaWYgaW5sZW4gaXMgbm90IG11bHRpcGx5IG9mIDgKKysgKiAgICAgICAgICAgICAg ICAgICAgIG9yIGlmIElWIGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgdmFsdWUuCisrICogICAgICAg ICAgICAgICAgICAgICBPdXRwdXQgbGVuZ3RoIG90aGVyd2lzZS4KKysgKi8KKytzaXplX3QgQ1JZ UFRPXzEyOF91bndyYXAodm9pZCAqa2V5LCBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBjb25zdCB1bnNpZ25lZCBj aGFyICppbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlubGVuLCBibG9jazEy OF9mIGJsb2NrKQorK3sKKysgICAgc2l6ZV90IHJldDsKKysgICAgdW5zaWduZWQgY2hhciBnb3Rf aXZbOF07CisrCisrICAgIHJldCA9IGNyeXB0b18xMjhfdW53cmFwX3JhdyhrZXksIGdvdF9pdiwg b3V0LCBpbiwgaW5sZW4sIGJsb2NrKTsKKysgICAgaWYgKHJldCA9PSAwKQorKyAgICAgICAgcmV0 dXJuIDA7CisrCisgICAgIGlmICghaXYpCisgICAgICAgICBpdiA9IGRlZmF1bHRfaXY7CistICAg IGlmIChtZW1jbXAoQSwgaXYsIDgpKSB7CisrICAgIGlmIChDUllQVE9fbWVtY21wKGdvdF9pdiwg aXYsIDgpKSB7CisrICAgICAgICBPUEVOU1NMX2NsZWFuc2Uob3V0LCByZXQpOworKyAgICAgICAg cmV0dXJuIDA7CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrLyoqIFdyYXBwaW5n IGFjY29yZGluZyB0byBSRkMgNTY0OSBzZWN0aW9uIDQuMS4KKysgKgorKyAqICBAcGFyYW1baW5d ICBrZXkgICAgS2V5IHZhbHVlLiAKKysgKiAgQHBhcmFtW2luXSAgaWN2ICAgIChOb24tc3RhbmRh cmQpIElWLCA0IGJ5dGVzLiBOVUxMID0gdXNlIGRlZmF1bHRfYWl2LgorKyAqICBAcGFyYW1bb3V0 XSBvdXQgICAgQ2lwaGVyIHRleHQuIE1pbmltYWwgYnVmZmVyIGxlbmd0aCA9IChpbmxlbiArIDE1 KSBieXRlcy4KKysgKiAgICAgICAgICAgICAgICAgICAgIElucHV0IGFuZCBvdXRwdXQgYnVmZmVy cyBjYW4gb3ZlcmxhcCBpZiBibG9jayBmdW5jdGlvbgorKyAqICAgICAgICAgICAgICAgICAgICAg c3VwcG9ydHMgdGhhdC4KKysgKiAgQHBhcmFtW2luXSAgaW4gICAgIFBsYWluIHRleHQgYXMgbiA2 NC1iaXQgYmxvY2tzLCBuID49IDIuCisrICogIEBwYXJhbVtpbl0gIGlubGVuICBMZW5ndGggb2Yg aW4uCisrICogIEBwYXJhbVtpbl0gIGJsb2NrICBCbG9jayBwcm9jZXNzaW5nIGZ1bmN0aW9uLgor KyAqICBAcmV0dXJuICAgICAgICAgICAgMCBpZiBpbmxlbiBpcyBvdXQgb2YgcmFuZ2UgWzEsIENS WVBUTzEyOF9XUkFQX01BWF0uCisrICogICAgICAgICAgICAgICAgICAgICBPdXRwdXQgbGVuZ3Ro IGlmIHdyYXBwaW5nIHN1Y2NlZWRlZC4KKysgKi8KKytzaXplX3QgQ1JZUFRPXzEyOF93cmFwX3Bh ZCh2b2lkICprZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmljdiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICBibG9jazEyOF9mIGJsb2NrKQorK3sKKysgICAgLyogbjogbnVtYmVyIG9m IDY0LWJpdCBibG9ja3MgaW4gdGhlIHBhZGRlZCBrZXkgZGF0YSAqLworKyAgICBjb25zdCBzaXpl X3QgYmxvY2tzX3BhZGRlZCA9IChpbmxlbiArIDcpIC8gODsKKysgICAgY29uc3Qgc2l6ZV90IHBh ZGRlZF9sZW4gPSBibG9ja3NfcGFkZGVkICogODsKKysgICAgY29uc3Qgc2l6ZV90IHBhZGRpbmdf bGVuID0gcGFkZGVkX2xlbiAtIGlubGVuOworKyAgICAvKiBSRkMgNTY0OSBzZWN0aW9uIDM6IEFs dGVybmF0aXZlIEluaXRpYWwgVmFsdWUgKi8KKysgICAgdW5zaWduZWQgY2hhciBhaXZbOF07Cisr ICAgIGludCByZXQ7CisrCisrICAgIC8qIFNlY3Rpb24gMTogdXNlIDMyLWJpdCBmaXhlZCBmaWVs ZCBmb3IgcGxhaW50ZXh0IG9jdGV0IGxlbmd0aCAqLworKyAgICBpZiAoaW5sZW4gPT0gMCB8fCBp bmxlbiA+PSBDUllQVE8xMjhfV1JBUF9NQVgpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAg LyogU2VjdGlvbiAzOiBBbHRlcm5hdGl2ZSBJbml0aWFsIFZhbHVlICovCisrICAgIGlmICghaWN2 KQorKyAgICAgICAgbWVtY3B5KGFpdiwgZGVmYXVsdF9haXYsIDQpOworKyAgICBlbHNlCisrICAg ICAgICBtZW1jcHkoYWl2LCBpY3YsIDQpOyAgICAvKiBTdGFuZGFyZCBkb2Vzbid0IG1lbnRpb24g dGhpcy4gKi8KKysKKysgICAgYWl2WzRdID0gKGlubGVuID4+IDI0KSAmIDB4RkY7CisrICAgIGFp dls1XSA9IChpbmxlbiA+PiAxNikgJiAweEZGOworKyAgICBhaXZbNl0gPSAoaW5sZW4gPj4gOCkg JiAweEZGOworKyAgICBhaXZbN10gPSBpbmxlbiAmIDB4RkY7CisrCisrICAgIGlmIChwYWRkZWRf bGVuID09IDgpIHsKKysgICAgICAgIC8qIFNlY3Rpb24gNC4xIC0gc3BlY2lhbCBjYXNlIGluIHN0 ZXAgMjoKKysgICAgICAgICAqIElmIHRoZSBwYWRkZWQgcGxhaW50ZXh0IGNvbnRhaW5zIGV4YWN0 bHkgZWlnaHQgb2N0ZXRzLCB0aGVuCisrICAgICAgICAgKiBwcmVwZW5kIHRoZSBBSVYgYW5kIGVu Y3J5cHQgdGhlIHJlc3VsdGluZyAxMjgtYml0IGJsb2NrCisrICAgICAgICAgKiB1c2luZyBBRVMg aW4gRUNCIG1vZGUuICovCisrICAgICAgICBtZW1tb3ZlKG91dCArIDgsIGluLCBpbmxlbik7Cisr ICAgICAgICBtZW1jcHkob3V0LCBhaXYsIDgpOworKyAgICAgICAgbWVtc2V0KG91dCArIDggKyBp bmxlbiwgMCwgcGFkZGluZ19sZW4pOworKyAgICAgICAgYmxvY2sob3V0LCBvdXQsIGtleSk7Cisr ICAgICAgICByZXQgPSAxNjsgICAgICAgICAgICAgICAvKiBBSVYgKyBwYWRkZWQgaW5wdXQgKi8K KysgICAgfSBlbHNlIHsKKysgICAgICAgIG1lbW1vdmUob3V0LCBpbiwgaW5sZW4pOworKyAgICAg ICAgbWVtc2V0KG91dCArIGlubGVuLCAwLCBwYWRkaW5nX2xlbik7IC8qIFNlY3Rpb24gNC4xIHN0 ZXAgMSAqLworKyAgICAgICAgcmV0ID0gQ1JZUFRPXzEyOF93cmFwKGtleSwgYWl2LCBvdXQsIG91 dCwgcGFkZGVkX2xlbiwgYmxvY2spOworKyAgICB9CisrCisrICAgIHJldHVybiByZXQ7CisrfQor KworKy8qKiBVbndyYXBwaW5nIGFjY29yZGluZyB0byBSRkMgNTY0OSBzZWN0aW9uIDQuMi4KKysg KgorKyAqICBAcGFyYW1baW5dICBrZXkgICAgS2V5IHZhbHVlLiAKKysgKiAgQHBhcmFtW2luXSAg aWN2ICAgIChOb24tc3RhbmRhcmQpIElWLCA0IGJ5dGVzLiBOVUxMID0gdXNlIGRlZmF1bHRfYWl2 LgorKyAqICBAcGFyYW1bb3V0XSBvdXQgICAgUGxhaW4gdGV4dC4gTWluaW1hbCBidWZmZXIgbGVu Z3RoID0gaW5sZW4gYnl0ZXMuCisrICogICAgICAgICAgICAgICAgICAgICBJbnB1dCBhbmQgb3V0 cHV0IGJ1ZmZlcnMgY2FuIG92ZXJsYXAgaWYgYmxvY2sgZnVuY3Rpb24KKysgKiAgICAgICAgICAg ICAgICAgICAgIHN1cHBvcnRzIHRoYXQuCisrICogIEBwYXJhbVtpbl0gIGluICAgICBDaXBoZXJ0 ZXh0IHRleHQgYXMgbiA2NC1iaXQgYmxvY2tzCisrICogIEBwYXJhbVtpbl0gIGlubGVuICBMZW5n dGggb2YgaW4uCisrICogIEBwYXJhbVtpbl0gIGJsb2NrICBCbG9jayBwcm9jZXNzaW5nIGZ1bmN0 aW9uLgorKyAqICBAcmV0dXJuICAgICAgICAgICAgMCBpZiBpbmxlbiBpcyBvdXQgb2YgcmFuZ2Ug WzE2LCBDUllQVE8xMjhfV1JBUF9NQVhdLAorKyAqICAgICAgICAgICAgICAgICAgICAgb3IgaWYg aW5sZW4gaXMgbm90IG11bHRpcGx5IG9mIDgKKysgKiAgICAgICAgICAgICAgICAgICAgIG9yIGlm IElWIGFuZCBtZXNzYWdlIGxlbmd0aCBpbmRpY2F0b3IgZG9lc24ndCBtYXRjaC4KKysgKiAgICAg ICAgICAgICAgICAgICAgIE91dHB1dCBsZW5ndGggaWYgdW53cmFwcGluZyBzdWNjZWVkZWQgYW5k IElWIG1hdGNoZXMuCisrICovCisrc2l6ZV90IENSWVBUT18xMjhfdW53cmFwX3BhZCh2b2lkICpr ZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmljdiwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sZW4sCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBibG9jazEyOF9mIGJsb2NrKQorK3sKKysgICAgLyogbjogbnVtYmVyIG9mIDY0 LWJpdCBibG9ja3MgaW4gdGhlIHBhZGRlZCBrZXkgZGF0YSAqLworKyAgICBzaXplX3QgbiA9IGlu bGVuIC8gOCAtIDE7CisrICAgIHNpemVfdCBwYWRkZWRfbGVuOworKyAgICBzaXplX3QgcGFkZGlu Z19sZW47CisrICAgIHNpemVfdCBwdGV4dF9sZW47CisrICAgIC8qIFJGQyA1NjQ5IHNlY3Rpb24g MzogQWx0ZXJuYXRpdmUgSW5pdGlhbCBWYWx1ZSAqLworKyAgICB1bnNpZ25lZCBjaGFyIGFpdls4 XTsKKysgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgemVyb3NbOF0gPSB7IDB4MCB9OworKyAgICBz aXplX3QgcmV0OworKworKyAgICAvKiBTZWN0aW9uIDQuMjogQ2lwaGVyIHRleHQgbGVuZ3RoIGhh cyB0byBiZSAobisxKSA2NC1iaXQgYmxvY2tzLiAqLworKyAgICBpZiAoKGlubGVuICYgMHg3KSAh PSAwIHx8IGlubGVuIDwgMTYgfHwgaW5sZW4gPj0gQ1JZUFRPMTI4X1dSQVBfTUFYKQorKyAgICAg ICAgcmV0dXJuIDA7CisrCisrICAgIG1lbW1vdmUob3V0LCBpbiwgaW5sZW4pOworKyAgICBpZiAo aW5sZW4gPT0gMTYpIHsKKysgICAgICAgIC8qIFNlY3Rpb24gNC4yIC0gc3BlY2lhbCBjYXNlIGlu IHN0ZXAgMToKKysgICAgICAgICAqIFdoZW4gbj0xLCB0aGUgY2lwaGVydGV4dCBjb250YWlucyBl eGFjdGx5IHR3byA2NC1iaXQKKysgICAgICAgICAqIGJsb2NrcyBhbmQgdGhleSBhcmUgZGVjcnlw dGVkIGFzIGEgc2luZ2xlIEFFUworKyAgICAgICAgICogYmxvY2sgdXNpbmcgQUVTIGluIEVDQiBt b2RlOgorKyAgICAgICAgICogQUlWIHwgUFsxXSA9IERFQyhLLCBDWzBdIHwgQ1sxXSkKKysgICAg ICAgICAqLworKyAgICAgICAgYmxvY2sob3V0LCBvdXQsIGtleSk7CisrICAgICAgICBtZW1jcHko YWl2LCBvdXQsIDgpOworKyAgICAgICAgLyogUmVtb3ZlIEFJViAqLworKyAgICAgICAgbWVtbW92 ZShvdXQsIG91dCArIDgsIDgpOworKyAgICAgICAgcGFkZGVkX2xlbiA9IDg7CisrICAgIH0gZWxz ZSB7CisrICAgICAgICBwYWRkZWRfbGVuID0gaW5sZW4gLSA4OworKyAgICAgICAgcmV0ID0gY3J5 cHRvXzEyOF91bndyYXBfcmF3KGtleSwgYWl2LCBvdXQsIG91dCwgaW5sZW4sIGJsb2NrKTsKKysg ICAgICAgIGlmIChwYWRkZWRfbGVuICE9IHJldCkgeworICAgICAgICAgT1BFTlNTTF9jbGVhbnNl KG91dCwgaW5sZW4pOworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0gICAgcmV0dXJuIGlu bGVuOworKyAgICB9CisrCisrICAgIC8qIFNlY3Rpb24gMzogQUlWIGNoZWNrczogQ2hlY2sgdGhh dCBNU0IoMzIsQSkgPSBBNjU5NTlBNi4KKysgICAgICogT3B0aW9uYWxseSBhIHVzZXItc3VwcGxp ZWQgdmFsdWUgY2FuIGJlIHVzZWQKKysgICAgICogKGV2ZW4gaWYgc3RhbmRhcmQgZG9lc24ndCBt ZW50aW9uIHRoaXMpLiAqLworKyAgICBpZiAoKCFpY3YgJiYgQ1JZUFRPX21lbWNtcChhaXYsIGRl ZmF1bHRfYWl2LCA0KSkKKysgICAgICAgIHx8IChpY3YgJiYgQ1JZUFRPX21lbWNtcChhaXYsIGlj diwgNCkpKSB7CisrICAgICAgICBPUEVOU1NMX2NsZWFuc2Uob3V0LCBpbmxlbik7CisrICAgICAg ICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICAvKiBDaGVjayB0aGF0IDgqKG4tMSkgPCBMU0Io MzIsQUlWKSA8PSA4Km4uCisrICAgICAqIElmIHNvLCBsZXQgcHRleHRfbGVuID0gTFNCKDMyLEFJ VikuICovCisrCisrICAgIHB0ZXh0X2xlbiA9IChhaXZbNF0gPDwgMjQpIHwgKGFpdls1XSA8PCAx NikgfCAoYWl2WzZdIDw8IDgpIHwgYWl2WzddOworKyAgICBpZiAoOCAqIChuIC0gMSkgPj0gcHRl eHRfbGVuIHx8IHB0ZXh0X2xlbiA+IDggKiBuKSB7CisrICAgICAgICBPUEVOU1NMX2NsZWFuc2Uo b3V0LCBpbmxlbik7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICAvKiBDaGVj ayB0aGF0IHRoZSByaWdodG1vc3QgcGFkZGluZ19sZW4gb2N0ZXRzIG9mIHRoZSBvdXRwdXQgZGF0 YQorKyAgICAgKiBhcmUgemVyby4gKi8KKysgICAgcGFkZGluZ19sZW4gPSBwYWRkZWRfbGVuIC0g cHRleHRfbGVuOworKyAgICBpZiAoQ1JZUFRPX21lbWNtcChvdXQgKyBwdGV4dF9sZW4sIHplcm9z LCBwYWRkaW5nX2xlbikgIT0gMCkgeworKyAgICAgICAgT1BFTlNTTF9jbGVhbnNlKG91dCwgaW5s ZW4pOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgICAgLyogU2VjdGlvbiA0LjIg c3RlcCAzOiBSZW1vdmUgcGFkZGluZyAqLworKyAgICByZXR1cm4gcHRleHRfbGVuOworIH0KCmRp ZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS14NTA5LnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEteDUw OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yzk2YTU3Ci0tLSAv ZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmEteDUwOS5wYXRjaApAQCAtMCwwICsxLDI4IEBA CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8veDUwOS9ieV9maWxlLmMueDUwOSBvcGVu c3NsLTEuMC4yYS9jcnlwdG8veDUwOS9ieV9maWxlLmMKKy0tLSBvcGVuc3NsLTEuMC4yYS9jcnlw dG8veDUwOS9ieV9maWxlLmMueDUwOQkyMDE1LTA0LTA5IDE4OjE2OjI5LjM2NTQ1NjE1NyArMDIw MAorKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by94NTA5L2J5X2ZpbGUuYwkyMDE1LTA0LTA5IDE4 OjE2OjI2LjM5ODM4NzYxOCArMDIwMAorQEAgLTE1Miw5ICsxNTIsMTIgQEAgaW50IFg1MDlfbG9h ZF9jZXJ0X2ZpbGUoWDUwOV9MT09LVVAgKmN0eAorICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgfQorICAgICAgICAgICAgIGkgPSBYNTA5X1NUT1JFX2FkZF9jZXJ0KGN0eC0+c3RvcmVf Y3R4LCB4KTsKKy0gICAgICAgICAgICBpZiAoIWkpCistICAgICAgICAgICAgICAgIGdvdG8gZXJy OworLSAgICAgICAgICAgIGNvdW50Kys7CisrICAgICAgICAgICAgLyogaWdub3JlIGFueSBwcm9i bGVtcyB3aXRoIGN1cnJlbnQgY2VydGlmaWNhdGUgCisrICAgICAgICAgICAgICAgYW5kIGNvbnRp bnVlIHdpdGggdGhlIG5leHQgb25lICovCisrICAgICAgICAgICAgaWYgKGkpCisrICAgICAgICAg ICAgICAgIGNvdW50Kys7CisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICBFUlJf Y2xlYXJfZXJyb3IoKTsKKyAgICAgICAgICAgICBYNTA5X2ZyZWUoeCk7CisgICAgICAgICAgICAg eCA9IE5VTEw7CisgICAgICAgICB9CitAQCAtMTY3LDcgKzE3MCw3IEBAIGludCBYNTA5X2xvYWRf Y2VydF9maWxlKFg1MDlfTE9PS1VQICpjdHgKKyAgICAgICAgIH0KKyAgICAgICAgIGkgPSBYNTA5 X1NUT1JFX2FkZF9jZXJ0KGN0eC0+c3RvcmVfY3R4LCB4KTsKKyAgICAgICAgIGlmICghaSkKKy0g ICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAg ICAgICAgIHJldCA9IGk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBYNTA5ZXJyKFg1MDlfRl9Y NTA5X0xPQURfQ0VSVF9GSUxFLCBYNTA5X1JfQkFEX1g1MDlfRklMRVRZUEUpOwoKZGlmZiAtLWdp dCBhL29wZW5zc2wtMS4wLjJhLXhtcHAtc3RhcnR0bHMucGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS14 bXBwLXN0YXJ0dGxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQy YzNiY2QKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4yYS14bXBwLXN0YXJ0dGxzLnBh dGNoCkBAIC0wLDAgKzEsMjcgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19jbGll bnQuYy5zdGFydHRscyBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfY2xpZW50LmMKKy0tLSBvcGVuc3Ns LTEuMC4yYS9hcHBzL3NfY2xpZW50LmMuc3RhcnR0bHMJMjAxNS0wNC0yMiAxODoyMzoxMi45NjQz ODcxNTcgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfY2xpZW50LmMJMjAxNS0wNC0y MiAxODoyMzo1Ni40OTY0MTQ4MjAgKzAyMDAKK0BAIC0xMzQsNyArMTM0LDggQEAKKyAgKiBPVEhF UiBFTlRJVFkgQkFTRUQgT04gSU5GUklOR0VNRU5UIE9GIElOVEVMTEVDVFVBTCBQUk9QRVJUWSBS SUdIVFMgT1IKKyAgKiBPVEhFUldJU0UuCisgICovCistCisrLyogZm9yIHN0cmNhc2VzdHIgKi8K KysjZGVmaW5lIF9HTlVfU09VUkNFCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxj dHlwZS5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorQEAgLTE2MjYsOCArMTYyNywxMSBAQCBpbnQg TUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgICAgICAgICJ4bWxucz0n amFiYmVyOmNsaWVudCcgdG89JyVzJyB2ZXJzaW9uPScxLjAnPiIsIGhvc3QpOworICAgICAgICAg c2VlbiA9IEJJT19yZWFkKHNiaW8sIG1idWYsIEJVRlNJWlopOworICAgICAgICAgbWJ1ZltzZWVu XSA9IDA7CistICAgICAgICB3aGlsZSAoIXN0cnN0cgorLSAgICAgICAgICAgICAgIChtYnVmLCAi PHN0YXJ0dGxzIHhtbG5zPSd1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOnhtcHAtdGxzJyIpKSB7Cisr ICAgICAgICB3aGlsZSAoIXN0cmNhc2VzdHIKKysgICAgICAgICAgICAgICAobWJ1ZiwgIjxzdGFy dHRscyB4bWxucz0ndXJuOmlldGY6cGFyYW1zOnhtbDpuczp4bXBwLXRscyciKQorKyAgICAgICAg ICAgICAgICYmICFzdHJjYXNlc3RyKG1idWYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIjxzdGFydHRscyB4bWxucz1cInVybjppZXRmOnBhcmFtczp4bWw6bnM6eG1wcC10bHNcIiIp KQorKyAgICAgICAgeworICAgICAgICAgICAgIGlmIChzdHJzdHIobWJ1ZiwgIi9zdHJlYW06ZmVh dHVyZXM+IikpCisgICAgICAgICAgICAgICAgIGdvdG8gc2h1dDsKKyAgICAgICAgICAgICBzZWVu ID0gQklPX3JlYWQoc2JpbywgbWJ1ZiwgQlVGU0laWik7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC5z cGVjIGIvb3BlbnNzbC5zcGVjCmluZGV4IDQzM2Q4N2IuLmYxMTM0MzkgMTAwNjQ0Ci0tLSBhL29w ZW5zc2wuc3BlYworKysgYi9vcGVuc3NsLnNwZWMKQEAgLTIyLDggKzIyLDggQEAKIAogU3VtbWFy eTogVXRpbGl0aWVzIGZyb20gdGhlIGdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaHkgbGlicmFy eSB3aXRoIFRMUyBpbXBsZW1lbnRhdGlvbgogTmFtZTogb3BlbnNzbAotVmVyc2lvbjogMS4wLjFr Ci1SZWxlYXNlOiA3JXs/ZGlzdH0KK1ZlcnNpb246IDEuMC4yYQorUmVsZWFzZTogMSV7P2Rpc3R9 CiBFcG9jaDogMQogIyBXZSBoYXZlIHRvIHJlbW92ZSBjZXJ0YWluIHBhdGVudGVkIGFsZ29yaXRo bXMgZnJvbSB0aGUgb3BlbnNzbCBzb3VyY2UKICMgdGFyYmFsbCB3aXRoIHRoZSBob2JibGUtb3Bl bnNzbCBzY3JpcHQgd2hpY2ggaXMgaW5jbHVkZWQgYmVsb3cuCkBAIC00MCw2MiArNDAsNTIgQEAg U291cmNlMTE6IFJFQURNRS5GSVBTCiBTb3VyY2UxMjogZWNfY3VydmUuYwogU291cmNlMTM6IGVj dGVzdC5jCiAjIEJ1aWxkIGNoYW5nZXMKLVBhdGNoMTogb3BlbnNzbC0xLjAuMWUtcnBtYnVpbGQu cGF0Y2gKLVBhdGNoMjogb3BlbnNzbC0xLjAuMWUtZGVmYXVsdHMucGF0Y2gKLVBhdGNoNDogb3Bl bnNzbC0xLjAuMC1iZXRhNS1lbmdpbmVzZGlyLnBhdGNoCi1QYXRjaDU6IG9wZW5zc2wtMC45Ljhh LW5vLXJwYXRoLnBhdGNoCi1QYXRjaDY6IG9wZW5zc2wtMC45LjhiLXRlc3QtdXNlLWxvY2FsaG9z dC5wYXRjaAorUGF0Y2gxOiBvcGVuc3NsLTEuMC4yYS1ycG1idWlsZC5wYXRjaAorUGF0Y2gyOiBv cGVuc3NsLTEuMC4yYS1kZWZhdWx0cy5wYXRjaAorUGF0Y2g0OiBvcGVuc3NsLTEuMC4yYS1lbmdp bmVzZGlyLnBhdGNoCitQYXRjaDU6IG9wZW5zc2wtMS4wLjJhLW5vLXJwYXRoLnBhdGNoCitQYXRj aDY6IG9wZW5zc2wtMS4wLjJhLXRlc3QtdXNlLWxvY2FsaG9zdC5wYXRjaAogUGF0Y2g3OiBvcGVu c3NsLTEuMC4wLXRpbWV6b25lLnBhdGNoCiBQYXRjaDg6IG9wZW5zc2wtMS4wLjFjLXBlcmxmaW5k LnBhdGNoCiBQYXRjaDk6IG9wZW5zc2wtMS4wLjFjLWFsaWFzaW5nLnBhdGNoCi0jIFRoaXMgcGF0 Y2ggbXVzdCBiZSBhcHBsaWVkIGZpcnN0Ci1QYXRjaDEwOiBvcGVuc3NsLTEuMC4xaS1wcGMtYXNt LXVwZGF0ZS5wYXRjaAogIyBCdWcgZml4ZXMKLVBhdGNoMjM6IG9wZW5zc2wtMS4wLjFjLWRlZmF1 bHQtcGF0aHMucGF0Y2gKLVBhdGNoMjQ6IG9wZW5zc2wtMS4wLjFlLWlzc3Vlci1oYXNoLnBhdGNo CitQYXRjaDIzOiBvcGVuc3NsLTEuMC4yYS1kZWZhdWx0LXBhdGhzLnBhdGNoCitQYXRjaDI0OiBv cGVuc3NsLTEuMC4yYS1pc3N1ZXItaGFzaC5wYXRjaAogIyBGdW5jdGlvbmFsaXR5IGNoYW5nZXMK IFBhdGNoMzM6IG9wZW5zc2wtMS4wLjAtYmV0YTQtY2EtZGlyLnBhdGNoCi1QYXRjaDM0OiBvcGVu c3NsLTAuOS42LXg1MDkucGF0Y2gKLVBhdGNoMzU6IG9wZW5zc2wtMC45LjhqLXZlcnNpb24tYWRk LWVuZ2luZXMucGF0Y2gKLVBhdGNoMzk6IG9wZW5zc2wtMS4wLjFoLWlwdjYtYXBwcy5wYXRjaAot UGF0Y2g0MDogb3BlbnNzbC0xLjAuMWstZmlwcy5wYXRjaAotUGF0Y2g0NTogb3BlbnNzbC0xLjAu MWUtZW52LXpsaWIucGF0Y2gKLVBhdGNoNDc6IG9wZW5zc2wtMS4wLjAtYmV0YTUtcmVhZG1lLXdh cm5pbmcucGF0Y2gKK1BhdGNoMzQ6IG9wZW5zc2wtMS4wLjJhLXg1MDkucGF0Y2gKK1BhdGNoMzU6 IG9wZW5zc2wtMS4wLjJhLXZlcnNpb24tYWRkLWVuZ2luZXMucGF0Y2gKK1BhdGNoMzk6IG9wZW5z c2wtMS4wLjJhLWlwdjYtYXBwcy5wYXRjaAorUGF0Y2g0MDogb3BlbnNzbC0xLjAuMmEtZmlwcy5w YXRjaAorUGF0Y2g0NTogb3BlbnNzbC0xLjAuMmEtZW52LXpsaWIucGF0Y2gKK1BhdGNoNDc6IG9w ZW5zc2wtMS4wLjJhLXJlYWRtZS13YXJuaW5nLnBhdGNoCiBQYXRjaDQ5OiBvcGVuc3NsLTEuMC4x aS1hbGdvLWRvYy5wYXRjaAotUGF0Y2g1MDogb3BlbnNzbC0xLjAuMWstZHRsczEtYWJpLnBhdGNo Ci1QYXRjaDUxOiBvcGVuc3NsLTEuMC4xZS12ZXJzaW9uLnBhdGNoCi1QYXRjaDU2OiBvcGVuc3Ns LTEuMC4wYy1yc2EteDkzMS5wYXRjaAotUGF0Y2g1ODogb3BlbnNzbC0xLjAuMS1iZXRhMi1maXBz LW1kNS1hbGxvdy5wYXRjaAotUGF0Y2g2MDogb3BlbnNzbC0xLjAuMGQtYXBwcy1kZ3N0LnBhdGNo Ci1QYXRjaDYzOiBvcGVuc3NsLTEuMC4wZC14bXBwLXN0YXJ0dGxzLnBhdGNoCi1QYXRjaDY1OiBv cGVuc3NsLTEuMC4wZS1jaGlsLWZpeGVzLnBhdGNoCi1QYXRjaDY2OiBvcGVuc3NsLTEuMC4xLXBr Z2NvbmZpZy1rcmI1LnBhdGNoCi1QYXRjaDY4OiBvcGVuc3NsLTEuMC4xZS1zZWN1cmUtZ2V0ZW52 LnBhdGNoCi1QYXRjaDY5OiBvcGVuc3NsLTEuMC4xYy1kaC0xMDI0LnBhdGNoCi1QYXRjaDcwOiBv cGVuc3NsLTEuMC4xai1maXBzLWVjLnBhdGNoCi1QYXRjaDcxOiBvcGVuc3NsLTEuMC4xaS1tYW5m aXgucGF0Y2gKLVBhdGNoNzI6IG9wZW5zc2wtMS4wLjFlLWZpcHMtY3Rvci5wYXRjaAotUGF0Y2g3 Mzogb3BlbnNzbC0xLjAuMWstZWNjLXN1aXRlYi5wYXRjaAotUGF0Y2g3NDogb3BlbnNzbC0xLjAu MWUtbm8tbWQ1LXZlcmlmeS5wYXRjaAotUGF0Y2g3NTogb3BlbnNzbC0xLjAuMWUtY29tcGF0LXN5 bWJvbHMucGF0Y2gKLVBhdGNoNzY6IG9wZW5zc2wtMS4wLjFpLW5ldy1maXBzLXJlcXMucGF0Y2gK LVBhdGNoNzc6IG9wZW5zc2wtMS4wLjFlLXdlYWstY2lwaGVycy5wYXRjaAotUGF0Y2g5MDogb3Bl bnNzbC0xLjAuMWUtZW5jLWZhaWwucGF0Y2gKLVBhdGNoOTI6IG9wZW5zc2wtMS4wLjFoLXN5c3Rl bS1jaXBoZXJsaXN0LnBhdGNoCi1QYXRjaDkzOiBvcGVuc3NsLTEuMC4xaC1kaXNhYmxlLXNzbHYy djMucGF0Y2gKK1BhdGNoNTA6IG9wZW5zc2wtMS4wLjJhLWR0bHMxLWFiaS5wYXRjaAorUGF0Y2g1 MTogb3BlbnNzbC0xLjAuMmEtdmVyc2lvbi5wYXRjaAorUGF0Y2g1Njogb3BlbnNzbC0xLjAuMmEt cnNhLXg5MzEucGF0Y2gKK1BhdGNoNTg6IG9wZW5zc2wtMS4wLjJhLWZpcHMtbWQ1LWFsbG93LnBh dGNoCitQYXRjaDYwOiBvcGVuc3NsLTEuMC4yYS1hcHBzLWRnc3QucGF0Y2gKK1BhdGNoNjM6IG9w ZW5zc2wtMS4wLjJhLXhtcHAtc3RhcnR0bHMucGF0Y2gKK1BhdGNoNjU6IG9wZW5zc2wtMS4wLjJh LWNoaWwtZml4ZXMucGF0Y2gKK1BhdGNoNjY6IG9wZW5zc2wtMS4wLjJhLXBrZ2NvbmZpZy1rcmI1 LnBhdGNoCitQYXRjaDY4OiBvcGVuc3NsLTEuMC4yYS1zZWN1cmUtZ2V0ZW52LnBhdGNoCitQYXRj aDY5OiBvcGVuc3NsLTEuMC4yYS1kaC0xMDI0LnBhdGNoCitQYXRjaDcwOiBvcGVuc3NsLTEuMC4y YS1maXBzLWVjLnBhdGNoCitQYXRjaDcxOiBvcGVuc3NsLTEuMC4yYS1tYW5maXgucGF0Y2gKK1Bh dGNoNzI6IG9wZW5zc2wtMS4wLjJhLWZpcHMtY3Rvci5wYXRjaAorUGF0Y2g3Mzogb3BlbnNzbC0x LjAuMmEtZWNjLXN1aXRlYi5wYXRjaAorUGF0Y2g3NDogb3BlbnNzbC0xLjAuMmEtbm8tbWQ1LXZl cmlmeS5wYXRjaAorUGF0Y2g3NTogb3BlbnNzbC0xLjAuMmEtY29tcGF0LXN5bWJvbHMucGF0Y2gK K1BhdGNoNzY6IG9wZW5zc2wtMS4wLjJhLW5ldy1maXBzLXJlcXMucGF0Y2gKK1BhdGNoNzc6IG9w ZW5zc2wtMS4wLjJhLXdlYWstY2lwaGVycy5wYXRjaAorUGF0Y2g5MDogb3BlbnNzbC0xLjAuMmEt ZW5jLWZhaWwucGF0Y2gKK1BhdGNoOTI6IG9wZW5zc2wtMS4wLjJhLXN5c3RlbS1jaXBoZXJsaXN0 LnBhdGNoCitQYXRjaDkzOiBvcGVuc3NsLTEuMC4yYS1kaXNhYmxlLXNzbHYydjMucGF0Y2gKICMg QmFja3BvcnRlZCBmaXhlcyBpbmNsdWRpbmcgc2VjdXJpdHkgZml4ZXMKLVBhdGNoODA6IG9wZW5z c2wtMS4wLjFqLWV2cC13cmFwLnBhdGNoCi1QYXRjaDgxOiBvcGVuc3NsLTEuMC4xay1wYWRsb2Nr NjQucGF0Y2gKLVBhdGNoODQ6IG9wZW5zc2wtMS4wLjFrLXRydXN0ZWQtZmlyc3QucGF0Y2gKLVBh dGNoODU6IG9wZW5zc2wtMS4wLjFlLWFybS11c2UtZWxmLWF1eHYtY2Fwcy5wYXRjaAotUGF0Y2g4 Njogb3BlbnNzbC0xLjAuMWstZXBoZW1lcmFsLWtleS1zaXplLnBhdGNoCi1QYXRjaDg3OiBvcGVu c3NsLTEuMC4xZS1jYy1yZXFzLnBhdGNoCi1QYXRjaDEwMTogb3BlbnNzbC0xLjAuMWstY3ZlLTIw MTUtMDIwOS5wYXRjaAotUGF0Y2gxMDI6IG9wZW5zc2wtMS4wLjFlLWN2ZS0yMDE1LTAyODYucGF0 Y2gKLVBhdGNoMTAzOiBvcGVuc3NsLTEuMC4xZS1jdmUtMjAxNS0wMjg3LnBhdGNoCi1QYXRjaDEw NDogb3BlbnNzbC0xLjAuMWUtY3ZlLTIwMTUtMDI4OC5wYXRjaAotUGF0Y2gxMDU6IG9wZW5zc2wt MS4wLjFrLWN2ZS0yMDE1LTAyODkucGF0Y2gKLVBhdGNoMTA2OiBvcGVuc3NsLTEuMC4xZS1jdmUt MjAxNS0wMjkzLnBhdGNoCitQYXRjaDgwOiBvcGVuc3NsLTEuMC4yYS13cmFwLXBhZC5wYXRjaAor UGF0Y2g4MTogb3BlbnNzbC0xLjAuMmEtcGFkbG9jazY0LnBhdGNoCitQYXRjaDg0OiBvcGVuc3Ns LTEuMC4yYS10cnVzdGVkLWZpcnN0LWRvYy5wYXRjaAorUGF0Y2g4Nzogb3BlbnNzbC0xLjAuMmEt Y2MtcmVxcy5wYXRjaAogCiBMaWNlbnNlOiBPcGVuU1NMCiBHcm91cDogU3lzdGVtIEVudmlyb25t ZW50L0xpYnJhcmllcwpAQCAtMTcwLDcgKzE2MCw2IEBAIGZyb20gb3RoZXIgZm9ybWF0cyB0byB0 aGUgZm9ybWF0cyB1c2VkIGJ5IHRoZSBPcGVuU1NMIHRvb2xraXQuCiAKIGNwICV7U09VUkNFMTJ9 ICV7U09VUkNFMTN9IGNyeXB0by9lYy8KIAotJXBhdGNoMTAgLXAxIC1iIC5wcGMtYXNtCiAlcGF0 Y2gxIC1wMSAtYiAucnBtYnVpbGQKICVwYXRjaDIgLXAxIC1iIC5kZWZhdWx0cwogJXBhdGNoNCAt cDEgLWIgLmVuZ2luZXNkaXIgJXs/X3Jhd2J1aWxkfQpAQCAtMjE2LDE1ICsyMDUsNyBAQCBjcCAl e1NPVVJDRTEyfSAle1NPVVJDRTEzfSBjcnlwdG8vZWMvCiAlcGF0Y2g4MCAtcDEgLWIgLndyYXAK ICVwYXRjaDgxIC1wMSAtYiAucGFkbG9jazY0CiAlcGF0Y2g4NCAtcDEgLWIgLnRydXN0ZWQtZmly c3QKLSVwYXRjaDg1IC1wMSAtYiAuYXJtY2FwCi0lcGF0Y2g4NiAtcDEgLWIgLmVwaGVtZXJhbAog JXBhdGNoODcgLXAxIC1iIC5jYy1yZXFzCi0lcGF0Y2gxMDEgLXAxIC1iIC51c2UtYWZ0ZXItZnJl ZQotJXBhdGNoMTAyIC1wMSAtYiAuYm9vbC1jbXAKLSVwYXRjaDEwMyAtcDEgLWIgLml0ZW0tcmV1 c2UKLSVwYXRjaDEwNCAtcDEgLWIgLnJlcS1udWxsLWRlcmVmCi0lcGF0Y2gxMDUgLXAxIC1iIC5w a2NzNy1udWxsLWRlcmVmCi0lcGF0Y2gxMDYgLXAxIC1iIC5zc2wyLWFzc2VydAogCiBzZWQgLWkg J3MvU0hMSUJfVkVSU0lPTl9OVU1CRVIgIjEuMC4wIi9TSExJQl9WRVJTSU9OX05VTUJFUiAiJXt2 ZXJzaW9ufSIvJyBjcnlwdG8vb3BlbnNzbHYuaAogCkBAIC00OTIsNiArNDczLDkgQEAgcm0gLXJm ICRSUE1fQlVJTERfUk9PVC8le19saWJkaXJ9L2ZpcHNjYW5pc3Rlci4qCiAlcG9zdHVuIGxpYnMg LXAgL3NiaW4vbGRjb25maWcKIAogJWNoYW5nZWxvZworKiBUaHUgQXByIDIzIDIwMTUgVG9tw6HF oSBNcsOheiA8dG1yYXpAcmVkaGF0LmNvbT4gMS4wLjJhLTEKKy0gcmViYXNlIHRvIDEuMC4yIGJy YW5jaAorCiAqIFRodSBBcHIgIDkgMjAxNSBUb23DocWhIE1yw6F6IDx0bXJhekByZWRoYXQuY29t PiAxLjAuMWstNwogLSBkcm9wIHRoZSBBRVMtR0NNIHJlc3RyaWN0aW9uIG9mIDJeMzIgb3BlcmF0 aW9ucyBiZWNhdXNlIHRoZSBJViBpcwogICBhbHdheXMgOTYgYml0cyAoMzIgYml0IGZpeGVkIGZp ZWxkICsgNjQgYml0IGludm9jYXRpb24gZmllbGQpCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3Nv dXJjZXMKaW5kZXggMTFkMjEyMS4uMjRiMmM5NSAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9z b3VyY2VzCkBAIC0xICsxIEBACi1jMjcyYWZmODVhZGU0OTZlM2VjYTk2YTQxYTQ5YTA2ZiAgb3Bl bnNzbC0xLjAuMWstaG9iYmxlZC50YXIueHoKK2Y1MWM0ZGY5NWMzZDUzZmM4MmEwODg1ZmQxNjky MjVhICBvcGVuc3NsLTEuMC4yYS1ob2JibGVkLnRhci54ego=